[PATCH 1/9] block: don't merge different kinds of P2P transfers in a single bio
Keith Busch
kbusch at kernel.org
Wed Jun 11 09:41:03 PDT 2025
On Wed, Jun 11, 2025 at 10:39:17AM -0600, Logan Gunthorpe wrote:
>
>
> 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.
Is there some other mechansim that ensures a host memory mapped IOVA
doesn't collide with a PCI bus address then?
More information about the Linux-nvme
mailing list