• O
    PCI/DPC: Disable ERR_NONFATAL handling by DPC · 6927868e
    Oza Pawandeep 提交于
    PCIe ERR_NONFATAL errors mean a particular transaction is unreliable but
    the Link is otherwise fully functional (PCIe r4.0, sec 6.2.2).
    
    The AER driver handles these by logging the error details and calling
    driver-supplied pci_error_handlers callbacks.  It does not reset downstream
    devices, does not remove them from the PCI subsystem, does not re-enumerate
    them, and does not call their driver .remove() or .probe() methods.
    
    But DPC driver previously enabled DPC on ERR_NONFATAL, so if the hardware
    supports DPC, these errors caused a Link reset (performed automatically by
    the hardware), followed by the DPC driver removing affected devices (which
    calls their .remove() methods), bringing the Link back up, and
    re-enumerating (which calls driver .probe() methods).
    
    Disable ERR_NONFATAL DPC triggering so these errors will only be handled by
    AER.  This means drivers won't have to deal with different usage of their
    pci_error_handlers callbacks and .probe() and .remove() methods based on
    whether the platform has DPC support.
    Signed-off-by: NOza Pawandeep <poza@codeaurora.org>
    [bhelgaas: changelog]
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    6927868e
dpc.c 8.7 KB