• A
    PCI: Add DMA alias iterator · c25dc828
    Alex Williamson 提交于
    In a mixed PCI/PCI-X/PCIe topology, bridges can take ownership of
    transactions, replacing the original requester ID with their own.
    Sometimes we just want to know the resulting device or resulting alias;
    other times we want each step in the chain.  This iterator allows either
    usage.  When an endpoint is connected via an unbroken chain of PCIe
    switches and root ports, it has no alias and its requester ID is visible to
    the root bus.  When PCI/X get in the way, we pick up aliases for bridges.
    
    The reason why we potentially care about each step in the path is because
    of PCI-X.  PCI-X has the concept of a requester ID, but bridges may or may
    not take ownership of various types of transactions.  We therefore leave it
    to the consumer of this function to prune out what they don't care about
    rather than attempt to flatten the alias ourselves.
    Tested-by: NGeorge Spelvin <linux@horizon.com>
    Tested-by: NPat Erley <pat-lkml@erley.org>
    Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    c25dc828
pci.h 63.5 KB