error->time.tv_usec);
        seq_printf(m, "PCI ID: 0x%04x\n", dev->pci_device);
        seq_printf(m, "EIR: 0x%08x\n", error->eir);
+       seq_printf(m, "IER: 0x%08x\n", error->ier);
        seq_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er);
 
        for (i = 0; i < dev_priv->num_fence_regs; i++)
 
 struct drm_i915_error_state {
        u32 eir;
        u32 pgtbl_er;
+       u32 ier;
        u32 pipestat[I915_MAX_PIPES];
        u32 tail[I915_NUM_RINGS];
        u32 head[I915_NUM_RINGS];
 
                  uint32_t seqno)
 {
        drm_i915_private_t *dev_priv = ring->dev->dev_private;
-       u32 ier;
        int ret = 0;
 
        BUG_ON(seqno == 0);
        }
 
        if (!i915_seqno_passed(ring->get_seqno(ring), seqno)) {
-               if (HAS_PCH_SPLIT(ring->dev))
-                       ier = I915_READ(DEIER) | I915_READ(GTIER);
-               else if (IS_VALLEYVIEW(ring->dev))
-                       ier = I915_READ(GTIER) | I915_READ(VLV_IER);
-               else
-                       ier = I915_READ(IER);
-               if (!ier) {
-                       DRM_ERROR("something (likely vbetool) disabled "
-                                 "interrupts, re-enabling\n");
-                       ring->dev->driver->irq_preinstall(ring->dev);
-                       ring->dev->driver->irq_postinstall(ring->dev);
-               }
-
                trace_i915_gem_request_wait_begin(ring, seqno);
 
                ring->waiting_seqno = seqno;
 
 
        error->eir = I915_READ(EIR);
        error->pgtbl_er = I915_READ(PGTBL_ER);
+
+       if (HAS_PCH_SPLIT(dev))
+               error->ier = I915_READ(DEIER) | I915_READ(GTIER);
+       else if (IS_VALLEYVIEW(dev))
+               error->ier = I915_READ(GTIER) | I915_READ(VLV_IER);
+       else if (IS_GEN2(dev))
+               error->ier = I915_READ16(IER);
+       else
+               error->ier = I915_READ(IER);
+
        for_each_pipe(pipe)
                error->pipestat[pipe] = I915_READ(PIPESTAT(pipe));