• Bjorn Helgaas's avatar
    PCI/DPC: Process RP PIO details only if RP PIO extensions supported · e68d281c
    Bjorn Helgaas authored
    The RP PIO registers (status, mask, severity, etc) are only implemented if
    the "RP Extensions for DPC" bit is set in the DPC Capabilities register.
    
    Previously we called dpc_process_rp_pio_error(), which reads and decodes
    those RP PIO registers, whenever the DPC Status register indicated an "RP
    PIO error" (Trigger Reason == 3 and Trigger Reason Extension == 0).
    
    It does seem reasonable to assume that DPC Status would only indicate an RP
    PIO error if the RP extensions are supported, but PCIe r4.0, sec 7.9.15.4,
    is actually not explicit about that: it does not say "Trigger Reason
    Extension == 0 is valid only for Root Ports that support RP Extensions for
    DPC."
    
    Check whether the RP Extensions for DPC are supported before trying to read
    the RP PIO registers.
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarKeith Busch <keith.busch@intel.com>
    Reviewed-by: default avatarSinan Kaya <okaya@codeaurora.org>
    e68d281c
pcie-dpc.c 10.3 KB