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

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, the current
w/a for Ivybridge is an implicit delay that currently fails sporadically
and consistently if we move the w/a into the irq handler itself. This
makes the CPU barrier untenable for upcoming interrupt handler changes
and so we need to replace it with a delay on the GPU before we send the
MI_USER_INTERRUPT. As it turns out that delay is 32x MI_STORE_DWORD_IMM,
or about 0.6us per request! Quite nasty, but the lesser of two evils
looking to the future.

Testcase: igt/gem_sync
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-4-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/intel_ringbuffer.c