Re: [PATCH 00/14] PCI/P2PDMA: Support transactions that hit the host bridge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 23.07.19 um 01:08 schrieb Logan Gunthorpe:
> As discussed on the list previously, in order to fully support the
> whitelist Christian added with the IOMMU, we must ensure that we
> map any buffer going through the IOMMU with an aprropriate dma_map
> call. This patchset accomplishes this by cleaning up the output of
> upstream_bridge_distance() to better indicate the mapping requirements,
> caching these requirements in an xarray, then looking them up at map
> time and applying the appropriate mapping method.
>
> After this patchset, it's possible to use the NVMe-of P2P support to
> transfer between devices without a switch on the whitelisted root
> complexes. A couple Intel device I have tested this on have also
> been added to the white list.
>
> Most of the changes are contained within the p2pdma.c, but there are
> a few minor touches to other subsystems, mostly to add support
> to call an unmap function.
>
> The final patch in this series demonstrates a possible
> pci_p2pdma_map_resource() function that I expect Christian will need
> but does not have any users at this time so I don't intend for it to be
> considered for merging.
>
> This patchset is based on 5.3-rc1 and a git branch is available here:
>
> https://github.com/sbates130272/linux-p2pmem/ p2pdma_rc_map_v1

I reviewed patches #1-#3 and #14.

Feel free to stick an Acked-by: Christian König 
<christian.koenig@xxxxxxx> to the rest, but I'm not really deep into the 
NVMe P2P handling here.

Regards,
Christian.


>
> --
>
> Logan Gunthorpe (14):
>    PCI/P2PDMA: Add constants for not-supported result
>      upstream_bridge_distance()
>    PCI/P2PDMA: Factor out __upstream_bridge_distance()
>    PCI/P2PDMA: Apply host bridge white list for ACS
>    PCI/P2PDMA: Cache the result of upstream_bridge_distance()
>    PCI/P2PDMA: Factor out host_bridge_whitelist()
>    PCI/P2PDMA: Add whitelist support for Intel Host Bridges
>    PCI/P2PDMA: Add the provider's pci_dev to the dev_pgmap struct
>    PCI/P2PDMA: Add attrs argument to pci_p2pdma_map_sg()
>    PCI/P2PDMA: Introduce pci_p2pdma_unmap_sg()
>    PCI/P2PDMA: Factor out __pci_p2pdma_map_sg()
>    PCI/P2PDMA: dma_map P2PDMA map requests that traverse the host bridge
>    PCI/P2PDMA: No longer require no-mmu for host bridge whitelist
>    PCI/P2PDMA: Update documentation for pci_p2pdma_distance_many()
>    PCI/P2PDMA: Introduce pci_p2pdma_[un]map_resource()
>
>   drivers/infiniband/core/rw.c |   6 +-
>   drivers/nvme/host/pci.c      |  10 +-
>   drivers/pci/p2pdma.c         | 400 +++++++++++++++++++++++++++--------
>   include/linux/memremap.h     |   1 +
>   include/linux/pci-p2pdma.h   |  28 ++-
>   5 files changed, 341 insertions(+), 104 deletions(-)
>
> --
> 2.20.1





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux