Re: [PATCH] drm/i915: Make mmio flip wait for seqno in the work function

Chris Wilson
2014-11-06T14:34:01Z

On Thu, Nov 06, 2014 at 02:53:09PM +0100, Daniel Vetter wrote:
> On Thu, Nov 06, 2014 at 09:25:22AM +0000, Chris Wilson wrote:
> > On Thu, Nov 06, 2014 at 11:03:40AM +0200, Ander Conselvan de Oliveira wrote:
> > > This simplifies the code quite a bit compared to iterating over all
> > > rings during the ring interrupt.
> > >
> > > Also, it allows us to drop the mmio_flip spinlock, since the mmio_flip
> > > struct is only accessed in two places. The first is when the flip is
> > > queued and the other when the mmio writes are done. Since a flip cannot
> > > be queued while there is a pending flip, the two paths shouldn't ever
> > > run in parallel. We might need to revisit that if support for replacing
> > > flips is implemented though.
> > >
> > > v2: Don't hold dev->struct_mutext while waiting (Chris)
> > >
> > > v3: Make the wait uninterruptable (Chris)
>
> Can we actually send singals to kworker threads? Just out of curiosity ...

Some, at least. Probably not the system workqueues we use here, but
interruptible=false also has the semantics of "no errors. please".
Definitely useful here.

> > > + WARN_ON(__i915_wait_seqno(ring, seqno,
> > > + intel_crtc->reset_counter,
> > > + false, NULL, NULL) != 0);
> >
> > Should probably mention the caveat that this wants RPS boost tweaks,
> > which have been posted to the list as well.
>
> Yeah I guess we don't want to boost here by default (since userspace might
> send the pageflip right after having queued the pageflip), but only when
> we indeed missed the next vblank. So I guess we should disable the
> boosting here and get your pageflip booster in. Can you please
> rebase/adapt and Ander could perhaps review?

Yes.
-Chris

--
Chris Wilson, Intel Open Source Technology Centre