[POWERPC] EEH: log error only after driver notification.
authorLinas Vepstas <linas@austin.ibm.com>
Tue, 8 May 2007 23:33:29 +0000 (09:33 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 9 May 2007 06:35:00 +0000 (16:35 +1000)
It turns out many/most versions of firmware enable MMIO when
the slto-error-detail rtas call is made (in violation of the
architecture). Thus, it would be best to call slot-error-detail
only after notifying device drivers of a freeze, as otherwise,
a variety of strange and unexpected things may happen.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/pseries/eeh_driver.c

index 3170e003f76ada0a313888fe30d51e06c3917c4c..e5b7635202fdc662c4f5882164c67c0addc8be21 100644 (file)
@@ -361,7 +361,6 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
                goto hard_fail;
        }
 
-       eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
        printk(KERN_WARNING
           "EEH: This PCI device has failed %d times since last reboot: "
                "location=%s driver=%s pci addr=%s\n",
@@ -375,6 +374,11 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
         */
        pci_walk_bus(frozen_bus, eeh_report_error, &result);
 
+       /* Since rtas may enable MMIO when posting the error log,
+        * don't post the error log until after all dev drivers
+        * have been informed. */
+       eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
+
        /* If all device drivers were EEH-unaware, then shut
         * down all of the device drivers, and hope they
         * go down willingly, without panicing the system.