drm/i915/gvt: avoid unnecessary vgpu switch
authorPing Gao <ping.a.gao@intel.com>
Wed, 19 Apr 2017 06:02:31 +0000 (14:02 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Wed, 10 May 2017 03:14:10 +0000 (11:14 +0800)
It's no need to switch vgpu if next vgpu is the same with current
vgpu, otherwise it will make performance drop in some case.

v2: correct the comments.

Signed-off-by: Ping Gao <ping.a.gao@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/sched_policy.c

index 34b9acdf34791c84170cd6c96203a5b84f860b77..6ac77f8cc405d897caa373b95bd993b1ce4e3aa3 100644 (file)
@@ -53,9 +53,13 @@ static void try_to_schedule_next_vgpu(struct intel_gvt *gvt)
        enum intel_engine_id i;
        struct intel_engine_cs *engine;
 
-       /* no target to schedule */
-       if (!scheduler->next_vgpu)
+       /* no need to schedule if next_vgpu is the same with current_vgpu,
+        * let scheduler chose next_vgpu again by setting it to NULL.
+        */
+       if (scheduler->next_vgpu == scheduler->current_vgpu) {
+               scheduler->next_vgpu = NULL;
                return;
+       }
 
        gvt_dbg_sched("try to schedule next vgpu %d\n",
                        scheduler->next_vgpu->id);