Re: [PATCH] drm/i915: Fix i915_gem_wait_for_idle oops due to active_requests check

From: Yang, Bin
Date: Thu Dec 20 2018 - 03:50:42 EST


On Thu, 2018-12-20 at 08:35 +0000, Chris Wilson wrote:
> Quoting Bin Yang (2018-12-20 08:01:35)
> > Normally, i915_request_alloc() and i915_request_add() will be called
> > in sequence with drm.struct_mutex locked. But in
> > intel_vgpu_create_workload(), it will pre-allocate the request and
> > call i915_request_add() in the workload thread for performance
> > optimization. The above issue will be triggered.
>
> That's your bug. It's not normally, it's a strict requirement that the
> struct_mutex (request generation mutex) be held over the course of
> generating the request.
> -Chris

This code is introduced by below patch. Add original patch owners to
discuss this issue.

commit d0302e74003bf1f0fc41c06948b745204c4704ea
Author: Ping Gao <ping.a.gao@xxxxxxxxx>
Date: Thu Jun 29 12:22:43 2017 +0800

drm/i915/gvt: Audit and shadow workload during ELSP writing

Let the workload audit and shadow ahead of vGPU scheduling, that
will eliminate GPU idle time and improve performance for multi-VM.

The performance of Heaven running simultaneously in 3VMs has
improved 20% after this patch.

v2:Remove condition current->vgpu==vgpu when shadow during ELSP
writing.

Signed-off-by: Ping Gao <ping.a.gao@xxxxxxxxx>
Reviewed-by: Zhi Wang <zhi.a.wang@xxxxxxxxx>
Signed-off-by: Zhenyu Wang <zhenyuw@xxxxxxxxxxxxxxx>