if (INTEL_INFO(dev)->gen >= 6) {
                seq_printf(m, "  FADDR: 0x%08x\n", error->faddr[ring]);
                seq_printf(m, "  FAULT_REG: 0x%08x\n", error->fault_reg[ring]);
+               seq_printf(m, "  SYNC_0: 0x%08x\n",
+                          error->semaphore_mboxes[ring][0]);
+               seq_printf(m, "  SYNC_1: 0x%08x\n",
+                          error->semaphore_mboxes[ring][1]);
        }
        seq_printf(m, "  seqno: 0x%08x\n", error->seqno[ring]);
+       seq_printf(m, "  ring->head: 0x%08x\n", error->cpu_ring_head[ring]);
+       seq_printf(m, "  ring->tail: 0x%08x\n", error->cpu_ring_tail[ring]);
 }
 
 static int i915_error_state(struct seq_file *m, void *unused)
 
        u32 ipehr[I915_NUM_RINGS];
        u32 instdone[I915_NUM_RINGS];
        u32 acthd[I915_NUM_RINGS];
+       u32 semaphore_mboxes[I915_NUM_RINGS][I915_NUM_RINGS - 1];
+       /* our own tracking of ring head and tail */
+       u32 cpu_ring_head[I915_NUM_RINGS];
+       u32 cpu_ring_tail[I915_NUM_RINGS];
        u32 error; /* gen6+ */
        u32 instpm[I915_NUM_RINGS];
        u32 instps[I915_NUM_RINGS];
 
        if (INTEL_INFO(dev)->gen >= 6) {
                error->faddr[ring->id] = I915_READ(RING_DMA_FADD(ring->mmio_base));
                error->fault_reg[ring->id] = I915_READ(RING_FAULT_REG(ring));
+               error->semaphore_mboxes[ring->id][0]
+                       = I915_READ(RING_SYNC_0(ring->mmio_base));
+               error->semaphore_mboxes[ring->id][1]
+                       = I915_READ(RING_SYNC_1(ring->mmio_base));
        }
 
        if (INTEL_INFO(dev)->gen >= 4) {
        error->acthd[ring->id] = intel_ring_get_active_head(ring);
        error->head[ring->id] = I915_READ_HEAD(ring);
        error->tail[ring->id] = I915_READ_TAIL(ring);
+
+       error->cpu_ring_head[ring->id] = ring->head;
+       error->cpu_ring_tail[ring->id] = ring->tail;
 }
 
 /**