• Alex Williamson's avatar
    PCI: add ACS validation utility · ad805758
    Alex Williamson authored
    In a PCI environment, transactions aren't always required to reach
    the root bus before being re-routed.  Intermediate switches between
    an endpoint and the root bus can redirect DMA back downstream before
    things like IOMMUs have a chance to intervene.  Legacy PCI is always
    susceptible to this as it operates on a shared bus.  PCIe added a
    new capability to describe and control this behavior, Access Control
    Services, or ACS.
    
    The utility function pci_acs_enabled() allows us to test the ACS
    capabilities of an individual devices against a set of flags while
    pci_acs_path_enabled() tests a complete path from a given downstream
    device up to the specified upstream device.  We also include the
    ability to add device specific tests as it's likely we'll see
    devices that do not implement ACS, but want to indicate support
    for various capabilities in this space.
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    ad805758
pci.c 103 KB