linux/arch/powerpc/sysdev
Josh Boyer 5ce4b59653 powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata
The 440EPx/GRx chips don't support PCI MRM commands.  Drivers determine this
by looking for a zero value in the PCI cache line size register.  However,
some drivers write to this register upon initialization.  This can cause
MRMs to be used on these chips, which may cause deadlocks on PLB4.

The workaround implemented here introduces a new indirect_type flag, called
PPC_INDIRECT_TYPE_BROKEN_MRM.  This is set in the pci_controller structure in
the pci fixup function for 4xx PCI bridges by determining if the bridge is
compatible with 440EPx/GRx.  The flag is checked in the indirect_write_config
function, and forces any writes to the PCI_CACHE_LINE_SIZE register to be
zero, which will disable MRMs for these chips.

A similar workaround has been tested by AMCC on various PCI cards, such as
the Silicon Image ATA card and Intel E1000 GIGE card.  Hangs were seen with
the Silicon Image card, and MRMs were seen on the bus with a PCI analyzer.
With the workaround in place, the card functioned properly and only Memory
Reads were seen on the bus with the analyzer.

Acked-by: Stefan Roese <sr@denx.de>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
2008-06-17 19:01:38 -04:00
..
bestcomm [POWERPC] Fix Oops with TQM5200 on TQM5200 2008-03-24 17:55:51 +11:00
qe_lib powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
6xx-suspend.S [POWERPC] Add 6xx-style HID0_SLEEP support. 2008-05-16 23:22:28 +10:00
axonram.c return pfn from direct_access, for XIP 2008-04-28 08:58:23 -07:00
cpm1.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
cpm2_pic.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
cpm2_pic.h [POWERPC] cpm2: CPM2 interrupt controller fix 2007-02-07 14:03:20 +11:00
cpm2.c [POWERPC] CPM: Always use new binding. 2008-04-17 01:01:40 -05:00
cpm_common.c [POWERPC] CPM: Always use new binding. 2008-04-17 01:01:40 -05:00
dart_iommu.c [LIB]: Make PowerPC LMB code generic so sparc64 can use it too. 2008-02-13 16:56:49 -08:00
dart.h [POWERPC] Use 4kB iommu pages even on 64kB-page systems 2006-11-01 14:52:48 +11:00
dcr-low.S [POWERPC] Generic DCR infrastructure 2006-12-04 16:08:25 +11:00
dcr.c [POWERPC] 4xx: Fix compiler warning on DCR_NATIVE only builds 2008-05-29 07:06:56 -05:00
fsl_lbc.c [POWERPC] fsl_lbc: implement few UPM routines 2008-04-17 01:01:38 -05:00
fsl_msi.c [POWERPC] fsl_msi: few (mostly cosmetic) fixes 2008-06-02 14:44:25 -05:00
fsl_msi.h [POWERPC] fsl: PCIe MSI support for 83xx/85xx/86xx processors. 2008-06-02 14:44:24 -05:00
fsl_pci.c [POWERPC] fsl_msi: few (mostly cosmetic) fixes 2008-06-02 14:44:25 -05:00
fsl_pci.h [POWERPC] Fixup resources on pci_bus for PCIe PHB when no device is connected 2007-07-23 10:27:08 -05:00
fsl_rio.c [RAPIDIO] fix current kernel-doc notation 2008-05-01 23:01:54 -05:00
fsl_soc.c Merge branch 'merge' 2008-06-09 12:19:41 +10:00
fsl_soc.h powerpc: Add DIU platform code for MPC8610HPCD 2008-04-28 08:58:40 -07:00
grackle.c [POWERPC] pci32: Add flags modifying the PCI code behaviour 2007-12-20 16:18:07 +11:00
i8259.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
indirect_pci.c powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata 2008-06-17 19:01:38 -04:00
ipic.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
ipic.h [POWERPC] ipic: ack only for edge interrupts 2007-12-12 01:53:07 -06:00
Kconfig [POWERPC] 4xx: PLB to PCI Express support 2007-12-23 13:12:34 -06:00
Makefile [POWERPC] fsl: PCIe MSI support for 83xx/85xx/86xx processors. 2008-06-02 14:44:24 -05:00
micropatch.c [POWERPC] CPM: Rename commproc to cpm1 and cpm2_common.c to cpm2.c 2008-01-28 08:31:05 -06:00
mmio_nvram.c [POWERPC] arch/powerpc/: Spelling fixes 2007-12-20 16:15:51 +11:00
mpc8xx_pic.c [POWERPC] arch/powerpc/sysdev: Add missing of_node_put 2008-02-06 22:06:59 +11:00
mpc8xx_pic.h [POWERPC] 8xx: mpc885ads pcmcia support 2007-07-10 00:33:51 -05:00
mpic_msi.c [POWERPC] sysdev/mpic_msi.c should include sysdev/mpic.h 2008-05-14 22:31:50 +10:00
mpic_pasemi_msi.c [POWERPC] mpic_pasemi_msi: Failed allocation unnoticed 2008-05-14 22:31:20 +10:00
mpic_u3msi.c [POWERPC] mpic_u3msi: Failed allocation unnoticed 2008-05-14 22:31:25 +10:00
mpic.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
mpic.h [POWERPC] pasemi: Implement NMI support 2007-12-28 09:22:24 -06:00
mv64x60_dev.c [POWERPC] Create of_buses for MV64x60 devices 2008-05-14 22:31:41 +10:00
mv64x60_pci.c [POWERPC] mv64x60: Fix FDT compatible names: mv64x60 => mv64360 2008-04-15 21:21:24 +10:00
mv64x60_pic.c [POWERPC] mv64x60: Fix FDT compatible names: mv64x60 => mv64360 2008-04-15 21:21:24 +10:00
mv64x60_udbg.c [POWERPC] Fix mv64x60 early console code to use cell-index property 2008-04-24 20:57:34 +10:00
mv64x60.h [POWERPC] Add Marvell mv64x60 udbg putc/getc functions 2007-09-22 14:49:21 +10:00
of_rtc.c [POWERPC] Enable RTC for Ebony and Walnut (v2) 2008-01-25 07:07:26 -06:00
pmi.c [POWERPC] Clean out asm/of_{platform, device}.h from sysdev/ 2007-12-06 14:44:30 +11:00
ppc4xx_pci.c powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata 2008-06-17 19:01:38 -04:00
ppc4xx_pci.h [POWERPC] 4xx: Add 460EX PCIe support to 4xx pci driver 2008-03-26 07:19:16 -05:00
ppc4xx_soc.c [POWERPC] 4xx: Create common ppc4xx_reset_system() in ppc4xx_soc.c 2008-04-02 20:44:56 -05:00
rtc_cmos_setup.c [POWERPC] Add MODULE_LICENSE to powerpc/sysdev/rtc_cmos_setup.c 2008-04-17 07:46:12 +10:00
tsi108_dev.c [POWERPC] Replace remaining __FUNCTION__ occurrences 2008-04-01 20:43:09 +11:00
tsi108_pci.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
uic.c powerpc: Fix irq_alloc_host() reference counting and callers 2008-06-09 13:51:16 +10:00
xilinx_intc.c [POWERPC] Xilinx: Fix compile warnings 2008-05-01 23:09:42 -05:00