> -----Original Message-----
> From: intel-gvt-dev [mailto:[email protected]] On
> Behalf Of Chris Wilson
> Sent: Monday, March 13, 2017 5:28 PM
> To: Dong, Chuanxiao <[email protected]>
> Cc: [email protected]; [email protected];
> Zhenyu Wang <[email protected]>; Wang, Zhi A
> <[email protected]>
> Subject: Re: [PATCH] drm/i915/gvt: Remove bogus retry around
> i915_wait_request
> 
> On Mon, Mar 13, 2017 at 09:21:58AM +0000, Dong, Chuanxiao wrote:
> >
> >
> > > -----Original Message-----
> > > From: intel-gvt-dev
> > > [mailto:[email protected]] On Behalf Of
> > > Dong, Chuanxiao
> > > Sent: Thursday, March 9, 2017 9:28 AM
> > > To: Chris Wilson <[email protected]>;
> > > [email protected]
> > > Cc: [email protected]; Wang, Zhi A
> > > <[email protected]>; Zhenyu Wang <[email protected]>
> > > Subject: RE: [PATCH] drm/i915/gvt: Remove bogus retry around
> > > i915_wait_request
> > >
> > >
> > >
> > > > -----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?
> >
> > Hi Chris, ping for the above question. I guess the answer is "yes"?
> 
> Yes. Given MAX_SCHEDULE_TIMEOUT, no INTERRUPTIBLE flags, it will only
> return once the request is completed - that is the hw breadcrumb is advanced
> past the request seqno. That includes waiting across a GPU reset. It is not
> allowed to return another error.

I see. Thanks Chris. My understanding was i915_wait_request() will return 
without waiting for the replay. Thanks for the fix. :)

Thanks
Chuanxiao

> -Chris
> 
> --
> Chris Wilson, Intel Open Source Technology Centre
> _______________________________________________
> intel-gvt-dev mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to