[Intel-gfx] [PATCH 1/2] drm/i915: Add ERR_INT to gen7 error state

Antti Koskipää antti.koskipaa at linux.intel.com
Wed Aug 22 14:54:45 CEST 2012


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




More information about the Intel-gfx mailing list