Commit d740f4be authored by Shannon Nelson's avatar Shannon Nelson Committed by David S. Miller

pds_core: add simple AER handler

Set up the pci_error_handlers error_detected and resume to be
useful in handling AER events.
Reviewed-by: default avatarBrett Creeley <brett.creeley@amd.com>
Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 06d53b03
...@@ -45,6 +45,7 @@ static void pdsc_unmap_bars(struct pdsc *pdsc) ...@@ -45,6 +45,7 @@ static void pdsc_unmap_bars(struct pdsc *pdsc)
for (i = 0; i < PDS_CORE_BARS_MAX; i++) { for (i = 0; i < PDS_CORE_BARS_MAX; i++) {
if (bars[i].vaddr) if (bars[i].vaddr)
pci_iounmap(pdsc->pdev, bars[i].vaddr); pci_iounmap(pdsc->pdev, bars[i].vaddr);
bars[i].vaddr = NULL;
} }
} }
...@@ -512,10 +513,33 @@ void pdsc_reset_done(struct pci_dev *pdev) ...@@ -512,10 +513,33 @@ void pdsc_reset_done(struct pci_dev *pdev)
pdsc_restart_health_thread(pdsc); pdsc_restart_health_thread(pdsc);
} }
static pci_ers_result_t pdsc_pci_error_detected(struct pci_dev *pdev,
pci_channel_state_t error)
{
if (error == pci_channel_io_frozen) {
pdsc_reset_prepare(pdev);
return PCI_ERS_RESULT_NEED_RESET;
}
return PCI_ERS_RESULT_NONE;
}
static void pdsc_pci_error_resume(struct pci_dev *pdev)
{
struct pdsc *pdsc = pci_get_drvdata(pdev);
if (test_bit(PDSC_S_FW_DEAD, &pdsc->state))
pci_reset_function_locked(pdev);
}
static const struct pci_error_handlers pdsc_err_handler = { static const struct pci_error_handlers pdsc_err_handler = {
/* FLR handling */ /* FLR handling */
.reset_prepare = pdsc_reset_prepare, .reset_prepare = pdsc_reset_prepare,
.reset_done = pdsc_reset_done, .reset_done = pdsc_reset_done,
/* AER handling */
.error_detected = pdsc_pci_error_detected,
.resume = pdsc_pci_error_resume,
}; };
static struct pci_driver pdsc_driver = { static struct pci_driver pdsc_driver = {
......
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