• Alex Williamson's avatar
    PCI: Test for std config alias when testing extended config space · 78916b00
    Alex Williamson authored
    When a PCI-to-PCIe bridge is stacked on a PCIe-to-PCI bridge, we can have
    PCIe endpoints masked by a conventional PCI bus.  This makes the extended
    config space of the PCIe endpoint inaccessible.  The PCIe-to-PCI bridge is
    supposed to handle any type 1 configuration transactions where the extended
    config offset bits are non-zero as an Unsupported Request rather than
    forward it to the secondary interface.  As noted here, there are a couple
    known offenders to this rule.  These bridges drop the extended offset bits,
    resulting in the conventional config space being aliased many times across
    the extended config space.  For Intel NICs, this alias often seems to
    expose a bogus SR-IOV cap.
    
    Stacking bridges may seem like an uncommon scenario, but note that any
    conventional PCI slot in a modern PC is already the secondary interface of
    an onboard PCIe-to-PCI bridge.  The user need only add a PCI-to-PCIe
    adapter and PCIe device to encounter this problem.
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    78916b00
probe.c 52.8 KB