linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v10 0/8] Userspace P2PDMA with O_DIRECT NVMe devices
@ 2022-09-22 16:39 Logan Gunthorpe
  2022-09-22 16:39 ` [PATCH v10 1/8] mm: introduce FOLL_PCI_P2PDMA to gate getting PCI P2PDMA pages Logan Gunthorpe
                   ` (9 more replies)
  0 siblings, 10 replies; 28+ messages in thread
From: Logan Gunthorpe @ 2022-09-22 16:39 UTC (permalink / raw)
  To: linux-kernel, linux-nvme, linux-block, linux-pci, linux-mm
  Cc: Christoph Hellwig, Greg Kroah-Hartman, Dan Williams,
	Jason Gunthorpe, Christian König, John Hubbard, Don Dutile,
	Matthew Wilcox, Daniel Vetter, Minturn Dave B, Jason Ekstrand,
	Dave Hansen, Xiong Jianxin, Bjorn Helgaas, Ira Weiny,
	Robin Murphy, Martin Oliveira, Chaitanya Kulkarni,
	Ralph Campbell, Stephen Bates, Logan Gunthorpe

Hi,

This is the latest P2PDMA userspace patch set. This version includes
some cleanup from feedback of the last posting[1].

This patch set enables userspace P2PDMA by allowing userspace to mmap()
allocated chunks of the CMB. The resulting VMA can be passed only
to O_DIRECT IO on NVMe backed files or block devices. A flag is added
to GUP() in Patch 1, then Patches 2 through 6 wire this flag up based
on whether the block queue indicates P2PDMA support. Patches 7
creates the sysfs resource that can hand out the VMAs and Patch 8
adds brief documentation for the new interface.

Feedback welcome.

This series is based on v6.0-rc6. A git branch is available here:

  https://github.com/sbates130272/linux-p2pmem/  p2pdma_user_cmb_v10

Thanks,

Logan

[1] https://lkml.kernel.org/r/20220825152425.6296-1-logang@deltatee.com

--

Changes since v8:
  - Rebased onto v6.0-rc6
  - Reworked iov iter changes to reuse the code better and
    name them without the _flags() prefix (per Christoph)
  - Renamed a number of flags variables to gup_flags (per John)
  - Minor fixups to the last documentation patch (from Greg and John)

Changes since v7:
  - Rebased onto v6.0-rc2, included reworking the iov_iter patch
    due to changes there
  - Drop the char device mmap implementation in favour of a sysfs
    based interface. (per Christoph)

Changes since v6:
  - Rebase onto v5.19-rc1
  - Rework how the pages are stored in the VMA per Jason's suggestion

Changes since v5:
  - Rebased onto v5.18-rc1 which includes Christophs cleanup to
    free_zone_device_page() (similar to Ralph's patch).
  - Fix bug with concurrent first calls to pci_p2pdma_vma_fault()
    that caused a double allocation and lost p2p memory. Noticed
    by Andrew Maier.
  - Collected a Reviewed-by tag from Chaitanya.
  - Numerous minor fixes to commit messages

--

Logan Gunthorpe (8):
  mm: introduce FOLL_PCI_P2PDMA to gate getting PCI P2PDMA pages
  iov_iter: introduce iov_iter_get_pages_[alloc_]flags()
  block: add check when merging zone device pages
  lib/scatterlist: add check when merging zone device pages
  block: set FOLL_PCI_P2PDMA in __bio_iov_iter_get_pages()
  block: set FOLL_PCI_P2PDMA in bio_map_user_iov()
  PCI/P2PDMA: Allow userspace VMA allocations through sysfs
  ABI: sysfs-bus-pci: add documentation for p2pmem allocate

 Documentation/ABI/testing/sysfs-bus-pci |  10 ++
 block/bio.c                             |  11 ++-
 block/blk-map.c                         |   7 +-
 drivers/pci/p2pdma.c                    | 124 ++++++++++++++++++++++++
 include/linux/mm.h                      |   1 +
 include/linux/mmzone.h                  |  24 +++++
 include/linux/uio.h                     |   6 ++
 lib/iov_iter.c                          |  32 ++++--
 lib/scatterlist.c                       |  25 +++--
 mm/gup.c                                |  22 ++++-
 10 files changed, 240 insertions(+), 22 deletions(-)


base-commit: 521a547ced6477c54b4b0cc206000406c221b4d6
--
2.30.2

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2022-09-28 21:38 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-22 16:39 [PATCH v10 0/8] Userspace P2PDMA with O_DIRECT NVMe devices Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 1/8] mm: introduce FOLL_PCI_P2PDMA to gate getting PCI P2PDMA pages Logan Gunthorpe
2022-09-23 18:13   ` Jason Gunthorpe
2022-09-23 19:08     ` Logan Gunthorpe
2022-09-23 19:53       ` Jason Gunthorpe
2022-09-23 20:11         ` Logan Gunthorpe
2022-09-23 22:58           ` Jason Gunthorpe
2022-09-23 23:01             ` Logan Gunthorpe
2022-09-23 23:07               ` Jason Gunthorpe
2022-09-23 23:14                 ` Logan Gunthorpe
2022-09-23 23:21                   ` Jason Gunthorpe
2022-09-23 23:35                     ` Logan Gunthorpe
2022-09-23 23:51                     ` Logan Gunthorpe
2022-09-26 22:57                       ` Jason Gunthorpe
2022-09-28 21:38                         ` Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 2/8] iov_iter: introduce iov_iter_get_pages_[alloc_]flags() Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 3/8] block: add check when merging zone device pages Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 4/8] lib/scatterlist: " Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 5/8] block: set FOLL_PCI_P2PDMA in __bio_iov_iter_get_pages() Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 6/8] block: set FOLL_PCI_P2PDMA in bio_map_user_iov() Logan Gunthorpe
2022-09-22 16:39 ` [PATCH v10 7/8] PCI/P2PDMA: Allow userspace VMA allocations through sysfs Logan Gunthorpe
2022-09-22 18:27   ` Bjorn Helgaas
2022-09-23  8:15   ` Greg Kroah-Hartman
2022-09-22 16:39 ` [PATCH v10 8/8] ABI: sysfs-bus-pci: add documentation for p2pmem allocate Logan Gunthorpe
2022-09-23  8:15   ` Greg Kroah-Hartman
2022-09-23  6:01 ` [PATCH v10 0/8] Userspace P2PDMA with O_DIRECT NVMe devices Christoph Hellwig
2022-09-23 15:25   ` Logan Gunthorpe
2022-09-23  8:16 ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).