> -----Original Message-----
> From: Chris Wilson [mailto:[email protected]] On Behalf Of Chris
> Wilson
> Sent: Thursday, March 9, 2017 6:08 AM
> To: [email protected]
> Cc: [email protected]; Chris Wilson <chris@chris-
> wilson.co.uk>; Dong, Chuanxiao <[email protected]>; Zhenyu
> Wang <[email protected]>; Wang, Zhi A <[email protected]>
> Subject: [PATCH] drm/i915/gvt: Remove bogus retry around
> i915_wait_request
> 
> commit 8f1117abb408 ("drm/i915/gvt: handle workload lifecycle properly")
> includes some nonsense to retry a indefinite wait - i915_wait_request() does
> not return until the request is completed when used from an uninterruptible
> context.
> 
> Fixes: 8f1117abb408 ("drm/i915/gvt: handle workload lifecycle properly"
> Signed-off-by: Chris Wilson <[email protected]>
> Cc: Chuanxiao Dong <[email protected]>
> Cc: Zhenyu Wang <[email protected]>
> Cc: Zhi Wang <[email protected]>
> ---
>  drivers/gpu/drm/i915/gvt/scheduler.c | 14 +-------------
>  1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c
> b/drivers/gpu/drm/i915/gvt/scheduler.c
> index cfd9f7a38c27..8024904c0d58 100644
> --- a/drivers/gpu/drm/i915/gvt/scheduler.c
> +++ b/drivers/gpu/drm/i915/gvt/scheduler.c
> @@ -465,19 +465,7 @@ static int workload_thread(void *priv)
> 
>               gvt_dbg_sched("ring id %d wait workload %p\n",
>                               workload->ring_id, workload);
> -retry:
> -             i915_wait_request(workload->req,
> -                                      0, MAX_SCHEDULE_TIMEOUT);
> -             /* I915 has replay mechanism and a request will be replayed
> -              * if there is i915 reset. So the seqno will be updated anyway.
> -              * If the seqno is not updated yet after waiting, which means
> -              * the replay may still be in progress and we can wait again.
> -              */
> -             if (!i915_gem_request_completed(workload->req)) {
> -                     gvt_dbg_sched("workload %p not completed, wait
> again\n",
> -                                     workload);
> -                     goto retry;
> -             }
> +             i915_wait_request(workload->req, 0,
> MAX_SCHEDULE_TIMEOUT);

Thanks Chris for pointing this out. So per the comment, i915_wait_request will 
make sure to return until the request completed, even if a GPU hang happened 
and replay occurred during i915_wait_request(), this function will only return 
after the replay completed, right?

> 
>  complete:
>               gvt_dbg_sched("will complete workload %p, status: %d\n",
> --
> 2.11.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to