drm/i915: Synchronize irq before parking each engine
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Oct 2017 21:32:35 +0000 (22:32 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 24 Oct 2017 14:47:05 +0000 (15:47 +0100)
commitff320d6e72ff3600184a1c01ea75b689b4b8a16d
tree2d2c02149d85ee1f29bf17fe960b5a203c4a7e5f
parent5427f207852d5b905e251a5a728c8604d3594d58
drm/i915: Synchronize irq before parking each engine

When we park the engine (upon idling), we kill the irq tasklet. However,
to be sure that it is not restarted by a spurious interrupt after doing so,
flush the interrupt handler before parking. As we only park the engines
when we believe the system is idle, there should not be any interrupts to
distrub us; so flushing the final in-flight interrupt should be sufficient.
(However, we are still dependent on the HW behaving in an orderly and
timely fashion, which we shall endeavour to improve upon later.)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171023213237.26536-2-chris@chris-wilson.co.uk
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
drivers/gpu/drm/i915/i915_gem.c