Both patches look ok. Reviewed-by: Antti Koskipaa <antti.koskipaa at linux.intel.com> On 08/21/12 02:15, Ben Widawsky wrote: > ERR_INT can generate interrupts. However since most of the conditions seem > quite fatal the patch opts to simply report it in error state instead of > adding more complexity to the interrupt handler for little gain (the > bits are sticky anyway). > > Signed-off-by: Ben Widawsky <ben at bwidawsk.net> > --- > drivers/gpu/drm/i915/i915_debugfs.c | 3 +++ > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/i915_irq.c | 3 +++ > drivers/gpu/drm/i915/i915_reg.h | 1 + > 4 files changed, 8 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 0e8f14d..02405c7 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -702,6 +702,9 @@ static int i915_error_state(struct seq_file *m, void *unused) > seq_printf(m, "DONE_REG: 0x%08x\n", error->done_reg); > } > > + if (INTEL_INFO(dev)->gen == 7) > + seq_printf(m, "ERR_INT: 0x%08x\n", error->err_int); > + > for_each_ring(ring, dev_priv, i) > i915_ring_error_state(m, dev, error, i); > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 33f19eb..c61fc48 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -196,6 +196,7 @@ struct drm_i915_error_state { > u32 cpu_ring_head[I915_NUM_RINGS]; > u32 cpu_ring_tail[I915_NUM_RINGS]; > u32 error; /* gen6+ */ > + u32 err_int; /* gen7 */ > u32 instpm[I915_NUM_RINGS]; > u32 instps[I915_NUM_RINGS]; > u32 instdone1; > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 0c37101..021207c 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -1211,6 +1211,9 @@ static void i915_capture_error_state(struct drm_device *dev) > error->done_reg = I915_READ(DONE_REG); > } > > + if (INTEL_INFO(dev)->gen == 7) > + error->err_int = I915_READ(GEN7_ERR_INT); > + > i915_gem_record_fences(dev, error); > i915_gem_record_rings(dev, error); > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 2f7b688..d4a7d73 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -507,6 +507,7 @@ > #define DMA_FADD_I8XX 0x020d0 > > #define ERROR_GEN6 0x040a0 > +#define GEN7_ERR_INT 0x44040 > > /* GM45+ chicken bits -- debug workaround bits that may be required > * for various sorts of correct behavior. The top 16 bits of each are