• Jay Cornwall's avatar
    PCI: Add pci_enable_atomic_ops_to_root() · 430a2368
    Jay Cornwall authored
    The Atomic Operations feature (PCIe r4.0, sec 6.15) allows atomic
    transctions to be requested by, routed through and completed by PCIe
    components. Routing and completion do not require software support.
    Component support for each is detectable via the DEVCAP2 register.
    
    A Requester may use AtomicOps only if its PCI_EXP_DEVCTL2_ATOMIC_REQ is
    set. This should be set only if the Completer and all intermediate routing
    elements support AtomicOps.
    
    A concrete example is the AMD Fiji-class GPU (which is capable of making
    AtomicOp requests), below a PLX 8747 switch (advertising AtomicOp routing)
    with a Haswell host bridge (advertising AtomicOp completion support).
    
    Add pci_enable_atomic_ops_to_root() for per-device control over AtomicOp
    requests. This checks to be sure the Root Port supports completion of the
    desired AtomicOp sizes and the path to the Root Port supports routing the
    AtomicOps.
    Signed-off-by: default avatarJay Cornwall <Jay.Cornwall@amd.com>
    Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
    [bhelgaas: changelog, comments, whitespace]
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    430a2368
pci.c 148 KB