[Intel-gfx] [PATCH v2] drm/i915: add schedule out notification of preempted but completed request
Li, Weinan Z
weinan.z.li at intel.com
Mon Mar 5 03:12:03 UTC 2018
Any comments? This issue impact the preemption enabling in host, without the schedule out notification, vgpu will run into wrong state.
Thanks
-Weinan
> -----Original Message-----
> From: Li, Weinan Z
> Sent: Saturday, February 24, 2018 11:00 AM
> To: intel-gfx at lists.freedesktop.org
> Cc: intel-gvt-dev at lists.freedesktop.org; Li, Weinan Z
> <weinan.z.li at intel.com>; Chris Wilson <chris at chris-wilson.co.uk>; Zhenyu
> Wang <zhenyuw at linux.intel.com>
> Subject: [PATCH v2] drm/i915: add schedule out notification of preempted
> but completed request
>
> There is one corner case missing schedule out notification of the preempted
> request. The preempted request is just completed when preemption
> happen, then it will be canceled and won't be resubmitted later, GVT-g will
> lost the schedule out notification.
>
> Here add schedule out notification if found the preempted request has been
> completed.
>
> v2:
> - refine description, add completed check and notification in
> execlists_cancel_port_requests. (Chris)
>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Signed-off-by: Weinan Li <weinan.z.li at intel.com>
> Signed-off-by: Zhenyu Wang <zhenyuw at linux.intel.com>
> ---
> drivers/gpu/drm/i915/intel_lrc.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c
> b/drivers/gpu/drm/i915/intel_lrc.c
> index e781c91..24a6e68 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -657,10 +657,16 @@ static void execlists_dequeue(struct
> intel_engine_cs *engine)
>
> while (num_ports-- && port_isset(port)) {
> struct i915_request *rq = port_request(port);
> + unsigned int notify;
>
> GEM_BUG_ON(!execlists->active);
> intel_engine_context_out(rq->engine);
> - execlists_context_status_change(rq,
> INTEL_CONTEXT_SCHEDULE_PREEMPTED);
> +
> + notify = INTEL_CONTEXT_SCHEDULE_PREEMPTED;
> + if (i915_request_completed(rq))
> + notify = INTEL_CONTEXT_SCHEDULE_OUT;
> + execlists_context_status_change(rq, notify);
> +
> i915_request_put(rq);
>
> memset(port, 0, sizeof(*port));
> --
> 1.9.1
More information about the Intel-gfx
mailing list