Commit 53e86ada authored by Zhenyu Wang's avatar Zhenyu Wang

drm/i915/gvt: remove unresolved vfio pin/unpin pages interface dependency

Instead of partially depending on vfio pin/unpin pages interface if
mdev is available, which would result in failure if vfio is not
on. But replace with a wrapper which need to be fixed till mdev
support got fully merged.

Cc: Jike Song <jike.song@intel.com>
Cc: Xiaoguang Chen <xiaoguang.chen@intel.com>
Reviewed-by: default avatarXiaoguang Chen <Xiaoguang.chen@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent 955c1dd1
...@@ -43,20 +43,16 @@ ...@@ -43,20 +43,16 @@
#include "i915_drv.h" #include "i915_drv.h"
#include "gvt.h" #include "gvt.h"
#if IS_ENABLED(CONFIG_VFIO_MDEV) static inline long kvmgt_pin_pages(struct device *dev, unsigned long *user_pfn,
#include <linux/mdev.h>
#else
static inline long vfio_pin_pages(struct device *dev, unsigned long *user_pfn,
long npage, int prot, unsigned long *phys_pfn) long npage, int prot, unsigned long *phys_pfn)
{ {
return 0; return 0;
} }
static inline long vfio_unpin_pages(struct device *dev, unsigned long *pfn, static inline long kvmgt_unpin_pages(struct device *dev, unsigned long *pfn,
long npage) long npage)
{ {
return 0; return 0;
} }
#endif
static const struct intel_gvt_ops *intel_gvt_ops; static const struct intel_gvt_ops *intel_gvt_ops;
...@@ -183,7 +179,7 @@ static void gvt_cache_remove(struct intel_vgpu *vgpu, gfn_t gfn) ...@@ -183,7 +179,7 @@ static void gvt_cache_remove(struct intel_vgpu *vgpu, gfn_t gfn)
} }
pfn = this->pfn; pfn = this->pfn;
WARN_ON((vfio_unpin_pages(dev, &pfn, 1) != 1)); WARN_ON((kvmgt_unpin_pages(dev, &pfn, 1) != 1));
__gvt_cache_remove_entry(vgpu, this); __gvt_cache_remove_entry(vgpu, this);
mutex_unlock(&vgpu->vdev.cache_lock); mutex_unlock(&vgpu->vdev.cache_lock);
} }
...@@ -206,7 +202,7 @@ static void gvt_cache_destroy(struct intel_vgpu *vgpu) ...@@ -206,7 +202,7 @@ static void gvt_cache_destroy(struct intel_vgpu *vgpu)
dma = rb_entry(node, struct gvt_dma, node); dma = rb_entry(node, struct gvt_dma, node);
pfn = dma->pfn; pfn = dma->pfn;
vfio_unpin_pages(dev, &pfn, 1); kvmgt_unpin_pages(dev, &pfn, 1);
__gvt_cache_remove_entry(vgpu, dma); __gvt_cache_remove_entry(vgpu, dma);
} }
mutex_unlock(&vgpu->vdev.cache_lock); mutex_unlock(&vgpu->vdev.cache_lock);
...@@ -512,8 +508,8 @@ static unsigned long kvmgt_gfn_to_pfn(unsigned long handle, unsigned long gfn) ...@@ -512,8 +508,8 @@ static unsigned long kvmgt_gfn_to_pfn(unsigned long handle, unsigned long gfn)
if (pfn != 0) if (pfn != 0)
return pfn; return pfn;
rc = vfio_pin_pages(info->vgpu->vdev.mdev, &gfn, 1, rc = kvmgt_pin_pages(info->vgpu->vdev.mdev, &gfn, 1,
IOMMU_READ | IOMMU_WRITE, &pfn); IOMMU_READ | IOMMU_WRITE, &pfn);
if (rc != 1) { if (rc != 1) {
gvt_err("vfio_pin_pages failed for gfn: 0x%lx\n", gfn); gvt_err("vfio_pin_pages failed for gfn: 0x%lx\n", gfn);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment