aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-01-09 07:04:40 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2011-01-19 07:38:26 -0500
commitb0b544cd37c060e261afb2cf486296983fcb56da (patch)
tree90a57f398e2fdc9b1caacaecdd43d7607dbb4a59 /drivers/gpu/drm/i915/i915_drv.h
parentf67a559daaa0e2ba616bfe9438f202bc57bc8c72 (diff)
drm/i915: Use PM QoS to prevent C-State starvation of gen3 GPU
945 class hardware has an interesting quirk in which the vblank interrupt is not raised if the CPU is in a low power state. (We also suspect that the memory bus is clocked to the CPU/c-state and not the GPU so there are secondary starvation issues.) In order to prevent the most obvious issue of the low of the vblank interrupt (stuttering compositing that only updates when the mouse is moving) is to install a PM QoS request to prevent low c-states whilst the GPU is active. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 536368a43412..9b9a771110a4 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -35,6 +35,7 @@
35#include "intel_ringbuffer.h" 35#include "intel_ringbuffer.h"
36#include <linux/io-mapping.h> 36#include <linux/io-mapping.h>
37#include <linux/i2c.h> 37#include <linux/i2c.h>
38#include <linux/pm_qos_params.h>
38#include <drm/intel-gtt.h> 39#include <drm/intel-gtt.h>
39 40
40/* General customization: 41/* General customization:
@@ -310,6 +311,10 @@ typedef struct drm_i915_private {
310 int vblank_pipe; 311 int vblank_pipe;
311 int num_pipe; 312 int num_pipe;
312 313
314 atomic_t vblank_enabled;
315 struct pm_qos_request_list vblank_pm_qos;
316 struct work_struct vblank_work;
317
313 /* For hangcheck timer */ 318 /* For hangcheck timer */
314#define DRM_I915_HANGCHECK_PERIOD 1500 /* in ms */ 319#define DRM_I915_HANGCHECK_PERIOD 1500 /* in ms */
315 struct timer_list hangcheck_timer; 320 struct timer_list hangcheck_timer;