[Intel-gfx] [PATCH 13/13] drm/i915: Cache last IRQ seqno to reduce IRQ overhead

Chris Wilson chris at chris-wilson.co.uk
Fri Dec 11 08:07:16 PST 2015

On Fri, Dec 11, 2015 at 03:35:54PM +0000, John Harrison wrote:
> On 11/12/2015 14:55, Chris Wilson wrote:
> >On Fri, Dec 11, 2015 at 01:12:01PM +0000, John.C.Harrison at Intel.com wrote:
> >>From: John Harrison <John.C.Harrison at Intel.com>
> >>
> >>The notify function can be called many times without the seqno
> >>changing. A large number of duplicates are to prevent races due to the
> >>requirement of not enabling interrupts until requested. However, when
> >>interrupts are enabled the IRQ handle can be called multiple times
> >>without the ring's seqno value changing. This patch reduces the
> >>overhead of these extra calls by caching the last processed seqno
> >>value and early exiting if it has not changed.
> >This is just plain wrong. Every user-interrupt is preceded by a seqno
> >update.
> Except that mutiple interrupts can be coalesced if they occur too
> close together. The driver's IRQ handler still gets called for each
> individual interrupt but the first time it is run it sees the seqno
> for the last. Thus all the processing gets done on the first
> invocation. The multiple subsequent invocations (I have seen up to
> four I believe) then have nothing to do.

Yes. That is not what you implied above, or by talk about caching the
seqno -- which is already cached. There is a reason why we don't do this
in the interrupt handler and are not about to do so again.

Chris Wilson, Intel Open Source Technology Centre

More information about the Intel-gfx mailing list