mirror of https://gitee.com/openkylin/linux.git
[POWERPC] EEH: verify state change
After requesting a state change, verify that the state change actually ocurred, and the system ends up in the expected state. Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
d0ab95ca98
commit
fa1be476a2
|
@ -527,9 +527,13 @@ rtas_pci_enable(struct pci_dn *pdn, int function)
|
|||
function);
|
||||
|
||||
if (rc)
|
||||
printk(KERN_WARNING "EEH: Cannot enable function %d, err=%d dn=%s\n",
|
||||
printk(KERN_WARNING "EEH: Unexpected state change %d, err=%d dn=%s\n",
|
||||
function, rc, pdn->node->full_name);
|
||||
|
||||
rc = eeh_wait_for_slot_status (pdn, PCI_BUS_RESET_WAIT_MSEC);
|
||||
if ((rc == 4) && (function == EEH_THAW_MMIO))
|
||||
return 0;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -300,7 +300,7 @@ static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus)
|
|||
/* The longest amount of time to wait for a pci device
|
||||
* to come back on line, in seconds.
|
||||
*/
|
||||
#define MAX_WAIT_FOR_RECOVERY 15
|
||||
#define MAX_WAIT_FOR_RECOVERY 150
|
||||
|
||||
struct pci_dn * handle_eeh_events (struct eeh_event *event)
|
||||
{
|
||||
|
@ -393,6 +393,8 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
|
|||
if (result == PCI_ERS_RESULT_CAN_RECOVER) {
|
||||
rc = rtas_pci_enable(frozen_pdn, EEH_THAW_MMIO);
|
||||
|
||||
if (rc < 0)
|
||||
goto hard_fail;
|
||||
if (rc) {
|
||||
result = PCI_ERS_RESULT_NEED_RESET;
|
||||
} else {
|
||||
|
@ -405,6 +407,8 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
|
|||
if (result == PCI_ERS_RESULT_CAN_RECOVER) {
|
||||
rc = rtas_pci_enable(frozen_pdn, EEH_THAW_DMA);
|
||||
|
||||
if (rc < 0)
|
||||
goto hard_fail;
|
||||
if (rc)
|
||||
result = PCI_ERS_RESULT_NEED_RESET;
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue