Re: [PATCH 01/19] drm/i915/execlists: Always clear ring_pause if we do not submit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Mika Kuoppala (2019-06-24 10:03:48)
> Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes:
> 
> > In the unlikely case (thank you CI!), we may find ourselves wanting to
> > issue a preemption but having no runnable requests left. In this case,
> > we set the semaphore before computing the preemption and so must unset
> > it before forgetting (or else we leave the machine busywaiting until the
> > next request comes along and so likely hang).
> >
> > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> > ---
> >  drivers/gpu/drm/i915/gt/intel_lrc.c | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > index c8a0c9b32764..efccc31887de 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> > @@ -233,13 +233,18 @@ static inline u32 intel_hws_preempt_address(struct intel_engine_cs *engine)
> >  static inline void
> >  ring_set_paused(const struct intel_engine_cs *engine, int state)
> >  {
> > +     u32 *sema = &engine->status_page.addr[I915_GEM_HWS_PREEMPT];
> > +
> > +     if (*sema == state)
> > +             return;
> > +
> 
> So you want to avoid useless wmb, as I don't see other
> benefit. Makes this look suspiciously racy but seems
> to be just my usual paranoia.

Instead of the readback,
	if (state)
		wmb();
would also work, if we ditch one half the paranoia. That's better.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux