Petr Tesarik d97c8f
From: Hang Yuan <hang.yuan@linux.intel.com>
Petr Tesarik d97c8f
Date: Mon, 30 Jul 2018 10:52:53 +0800
Petr Tesarik d97c8f
Subject: drm/i915/gvt: initialize dmabuf mutex in vgpu_create
Petr Tesarik d97c8f
Git-commit: d6c6113bfe19af514128163a6d176437d45b7325
Petr Tesarik d97c8f
Patch-mainline: v4.19-rc1
Petr Tesarik d97c8f
References: FATE#326289 FATE#326079 FATE#326049 FATE#322398 FATE#326166
Petr Tesarik d97c8f
Petr Tesarik d97c8f
Currently, the mutex used in GVT dmabuf support is not initialized until
Petr Tesarik d97c8f
vgpu device is opened. If one vgpu device is opened and then removed, the
Petr Tesarik d97c8f
mutex will be used in vgpu remove operation without initialization. This
Petr Tesarik d97c8f
patch initializes the mutex in vgpu create operation to avoid the problem.
Petr Tesarik d97c8f
Petr Tesarik d97c8f
Fixes: e546e281d33d("drm/i915/gvt: Dmabuf support for GVT-g")
Petr Tesarik d97c8f
Signed-off-by: Hang Yuan <hang.yuan@linux.intel.com>
Petr Tesarik d97c8f
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Petr Tesarik d97c8f
Acked-by: Petr Tesarik <ptesarik@suse.com>
Petr Tesarik d97c8f
---
Petr Tesarik d97c8f
 drivers/gpu/drm/i915/gvt/kvmgt.c |    1 -
Petr Tesarik d97c8f
 drivers/gpu/drm/i915/gvt/vgpu.c  |    1 +
Petr Tesarik d97c8f
 2 files changed, 1 insertion(+), 1 deletion(-)
Petr Tesarik d97c8f
Petr Tesarik d97c8f
--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
Petr Tesarik d97c8f
+++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
Petr Tesarik d97c8f
@@ -1615,7 +1615,6 @@ static int kvmgt_guest_init(struct mdev_
Petr Tesarik d97c8f
 	kvmgt_protect_table_init(info);
Petr Tesarik d97c8f
 	gvt_cache_init(vgpu);
Petr Tesarik d97c8f
 
Petr Tesarik d97c8f
-	mutex_init(&vgpu->dmabuf_lock);
Petr Tesarik d97c8f
 	init_completion(&vgpu->vblank_done);
Petr Tesarik d97c8f
 
Petr Tesarik d97c8f
 	info->track_node.track_write = kvmgt_page_track_write;
Petr Tesarik d97c8f
--- a/drivers/gpu/drm/i915/gvt/vgpu.c
Petr Tesarik d97c8f
+++ b/drivers/gpu/drm/i915/gvt/vgpu.c
Petr Tesarik d97c8f
@@ -379,6 +379,7 @@ static struct intel_vgpu *__intel_gvt_cr
Petr Tesarik d97c8f
 	vgpu->gvt = gvt;
Petr Tesarik d97c8f
 	vgpu->sched_ctl.weight = param->weight;
Petr Tesarik d97c8f
 	mutex_init(&vgpu->vgpu_lock);
Petr Tesarik d97c8f
+	mutex_init(&vgpu->dmabuf_lock);
Petr Tesarik d97c8f
 	INIT_LIST_HEAD(&vgpu->dmabuf_obj_list_head);
Petr Tesarik d97c8f
 	INIT_RADIX_TREE(&vgpu->page_track_tree, GFP_KERNEL);
Petr Tesarik d97c8f
 	idr_init(&vgpu->object_idr);