OSDN Git Service

drm/i915/gvt: initialize dmabuf mutex in vgpu_create
authorHang Yuan <hang.yuan@linux.intel.com>
Mon, 30 Jul 2018 02:52:53 +0000 (10:52 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Tue, 14 Aug 2018 07:26:09 +0000 (15:26 +0800)
Currently, the mutex used in GVT dmabuf support is not initialized until
vgpu device is opened. If one vgpu device is opened and then removed, the
mutex will be used in vgpu remove operation without initialization. This
patch initializes the mutex in vgpu create operation to avoid the problem.

Fixes: e546e281d33d("drm/i915/gvt: Dmabuf support for GVT-g")
Signed-off-by: Hang Yuan <hang.yuan@linux.intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/kvmgt.c
drivers/gpu/drm/i915/gvt/vgpu.c

index 80b49a1..31986c1 100644 (file)
@@ -1615,7 +1615,6 @@ static int kvmgt_guest_init(struct mdev_device *mdev)
        kvmgt_protect_table_init(info);
        gvt_cache_init(vgpu);
 
-       mutex_init(&vgpu->dmabuf_lock);
        init_completion(&vgpu->vblank_done);
 
        info->track_node.track_write = kvmgt_page_track_write;
index ce0d93b..a4e8e3c 100644 (file)
@@ -379,6 +379,7 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,
        vgpu->gvt = gvt;
        vgpu->sched_ctl.weight = param->weight;
        mutex_init(&vgpu->vgpu_lock);
+       mutex_init(&vgpu->dmabuf_lock);
        INIT_LIST_HEAD(&vgpu->dmabuf_obj_list_head);
        INIT_RADIX_TREE(&vgpu->page_track_tree, GFP_KERNEL);
        idr_init(&vgpu->object_idr);