Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 659643f7 authored by Jike Song's avatar Jike Song Committed by Zhenyu Wang
Browse files

drm/i915/gvt/kvmgt: add vfio/mdev support to KVMGT



KVMGT leverages vfio/mdev to mediate device accesses from guest,
this patch adds the vfio/mdev support, thereby completes the
functionality. An intel_vgpu is presented as a mdev device,
and full userspace API compatibility with vfio-pci is kept.
An intel_vgpu_ops is provided to mdev framework, methods get
called to create/remove a vgpu, to open/close it, and to
access it.

Signed-off-by: default avatarKevin Tian <kevin.tian@intel.com>
Signed-off-by: default avatarXiaoguang Chen <xiaoguang.chen@intel.com>
Signed-off-by: default avatarJike Song <jike.song@intel.com>
Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
parent f440c8a5
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -116,6 +116,7 @@ config DRM_I915_GVT_KVMGT
	tristate "Enable KVM/VFIO support for Intel GVT-g"
	tristate "Enable KVM/VFIO support for Intel GVT-g"
	depends on DRM_I915_GVT
	depends on DRM_I915_GVT
	depends on KVM
	depends on KVM
	depends on VFIO_MDEV && VFIO_MDEV_DEVICE
	default n
	default n
	help
	help
	  Choose this option if you want to enable KVMGT support for
	  Choose this option if you want to enable KVMGT support for
+0 −2
Original line number Original line Diff line number Diff line
@@ -5,6 +5,4 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o trace_points.o firmware.o \


ccflags-y				+= -I$(src) -I$(src)/$(GVT_DIR) -Wall
ccflags-y				+= -I$(src) -I$(src)/$(GVT_DIR) -Wall
i915-y					+= $(addprefix $(GVT_DIR)/, $(GVT_SOURCE))
i915-y					+= $(addprefix $(GVT_DIR)/, $(GVT_SOURCE))

CFLAGS_kvmgt.o				:= -Wno-unused-function
obj-$(CONFIG_DRM_I915_GVT_KVMGT)	+= $(GVT_DIR)/kvmgt.o
obj-$(CONFIG_DRM_I915_GVT_KVMGT)	+= $(GVT_DIR)/kvmgt.o
+4 −2
Original line number Original line Diff line number Diff line
@@ -164,15 +164,17 @@ struct intel_vgpu {


#if IS_ENABLED(CONFIG_DRM_I915_GVT_KVMGT)
#if IS_ENABLED(CONFIG_DRM_I915_GVT_KVMGT)
	struct {
	struct {
		struct device *mdev;
		struct mdev_device *mdev;
		struct vfio_region *region;
		struct vfio_region *region;
		int num_regions;
		int num_regions;
		struct eventfd_ctx *intx_trigger;
		struct eventfd_ctx *intx_trigger;
		struct eventfd_ctx *msi_trigger;
		struct eventfd_ctx *msi_trigger;
		struct rb_root cache;
		struct rb_root cache;
		struct mutex cache_lock;
		struct mutex cache_lock;
		void *vfio_group;
		struct notifier_block iommu_notifier;
		struct notifier_block iommu_notifier;
		struct notifier_block group_notifier;
		struct kvm *kvm;
		struct work_struct release_work;
	} vdev;
	} vdev;
#endif
#endif
};
};
+902 −36

File changed.

Preview size limit exceeded, changes collapsed.