On 2023/1/31 2:38, Bjorn Helgaas wrote:
PCIe r6.0, sec 6.20.1: A Function is not permitted to generate Requests using Translated Addresses and a PASID unless both PASID Enable and Translated Requests with PASID Enable are Set. You want AMD graphics devices to do DMA with translated addresses and PASID, right? pci_enable_pasid() sets PASID Enable (PCI_PASID_CTRL_ENABLE), but I don't see where "Translated Requests with PASID Enable" is set. We don't even have a #define for it. I would think we should check "Translated Requests with PASID Supported" before setting "Translated Requests with PASID Enable", too?
This seems to be an ECN for PCIe 5.x: https://members.pcisig.com/wg/PCI-SIG/document/14929 What I read from this ECN is that, With this ECN, translated memory requests for PASIDs are not allowed to carry a PASID prefix if "Translated Requests with PASID Enabled" is not set. It does not mean whether the device can generate translated memory requests for PASID, but whether the memory request can carry a PASID prefix. Best regards, baolu