]> git.baikalelectronics.ru Git - kernel.git/commit
PCI: add ACS validation utility
authorAlex Williamson <alex.williamson@redhat.com>
Mon, 11 Jun 2012 05:27:07 +0000 (05:27 +0000)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 12 Jun 2012 15:21:42 +0000 (09:21 -0600)
commit434cfcf797218b6f5578ec51ff9f59557278fda7
tree031c42d1537e9ee25b7392a652a7799c3914c972
parent361b378ab4ea186d7dd98beb08c3583bbc9d6cf2
PCI: add ACS validation utility

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: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pci.c
drivers/pci/quirks.c
include/linux/pci.h