Commit e0f90b64 authored by Linas Vepstas's avatar Linas Vepstas Committed by Paul Mackerras

[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: default avatarLinas Vepstas <linas@austin.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 39d16e29
...@@ -367,8 +367,10 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) ...@@ -367,8 +367,10 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
*/ */
if ((event->state == pci_channel_io_perm_failure) && if ((event->state == pci_channel_io_perm_failure) &&
((event->time_unavail <= 0) || ((event->time_unavail <= 0) ||
(event->time_unavail > MAX_WAIT_FOR_RECOVERY*1000))) (event->time_unavail > MAX_WAIT_FOR_RECOVERY*1000))) {
printk(KERN_WARNING "EEH: Permanent failure\n");
goto hard_fail; goto hard_fail;
}
eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */); eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
printk(KERN_WARNING printk(KERN_WARNING
...@@ -390,8 +392,10 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) ...@@ -390,8 +392,10 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
*/ */
if (result == PCI_ERS_RESULT_NONE) { if (result == PCI_ERS_RESULT_NONE) {
rc = eeh_reset_device(frozen_pdn, frozen_bus); rc = eeh_reset_device(frozen_pdn, frozen_bus);
if (rc) if (rc) {
printk(KERN_WARNING "EEH: Unable to reset, rc=%d\n", rc);
goto hard_fail; goto hard_fail;
}
} }
/* If all devices reported they can proceed, then re-enable MMIO */ /* 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,21 +421,27 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
} }
/* If any device has a hard failure, then shut off everything. */ /* If any device has a hard failure, then shut off everything. */
if (result == PCI_ERS_RESULT_DISCONNECT) if (result == PCI_ERS_RESULT_DISCONNECT) {
printk(KERN_WARNING "EEH: Device driver gave up\n");
goto hard_fail; goto hard_fail;
}
/* If any device called out for a reset, then reset the slot */ /* If any device called out for a reset, then reset the slot */
if (result == PCI_ERS_RESULT_NEED_RESET) { if (result == PCI_ERS_RESULT_NEED_RESET) {
rc = eeh_reset_device(frozen_pdn, NULL); rc = eeh_reset_device(frozen_pdn, NULL);
if (rc) if (rc) {
printk(KERN_WARNING "EEH: Cannot reset, rc=%d\n", rc);
goto hard_fail; goto hard_fail;
}
result = PCI_ERS_RESULT_NONE; result = PCI_ERS_RESULT_NONE;
pci_walk_bus(frozen_bus, eeh_report_reset, &result); pci_walk_bus(frozen_bus, eeh_report_reset, &result);
} }
/* All devices should claim they have recovered by now. */ /* All devices should claim they have recovered by now. */
if (result != PCI_ERS_RESULT_RECOVERED) if (result != PCI_ERS_RESULT_RECOVERED) {
printk(KERN_WARNING "EEH: Not recovered\n");
goto hard_fail; goto hard_fail;
}
/* Tell all device drivers that they can resume operations */ /* Tell all device drivers that they can resume operations */
pci_walk_bus(frozen_bus, eeh_report_resume, NULL); pci_walk_bus(frozen_bus, eeh_report_resume, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment