On 2020-11-09 8:03 a.m., Keith Busch wrote:
On Fri, Nov 06, 2020 at 10:00:36AM -0700, Logan Gunthorpe wrote:
quoted
Allow userspace to obtain CMB memory by mmaping the controller's
char device. The mmap call allocates and returns a hunk of CMB memory,
(the offset is ignored) so userspace does not have control over the
address within the CMB.
A VMA allocated in this way will only be usable by drivers that set
FOLL_PCI_P2PDMA when calling GUP. And inter-device support will be
checked the first time the pages are mapped for DMA.
Currently this is only supported by O_DIRECT to an PCI NVMe device
or through the NVMe passthrough IOCTL.
Rather than make this be specific to nvme, could pci p2pdma create an
mmap'able file for any resource registered with it?
It's certainly possible. However, other people have been arguing that
more of this should be specific to NVMe as some use cases do not want to
use the genalloc inside p2pdma.
Logan