diff options
| author | Linas Vepstas <linas@austin.ibm.com> | 2007-05-08 19:33:29 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2007-05-09 02:35:00 -0400 |
| commit | ede8ca269f9f3e3fa4fb8561671f0699eefc32c5 (patch) | |
| tree | 350a7c89fb68288af262e967f13994d5d6f2d199 | |
| parent | b7a6912969af7586ade62667d6d1c7ecc534faa1 (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>
| -rw-r--r-- | arch/powerpc/platforms/pseries/eeh_driver.c | 6 |
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. |
