]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/ringbuffer: Move irq seqno barrier to the GPU for gen5
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 28 Dec 2018 17:16:40 +0000 (17:16 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 31 Dec 2018 15:35:45 +0000 (15:35 +0000)
commit578adc3d2a73bb910c9885ea31c46048c632a628
tree645d2b27a5098928125a1d3029ce54065b4d8441
parent36189e0bb001fdbb7b1d4ab7ee4906e21a90b4ee
drm/i915/ringbuffer: Move irq seqno barrier to the GPU for gen5

The irq_seqno_barrier is a tradeoff between doing work on every request
(on the GPU) and doing work after every interrupt (on the CPU). We
presume we have many more requests than interrupts! However, for
Ironlake, the workaround is a pretty hideous usleep() and so even though
it was found we need to repeat the MI_STORE_DWORD_IMM 8 times, or about
1us of GPU time, doing so is preferrable than requiring a sleep of
125-250us on the CPU where we desire to respond immediately (ideally from
within the interrupt handler)!

The additional MI_STORE_DWORD_IMM also have the side-effect of flushing
MI operations from userspace which are not caught by MI_FLUSH!

Testcase: igt/gem_sync
Testcase: igt/gem_exec_whisper
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20181228171641.16531-5-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/intel_ringbuffer.c