linux/drivers/parisc
Helge Deller 3847dab774 parisc: Add alternative coding infrastructure
This patch adds the necessary code to patch a running kernel at runtime
to improve performance.

The current implementation offers a few optimizations variants:

- When running a SMP kernel on a single UP processor, unwanted assembler
  statements like locking functions are overwritten with NOPs. When
  multiple instructions shall be skipped, one branch instruction is used
  instead of multiple nop instructions.

- In the UP case, some pdtlb and pitlb instructions are patched to
  become pdtlb,l and pitlb,l which only flushes the CPU-local tlb
  entries instead of broadcasting the flush to other CPUs in the system
  and thus may improve performance.

- fic and fdc instructions are skipped if no I- or D-caches are
  installed.  This should speed up qemu emulation and cacheless systems.

- If no cache coherence is needed for IO operations, the relevant fdc
  and sync instructions in the sba and ccio drivers are replaced by
  nops.

- On systems which share I- and D-TLBs and thus don't have a seperate
  instruction TLB, the pitlb instruction is replaced by a nop.

Live-patching is done early in the boot process, just after having run
the system inventory. No drivers are running and thus no external
interrupts should arrive. So the hope is that no TLB exceptions will
occur during the patching. If this turns out to be wrong we will
probably need to do the patching in real-mode.

Signed-off-by: Helge Deller <deller@gmx.de>
2018-10-17 17:22:26 +02:00
..
asp.c parisc: Fix section mismatches in parisc core drivers 2017-08-22 16:34:36 +02:00
ccio-dma.c parisc: Add alternative coding infrastructure 2018-10-17 17:22:26 +02:00
dino.c parisc: Ratelimit dino stuck interrupt warnings 2018-10-17 08:18:01 +02:00
eisa_eeprom.c parisc: Show unhashed EISA EEPROM address 2018-01-02 21:01:02 +01:00
eisa_enumerator.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
eisa.c parisc: Fix section mismatches in parisc core drivers 2017-08-22 16:34:36 +02:00
gsc.c parisc: Convert irq namespace 2011-03-29 14:48:08 +02:00
gsc.h parisc: remove obsolete hw_interrupt_type 2009-07-03 03:34:08 +00:00
hppb.c parisc: Fix section mismatches in parisc core drivers 2017-08-22 16:34:36 +02:00
iommu-helpers.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
iosapic_private.h
iosapic.c parisc/irq: Use access helper irq_data_get_affinity_mask() 2015-07-31 22:20:04 +02:00
Kconfig iommu-helper: mark iommu_is_span_boundary as inline 2018-05-09 06:55:44 +02:00
lasi.c parisc: Fix section mismatches in parisc core drivers 2017-08-22 16:34:36 +02:00
lba_pci.c parisc/pci: Switch LBA PCI bus from Hard Fail to Soft Fail mode 2018-03-27 18:52:22 +02:00
led.c parisc/led: Fix sparse warnings 2018-03-27 18:52:21 +02:00
Makefile parisc: remove the dead ccio-rm-dma driver 2018-10-17 08:18:00 +02:00
pdc_stable.c parisc: pdc_stable: Fix locking when creating sysfs links 2017-07-31 16:43:13 +02:00
power.c parisc: Directly call machine_power_off() in power button driver 2018-03-27 18:52:22 +02:00
README.dino Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
sba_iommu.c parisc: Add alternative coding infrastructure 2018-10-17 17:22:26 +02:00
superio.c parisc: Fix section mismatches in parisc core drivers 2017-08-22 16:34:36 +02:00
wax.c parisc: Fix section mismatches in parisc core drivers 2017-08-22 16:34:36 +02:00

/*
** HP VISUALIZE Workstation PCI Bus Defect
**
** "HP has discovered a potential system defect that can affect
** the behavior of five models of HP VISUALIZE workstations when
** equipped with third-party or customer-installed PCI I/O expansion
** cards. The defect is limited to the HP C180, C160, C160L, B160L,
** and B132L VISUALIZE workstations, and will only be encountered
** when data is transmitted through PCI I/O expansion cards on the
** PCI bus. HP-supplied graphics cards that utilize the PCI bus are
** not affected."
**
** http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?locale=en_US&prodTypeId=12454&prodSeriesId=44443
**
**	Product		First Good Serial Number
**  C200/C240 (US)	US67350000
**B132L+/B180 (US)	US67390000
**   C200 (Europe)	3713G01000
**  B180L (Europe)	3720G01000
**
** Note that many boards were fixed/replaced under a free replacement
** program. Assume a machine is only "suspect" until proven otherwise.
**
** "The pci_check program will also be available as application
**  patch PHSS_12295"
*/