lkml.org 
[lkml]   [2019]   [Jul]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 8/9] PCI/DPC: Add support for DPC recovery on NON_FATAL errors
    Date
    From: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>

    Currently, in native mode, DPC driver is configured to trigger DPC only
    for FATAL errors and hence it only supports port recovery for FATAL
    errors. But with Error Disconnect Recover (EDR) support, DPC
    configuration is done by firmware, and hence we should expect DPC
    triggered for both FATAL/NON-FATAL errors. So add support for DPC
    recovery with NON-FATAL errors.

    Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
    ---
    drivers/pci/pcie/dpc.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c
    index 6e350149d793..5d328812aea9 100644
    --- a/drivers/pci/pcie/dpc.c
    +++ b/drivers/pci/pcie/dpc.c
    @@ -267,15 +267,20 @@ static void dpc_process_error(struct dpc_dev *dpc)
    /* show RP PIO error detail information */
    if (dpc->rp_extensions && reason == 3 && ext_reason == 0)
    dpc_process_rp_pio_error(dpc);
    - else if (reason == 0 &&
    + else if (reason <= 2 &&
    dpc_get_aer_uncorrect_severity(pdev, &info) &&
    aer_get_device_error_info(pdev, &info)) {
    aer_print_error(pdev, &info);
    pci_cleanup_aer_uncorrect_error_status(pdev);
    - pci_aer_clear_fatal_status(pdev);
    + if (reason != 1)
    + pci_aer_clear_fatal_status(pdev);
    }

    - /* We configure DPC so it only triggers on ERR_FATAL */
    + /*
    + * Irrespective of whether the DPC event is triggered by
    + * ERR_FATAL or ERR_NONFATAL, since the link is already down,
    + * use the FATAL error recovery path for both cases.
    + */
    pcie_do_recovery(pdev, pci_channel_io_frozen, PCIE_PORT_SERVICE_DPC);
    }

    --
    2.21.0
    \
     
     \ /
      Last update: 2019-07-23 22:25    [W:3.035 / U:0.244 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site