Commit 37e4bdbd authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Zhi Wang
Browse files

drm/i915/gvt: remove the extra vfio_device refcounting for dmabufs



All the dmabufs are torn down when th VGPU is released, so there is
no need for extra refcounting here.

Based on an patch from Jason Gunthorpe.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarZhi Wang <zhi.a.wang@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20220411141403.86980-25-hch@lst.de


Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarZhi Wang <zhi.a.wang@intel.com>
parent 5f8f3fe6
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
@@ -139,7 +139,6 @@ static void dmabuf_gem_object_free(struct kref *kref)
			dmabuf_obj = list_entry(pos, struct intel_vgpu_dmabuf_obj, list);
			if (dmabuf_obj == obj) {
				list_del(pos);
				vfio_device_put(vgpu->vfio_device);
				idr_remove(&vgpu->object_idr,
					   dmabuf_obj->dmabuf_id);
				kfree(dmabuf_obj->info);
@@ -473,16 +472,6 @@ int intel_vgpu_query_plane(struct intel_vgpu *vgpu, void *args)

	kref_init(&dmabuf_obj->kref);

	mutex_lock(&vgpu->dmabuf_lock);
	vgpu->vfio_device = vfio_device_get_from_dev(mdev_dev(vgpu->mdev));
	if (!vgpu->vfio_device) {
		gvt_vgpu_err("failed to get vfio device\n");
		mutex_unlock(&vgpu->dmabuf_lock);
		ret = -ENODEV;
		goto out_free_info;
	}
	mutex_unlock(&vgpu->dmabuf_lock);

	update_fb_info(gfx_plane_info, &fb_info);

	INIT_LIST_HEAD(&dmabuf_obj->list);
@@ -587,7 +576,6 @@ void intel_vgpu_dmabuf_cleanup(struct intel_vgpu *vgpu)
		dmabuf_obj->vgpu = NULL;

		idr_remove(&vgpu->object_idr, dmabuf_obj->dmabuf_id);
		vfio_device_put(vgpu->vfio_device);
		list_del(pos);

		/* dmabuf_obj might be freed in dmabuf_obj_put */
+0 −1
Original line number Diff line number Diff line
@@ -231,7 +231,6 @@ struct intel_vgpu {
	struct kvm *kvm;
	struct work_struct release_work;
	atomic_t released;
	struct vfio_device *vfio_device;
	struct vfio_group *vfio_group;

	struct kvm_page_track_notifier_node track_node;