Re: [PATCH v3 1/1] PCI: Add translated request only flag for pci_enable_pasid()

From: Baolu Lu
Date: Wed Feb 01 2023 - 00:51:45 EST


On 2023/2/1 8:14, Bjorn Helgaas wrote:
The translated address is specified by the IOMMU driver. The IOMMU
driver ensures that the address is a DMA buffer address instead of any
P2P address in the PCI fabric. Therefore, any translated memory request
will eventually be routed to IOMMU regardless of whether there is ACS
control in the up-streaming path.
A Memory Request with an address that is not a P2P address, i.e., it
is not contained in any bridge aperture, will*always* be routed
toward the RC, won't it?

Yes.

Isn't that the case regardless of whether
the address is translated or untranslated, and even regardless of ACS?

They are different. The translated addresses are approved by the Linux
kernel. But untranslated addresses are not. Malicious or buggy userspace
applications could program the device to DMA to addresses locating in
the P2P aperture.

IIUC, ACS basically causes peer-to-peer requests to be routed upstream
instead of directly to the peer.

Yes.

Best regards,
baolu