drm/i915: Take rpm wakelock around debugfs/i915_gpu_info
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 28 Mar 2017 13:14:07 +0000 (14:14 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 28 Mar 2017 14:59:12 +0000 (15:59 +0100)
Capturing GPU state requires the device to be awake in order to read
registers. Normally, this is taken along the error handler, but for the
direct debugfs access, we cannot make assumptions about the current
device state and so either need to wake it up, or abort.

Fixes: 5a4c6f1b1b2d ("drm/i915: The return of i915_gpu_info to debugfs")
Testcase: igt/pm_rpm/debugfs-read
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170328131407.14863-1-chris@chris-wilson.co.uk
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
drivers/gpu/drm/i915/i915_debugfs.c

index 316bc47a8eea06d0e89453da732405ce1ee4d755..d4904245472f1a6f302d243238df0e71ddef136d 100644 (file)
@@ -1012,9 +1012,12 @@ static int gpu_state_release(struct inode *inode, struct file *file)
 
 static int i915_gpu_info_open(struct inode *inode, struct file *file)
 {
+       struct drm_i915_private *i915 = inode->i_private;
        struct i915_gpu_state *gpu;
 
-       gpu = i915_capture_gpu_state(inode->i_private);
+       intel_runtime_pm_get(i915);
+       gpu = i915_capture_gpu_state(i915);
+       intel_runtime_pm_put(i915);
        if (!gpu)
                return -ENOMEM;