On 07/06/2016 13:47, Maarten Lankhorst wrote:
Op 01-06-16 om 19:07 schreef John.C.Harrison@xxxxxxxxx:
From: John Harrison <John.C.Harrison@xxxxxxxxx>
The notify function can be called many times without the seqno
changing. Some are to prevent races due to the requirement of not
enabling interrupts until requested. However, when interrupts are
enabled the IRQ handler can be called multiple times without the
ring's seqno value changing. E.g. two interrupts are generated by
batch buffers completing in quick succession, the first call to the
handler processes both completions but the handler still gets executed
a second time. This patch reduces the overhead of these extra calls by
caching the last processed seqno value and early exiting if it has not
changed.
How significant is this overhead?
Doing the cache check hits the early exit approx 98% of the time when
running GLBenchmark. Although the vast majority of duplicate calls are
from having to call the notify function from
i915_gem_retire_requests_ring() and that being called at least once for
every execbuf IOCTL (possibly multiple times). I have just made a couple
of tweaks to further reduce the number of these calls and their impact,
but there are still a lot of them.
Patch looks reasonable otherwise.
~Maarten
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx