aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorLinas Vepstas <linas@austin.ibm.com>2007-05-08 19:33:29 -0400
committerPaul Mackerras <paulus@samba.org>2007-05-09 02:35:00 -0400
commitede8ca269f9f3e3fa4fb8561671f0699eefc32c5 (patch)
tree350a7c89fb68288af262e967f13994d5d6f2d199 /arch/powerpc
parentb7a6912969af7586ade62667d6d1c7ecc534faa1 (diff)
[POWERPC] EEH: log error only after driver notification.
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>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/platforms/pseries/eeh_driver.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c
index 3170e003f76a..e5b7635202fd 100644
--- a/arch/powerpc/platforms/pseries/eeh_driver.c
+++ b/arch/powerpc/platforms/pseries/eeh_driver.c
@@ -361,7 +361,6 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
361 goto hard_fail; 361 goto hard_fail;
362 } 362 }
363 363
364 eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
365 printk(KERN_WARNING 364 printk(KERN_WARNING
366 "EEH: This PCI device has failed %d times since last reboot: " 365 "EEH: This PCI device has failed %d times since last reboot: "
367 "location=%s driver=%s pci addr=%s\n", 366 "location=%s driver=%s pci addr=%s\n",
@@ -375,6 +374,11 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
375 */ 374 */
376 pci_walk_bus(frozen_bus, eeh_report_error, &result); 375 pci_walk_bus(frozen_bus, eeh_report_error, &result);
377 376
377 /* Since rtas may enable MMIO when posting the error log,
378 * don't post the error log until after all dev drivers
379 * have been informed. */
380 eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
381
378 /* If all device drivers were EEH-unaware, then shut 382 /* If all device drivers were EEH-unaware, then shut
379 * down all of the device drivers, and hope they 383 * down all of the device drivers, and hope they
380 * go down willingly, without panicing the system. 384 * go down willingly, without panicing the system.