|
@@ -278,6 +278,7 @@ static int report_error_detected(struct pci_dev *dev, void *data)
|
|
} else {
|
|
} else {
|
|
err_handler = dev->driver->err_handler;
|
|
err_handler = dev->driver->err_handler;
|
|
vote = err_handler->error_detected(dev, result_data->state);
|
|
vote = err_handler->error_detected(dev, result_data->state);
|
|
|
|
+ pci_uevent_ers(dev, PCI_ERS_RESULT_NONE);
|
|
}
|
|
}
|
|
|
|
|
|
result_data->result = merge_result(result_data->result, vote);
|
|
result_data->result = merge_result(result_data->result, vote);
|
|
@@ -341,6 +342,7 @@ static int report_resume(struct pci_dev *dev, void *data)
|
|
|
|
|
|
err_handler = dev->driver->err_handler;
|
|
err_handler = dev->driver->err_handler;
|
|
err_handler->resume(dev);
|
|
err_handler->resume(dev);
|
|
|
|
+ pci_uevent_ers(dev, PCI_ERS_RESULT_RECOVERED);
|
|
out:
|
|
out:
|
|
device_unlock(&dev->dev);
|
|
device_unlock(&dev->dev);
|
|
return 0;
|
|
return 0;
|
|
@@ -541,6 +543,7 @@ static void do_recovery(struct pci_dev *dev, int severity)
|
|
return;
|
|
return;
|
|
|
|
|
|
failed:
|
|
failed:
|
|
|
|
+ pci_uevent_ers(dev, PCI_ERS_RESULT_DISCONNECT);
|
|
/* TODO: Should kernel panic here? */
|
|
/* TODO: Should kernel panic here? */
|
|
dev_info(&dev->dev, "AER: Device recovery failed\n");
|
|
dev_info(&dev->dev, "AER: Device recovery failed\n");
|
|
}
|
|
}
|