Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915: Stop dropping irq around resets

A long time ago, we were afraid of handling interrupts and signaling
waiters during a reset, worrying that the confusion in request handling
would interfere with our attempts to process the reset in an orderly
fashion. Since then, we have isolated our irq-driven request handling by
virtue of the engine->timeline.lock and control of kthreads where
required, eliminating the danger of concurrently processing interrupts.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180806145647.13131-1-chris@chris-wilson.co.uk

-3
-3
drivers/gpu/drm/i915/i915_drv.c
··· 1918 1918 dev_notice(i915->drm.dev, "Resetting chip for %s\n", reason); 1919 1919 error->reset_count++; 1920 1920 1921 - disable_irq(i915->drm.irq); 1922 1921 ret = i915_gem_reset_prepare(i915); 1923 1922 if (ret) { 1924 1923 dev_err(i915->drm.dev, "GPU recovery failed\n"); ··· 1979 1980 1980 1981 finish: 1981 1982 i915_gem_reset_finish(i915); 1982 - enable_irq(i915->drm.irq); 1983 - 1984 1983 wakeup: 1985 1984 clear_bit(I915_RESET_HANDOFF, &error->flags); 1986 1985 wake_up_bit(&error->flags, I915_RESET_HANDOFF);