All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: add more debug info for when atomic updates fail v3
@ 2015-09-15 21:19 Jesse Barnes
  2015-09-15 21:20 ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info Jesse Barnes
  2015-09-15 21:46 ` [PATCH] drm/i915: add more debug info for when atomic updates fail v3 Ville Syrjälä
  0 siblings, 2 replies; 9+ messages in thread
From: Jesse Barnes @ 2015-09-15 21:19 UTC (permalink / raw)
  To: intel-gfx

I used these additional fields to track down the issue I saw on HSW.

v2: move debug fields into a substruct (Ville)
v3: clean up debug code more (Ville)

References: https://bugs.freedesktop.org/show_bug.cgi?id=91579
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_drv.h    |  8 ++++++--
 drivers/gpu/drm/i915/intel_sprite.c | 25 +++++++++++++++++--------
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 02a755a..1df6ebf 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -565,8 +565,12 @@ struct intel_crtc {
 
 	int scanline_offset;
 
-	unsigned start_vbl_count;
-	ktime_t start_vbl_time;
+	struct {
+		unsigned start_vbl_count;
+		ktime_t start_vbl_time;
+		int min_vbl, max_vbl;
+		int scanline_start;
+	} debug;
 
 	struct intel_crtc_atomic_commit atomic;
 
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 4d27243..7de121d 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -95,7 +95,6 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 	max = vblank_start - 1;
 
 	local_irq_disable();
-	crtc->start_vbl_count = 0;
 
 	if (min <= 0 || max <= 0)
 		return;
@@ -134,11 +133,15 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 
 	drm_crtc_vblank_put(&crtc->base);
 
-	crtc->start_vbl_time = ktime_get();
-	crtc->start_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
+	crtc->debug.min_vbl = min;
+	crtc->debug.max_vbl = max;
+	crtc->debug.scanline_start = scanline;
+	crtc->debug.start_vbl_time = ktime_get();
+	crtc->debug.start_vbl_count =
+		dev->driver->get_vblank_counter(dev, pipe);
 
 	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
-					     crtc->start_vbl_count);
+					     crtc->debug.start_vbl_count);
 }
 
 /**
@@ -154,6 +157,7 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
 {
 	struct drm_device *dev = crtc->base.dev;
 	enum pipe pipe = crtc->pipe;
+	int scanline_end = intel_get_crtc_scanline(crtc);
 	u32 end_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
 	ktime_t end_vbl_time = ktime_get();
 
@@ -161,10 +165,15 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
 
 	local_irq_enable();
 
-	if (crtc->start_vbl_count && crtc->start_vbl_count != end_vbl_count)
-		DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us\n",
-			  pipe_name(pipe), crtc->start_vbl_count, end_vbl_count,
-			  ktime_us_delta(end_vbl_time, crtc->start_vbl_time));
+	if (crtc->debug.start_vbl_count &&
+	    crtc->debug.start_vbl_count != end_vbl_count) {
+		DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
+			  pipe_name(pipe), crtc->debug.start_vbl_count,
+			  end_vbl_count,
+			  ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
+			  crtc->debug.min_vbl, crtc->debug.max_vbl,
+			  crtc->debug.scanline_start, scanline_end);
+	}
 }
 
 static void
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info
  2015-09-15 21:19 [PATCH] drm/i915: add more debug info for when atomic updates fail v3 Jesse Barnes
@ 2015-09-15 21:20 ` Jesse Barnes
  2015-09-15 21:53   ` Ville Syrjälä
  2015-09-15 21:46 ` [PATCH] drm/i915: add more debug info for when atomic updates fail v3 Ville Syrjälä
  1 sibling, 1 reply; 9+ messages in thread
From: Jesse Barnes @ 2015-09-15 21:20 UTC (permalink / raw)
  To: intel-gfx

Use the new debug info in the intel_crtc struct in these functions
rather than passing them as args.

Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/i915_trace.h   | 18 +++++++++---------
 drivers/gpu/drm/i915/intel_sprite.c |  5 ++---
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index e6b5c74..b48da2d 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -17,8 +17,8 @@
 /* pipe updates */
 
 TRACE_EVENT(i915_pipe_update_start,
-	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
-	    TP_ARGS(crtc, min, max),
+	    TP_PROTO(struct intel_crtc *crtc),
+	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
 			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
 										       crtc->pipe);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
-			   __entry->min = min;
-			   __entry->max = max;
+			   __entry->min = crtc->debug.min_vbl;
+			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
@@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
 );
 
 TRACE_EVENT(i915_pipe_update_vblank_evaded,
-	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
-	    TP_ARGS(crtc, min, max, frame),
+	    TP_PROTO(struct intel_crtc *crtc),
+	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
 
 	    TP_fast_assign(
 			   __entry->pipe = crtc->pipe;
-			   __entry->frame = frame;
+			   __entry->frame = crtc->debug.start_vbl_count;
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
-			   __entry->min = min;
-			   __entry->max = max;
+			   __entry->min = crtc->debug.min_vbl;
+			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 7de121d..4452390 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -102,7 +102,7 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
 		return;
 
-	trace_i915_pipe_update_start(crtc, min, max);
+	trace_i915_pipe_update_start(crtc);
 
 	for (;;) {
 		/*
@@ -140,8 +140,7 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 	crtc->debug.start_vbl_count =
 		dev->driver->get_vblank_counter(dev, pipe);
 
-	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
-					     crtc->debug.start_vbl_count);
+	trace_i915_pipe_update_vblank_evaded(crtc);
 }
 
 /**
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: add more debug info for when atomic updates fail v3
  2015-09-15 21:19 [PATCH] drm/i915: add more debug info for when atomic updates fail v3 Jesse Barnes
  2015-09-15 21:20 ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info Jesse Barnes
@ 2015-09-15 21:46 ` Ville Syrjälä
  1 sibling, 0 replies; 9+ messages in thread
From: Ville Syrjälä @ 2015-09-15 21:46 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: intel-gfx

On Tue, Sep 15, 2015 at 02:19:32PM -0700, Jesse Barnes wrote:
> I used these additional fields to track down the issue I saw on HSW.
> 
> v2: move debug fields into a substruct (Ville)
> v3: clean up debug code more (Ville)
> 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=91579
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/intel_drv.h    |  8 ++++++--
>  drivers/gpu/drm/i915/intel_sprite.c | 25 +++++++++++++++++--------
>  2 files changed, 23 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 02a755a..1df6ebf 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -565,8 +565,12 @@ struct intel_crtc {
>  
>  	int scanline_offset;
>  
> -	unsigned start_vbl_count;
> -	ktime_t start_vbl_time;
> +	struct {
> +		unsigned start_vbl_count;
> +		ktime_t start_vbl_time;
> +		int min_vbl, max_vbl;
> +		int scanline_start;

A bit inconsistent with start_foo vs. foo_start.

But othwerwise looks sane, so:
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +	} debug;
>  
>  	struct intel_crtc_atomic_commit atomic;
>  
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 4d27243..7de121d 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -95,7 +95,6 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  	max = vblank_start - 1;
>  
>  	local_irq_disable();
> -	crtc->start_vbl_count = 0;
>  
>  	if (min <= 0 || max <= 0)
>  		return;
> @@ -134,11 +133,15 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  
>  	drm_crtc_vblank_put(&crtc->base);
>  
> -	crtc->start_vbl_time = ktime_get();
> -	crtc->start_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
> +	crtc->debug.min_vbl = min;
> +	crtc->debug.max_vbl = max;
> +	crtc->debug.scanline_start = scanline;
> +	crtc->debug.start_vbl_time = ktime_get();
> +	crtc->debug.start_vbl_count =
> +		dev->driver->get_vblank_counter(dev, pipe);
>  
>  	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
> -					     crtc->start_vbl_count);
> +					     crtc->debug.start_vbl_count);
>  }
>  
>  /**
> @@ -154,6 +157,7 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
>  {
>  	struct drm_device *dev = crtc->base.dev;
>  	enum pipe pipe = crtc->pipe;
> +	int scanline_end = intel_get_crtc_scanline(crtc);
>  	u32 end_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
>  	ktime_t end_vbl_time = ktime_get();
>  
> @@ -161,10 +165,15 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
>  
>  	local_irq_enable();
>  
> -	if (crtc->start_vbl_count && crtc->start_vbl_count != end_vbl_count)
> -		DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us\n",
> -			  pipe_name(pipe), crtc->start_vbl_count, end_vbl_count,
> -			  ktime_us_delta(end_vbl_time, crtc->start_vbl_time));
> +	if (crtc->debug.start_vbl_count &&
> +	    crtc->debug.start_vbl_count != end_vbl_count) {
> +		DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
> +			  pipe_name(pipe), crtc->debug.start_vbl_count,
> +			  end_vbl_count,
> +			  ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),
> +			  crtc->debug.min_vbl, crtc->debug.max_vbl,
> +			  crtc->debug.scanline_start, scanline_end);
> +	}
>  }
>  
>  static void
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info
  2015-09-15 21:20 ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info Jesse Barnes
@ 2015-09-15 21:53   ` Ville Syrjälä
  2015-09-16 14:54     ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v2 Jesse Barnes
  0 siblings, 1 reply; 9+ messages in thread
From: Ville Syrjälä @ 2015-09-15 21:53 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: intel-gfx

On Tue, Sep 15, 2015 at 02:20:18PM -0700, Jesse Barnes wrote:
> Use the new debug info in the intel_crtc struct in these functions
> rather than passing them as args.
> 
> Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/i915_trace.h   | 18 +++++++++---------
>  drivers/gpu/drm/i915/intel_sprite.c |  5 ++---
>  2 files changed, 11 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> index e6b5c74..b48da2d 100644
> --- a/drivers/gpu/drm/i915/i915_trace.h
> +++ b/drivers/gpu/drm/i915/i915_trace.h
> @@ -17,8 +17,8 @@
>  /* pipe updates */
>  
>  TRACE_EVENT(i915_pipe_update_start,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
> -	    TP_ARGS(crtc, min, max),
> +	    TP_PROTO(struct intel_crtc *crtc),
> +	    TP_ARGS(crtc),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
>  			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
>  										       crtc->pipe);
>  			   __entry->scanline = intel_get_crtc_scanline(crtc);
> -			   __entry->min = min;
> -			   __entry->max = max;
> +			   __entry->min = crtc->debug.min_vbl;
> +			   __entry->max = crtc->debug.max_vbl;

Hmm. I think you actually moved the min/max_vbl asignment to happen
after this tracepoint is called. So this is busted.

With that part fixed you can slap on a
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
> @@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
>  );
>  
>  TRACE_EVENT(i915_pipe_update_vblank_evaded,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
> -	    TP_ARGS(crtc, min, max, frame),
> +	    TP_PROTO(struct intel_crtc *crtc),
> +	    TP_ARGS(crtc),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
>  
>  	    TP_fast_assign(
>  			   __entry->pipe = crtc->pipe;
> -			   __entry->frame = frame;
> +			   __entry->frame = crtc->debug.start_vbl_count;
>  			   __entry->scanline = intel_get_crtc_scanline(crtc);

We already have the scanline in the debug struct, so we could use it
here instead if reading it out again.

Same could be done for the i915_pipe_update_end tracepoint, but there we'd
have to pass it in obviously since we don't keep the end values in the
struct.

But these two are purely optional ideas. Feel free to ignore them if you
wish.

> -			   __entry->min = min;
> -			   __entry->max = max;
> +			   __entry->min = crtc->debug.min_vbl;
> +			   __entry->max = crtc->debug.max_vbl;
>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 7de121d..4452390 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -102,7 +102,7 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
>  		return;
>  
> -	trace_i915_pipe_update_start(crtc, min, max);
> +	trace_i915_pipe_update_start(crtc);
>  
>  	for (;;) {
>  		/*
> @@ -140,8 +140,7 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  	crtc->debug.start_vbl_count =
>  		dev->driver->get_vblank_counter(dev, pipe);
>  
> -	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
> -					     crtc->debug.start_vbl_count);
> +	trace_i915_pipe_update_vblank_evaded(crtc);
>  }
>  
>  /**
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v2
  2015-09-15 21:53   ` Ville Syrjälä
@ 2015-09-16 14:54     ` Jesse Barnes
  2015-09-17 14:23       ` Ville Syrjälä
  0 siblings, 1 reply; 9+ messages in thread
From: Jesse Barnes @ 2015-09-16 14:54 UTC (permalink / raw)
  To: intel-gfx

Use the new debug info in the intel_crtc struct in these functions
rather than passing them as args.

v2: move min/max assignment back above first trace call (Ville)
    use scanline from crtc->debug rather than fetching a new one (Ville)

Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/i915_trace.h   | 22 +++++++++++-----------
 drivers/gpu/drm/i915/intel_sprite.c |  9 ++++-----
 2 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index e6b5c74..016a07d 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -17,8 +17,8 @@
 /* pipe updates */
 
 TRACE_EVENT(i915_pipe_update_start,
-	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
-	    TP_ARGS(crtc, min, max),
+	    TP_PROTO(struct intel_crtc *crtc),
+	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
 			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
 										       crtc->pipe);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
-			   __entry->min = min;
-			   __entry->max = max;
+			   __entry->min = crtc->debug.min_vbl;
+			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
@@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
 );
 
 TRACE_EVENT(i915_pipe_update_vblank_evaded,
-	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
-	    TP_ARGS(crtc, min, max, frame),
+	    TP_PROTO(struct intel_crtc *crtc),
+	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
 
 	    TP_fast_assign(
 			   __entry->pipe = crtc->pipe;
-			   __entry->frame = frame;
-			   __entry->scanline = intel_get_crtc_scanline(crtc);
-			   __entry->min = min;
-			   __entry->max = max;
+			   __entry->frame = crtc->debug.start_vbl_count;
+			   __entry->scanline = crtc->debug.scanline_start;
+			   __entry->min = crtc->debug.min_vbl;
+			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
@@ -80,7 +80,7 @@ TRACE_EVENT(i915_pipe_update_end,
 	    TP_fast_assign(
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = frame;
-			   __entry->scanline = intel_get_crtc_scanline(crtc);
+			   __entry->scanline = crtc->debug.scanline_start;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u",
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 7de121d..a60a657 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -102,7 +102,9 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
 		return;
 
-	trace_i915_pipe_update_start(crtc, min, max);
+	crtc->debug.min_vbl = min;
+	crtc->debug.max_vbl = max;
+	trace_i915_pipe_update_start(crtc);
 
 	for (;;) {
 		/*
@@ -133,15 +135,12 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 
 	drm_crtc_vblank_put(&crtc->base);
 
-	crtc->debug.min_vbl = min;
-	crtc->debug.max_vbl = max;
 	crtc->debug.scanline_start = scanline;
 	crtc->debug.start_vbl_time = ktime_get();
 	crtc->debug.start_vbl_count =
 		dev->driver->get_vblank_counter(dev, pipe);
 
-	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
-					     crtc->debug.start_vbl_count);
+	trace_i915_pipe_update_vblank_evaded(crtc);
 }
 
 /**
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v2
  2015-09-16 14:54     ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v2 Jesse Barnes
@ 2015-09-17 14:23       ` Ville Syrjälä
  2015-09-17 15:08         ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v3 Jesse Barnes
  0 siblings, 1 reply; 9+ messages in thread
From: Ville Syrjälä @ 2015-09-17 14:23 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: intel-gfx

On Wed, Sep 16, 2015 at 07:54:30AM -0700, Jesse Barnes wrote:
> Use the new debug info in the intel_crtc struct in these functions
> rather than passing them as args.
> 
> v2: move min/max assignment back above first trace call (Ville)
>     use scanline from crtc->debug rather than fetching a new one (Ville)
> 
> Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/i915_trace.h   | 22 +++++++++++-----------
>  drivers/gpu/drm/i915/intel_sprite.c |  9 ++++-----
>  2 files changed, 15 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> index e6b5c74..016a07d 100644
> --- a/drivers/gpu/drm/i915/i915_trace.h
> +++ b/drivers/gpu/drm/i915/i915_trace.h
> @@ -17,8 +17,8 @@
>  /* pipe updates */
>  
>  TRACE_EVENT(i915_pipe_update_start,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
> -	    TP_ARGS(crtc, min, max),
> +	    TP_PROTO(struct intel_crtc *crtc),
> +	    TP_ARGS(crtc),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
>  			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
>  										       crtc->pipe);
>  			   __entry->scanline = intel_get_crtc_scanline(crtc);
> -			   __entry->min = min;
> -			   __entry->max = max;
> +			   __entry->min = crtc->debug.min_vbl;
> +			   __entry->max = crtc->debug.max_vbl;
>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
> @@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
>  );
>  
>  TRACE_EVENT(i915_pipe_update_vblank_evaded,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
> -	    TP_ARGS(crtc, min, max, frame),
> +	    TP_PROTO(struct intel_crtc *crtc),
> +	    TP_ARGS(crtc),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
>  
>  	    TP_fast_assign(
>  			   __entry->pipe = crtc->pipe;
> -			   __entry->frame = frame;
> -			   __entry->scanline = intel_get_crtc_scanline(crtc);
> -			   __entry->min = min;
> -			   __entry->max = max;
> +			   __entry->frame = crtc->debug.start_vbl_count;
> +			   __entry->scanline = crtc->debug.scanline_start;
> +			   __entry->min = crtc->debug.min_vbl;
> +			   __entry->max = crtc->debug.max_vbl;
>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
> @@ -80,7 +80,7 @@ TRACE_EVENT(i915_pipe_update_end,
>  	    TP_fast_assign(
>  			   __entry->pipe = crtc->pipe;
>  			   __entry->frame = frame;
> -			   __entry->scanline = intel_get_crtc_scanline(crtc);
> +			   __entry->scanline = crtc->debug.scanline_start;

That needs to be the end scanline, so must be passed in.

With that fixed this is
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u",
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 7de121d..a60a657 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -102,7 +102,9 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
>  		return;
>  
> -	trace_i915_pipe_update_start(crtc, min, max);
> +	crtc->debug.min_vbl = min;
> +	crtc->debug.max_vbl = max;
> +	trace_i915_pipe_update_start(crtc);
>  
>  	for (;;) {
>  		/*
> @@ -133,15 +135,12 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  
>  	drm_crtc_vblank_put(&crtc->base);
>  
> -	crtc->debug.min_vbl = min;
> -	crtc->debug.max_vbl = max;
>  	crtc->debug.scanline_start = scanline;
>  	crtc->debug.start_vbl_time = ktime_get();
>  	crtc->debug.start_vbl_count =
>  		dev->driver->get_vblank_counter(dev, pipe);
>  
> -	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
> -					     crtc->debug.start_vbl_count);
> +	trace_i915_pipe_update_vblank_evaded(crtc);
>  }
>  
>  /**
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v3
  2015-09-17 14:23       ` Ville Syrjälä
@ 2015-09-17 15:08         ` Jesse Barnes
  2015-09-18 10:00           ` Ville Syrjälä
  0 siblings, 1 reply; 9+ messages in thread
From: Jesse Barnes @ 2015-09-17 15:08 UTC (permalink / raw)
  To: intel-gfx

Use the new debug info in the intel_crtc struct in these functions
rather than passing them as args.

v2: move min/max assignment back above first trace call (Ville)
    use scanline from crtc->debug rather than fetching a new one (Ville)
v3: fix up trace_i915_pipe_update_end, needs end scanline (Ville)

Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/i915_trace.h   | 26 +++++++++++++-------------
 drivers/gpu/drm/i915/intel_sprite.c | 11 +++++------
 2 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index e6b5c74..d0993bc 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -17,8 +17,8 @@
 /* pipe updates */
 
 TRACE_EVENT(i915_pipe_update_start,
-	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
-	    TP_ARGS(crtc, min, max),
+	    TP_PROTO(struct intel_crtc *crtc),
+	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
 			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
 										       crtc->pipe);
 			   __entry->scanline = intel_get_crtc_scanline(crtc);
-			   __entry->min = min;
-			   __entry->max = max;
+			   __entry->min = crtc->debug.min_vbl;
+			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
@@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
 );
 
 TRACE_EVENT(i915_pipe_update_vblank_evaded,
-	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
-	    TP_ARGS(crtc, min, max, frame),
+	    TP_PROTO(struct intel_crtc *crtc),
+	    TP_ARGS(crtc),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
 
 	    TP_fast_assign(
 			   __entry->pipe = crtc->pipe;
-			   __entry->frame = frame;
-			   __entry->scanline = intel_get_crtc_scanline(crtc);
-			   __entry->min = min;
-			   __entry->max = max;
+			   __entry->frame = crtc->debug.start_vbl_count;
+			   __entry->scanline = crtc->debug.scanline_start;
+			   __entry->min = crtc->debug.min_vbl;
+			   __entry->max = crtc->debug.max_vbl;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
@@ -68,8 +68,8 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
 );
 
 TRACE_EVENT(i915_pipe_update_end,
-	    TP_PROTO(struct intel_crtc *crtc, u32 frame),
-	    TP_ARGS(crtc, frame),
+	    TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end),
+	    TP_ARGS(crtc, frame, scanline_end),
 
 	    TP_STRUCT__entry(
 			     __field(enum pipe, pipe)
@@ -80,7 +80,7 @@ TRACE_EVENT(i915_pipe_update_end,
 	    TP_fast_assign(
 			   __entry->pipe = crtc->pipe;
 			   __entry->frame = frame;
-			   __entry->scanline = intel_get_crtc_scanline(crtc);
+			   __entry->scanline = scanline_end;
 			   ),
 
 	    TP_printk("pipe %c, frame=%u, scanline=%u",
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 7de121d..79f7cc2 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -102,7 +102,9 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
 		return;
 
-	trace_i915_pipe_update_start(crtc, min, max);
+	crtc->debug.min_vbl = min;
+	crtc->debug.max_vbl = max;
+	trace_i915_pipe_update_start(crtc);
 
 	for (;;) {
 		/*
@@ -133,15 +135,12 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
 
 	drm_crtc_vblank_put(&crtc->base);
 
-	crtc->debug.min_vbl = min;
-	crtc->debug.max_vbl = max;
 	crtc->debug.scanline_start = scanline;
 	crtc->debug.start_vbl_time = ktime_get();
 	crtc->debug.start_vbl_count =
 		dev->driver->get_vblank_counter(dev, pipe);
 
-	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
-					     crtc->debug.start_vbl_count);
+	trace_i915_pipe_update_vblank_evaded(crtc);
 }
 
 /**
@@ -161,7 +160,7 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
 	u32 end_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
 	ktime_t end_vbl_time = ktime_get();
 
-	trace_i915_pipe_update_end(crtc, end_vbl_count);
+	trace_i915_pipe_update_end(crtc, end_vbl_count, scanline_end);
 
 	local_irq_enable();
 
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v3
  2015-09-17 15:08         ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v3 Jesse Barnes
@ 2015-09-18 10:00           ` Ville Syrjälä
  2015-09-18 11:25             ` Jani Nikula
  0 siblings, 1 reply; 9+ messages in thread
From: Ville Syrjälä @ 2015-09-18 10:00 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: intel-gfx

On Thu, Sep 17, 2015 at 08:08:32AM -0700, Jesse Barnes wrote:
> Use the new debug info in the intel_crtc struct in these functions
> rather than passing them as args.
> 
> v2: move min/max assignment back above first trace call (Ville)
>     use scanline from crtc->debug rather than fetching a new one (Ville)
> v3: fix up trace_i915_pipe_update_end, needs end scanline (Ville)
> 
> Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_trace.h   | 26 +++++++++++++-------------
>  drivers/gpu/drm/i915/intel_sprite.c | 11 +++++------
>  2 files changed, 18 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> index e6b5c74..d0993bc 100644
> --- a/drivers/gpu/drm/i915/i915_trace.h
> +++ b/drivers/gpu/drm/i915/i915_trace.h
> @@ -17,8 +17,8 @@
>  /* pipe updates */
>  
>  TRACE_EVENT(i915_pipe_update_start,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
> -	    TP_ARGS(crtc, min, max),
> +	    TP_PROTO(struct intel_crtc *crtc),
> +	    TP_ARGS(crtc),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
>  			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
>  										       crtc->pipe);
>  			   __entry->scanline = intel_get_crtc_scanline(crtc);
> -			   __entry->min = min;
> -			   __entry->max = max;
> +			   __entry->min = crtc->debug.min_vbl;
> +			   __entry->max = crtc->debug.max_vbl;
>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
> @@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
>  );
>  
>  TRACE_EVENT(i915_pipe_update_vblank_evaded,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
> -	    TP_ARGS(crtc, min, max, frame),
> +	    TP_PROTO(struct intel_crtc *crtc),
> +	    TP_ARGS(crtc),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
>  
>  	    TP_fast_assign(
>  			   __entry->pipe = crtc->pipe;
> -			   __entry->frame = frame;
> -			   __entry->scanline = intel_get_crtc_scanline(crtc);
> -			   __entry->min = min;
> -			   __entry->max = max;
> +			   __entry->frame = crtc->debug.start_vbl_count;
> +			   __entry->scanline = crtc->debug.scanline_start;
> +			   __entry->min = crtc->debug.min_vbl;
> +			   __entry->max = crtc->debug.max_vbl;
>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
> @@ -68,8 +68,8 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
>  );
>  
>  TRACE_EVENT(i915_pipe_update_end,
> -	    TP_PROTO(struct intel_crtc *crtc, u32 frame),
> -	    TP_ARGS(crtc, frame),
> +	    TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end),
> +	    TP_ARGS(crtc, frame, scanline_end),
>  
>  	    TP_STRUCT__entry(
>  			     __field(enum pipe, pipe)
> @@ -80,7 +80,7 @@ TRACE_EVENT(i915_pipe_update_end,
>  	    TP_fast_assign(
>  			   __entry->pipe = crtc->pipe;
>  			   __entry->frame = frame;
> -			   __entry->scanline = intel_get_crtc_scanline(crtc);
> +			   __entry->scanline = scanline_end;
>  			   ),
>  
>  	    TP_printk("pipe %c, frame=%u, scanline=%u",
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index 7de121d..79f7cc2 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -102,7 +102,9 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
>  		return;
>  
> -	trace_i915_pipe_update_start(crtc, min, max);
> +	crtc->debug.min_vbl = min;
> +	crtc->debug.max_vbl = max;
> +	trace_i915_pipe_update_start(crtc);
>  
>  	for (;;) {
>  		/*
> @@ -133,15 +135,12 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>  
>  	drm_crtc_vblank_put(&crtc->base);
>  
> -	crtc->debug.min_vbl = min;
> -	crtc->debug.max_vbl = max;
>  	crtc->debug.scanline_start = scanline;
>  	crtc->debug.start_vbl_time = ktime_get();
>  	crtc->debug.start_vbl_count =
>  		dev->driver->get_vblank_counter(dev, pipe);
>  
> -	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
> -					     crtc->debug.start_vbl_count);
> +	trace_i915_pipe_update_vblank_evaded(crtc);
>  }
>  
>  /**
> @@ -161,7 +160,7 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
>  	u32 end_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
>  	ktime_t end_vbl_time = ktime_get();
>  
> -	trace_i915_pipe_update_end(crtc, end_vbl_count);
> +	trace_i915_pipe_update_end(crtc, end_vbl_count, scanline_end);
>  
>  	local_irq_enable();
>  
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v3
  2015-09-18 10:00           ` Ville Syrjälä
@ 2015-09-18 11:25             ` Jani Nikula
  0 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2015-09-18 11:25 UTC (permalink / raw)
  To: Ville Syrjälä, Jesse Barnes; +Cc: intel-gfx

On Fri, 18 Sep 2015, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Thu, Sep 17, 2015 at 08:08:32AM -0700, Jesse Barnes wrote:
>> Use the new debug info in the intel_crtc struct in these functions
>> rather than passing them as args.
>> 
>> v2: move min/max assignment back above first trace call (Ville)
>>     use scanline from crtc->debug rather than fetching a new one (Ville)
>> v3: fix up trace_i915_pipe_update_end, needs end scanline (Ville)
>> 
>> Requested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
>
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Both pushed to drm-intel-next-queued, thanks for the patches and review.

BR,
Jani.


>
>> ---
>>  drivers/gpu/drm/i915/i915_trace.h   | 26 +++++++++++++-------------
>>  drivers/gpu/drm/i915/intel_sprite.c | 11 +++++------
>>  2 files changed, 18 insertions(+), 19 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
>> index e6b5c74..d0993bc 100644
>> --- a/drivers/gpu/drm/i915/i915_trace.h
>> +++ b/drivers/gpu/drm/i915/i915_trace.h
>> @@ -17,8 +17,8 @@
>>  /* pipe updates */
>>  
>>  TRACE_EVENT(i915_pipe_update_start,
>> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max),
>> -	    TP_ARGS(crtc, min, max),
>> +	    TP_PROTO(struct intel_crtc *crtc),
>> +	    TP_ARGS(crtc),
>>  
>>  	    TP_STRUCT__entry(
>>  			     __field(enum pipe, pipe)
>> @@ -33,8 +33,8 @@ TRACE_EVENT(i915_pipe_update_start,
>>  			   __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
>>  										       crtc->pipe);
>>  			   __entry->scanline = intel_get_crtc_scanline(crtc);
>> -			   __entry->min = min;
>> -			   __entry->max = max;
>> +			   __entry->min = crtc->debug.min_vbl;
>> +			   __entry->max = crtc->debug.max_vbl;
>>  			   ),
>>  
>>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
>> @@ -43,8 +43,8 @@ TRACE_EVENT(i915_pipe_update_start,
>>  );
>>  
>>  TRACE_EVENT(i915_pipe_update_vblank_evaded,
>> -	    TP_PROTO(struct intel_crtc *crtc, u32 min, u32 max, u32 frame),
>> -	    TP_ARGS(crtc, min, max, frame),
>> +	    TP_PROTO(struct intel_crtc *crtc),
>> +	    TP_ARGS(crtc),
>>  
>>  	    TP_STRUCT__entry(
>>  			     __field(enum pipe, pipe)
>> @@ -56,10 +56,10 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
>>  
>>  	    TP_fast_assign(
>>  			   __entry->pipe = crtc->pipe;
>> -			   __entry->frame = frame;
>> -			   __entry->scanline = intel_get_crtc_scanline(crtc);
>> -			   __entry->min = min;
>> -			   __entry->max = max;
>> +			   __entry->frame = crtc->debug.start_vbl_count;
>> +			   __entry->scanline = crtc->debug.scanline_start;
>> +			   __entry->min = crtc->debug.min_vbl;
>> +			   __entry->max = crtc->debug.max_vbl;
>>  			   ),
>>  
>>  	    TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u",
>> @@ -68,8 +68,8 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded,
>>  );
>>  
>>  TRACE_EVENT(i915_pipe_update_end,
>> -	    TP_PROTO(struct intel_crtc *crtc, u32 frame),
>> -	    TP_ARGS(crtc, frame),
>> +	    TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end),
>> +	    TP_ARGS(crtc, frame, scanline_end),
>>  
>>  	    TP_STRUCT__entry(
>>  			     __field(enum pipe, pipe)
>> @@ -80,7 +80,7 @@ TRACE_EVENT(i915_pipe_update_end,
>>  	    TP_fast_assign(
>>  			   __entry->pipe = crtc->pipe;
>>  			   __entry->frame = frame;
>> -			   __entry->scanline = intel_get_crtc_scanline(crtc);
>> +			   __entry->scanline = scanline_end;
>>  			   ),
>>  
>>  	    TP_printk("pipe %c, frame=%u, scanline=%u",
>> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
>> index 7de121d..79f7cc2 100644
>> --- a/drivers/gpu/drm/i915/intel_sprite.c
>> +++ b/drivers/gpu/drm/i915/intel_sprite.c
>> @@ -102,7 +102,9 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>>  	if (WARN_ON(drm_crtc_vblank_get(&crtc->base)))
>>  		return;
>>  
>> -	trace_i915_pipe_update_start(crtc, min, max);
>> +	crtc->debug.min_vbl = min;
>> +	crtc->debug.max_vbl = max;
>> +	trace_i915_pipe_update_start(crtc);
>>  
>>  	for (;;) {
>>  		/*
>> @@ -133,15 +135,12 @@ void intel_pipe_update_start(struct intel_crtc *crtc)
>>  
>>  	drm_crtc_vblank_put(&crtc->base);
>>  
>> -	crtc->debug.min_vbl = min;
>> -	crtc->debug.max_vbl = max;
>>  	crtc->debug.scanline_start = scanline;
>>  	crtc->debug.start_vbl_time = ktime_get();
>>  	crtc->debug.start_vbl_count =
>>  		dev->driver->get_vblank_counter(dev, pipe);
>>  
>> -	trace_i915_pipe_update_vblank_evaded(crtc, min, max,
>> -					     crtc->debug.start_vbl_count);
>> +	trace_i915_pipe_update_vblank_evaded(crtc);
>>  }
>>  
>>  /**
>> @@ -161,7 +160,7 @@ void intel_pipe_update_end(struct intel_crtc *crtc)
>>  	u32 end_vbl_count = dev->driver->get_vblank_counter(dev, pipe);
>>  	ktime_t end_vbl_time = ktime_get();
>>  
>> -	trace_i915_pipe_update_end(crtc, end_vbl_count);
>> +	trace_i915_pipe_update_end(crtc, end_vbl_count, scanline_end);
>>  
>>  	local_irq_enable();
>>  
>> -- 
>> 1.9.1
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> -- 
> Ville Syrjälä
> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-09-18 11:22 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-15 21:19 [PATCH] drm/i915: add more debug info for when atomic updates fail v3 Jesse Barnes
2015-09-15 21:20 ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info Jesse Barnes
2015-09-15 21:53   ` Ville Syrjälä
2015-09-16 14:54     ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v2 Jesse Barnes
2015-09-17 14:23       ` Ville Syrjälä
2015-09-17 15:08         ` [PATCH] drm/i915: cleanup pipe_update trace functions with new crtc debug info v3 Jesse Barnes
2015-09-18 10:00           ` Ville Syrjälä
2015-09-18 11:25             ` Jani Nikula
2015-09-15 21:46 ` [PATCH] drm/i915: add more debug info for when atomic updates fail v3 Ville Syrjälä

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.