diff options
author | Yan Zhao <yan.y.zhao@intel.com> | 2020-03-24 18:27:57 +0300 |
---|---|---|
committer | Alex Williamson <alex.williamson@redhat.com> | 2020-03-24 18:27:57 +0300 |
commit | 8d46c0cca5f4dc0538173d62cd36b1119b5105bc (patch) | |
tree | dbeb3f92e8a28045d331ec68f4e7dafe8075b08c /include/linux/vfio.h | |
parent | c0560f51cf77472f4ed113539b0a02ca6cda7961 (diff) | |
download | linux-8d46c0cca5f4dc0538173d62cd36b1119b5105bc.tar.xz |
vfio: introduce vfio_dma_rw to read/write a range of IOVAs
vfio_dma_rw will read/write a range of user space memory pointed to by
IOVA into/from a kernel buffer without enforcing pinning the user space
memory.
TODO: mark the IOVAs to user space memory dirty if they are written in
vfio_dma_rw().
Cc: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Yan Zhao <yan.y.zhao@intel.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'include/linux/vfio.h')
-rw-r--r-- | include/linux/vfio.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/vfio.h b/include/linux/vfio.h index fb71e0ac0e76..34b2fdf4de6e 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -82,6 +82,8 @@ struct vfio_iommu_driver_ops { struct notifier_block *nb); int (*unregister_notifier)(void *iommu_data, struct notifier_block *nb); + int (*dma_rw)(void *iommu_data, dma_addr_t user_iova, + void *data, size_t count, bool write); }; extern int vfio_register_iommu_driver(const struct vfio_iommu_driver_ops *ops); @@ -109,6 +111,9 @@ extern int vfio_pin_pages(struct device *dev, unsigned long *user_pfn, extern int vfio_unpin_pages(struct device *dev, unsigned long *user_pfn, int npage); +extern int vfio_dma_rw(struct vfio_group *group, dma_addr_t user_iova, + void *data, size_t len, bool write); + /* each type has independent events */ enum vfio_notify_type { VFIO_IOMMU_NOTIFY = 0, |