1
linux/arch/powerpc
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
..
boot powerpc/4xx: Convert Sam440ep DTS to dts-v1 2008-06-11 08:33:59 -04:00
configs powerpc/4xx: Sam440ep support 2008-06-11 08:32:49 -04:00
kernel Revert "[POWERPC] 4xx: Fix 460GT support to not enable FPU" 2008-06-11 07:52:40 -04:00
kvm KVM: ppc: deliver INTERRUPT_FP_UNAVAIL to the guest 2008-05-04 14:44:45 +03:00
lib [POWERPC] ppc: More compile fixes 2008-05-12 22:57:51 +10:00
math-emu [POWERPC] Replace remaining __FUNCTION__ occurrences 2008-04-01 20:43:09 +11:00
mm Merge branch 'merge' 2008-06-09 12:19:41 +10:00
oprofile Merge branch 'linux-2.6' 2008-04-14 21:11:02 +10:00
platforms powerpc/4xx: Sam440ep support 2008-06-11 08:32:49 -04:00
sysdev powerpc/4xx: Workaround for PPC440EPx/GRx PCI_28 Errata 2008-06-17 19:01:38 -04:00
xmon [POWERPC] Make cpus_in_xmon static and remove extern mess from hvc_console.c 2008-05-14 22:31:57 +10:00
.gitignore
Kconfig [RAPIDIO] Add RapidIO option to kernel configuration 2008-04-29 19:40:27 +10:00
Kconfig.debug [POWERPC] Add IRQSTACKS support on ppc32 2008-04-29 15:57:34 +10:00
Makefile KVM: ppc: PowerPC 440 KVM implementation 2008-04-27 18:21:39 +03:00