[PATCH 1/2] drm/i915: Hold RPM reference while setting freq limits through debugfs
Sagar Arun Kamble
sagar.a.kamble at intel.com
Thu Sep 22 08:03:19 UTC 2016
Ensure device is active while setting frequency limits as GEN6_RPNSWREQ
is accessed to set the frequency. Following assert helped catch this:
[drm:assert_rpm_wakelock_held] RPM wakelock ref not held during HW access
Signed-off-by: Sagar Arun Kamble <sagar.a.kamble at intel.com>
---
drivers/gpu/drm/i915/i915_debugfs.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index cfcc72e..9790806 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -4896,9 +4896,13 @@ i915_max_freq_set(void *data, u64 val)
DRM_DEBUG_DRIVER("Manually setting max freq to %llu\n", val);
+ intel_runtime_pm_get(dev_priv);
+
ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock);
- if (ret)
+ if (ret) {
+ intel_runtime_pm_put(dev_priv);
return ret;
+ }
/*
* Turbo will still be enabled, but won't go above the set value.
@@ -4910,6 +4914,7 @@ i915_max_freq_set(void *data, u64 val)
if (val < hw_min || val > hw_max || val < dev_priv->rps.min_freq_softlimit) {
mutex_unlock(&dev_priv->rps.hw_lock);
+ intel_runtime_pm_put(dev_priv);
return -EINVAL;
}
@@ -4919,6 +4924,8 @@ i915_max_freq_set(void *data, u64 val)
mutex_unlock(&dev_priv->rps.hw_lock);
+ intel_runtime_pm_put(dev_priv);
+
return 0;
}
@@ -4950,9 +4957,13 @@ i915_min_freq_set(void *data, u64 val)
DRM_DEBUG_DRIVER("Manually setting min freq to %llu\n", val);
+ intel_runtime_pm_get(dev_priv);
+
ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock);
- if (ret)
+ if (ret) {
+ intel_runtime_pm_put(dev_priv);
return ret;
+ }
/*
* Turbo will still be enabled, but won't go below the set value.
@@ -4965,6 +4976,7 @@ i915_min_freq_set(void *data, u64 val)
if (val < hw_min ||
val > hw_max || val > dev_priv->rps.max_freq_softlimit) {
mutex_unlock(&dev_priv->rps.hw_lock);
+ intel_runtime_pm_put(dev_priv);
return -EINVAL;
}
@@ -4974,6 +4986,8 @@ i915_min_freq_set(void *data, u64 val)
mutex_unlock(&dev_priv->rps.hw_lock);
+ intel_runtime_pm_put(dev_priv);
+
return 0;
}
--
1.9.1
More information about the Intel-gfx-trybot
mailing list