drm/i915: Kill the tasklet then disable
authorChris Wilson <chris@chris-wilson.co.uk>
Sun, 12 Feb 2017 17:20:00 +0000 (17:20 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 13 Feb 2017 11:18:23 +0000 (11:18 +0000)
commit1d309634bcf4e3ce1c2b112bb04fcdec82ac70e1
tree9a170f7296a65d1809a2f4db145730eb0a647194
parent8d613c539c74fa9055f88f4116196d7c820bd98f
drm/i915: Kill the tasklet then disable

Disabling the tasklet leaves it if scheduled on the ready to run list
until it is re-enabled. This will leave the ksoftird thread spinning
until satisfied. To prevent this situation on starting the GPU reset, we
want to kill the tasklet first and then disable. The same problem will
arise when a tasklet is scheduled from another device, so a better
solution is required for the general case.

Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Fixes: 1f7b847d72c3 ("drm/i915: Disable engine->irq_tasklet around resets")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170212172002.23072-3-chris@chris-wilson.co.uk
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
drivers/gpu/drm/i915/i915_gem.c