aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_irq.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-07-05 12:14:01 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-07-20 06:21:37 -0400
commit12f55818bac7b89c00e43504d12a45c47e49d282 (patch)
tree154db5ac0bc118101c97404d658c2827f004cfcd /drivers/gpu/drm/i915/i915_irq.c
parent67b1b57182972f3c89c1ff9a58951582cb6bcca7 (diff)
drm/i915: Add comments to explain the BSD tail write workaround
Having had to dive into the bspec to understand what each stage of the workaround meant, and how that the ring broadcasting IDLE corresponded with the GT powering down the ring (i.e. rc6) add comments to aide the next reader. And since the register "is used to control all aspects of PSMI and power saving functions" that makes it quite interesting to inspect with regards to RC6 hangs, so add it to the error-state. v2: Rediscover the piece of magic, set the RNCID to 0 before waiting for the ring to wake up. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 23f2ea0f0651..566f61b9e47c 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1067,6 +1067,7 @@ static void i915_record_ring_state(struct drm_device *dev,
1067 struct drm_i915_private *dev_priv = dev->dev_private; 1067 struct drm_i915_private *dev_priv = dev->dev_private;
1068 1068
1069 if (INTEL_INFO(dev)->gen >= 6) { 1069 if (INTEL_INFO(dev)->gen >= 6) {
1070 error->rc_psmi[ring->id] = I915_READ(ring->mmio_base + 0x50);
1070 error->fault_reg[ring->id] = I915_READ(RING_FAULT_REG(ring)); 1071 error->fault_reg[ring->id] = I915_READ(RING_FAULT_REG(ring));
1071 error->semaphore_mboxes[ring->id][0] 1072 error->semaphore_mboxes[ring->id][0]
1072 = I915_READ(RING_SYNC_0(ring->mmio_base)); 1073 = I915_READ(RING_SYNC_0(ring->mmio_base));