drm/i915/execlists: Split spinlock from its irq disabling side-effect
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 2 Mar 2018 14:32:45 +0000 (14:32 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 2 Mar 2018 23:11:12 +0000 (23:11 +0000)
commita3e3883646c05828f96369f7809436f1b3247234
treec2d2431dcea1baed12750012fb07caa1ec95976d
parentaebbc2d7b3887202c9b02e69e2a470901d0eda71
drm/i915/execlists: Split spinlock from its irq disabling side-effect

During reset/wedging, we have to clean up the requests on the timeline
and flush the pending interrupt state. Currently, we are abusing the irq
disabling of the timeline spinlock to protect the irq state in
conjunction to the engine's timeline requests, but this is accidental
and conflates the spinlock with the irq state. A baffling state of
affairs for the reader.

Instead, explicitly disable irqs over the critical section, and separate
modifying the irq state from the timeline's requests.

Suggested-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180302143246.2579-4-chris@chris-wilson.co.uk
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
drivers/gpu/drm/i915/intel_lrc.c