When device models read/write memory pointed by a range of IOVAs, it is better to use vfio interfaces. And because this read/write is from CPUs, there's no need to call vfio_pin_pages() to pin those memory. patch 1 introduces interface vfio_iova_rw() in vfio to read/write userspace IOVAs without pinning userspace pages. patch 2 let gvt switch from kvm side rw interface to vfio_iova_rw(). Yan Zhao (2): vfio: introduce vfio_iova_rw to read/write a range of IOVAs drm/i915/gvt: subsitute kvm_read/write_guest with vfio_iova_rw drivers/gpu/drm/i915/gvt/kvmgt.c | 26 +++------- drivers/vfio/vfio.c | 45 ++++++++++++++++++ drivers/vfio/vfio_iommu_type1.c | 81 ++++++++++++++++++++++++++++++++ include/linux/vfio.h | 5 ++ 4 files changed, 138 insertions(+), 19 deletions(-) -- 2.17.1