Re: [PATCH 1/4] drm/i915: Add pipe crc tracepoint

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 06, 2019 at 10:49:07PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>
> 
> Add a tracepoint for pipe crc. Makes life much simpler when staring at
> traces when hunting for fifo underruns and other issues which cause
> corrupted frames. We'll add the tracepoint before filtering out any
> potentially bogus crcs during modeset (should actually verify if that
> filtering is even correct anymore...)
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx>

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>

> ---
>  drivers/gpu/drm/i915/i915_irq.c   |  9 +++------
>  drivers/gpu/drm/i915/i915_trace.h | 25 +++++++++++++++++++++++++
>  2 files changed, 28 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 441d2674b272..92bb32ed27fb 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1693,7 +1693,9 @@ static void display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
>  {
>  	struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe];
>  	struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe);
> -	u32 crcs[5];
> +	u32 crcs[5] = { crc0, crc1, crc2, crc3, crc4 };
> +
> +	trace_intel_pipe_crc(crtc, crcs);
>  
>  	spin_lock(&pipe_crc->lock);
>  	/*
> @@ -1712,11 +1714,6 @@ static void display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
>  	}
>  	spin_unlock(&pipe_crc->lock);
>  
> -	crcs[0] = crc0;
> -	crcs[1] = crc1;
> -	crcs[2] = crc2;
> -	crcs[3] = crc3;
> -	crcs[4] = crc4;
>  	drm_crtc_add_crc_entry(&crtc->base, true,
>  				drm_crtc_accurate_vblank_count(&crtc->base),
>  				crcs);
> diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> index eab313c3163c..308d36926335 100644
> --- a/drivers/gpu/drm/i915/i915_trace.h
> +++ b/drivers/gpu/drm/i915/i915_trace.h
> @@ -18,6 +18,31 @@
>  
>  /* watermark/fifo updates */
>  
> +TRACE_EVENT(intel_pipe_crc,
> +	    TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
> +	    TP_ARGS(crtc, crcs),
> +
> +	    TP_STRUCT__entry(
> +			     __field(enum pipe, pipe)
> +			     __field(u32, frame)
> +			     __field(u32, scanline)
> +			     __array(u32, crcs, 5)
> +			     ),
> +
> +	    TP_fast_assign(
> +			   __entry->pipe = crtc->pipe;
> +			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
> +										       crtc->pipe);
> +			   __entry->scanline = intel_get_crtc_scanline(crtc);
> +			   memcpy(__entry->crcs, crcs, sizeof(__entry->crcs));
> +			   ),
> +
> +	    TP_printk("pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x",
> +		      pipe_name(__entry->pipe), __entry->frame, __entry->scanline,
> +		      __entry->crcs[0], __entry->crcs[1], __entry->crcs[2],
> +		      __entry->crcs[3], __entry->crcs[4])
> +);
> +
>  TRACE_EVENT(intel_cpu_fifo_underrun,
>  	    TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
>  	    TP_ARGS(dev_priv, pipe),
> -- 
> 2.19.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux