[PATCH]: Powerpc: EEH failure to mark pci slot as frozen.
Linas Vepstas
linas at austin.ibm.com
Tue Sep 26 09:01:42 EST 2006
Paul,
Resending, this one seems to have fallen through the cracks,
its not yet in 2.6.18-git4 or 2.6.18-mm1 (the others I've
sent have made it in, thanks!).
This patch is needed to make the symbios scsi recovery work
correctly. Please apply and forward.
--linas
Bug fix: when marking a slot as frozen, we forgot to mark
pci device itself as frozen. (we did manage to mark the
pci children, but forget the parent itself.)
This is needed so that some device drivers can check the
pci status in critical sections (e.g. in spin loops with
interrupts disabled).
Signed-off-by: Linas Vepstas <linas at austin.ibm.com>
----
arch/powerpc/platforms/pseries/eeh.c | 7 +++++++
1 file changed, 7 insertions(+)
Index: linux-2.6.18-mm1/arch/powerpc/platforms/pseries/eeh.c
===================================================================
--- linux-2.6.18-mm1.orig/arch/powerpc/platforms/pseries/eeh.c 2006-09-25 17:22:51.000000000 -0500
+++ linux-2.6.18-mm1/arch/powerpc/platforms/pseries/eeh.c 2006-09-25 17:31:55.000000000 -0500
@@ -225,6 +225,7 @@ static void __eeh_mark_slot (struct devi
void eeh_mark_slot (struct device_node *dn, int mode_flag)
{
+ struct pci_dev *dev;
dn = find_device_pe (dn);
/* Back up one, since config addrs might be shared */
@@ -232,6 +233,12 @@ void eeh_mark_slot (struct device_node *
dn = dn->parent;
PCI_DN(dn)->eeh_mode |= mode_flag;
+
+ /* Mark the pci device too */
+ dev = PCI_DN(dn)->pcidev;
+ if (dev)
+ dev->error_state = pci_channel_io_frozen;
+
__eeh_mark_slot (dn->child, mode_flag);
}
More information about the Linuxppc-dev
mailing list