aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c15
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h1
3 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 6ed73ae2133a..d988cc350f66 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -348,12 +348,17 @@ void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
348 348
349void __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv) 349void __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
350{ 350{
351 int loop = 500; 351 if (dev_priv->gt_fifo_count < GT_FIFO_NUM_RESERVED_ENTRIES ) {
352 u32 fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); 352 int loop = 500;
353 while (fifo < 20 && loop--) { 353 u32 fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES);
354 udelay(10); 354 while (fifo <= GT_FIFO_NUM_RESERVED_ENTRIES && loop--) {
355 fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); 355 udelay(10);
356 fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES);
357 }
358 WARN_ON(loop < 0 && fifo <= GT_FIFO_NUM_RESERVED_ENTRIES);
359 dev_priv->gt_fifo_count = fifo;
356 } 360 }
361 dev_priv->gt_fifo_count--;
357} 362}
358 363
359static int i915_drm_freeze(struct drm_device *dev) 364static int i915_drm_freeze(struct drm_device *dev)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 00dc59a51ccd..b37146c4526f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -277,6 +277,7 @@ typedef struct drm_i915_private {
277 int relative_constants_mode; 277 int relative_constants_mode;
278 278
279 void __iomem *regs; 279 void __iomem *regs;
280 u32 gt_fifo_count;
280 281
281 struct intel_gmbus { 282 struct intel_gmbus {
282 struct i2c_adapter adapter; 283 struct i2c_adapter adapter;
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 96fb0fa47c40..02db299f621a 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -3361,6 +3361,7 @@
3361#define FORCEWAKE_ACK 0x130090 3361#define FORCEWAKE_ACK 0x130090
3362 3362
3363#define GT_FIFO_FREE_ENTRIES 0x120008 3363#define GT_FIFO_FREE_ENTRIES 0x120008
3364#define GT_FIFO_NUM_RESERVED_ENTRIES 20
3364 3365
3365#define GEN6_RPNSWREQ 0xA008 3366#define GEN6_RPNSWREQ 0xA008
3366#define GEN6_TURBO_DISABLE (1<<31) 3367#define GEN6_TURBO_DISABLE (1<<31)