drm/i915: clarify comment about mandatory RPM put/get during driver load/unload
authorImre Deak <imre.deak@intel.com>
Tue, 15 Dec 2015 18:10:29 +0000 (20:10 +0200)
committerImre Deak <imre.deak@intel.com>
Thu, 17 Dec 2015 13:41:00 +0000 (15:41 +0200)
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1450203038-5150-2-git-send-email-imre.deak@intel.com
drivers/gpu/drm/i915/intel_runtime_pm.c

index 2c2151f..9945040 100644 (file)
@@ -1975,9 +1975,15 @@ int intel_power_domains_init(struct drm_i915_private *dev_priv)
  */
 void intel_power_domains_fini(struct drm_i915_private *dev_priv)
 {
-       /* The i915.ko module is still not prepared to be loaded when
+       /*
+        * The i915.ko module is still not prepared to be loaded when
         * the power well is not enabled, so just enable it in case
-        * we're going to unload/reload. */
+        * we're going to unload/reload.
+        * The following also reacquires the RPM reference the core passed
+        * to the driver during loading, which is dropped in
+        * intel_runtime_pm_enable(). We have to hand back the control of the
+        * device to the core with this reference held.
+        */
        intel_display_set_init_power(dev_priv, true);
 
        /* Remove the refcount we took to keep power well support disabled. */
@@ -2313,6 +2319,11 @@ void intel_runtime_pm_enable(struct drm_i915_private *dev_priv)
        pm_runtime_mark_last_busy(device);
        pm_runtime_use_autosuspend(device);
 
+       /*
+        * The core calls the driver load handler with an RPM reference held.
+        * We drop that here and will reacquire it during unloading in
+        * intel_power_domains_fini().
+        */
        pm_runtime_put_autosuspend(device);
 }