[PATCH 1/9] block: don't merge different kinds of P2P transfers in a single bio

Logan Gunthorpe logang at deltatee.com
Wed Jun 11 09:39:17 PDT 2025



On 2025-06-11 10:26, Keith Busch wrote:
> If I recall correctly, the PCIe ACS features will default redirect
> everything up to the root-complex when you have the IOMMU on. A device
> can set its memory request TLP's Address Type field to have the switch
> direct the transaction directly to a peer device instead, but how does
> the nvme device know how to set the it memory request's AT field?
> There's nothing that says a command's addresses are untranslated IOVAs
> vs translated peer addresses, right?  Lacking some mechanism to specify
> what kind of address the nvme controller is dealing with, wouldn't you
> be forced to map peer addresses with the IOMMU, having P2P transactions
> make a round trip through it only using mapped IOVAs?

That is all correct. In order to use P2P on a switch, with the IOMMU
enabled, it is currently required to disable ACS for the devices in
question. This is done with the command line parameter disable_acs_redir
or config_acs.

Logan




More information about the Linux-nvme mailing list