diff options
author | Linas Vepstas <linas@austin.ibm.com> | 2007-03-19 15:52:04 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-03-22 07:52:50 -0400 |
commit | e0f90b64181d668ce5995a40f312ed21085bfa98 (patch) | |
tree | 76d1185cfbff1a068c4cc4ad8cb07c102c1fa05a /arch/powerpc/platforms/pseries | |
parent | 39d16e295966a1f0025a65eaab4cb59fe5ba8c17 (diff) |
[POWERPC] EEH: Add clarifying messages.
There are multiple code patchs tht resuls in a "permanent
failure"; when examining rare events, it can be hard to see
which was taken. This patch adds printk's to assist.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/platforms/pseries')
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh_driver.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh_driver.c b/arch/powerpc/platforms/pseries/eeh_driver.c index a4c0bf84ef2e..550fad2199ad 100644 --- a/arch/powerpc/platforms/pseries/eeh_driver.c +++ b/arch/powerpc/platforms/pseries/eeh_driver.c | |||
@@ -367,8 +367,10 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) | |||
367 | */ | 367 | */ |
368 | if ((event->state == pci_channel_io_perm_failure) && | 368 | if ((event->state == pci_channel_io_perm_failure) && |
369 | ((event->time_unavail <= 0) || | 369 | ((event->time_unavail <= 0) || |
370 | (event->time_unavail > MAX_WAIT_FOR_RECOVERY*1000))) | 370 | (event->time_unavail > MAX_WAIT_FOR_RECOVERY*1000))) { |
371 | printk(KERN_WARNING "EEH: Permanent failure\n"); | ||
371 | goto hard_fail; | 372 | goto hard_fail; |
373 | } | ||
372 | 374 | ||
373 | eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */); | 375 | eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */); |
374 | printk(KERN_WARNING | 376 | printk(KERN_WARNING |
@@ -390,8 +392,10 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) | |||
390 | */ | 392 | */ |
391 | if (result == PCI_ERS_RESULT_NONE) { | 393 | if (result == PCI_ERS_RESULT_NONE) { |
392 | rc = eeh_reset_device(frozen_pdn, frozen_bus); | 394 | rc = eeh_reset_device(frozen_pdn, frozen_bus); |
393 | if (rc) | 395 | if (rc) { |
396 | printk(KERN_WARNING "EEH: Unable to reset, rc=%d\n", rc); | ||
394 | goto hard_fail; | 397 | goto hard_fail; |
398 | } | ||
395 | } | 399 | } |
396 | 400 | ||
397 | /* If all devices reported they can proceed, then re-enable MMIO */ | 401 | /* If all devices reported they can proceed, then re-enable MMIO */ |
@@ -417,21 +421,27 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) | |||
417 | } | 421 | } |
418 | 422 | ||
419 | /* If any device has a hard failure, then shut off everything. */ | 423 | /* If any device has a hard failure, then shut off everything. */ |
420 | if (result == PCI_ERS_RESULT_DISCONNECT) | 424 | if (result == PCI_ERS_RESULT_DISCONNECT) { |
425 | printk(KERN_WARNING "EEH: Device driver gave up\n"); | ||
421 | goto hard_fail; | 426 | goto hard_fail; |
427 | } | ||
422 | 428 | ||
423 | /* If any device called out for a reset, then reset the slot */ | 429 | /* If any device called out for a reset, then reset the slot */ |
424 | if (result == PCI_ERS_RESULT_NEED_RESET) { | 430 | if (result == PCI_ERS_RESULT_NEED_RESET) { |
425 | rc = eeh_reset_device(frozen_pdn, NULL); | 431 | rc = eeh_reset_device(frozen_pdn, NULL); |
426 | if (rc) | 432 | if (rc) { |
433 | printk(KERN_WARNING "EEH: Cannot reset, rc=%d\n", rc); | ||
427 | goto hard_fail; | 434 | goto hard_fail; |
435 | } | ||
428 | result = PCI_ERS_RESULT_NONE; | 436 | result = PCI_ERS_RESULT_NONE; |
429 | pci_walk_bus(frozen_bus, eeh_report_reset, &result); | 437 | pci_walk_bus(frozen_bus, eeh_report_reset, &result); |
430 | } | 438 | } |
431 | 439 | ||
432 | /* All devices should claim they have recovered by now. */ | 440 | /* All devices should claim they have recovered by now. */ |
433 | if (result != PCI_ERS_RESULT_RECOVERED) | 441 | if (result != PCI_ERS_RESULT_RECOVERED) { |
442 | printk(KERN_WARNING "EEH: Not recovered\n"); | ||
434 | goto hard_fail; | 443 | goto hard_fail; |
444 | } | ||
435 | 445 | ||
436 | /* Tell all device drivers that they can resume operations */ | 446 | /* Tell all device drivers that they can resume operations */ |
437 | pci_walk_bus(frozen_bus, eeh_report_resume, NULL); | 447 | pci_walk_bus(frozen_bus, eeh_report_resume, NULL); |