aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2014-04-01 13:55:08 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-04-01 16:41:47 -0400
commitcf67c70fa213cdf760b97f143b68eed7630efe78 (patch)
tree284e1fe8698f5d505e9232ef61756e773df49e1e
parentaa0b3b5bb8768c1a6a6788869d9c7015eae7e80c (diff)
drm/i915: get runtime PM at i915_reg_read_ioctl
To avoid WARNs when we call it. Testcase: igt/pm_pc8/reg-read-ioctl Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75693 Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_uncore.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index c47853bd60be..f729dc71d5be 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -866,7 +866,7 @@ int i915_reg_read_ioctl(struct drm_device *dev,
866 struct drm_i915_private *dev_priv = dev->dev_private; 866 struct drm_i915_private *dev_priv = dev->dev_private;
867 struct drm_i915_reg_read *reg = data; 867 struct drm_i915_reg_read *reg = data;
868 struct register_whitelist const *entry = whitelist; 868 struct register_whitelist const *entry = whitelist;
869 int i; 869 int i, ret = 0;
870 870
871 for (i = 0; i < ARRAY_SIZE(whitelist); i++, entry++) { 871 for (i = 0; i < ARRAY_SIZE(whitelist); i++, entry++) {
872 if (entry->offset == reg->offset && 872 if (entry->offset == reg->offset &&
@@ -877,6 +877,8 @@ int i915_reg_read_ioctl(struct drm_device *dev,
877 if (i == ARRAY_SIZE(whitelist)) 877 if (i == ARRAY_SIZE(whitelist))
878 return -EINVAL; 878 return -EINVAL;
879 879
880 intel_runtime_pm_get(dev_priv);
881
880 switch (entry->size) { 882 switch (entry->size) {
881 case 8: 883 case 8:
882 reg->val = I915_READ64(reg->offset); 884 reg->val = I915_READ64(reg->offset);
@@ -892,10 +894,13 @@ int i915_reg_read_ioctl(struct drm_device *dev,
892 break; 894 break;
893 default: 895 default:
894 WARN_ON(1); 896 WARN_ON(1);
895 return -EINVAL; 897 ret = -EINVAL;
898 goto out;
896 } 899 }
897 900
898 return 0; 901out:
902 intel_runtime_pm_put(dev_priv);
903 return ret;
899} 904}
900 905
901int i915_get_reset_stats_ioctl(struct drm_device *dev, 906int i915_get_reset_stats_ioctl(struct drm_device *dev,