Commit 9979d2ac authored by Mark A. Greer's avatar Mark A. Greer Committed by Linus Torvalds

[PATCH] ppc32: workaround for mpc10x speculative PCI read erratum

824x and 107 bridges from Freescale/Tundra have an erratum where
speculative PCI reads may return stale data.  One of the two documented
workarounds is to turn of speculative PCI reads.  This patch does that.
Signed-off-by: default avatarMark A. Greer <mgreer@mvista.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 85fea39e
......@@ -306,6 +306,23 @@ mpc10x_bridge_init(struct pci_controller *hose,
mpc10x_disable_store_gathering(hose);
#endif
/*
* 8240 erratum 26, 8241/8245 erratum 29, 107 erratum 23: speculative
* PCI reads may return stale data so turn off.
*/
if ((host_bridge == MPC10X_BRIDGE_8240)
|| (host_bridge == MPC10X_BRIDGE_8245)
|| (host_bridge == MPC10X_BRIDGE_107)) {
early_read_config_dword(hose, 0, PCI_DEVFN(0,0),
MPC10X_CFG_PICR1_REG, &picr1);
picr1 &= ~MPC10X_CFG_PICR1_SPEC_PCI_RD;
early_write_config_dword(hose, 0, PCI_DEVFN(0,0),
MPC10X_CFG_PICR1_REG, picr1);
}
if (ppc_md.progress) ppc_md.progress("mpc10x:exit", 0x100);
return 0;
}
......
......@@ -105,6 +105,7 @@
#define MPC10X_CFG_PICR1_ADDR_MAP_MASK 0x00010000
#define MPC10X_CFG_PICR1_ADDR_MAP_A 0x00010000
#define MPC10X_CFG_PICR1_ADDR_MAP_B 0x00000000
#define MPC10X_CFG_PICR1_SPEC_PCI_RD 0x00000004
#define MPC10X_CFG_PICR1_ST_GATH_EN 0x00000040
#define MPC10X_CFG_MAPB_OPTIONS_REG 0xe0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment