diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index e85078eb7b7d7eea327f2edac9193b2dcecaad0f..4dd8294b68e1e210b8fc97baecf8dc2e4542c115 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -285,12 +285,15 @@ static int i915_driver_modeset_probe(struct drm_i915_private *i915) return ret; } +/* part #1: call before irq uninstall */ static void i915_driver_modeset_remove(struct drm_i915_private *i915) { intel_modeset_driver_remove(i915); +} - intel_irq_uninstall(i915); - +/* part #2: call after irq uninstall */ +static void i915_driver_modeset_remove_noirq(struct drm_i915_private *i915) +{ intel_modeset_driver_remove_noirq(i915); intel_bios_driver_remove(i915); @@ -1509,6 +1512,10 @@ void i915_driver_remove(struct drm_i915_private *i915) i915_driver_modeset_remove(i915); + intel_irq_uninstall(i915); + + i915_driver_modeset_remove_noirq(i915); + i915_reset_error_state(i915); i915_gem_driver_remove(i915);