• Sinan Kaya's avatar
    PCI: Enable PASID only if entire path supports End-End TLP prefixes · 7ce3f912
    Sinan Kaya authored
    A PCIe endpoint carries the process address space identifier (PASID) in
    the TLP prefix as part of the memory read/write transaction. The address
    information in the TLP is relevant only for a given PASID context.
    
    An IOMMU takes PASID value and the address information from the
    TLP to look up the physical address in the system.
    
    PASID is an End-End TLP Prefix (PCIe r4.0, sec 6.20).  Sec 2.2.10.2 says
    
      It is an error to receive a TLP with an End-End TLP Prefix by a
      Receiver that does not support End-End TLP Prefixes. A TLP in
      violation of this rule is handled as a Malformed TLP. This is a
      reported error associated with the Receiving Port (see Section 6.2).
    
    Prevent error condition by proactively requiring End-End TLP prefix to be
    supported on the entire data path between the endpoint and the root port
    before enabling PASID.
    Signed-off-by: default avatarSinan Kaya <okaya@codeaurora.org>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    7ce3f912
probe.c 79.7 KB