diff options
| author | Paulo Zanoni <paulo.r.zanoni@intel.com> | 2014-04-01 13:55:08 -0400 |
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-04-01 16:41:47 -0400 |
| commit | cf67c70fa213cdf760b97f143b68eed7630efe78 (patch) | |
| tree | 284e1fe8698f5d505e9232ef61756e773df49e1e | |
| parent | aa0b3b5bb8768c1a6a6788869d9c7015eae7e80c (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.c | 11 |
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; | 901 | out: |
| 902 | intel_runtime_pm_put(dev_priv); | ||
| 903 | return ret; | ||
| 899 | } | 904 | } |
| 900 | 905 | ||
| 901 | int i915_get_reset_stats_ioctl(struct drm_device *dev, | 906 | int i915_get_reset_stats_ioctl(struct drm_device *dev, |
