mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
Merge branch 'pci/aer'
- Log a message to identify the device that caused AER/DPC recovery to
fail (Yicong Yang)
- Initialize aer_fifo before use (Dongdong Liu)
* pci/aer:
PCI/AER: Initialize aer_fifo
PCI/AER: Factor message prefixes with dev_fmt()
PCI/AER: Log which device prevents error recovery
This commit is contained in:
commit
ba51b7188d
|
|
@ -1445,6 +1445,7 @@ static int aer_probe(struct pcie_device *dev)
|
|||
return -ENOMEM;
|
||||
|
||||
rpc->rpd = port;
|
||||
INIT_KFIFO(rpc->aer_fifo);
|
||||
set_service_data(dev, rpc);
|
||||
|
||||
status = devm_request_threaded_irq(device, dev->irq, aer_irq, aer_isr,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@
|
|||
* Zhang Yanmin (yanmin.zhang@intel.com)
|
||||
*/
|
||||
|
||||
#define dev_fmt(fmt) "AER: " fmt
|
||||
|
||||
#include <linux/pci.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
|
|
@ -61,10 +63,12 @@ static int report_error_detected(struct pci_dev *dev,
|
|||
* error callbacks of "any" device in the subtree, and will
|
||||
* exit in the disconnected error state.
|
||||
*/
|
||||
if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE)
|
||||
if (dev->hdr_type != PCI_HEADER_TYPE_BRIDGE) {
|
||||
vote = PCI_ERS_RESULT_NO_AER_DRIVER;
|
||||
else
|
||||
pci_info(dev, "can't recover (no error_detected callback)\n");
|
||||
} else {
|
||||
vote = PCI_ERS_RESULT_NONE;
|
||||
}
|
||||
} else {
|
||||
err_handler = dev->driver->err_handler;
|
||||
vote = err_handler->error_detected(dev, state);
|
||||
|
|
@ -233,12 +237,12 @@ void pcie_do_recovery(struct pci_dev *dev, enum pci_channel_state state,
|
|||
|
||||
pci_aer_clear_device_status(dev);
|
||||
pci_cleanup_aer_uncorrect_error_status(dev);
|
||||
pci_info(dev, "AER: Device recovery successful\n");
|
||||
pci_info(dev, "device recovery successful\n");
|
||||
return;
|
||||
|
||||
failed:
|
||||
pci_uevent_ers(dev, PCI_ERS_RESULT_DISCONNECT);
|
||||
|
||||
/* TODO: Should kernel panic here? */
|
||||
pci_info(dev, "AER: Device recovery failed\n");
|
||||
pci_info(dev, "device recovery failed\n");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user