drm/i915: get a runtime PM ref for the deferred GPU reset work
[deliverable/linux.git] / drivers / gpu / drm / i915 / i915_irq.c
index 274c108dcb4745ece45e8f6fa2a7cfc0840de31d..2446e61ea4d45317a01bb3f0e2e1d10c43df498b 100644 (file)
@@ -2187,6 +2187,14 @@ static void i915_error_work_func(struct work_struct *work)
                kobject_uevent_env(&dev->primary->kdev->kobj, KOBJ_CHANGE,
                                   reset_event);
 
+               /*
+                * In most cases it's guaranteed that we get here with an RPM
+                * reference held, for example because there is a pending GPU
+                * request that won't finish until the reset is done. This
+                * isn't the case at least when we get here by doing a
+                * simulated reset via debugs, so get an RPM reference.
+                */
+               intel_runtime_pm_get(dev_priv);
                /*
                 * All state reset _must_ be completed before we update the
                 * reset counter, for otherwise waiters might miss the reset
@@ -2197,6 +2205,8 @@ static void i915_error_work_func(struct work_struct *work)
 
                intel_display_handle_reset(dev);
 
+               intel_runtime_pm_put(dev_priv);
+
                if (ret == 0) {
                        /*
                         * After all the gem state is reset, increment the reset
This page took 0.025121 seconds and 5 git commands to generate.