* [PATCH 2/4] drm/i915: Add pipe enable/disable tracepoints
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
@ 2019-02-06 20:49 ` Ville Syrjala
2019-02-13 17:41 ` Rodrigo Vivi
2019-02-06 20:49 ` [PATCH 3/4] drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes() Ville Syrjala
` (7 subsequent siblings)
8 siblings, 1 reply; 13+ messages in thread
From: Ville Syrjala @ 2019-02-06 20:49 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Add tracepoints for pipe enable/disable. We'll include the
frame/scanline counters for all pipes in these tracepoints to
help in diagnosing underruns and whatnot when enabling/disabling
pipes in parallel with plane updates/flips on another pipe.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/i915_trace.h | 56 ++++++++++++++++++++++++++++
drivers/gpu/drm/i915/intel_display.c | 4 ++
2 files changed, 60 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
index 308d36926335..96dfe651ffd0 100644
--- a/drivers/gpu/drm/i915/i915_trace.h
+++ b/drivers/gpu/drm/i915/i915_trace.h
@@ -18,6 +18,62 @@
/* watermark/fifo updates */
+TRACE_EVENT(intel_pipe_enable,
+ TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
+ TP_ARGS(dev_priv, pipe),
+
+ TP_STRUCT__entry(
+ __array(u32, frame, 3)
+ __array(u32, scanline, 3)
+ __field(enum pipe, pipe)
+ ),
+
+ TP_fast_assign(
+ enum pipe _pipe;
+ for_each_pipe(dev_priv, _pipe) {
+ __entry->frame[_pipe] =
+ dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
+ __entry->scanline[_pipe] =
+ intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
+ }
+ __entry->pipe = pipe;
+ ),
+
+ TP_printk("pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
+ pipe_name(__entry->pipe),
+ __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
+ __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
+ __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
+);
+
+TRACE_EVENT(intel_pipe_disable,
+ TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
+ TP_ARGS(dev_priv, pipe),
+
+ TP_STRUCT__entry(
+ __array(u32, frame, 3)
+ __array(u32, scanline, 3)
+ __field(enum pipe, pipe)
+ ),
+
+ TP_fast_assign(
+ enum pipe _pipe;
+ for_each_pipe(dev_priv, _pipe) {
+ __entry->frame[_pipe] =
+ dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
+ __entry->scanline[_pipe] =
+ intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
+ }
+ __entry->pipe = pipe;
+ ),
+
+ TP_printk("pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
+ pipe_name(__entry->pipe),
+ __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
+ __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
+ __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
+);
+
TRACE_EVENT(intel_pipe_crc,
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
TP_ARGS(crtc, crcs),
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4d5ec929f987..4e3ea2d1a880 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1821,6 +1821,8 @@ static void intel_enable_pipe(const struct intel_crtc_state *new_crtc_state)
/* FIXME: assert CPU port conditions for SNB+ */
}
+ trace_intel_pipe_enable(dev_priv, pipe);
+
reg = PIPECONF(cpu_transcoder);
val = I915_READ(reg);
if (val & PIPECONF_ENABLE) {
@@ -1860,6 +1862,8 @@ static void intel_disable_pipe(const struct intel_crtc_state *old_crtc_state)
*/
assert_planes_disabled(crtc);
+ trace_intel_pipe_disable(dev_priv, pipe);
+
reg = PIPECONF(cpu_transcoder);
val = I915_READ(reg);
if ((val & PIPECONF_ENABLE) == 0)
--
2.19.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 2/4] drm/i915: Add pipe enable/disable tracepoints
2019-02-06 20:49 ` [PATCH 2/4] drm/i915: Add pipe enable/disable tracepoints Ville Syrjala
@ 2019-02-13 17:41 ` Rodrigo Vivi
0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2019-02-13 17:41 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
On Wed, Feb 06, 2019 at 10:49:08PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Add tracepoints for pipe enable/disable. We'll include the
> frame/scanline counters for all pipes in these tracepoints to
> help in diagnosing underruns and whatnot when enabling/disabling
> pipes in parallel with plane updates/flips on another pipe.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/i915_trace.h | 56 ++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/intel_display.c | 4 ++
> 2 files changed, 60 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h
> index 308d36926335..96dfe651ffd0 100644
> --- a/drivers/gpu/drm/i915/i915_trace.h
> +++ b/drivers/gpu/drm/i915/i915_trace.h
> @@ -18,6 +18,62 @@
>
> /* watermark/fifo updates */
>
> +TRACE_EVENT(intel_pipe_enable,
> + TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
> + TP_ARGS(dev_priv, pipe),
> +
> + TP_STRUCT__entry(
> + __array(u32, frame, 3)
> + __array(u32, scanline, 3)
> + __field(enum pipe, pipe)
> + ),
> +
> + TP_fast_assign(
> + enum pipe _pipe;
> + for_each_pipe(dev_priv, _pipe) {
> + __entry->frame[_pipe] =
> + dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
> + __entry->scanline[_pipe] =
> + intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
> + }
> + __entry->pipe = pipe;
> + ),
> +
> + TP_printk("pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
> + pipe_name(__entry->pipe),
> + __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
> + __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
> + __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
> +);
> +
> +TRACE_EVENT(intel_pipe_disable,
> + TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pipe),
> + TP_ARGS(dev_priv, pipe),
> +
> + TP_STRUCT__entry(
> + __array(u32, frame, 3)
> + __array(u32, scanline, 3)
> + __field(enum pipe, pipe)
> + ),
> +
> + TP_fast_assign(
> + enum pipe _pipe;
> + for_each_pipe(dev_priv, _pipe) {
> + __entry->frame[_pipe] =
> + dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
> + __entry->scanline[_pipe] =
> + intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
> + }
> + __entry->pipe = pipe;
> + ),
> +
> + TP_printk("pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u",
> + pipe_name(__entry->pipe),
> + __entry->frame[PIPE_A], __entry->scanline[PIPE_A],
> + __entry->frame[PIPE_B], __entry->scanline[PIPE_B],
> + __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
> +);
> +
> TRACE_EVENT(intel_pipe_crc,
> TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
> TP_ARGS(crtc, crcs),
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4d5ec929f987..4e3ea2d1a880 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -1821,6 +1821,8 @@ static void intel_enable_pipe(const struct intel_crtc_state *new_crtc_state)
> /* FIXME: assert CPU port conditions for SNB+ */
> }
>
> + trace_intel_pipe_enable(dev_priv, pipe);
> +
> reg = PIPECONF(cpu_transcoder);
> val = I915_READ(reg);
> if (val & PIPECONF_ENABLE) {
> @@ -1860,6 +1862,8 @@ static void intel_disable_pipe(const struct intel_crtc_state *old_crtc_state)
> */
> assert_planes_disabled(crtc);
>
> + trace_intel_pipe_disable(dev_priv, pipe);
> +
> reg = PIPECONF(cpu_transcoder);
> val = I915_READ(reg);
> if ((val & PIPECONF_ENABLE) == 0)
> --
> 2.19.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/4] drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes()
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
2019-02-06 20:49 ` [PATCH 2/4] drm/i915: Add pipe enable/disable tracepoints Ville Syrjala
@ 2019-02-06 20:49 ` Ville Syrjala
2019-02-13 17:41 ` Rodrigo Vivi
2019-02-06 20:49 ` [PATCH 4/4] drm/i915: Wrap plane update/disable hook calls Ville Syrjala
` (6 subsequent siblings)
8 siblings, 1 reply; 13+ messages in thread
From: Ville Syrjala @ 2019-02-06 20:49 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
intel_crtc_disable_planes() disables the planes so it should
trigger the appropriate tracepoint.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4e3ea2d1a880..e404e9000893 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5524,6 +5524,7 @@ static void intel_crtc_disable_planes(struct intel_atomic_state *state,
!(update_mask & BIT(plane->id)))
continue;
+ trace_intel_disable_plane(&plane->base, crtc);
plane->disable_plane(plane, new_crtc_state);
if (old_plane_state->base.visible)
--
2.19.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 3/4] drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes()
2019-02-06 20:49 ` [PATCH 3/4] drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes() Ville Syrjala
@ 2019-02-13 17:41 ` Rodrigo Vivi
0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2019-02-13 17:41 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
On Wed, Feb 06, 2019 at 10:49:09PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> intel_crtc_disable_planes() disables the planes so it should
> trigger the appropriate tracepoint.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4e3ea2d1a880..e404e9000893 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -5524,6 +5524,7 @@ static void intel_crtc_disable_planes(struct intel_atomic_state *state,
> !(update_mask & BIT(plane->id)))
> continue;
>
> + trace_intel_disable_plane(&plane->base, crtc);
> plane->disable_plane(plane, new_crtc_state);
>
> if (old_plane_state->base.visible)
> --
> 2.19.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/4] drm/i915: Wrap plane update/disable hook calls
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
2019-02-06 20:49 ` [PATCH 2/4] drm/i915: Add pipe enable/disable tracepoints Ville Syrjala
2019-02-06 20:49 ` [PATCH 3/4] drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes() Ville Syrjala
@ 2019-02-06 20:49 ` Ville Syrjala
2019-02-13 17:41 ` Rodrigo Vivi
2019-02-06 21:19 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Add pipe crc tracepoint Patchwork
` (5 subsequent siblings)
8 siblings, 1 reply; 13+ messages in thread
From: Ville Syrjala @ 2019-02-06 20:49 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Wrap the .update_plane()/.update_slave()/.disable_plane() vfunc
calls into helpers which also take care to emit the appropriate
tracepoint.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/intel_atomic_plane.c | 49 +++++++++++++++++------
drivers/gpu/drm/i915/intel_display.c | 19 ++++-----
drivers/gpu/drm/i915/intel_drv.h | 8 ++++
3 files changed, 51 insertions(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
index a1a263026574..f9fc06017a39 100644
--- a/drivers/gpu/drm/i915/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
@@ -212,6 +212,35 @@ skl_next_plane_to_commit(struct intel_atomic_state *state,
return NULL;
}
+void intel_update_plane(struct intel_plane *plane,
+ const struct intel_crtc_state *crtc_state,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
+
+ trace_intel_update_plane(&plane->base, crtc);
+ plane->update_plane(plane, crtc_state, plane_state);
+}
+
+void intel_update_slave(struct intel_plane *plane,
+ const struct intel_crtc_state *crtc_state,
+ const struct intel_plane_state *plane_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
+
+ trace_intel_update_plane(&plane->base, crtc);
+ plane->update_slave(plane, crtc_state, plane_state);
+}
+
+void intel_disable_plane(struct intel_plane *plane,
+ const struct intel_crtc_state *crtc_state)
+{
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
+
+ trace_intel_disable_plane(&plane->base, crtc);
+ plane->disable_plane(plane, crtc_state);
+}
+
void skl_update_planes_on_crtc(struct intel_atomic_state *state,
struct intel_crtc *crtc)
{
@@ -236,8 +265,7 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state,
intel_atomic_get_new_plane_state(state, plane);
if (new_plane_state->base.visible) {
- trace_intel_update_plane(&plane->base, crtc);
- plane->update_plane(plane, new_crtc_state, new_plane_state);
+ intel_update_plane(plane, new_crtc_state, new_plane_state);
} else if (new_plane_state->slave) {
struct intel_plane *master =
new_plane_state->linked_plane;
@@ -254,11 +282,9 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state,
new_plane_state =
intel_atomic_get_new_plane_state(state, master);
- trace_intel_update_plane(&plane->base, crtc);
- plane->update_slave(plane, new_crtc_state, new_plane_state);
+ intel_update_slave(plane, new_crtc_state, new_plane_state);
} else {
- trace_intel_disable_plane(&plane->base, crtc);
- plane->disable_plane(plane, new_crtc_state);
+ intel_disable_plane(plane, new_crtc_state);
}
}
}
@@ -278,13 +304,10 @@ void i9xx_update_planes_on_crtc(struct intel_atomic_state *state,
!(update_mask & BIT(plane->id)))
continue;
- if (new_plane_state->base.visible) {
- trace_intel_update_plane(&plane->base, crtc);
- plane->update_plane(plane, new_crtc_state, new_plane_state);
- } else {
- trace_intel_disable_plane(&plane->base, crtc);
- plane->disable_plane(plane, new_crtc_state);
- }
+ if (new_plane_state->base.visible)
+ intel_update_plane(plane, new_crtc_state, new_plane_state);
+ else
+ intel_disable_plane(plane, new_crtc_state);
}
}
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index e404e9000893..de0e871da8db 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2820,8 +2820,7 @@ static void intel_plane_disable_noatomic(struct intel_crtc *crtc,
if (plane->id == PLANE_PRIMARY)
intel_pre_disable_primary_noatomic(&crtc->base);
- trace_intel_disable_plane(&plane->base, crtc);
- plane->disable_plane(plane, crtc_state);
+ intel_disable_plane(plane, crtc_state);
}
static void
@@ -5524,8 +5523,7 @@ static void intel_crtc_disable_planes(struct intel_atomic_state *state,
!(update_mask & BIT(plane->id)))
continue;
- trace_intel_disable_plane(&plane->base, crtc);
- plane->disable_plane(plane, new_crtc_state);
+ intel_disable_plane(plane, new_crtc_state);
if (old_plane_state->base.visible)
fb_bits |= plane->frontbuffer_bit;
@@ -13937,14 +13935,11 @@ intel_legacy_cursor_update(struct drm_plane *plane,
*/
crtc_state->active_planes = new_crtc_state->active_planes;
- if (plane->state->visible) {
- trace_intel_update_plane(plane, to_intel_crtc(crtc));
- intel_plane->update_plane(intel_plane, crtc_state,
- to_intel_plane_state(plane->state));
- } else {
- trace_intel_disable_plane(plane, to_intel_crtc(crtc));
- intel_plane->disable_plane(intel_plane, crtc_state);
- }
+ if (plane->state->visible)
+ intel_update_plane(intel_plane, crtc_state,
+ to_intel_plane_state(plane->state));
+ else
+ intel_disable_plane(intel_plane, crtc_state);
intel_plane_unpin_fb(to_intel_plane_state(old_plane_state));
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 90ba5436370e..6093bc34720a 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -2361,6 +2361,14 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
struct intel_crtc_state *crtc_state);
/* intel_atomic_plane.c */
+void intel_update_plane(struct intel_plane *plane,
+ const struct intel_crtc_state *crtc_state,
+ const struct intel_plane_state *plane_state);
+void intel_update_slave(struct intel_plane *plane,
+ const struct intel_crtc_state *crtc_state,
+ const struct intel_plane_state *plane_state);
+void intel_disable_plane(struct intel_plane *plane,
+ const struct intel_crtc_state *crtc_state);
struct intel_plane *intel_plane_alloc(void);
void intel_plane_free(struct intel_plane *plane);
struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
--
2.19.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH 4/4] drm/i915: Wrap plane update/disable hook calls
2019-02-06 20:49 ` [PATCH 4/4] drm/i915: Wrap plane update/disable hook calls Ville Syrjala
@ 2019-02-13 17:41 ` Rodrigo Vivi
0 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2019-02-13 17:41 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
On Wed, Feb 06, 2019 at 10:49:10PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Wrap the .update_plane()/.update_slave()/.disable_plane() vfunc
> calls into helpers which also take care to emit the appropriate
> tracepoint.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/i915/intel_atomic_plane.c | 49 +++++++++++++++++------
> drivers/gpu/drm/i915/intel_display.c | 19 ++++-----
> drivers/gpu/drm/i915/intel_drv.h | 8 ++++
> 3 files changed, 51 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
> index a1a263026574..f9fc06017a39 100644
> --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
> @@ -212,6 +212,35 @@ skl_next_plane_to_commit(struct intel_atomic_state *state,
> return NULL;
> }
>
> +void intel_update_plane(struct intel_plane *plane,
> + const struct intel_crtc_state *crtc_state,
> + const struct intel_plane_state *plane_state)
> +{
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> +
> + trace_intel_update_plane(&plane->base, crtc);
> + plane->update_plane(plane, crtc_state, plane_state);
> +}
> +
> +void intel_update_slave(struct intel_plane *plane,
> + const struct intel_crtc_state *crtc_state,
> + const struct intel_plane_state *plane_state)
> +{
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> +
> + trace_intel_update_plane(&plane->base, crtc);
> + plane->update_slave(plane, crtc_state, plane_state);
> +}
> +
> +void intel_disable_plane(struct intel_plane *plane,
> + const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> +
> + trace_intel_disable_plane(&plane->base, crtc);
> + plane->disable_plane(plane, crtc_state);
> +}
> +
> void skl_update_planes_on_crtc(struct intel_atomic_state *state,
> struct intel_crtc *crtc)
> {
> @@ -236,8 +265,7 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state,
> intel_atomic_get_new_plane_state(state, plane);
>
> if (new_plane_state->base.visible) {
> - trace_intel_update_plane(&plane->base, crtc);
> - plane->update_plane(plane, new_crtc_state, new_plane_state);
> + intel_update_plane(plane, new_crtc_state, new_plane_state);
> } else if (new_plane_state->slave) {
> struct intel_plane *master =
> new_plane_state->linked_plane;
> @@ -254,11 +282,9 @@ void skl_update_planes_on_crtc(struct intel_atomic_state *state,
> new_plane_state =
> intel_atomic_get_new_plane_state(state, master);
>
> - trace_intel_update_plane(&plane->base, crtc);
> - plane->update_slave(plane, new_crtc_state, new_plane_state);
> + intel_update_slave(plane, new_crtc_state, new_plane_state);
> } else {
> - trace_intel_disable_plane(&plane->base, crtc);
> - plane->disable_plane(plane, new_crtc_state);
> + intel_disable_plane(plane, new_crtc_state);
> }
> }
> }
> @@ -278,13 +304,10 @@ void i9xx_update_planes_on_crtc(struct intel_atomic_state *state,
> !(update_mask & BIT(plane->id)))
> continue;
>
> - if (new_plane_state->base.visible) {
> - trace_intel_update_plane(&plane->base, crtc);
> - plane->update_plane(plane, new_crtc_state, new_plane_state);
> - } else {
> - trace_intel_disable_plane(&plane->base, crtc);
> - plane->disable_plane(plane, new_crtc_state);
> - }
> + if (new_plane_state->base.visible)
> + intel_update_plane(plane, new_crtc_state, new_plane_state);
> + else
> + intel_disable_plane(plane, new_crtc_state);
> }
> }
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index e404e9000893..de0e871da8db 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -2820,8 +2820,7 @@ static void intel_plane_disable_noatomic(struct intel_crtc *crtc,
> if (plane->id == PLANE_PRIMARY)
> intel_pre_disable_primary_noatomic(&crtc->base);
>
> - trace_intel_disable_plane(&plane->base, crtc);
> - plane->disable_plane(plane, crtc_state);
> + intel_disable_plane(plane, crtc_state);
> }
>
> static void
> @@ -5524,8 +5523,7 @@ static void intel_crtc_disable_planes(struct intel_atomic_state *state,
> !(update_mask & BIT(plane->id)))
> continue;
>
> - trace_intel_disable_plane(&plane->base, crtc);
> - plane->disable_plane(plane, new_crtc_state);
> + intel_disable_plane(plane, new_crtc_state);
>
> if (old_plane_state->base.visible)
> fb_bits |= plane->frontbuffer_bit;
> @@ -13937,14 +13935,11 @@ intel_legacy_cursor_update(struct drm_plane *plane,
> */
> crtc_state->active_planes = new_crtc_state->active_planes;
>
> - if (plane->state->visible) {
> - trace_intel_update_plane(plane, to_intel_crtc(crtc));
> - intel_plane->update_plane(intel_plane, crtc_state,
> - to_intel_plane_state(plane->state));
> - } else {
> - trace_intel_disable_plane(plane, to_intel_crtc(crtc));
> - intel_plane->disable_plane(intel_plane, crtc_state);
> - }
> + if (plane->state->visible)
> + intel_update_plane(intel_plane, crtc_state,
> + to_intel_plane_state(plane->state));
> + else
> + intel_disable_plane(intel_plane, crtc_state);
>
> intel_plane_unpin_fb(to_intel_plane_state(old_plane_state));
>
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 90ba5436370e..6093bc34720a 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -2361,6 +2361,14 @@ int intel_atomic_setup_scalers(struct drm_i915_private *dev_priv,
> struct intel_crtc_state *crtc_state);
>
> /* intel_atomic_plane.c */
> +void intel_update_plane(struct intel_plane *plane,
> + const struct intel_crtc_state *crtc_state,
> + const struct intel_plane_state *plane_state);
> +void intel_update_slave(struct intel_plane *plane,
> + const struct intel_crtc_state *crtc_state,
> + const struct intel_plane_state *plane_state);
> +void intel_disable_plane(struct intel_plane *plane,
> + const struct intel_crtc_state *crtc_state);
> struct intel_plane *intel_plane_alloc(void);
> void intel_plane_free(struct intel_plane *plane);
> struct drm_plane_state *intel_plane_duplicate_state(struct drm_plane *plane);
> --
> 2.19.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Add pipe crc tracepoint
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
` (2 preceding siblings ...)
2019-02-06 20:49 ` [PATCH 4/4] drm/i915: Wrap plane update/disable hook calls Ville Syrjala
@ 2019-02-06 21:19 ` Patchwork
2019-02-06 21:49 ` ✓ Fi.CI.BAT: success " Patchwork
` (4 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2019-02-06 21:19 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/4] drm/i915: Add pipe crc tracepoint
URL : https://patchwork.freedesktop.org/series/56309/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
f8b2e309e24f drm/i915: Add pipe crc tracepoint
-:56: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#56: FILE: drivers/gpu/drm/i915/i915_trace.h:25:
+ TP_STRUCT__entry(
-:63: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#63: FILE: drivers/gpu/drm/i915/i915_trace.h:32:
+ TP_fast_assign(
-:65: WARNING:LONG_LINE: line over 100 characters
#65: FILE: drivers/gpu/drm/i915/i915_trace.h:34:
+ __entry->frame = crtc->base.dev->driver->get_vblank_counter(crtc->base.dev,
total: 0 errors, 1 warnings, 2 checks, 52 lines checked
29d00bd8d437 drm/i915: Add pipe enable/disable tracepoints
-:28: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#28: FILE: drivers/gpu/drm/i915/i915_trace.h:25:
+ TP_STRUCT__entry(
-:34: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#34: FILE: drivers/gpu/drm/i915/i915_trace.h:31:
+ TP_fast_assign(
-:35: WARNING:TABSTOP: Statements should start on a tabstop
#35: FILE: drivers/gpu/drm/i915/i915_trace.h:32:
+ enum pipe _pipe;
-:36: WARNING:LINE_SPACING: Missing a blank line after declarations
#36: FILE: drivers/gpu/drm/i915/i915_trace.h:33:
+ enum pipe _pipe;
+ for_each_pipe(dev_priv, _pipe) {
-:36: WARNING:SUSPECT_CODE_INDENT: suspect code indent for conditional statements (27, 35)
#36: FILE: drivers/gpu/drm/i915/i915_trace.h:33:
+ for_each_pipe(dev_priv, _pipe) {
+ __entry->frame[_pipe] =
-:38: WARNING:LONG_LINE: line over 100 characters
#38: FILE: drivers/gpu/drm/i915/i915_trace.h:35:
+ dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
-:40: WARNING:LONG_LINE: line over 100 characters
#40: FILE: drivers/gpu/drm/i915/i915_trace.h:37:
+ intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
-:41: WARNING:TABSTOP: Statements should start on a tabstop
#41: FILE: drivers/gpu/drm/i915/i915_trace.h:38:
+ }
-:56: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#56: FILE: drivers/gpu/drm/i915/i915_trace.h:53:
+ TP_STRUCT__entry(
-:62: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#62: FILE: drivers/gpu/drm/i915/i915_trace.h:59:
+ TP_fast_assign(
-:63: WARNING:TABSTOP: Statements should start on a tabstop
#63: FILE: drivers/gpu/drm/i915/i915_trace.h:60:
+ enum pipe _pipe;
-:64: WARNING:LINE_SPACING: Missing a blank line after declarations
#64: FILE: drivers/gpu/drm/i915/i915_trace.h:61:
+ enum pipe _pipe;
+ for_each_pipe(dev_priv, _pipe) {
-:64: WARNING:SUSPECT_CODE_INDENT: suspect code indent for conditional statements (27, 35)
#64: FILE: drivers/gpu/drm/i915/i915_trace.h:61:
+ for_each_pipe(dev_priv, _pipe) {
+ __entry->frame[_pipe] =
-:66: WARNING:LONG_LINE: line over 100 characters
#66: FILE: drivers/gpu/drm/i915/i915_trace.h:63:
+ dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, _pipe);
-:68: WARNING:LONG_LINE: line over 100 characters
#68: FILE: drivers/gpu/drm/i915/i915_trace.h:65:
+ intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, _pipe));
-:69: WARNING:TABSTOP: Statements should start on a tabstop
#69: FILE: drivers/gpu/drm/i915/i915_trace.h:66:
+ }
total: 0 errors, 12 warnings, 4 checks, 78 lines checked
06f5e2e68d3e drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes()
8e97647e1728 drm/i915: Wrap plane update/disable hook calls
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915: Add pipe crc tracepoint
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
` (3 preceding siblings ...)
2019-02-06 21:19 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/4] drm/i915: Add pipe crc tracepoint Patchwork
@ 2019-02-06 21:49 ` Patchwork
2019-02-07 1:44 ` ✓ Fi.CI.IGT: " Patchwork
` (3 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2019-02-06 21:49 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/4] drm/i915: Add pipe crc tracepoint
URL : https://patchwork.freedesktop.org/series/56309/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5555 -> Patchwork_12161
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://patchwork.freedesktop.org/api/1.0/series/56309/revisions/1/mbox/
Known issues
------------
Here are the changes found in Patchwork_12161 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g: NOTRUN -> FAIL [fdo#108094]
* igt@i915_module_load@reload:
- fi-blb-e6850: NOTRUN -> INCOMPLETE [fdo#107718]
* igt@kms_busy@basic-flip-a:
- fi-gdg-551: PASS -> FAIL [fdo#103182]
* igt@kms_frontbuffer_tracking@basic:
- fi-byt-clapper: PASS -> FAIL [fdo#103167]
* igt@pm_rpm@module-reload:
- fi-skl-6770hq: PASS -> FAIL [fdo#108511]
#### Possible fixes ####
* igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g: DMESG-WARN [fdo#108965] -> PASS
* igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u: FAIL [fdo#109485] -> PASS
* igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-blb-e6850: INCOMPLETE [fdo#107718] -> PASS
* igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: FAIL [fdo#103182] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
[fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
[fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
[fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
[fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485
Participating hosts (48 -> 44)
------------------------------
Additional (1): fi-skl-6700hq
Missing (5): fi-kbl-soraka fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-icl-y
Build changes
-------------
* Linux: CI_DRM_5555 -> Patchwork_12161
CI_DRM_5555: 32921c0fea5f59e84d71d6bd1c383962a78068ab @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4812: 592b854fead32c2b0dac7198edfb9a6bffd66932 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_12161: 8e97647e1728a2850103e83a4a100201d017bfc5 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
8e97647e1728 drm/i915: Wrap plane update/disable hook calls
06f5e2e68d3e drm/i915: Add overlooked plane disable tracepoint into intel_crtc_disable_planes()
29d00bd8d437 drm/i915: Add pipe enable/disable tracepoints
f8b2e309e24f drm/i915: Add pipe crc tracepoint
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12161/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* ✓ Fi.CI.IGT: success for series starting with [1/4] drm/i915: Add pipe crc tracepoint
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
` (4 preceding siblings ...)
2019-02-06 21:49 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2019-02-07 1:44 ` Patchwork
2019-02-07 5:23 ` [PATCH 1/4] " kbuild test robot
` (2 subsequent siblings)
8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2019-02-07 1:44 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/4] drm/i915: Add pipe crc tracepoint
URL : https://patchwork.freedesktop.org/series/56309/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_5555_full -> Patchwork_12161_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Known issues
------------
Here are the changes found in Patchwork_12161_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_schedule@pi-ringfull-vebox:
- shard-kbl: NOTRUN -> FAIL [fdo#103158]
* igt@gem_fence_thrash@bo-write-verify-threaded-none:
- shard-apl: PASS -> INCOMPLETE [fdo#103927]
* igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
- shard-kbl: NOTRUN -> DMESG-WARN [fdo#107956] +1
* igt@kms_cursor_crc@cursor-256x85-onscreen:
- shard-apl: PASS -> FAIL [fdo#103232] +2
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
- shard-apl: PASS -> FAIL [fdo#103167] +2
* igt@kms_frontbuffer_tracking@fbc-1p-rte:
- shard-apl: PASS -> FAIL [fdo#103167] / [fdo#105682]
* igt@kms_plane@pixel-format-pipe-a-planes:
- shard-apl: PASS -> FAIL [fdo#103166]
* igt@kms_plane@pixel-format-pipe-b-planes-source-clamping:
- shard-apl: PASS -> FAIL [fdo#108948]
- shard-glk: PASS -> FAIL [fdo#108948]
* igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
- shard-glk: PASS -> FAIL [fdo#108145]
* igt@kms_setmode@basic:
- shard-apl: PASS -> FAIL [fdo#99912]
#### Possible fixes ####
* igt@kms_color@pipe-a-ctm-max:
- shard-apl: FAIL [fdo#108147] -> PASS
* igt@kms_cursor_crc@cursor-128x42-random:
- shard-apl: FAIL [fdo#103232] -> PASS
* igt@kms_cursor_crc@cursor-256x256-suspend:
- shard-glk: FAIL [fdo#103232] -> PASS
* igt@kms_cursor_crc@cursor-alpha-opaque:
- shard-glk: FAIL [fdo#109350] -> PASS
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
- shard-apl: FAIL [fdo#103167] -> PASS
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render:
- shard-glk: FAIL [fdo#103167] -> PASS
* igt@kms_setmode@basic:
- shard-kbl: FAIL [fdo#99912] -> PASS
* igt@kms_universal_plane@universal-plane-pipe-a-functional:
- shard-apl: FAIL [fdo#103166] -> PASS
* igt@kms_vblank@pipe-a-wait-busy-hang:
- shard-glk: INCOMPLETE [fdo#103359] / [k.org#198133] -> PASS
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#103158]: https://bugs.freedesktop.org/show_bug.cgi?id=103158
[fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
[fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
[fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
[fdo#103359]: https://bugs.freedesktop.org/show_bug.cgi?id=103359
[fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
[fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
[fdo#105682]: https://bugs.freedesktop.org/show_bug.cgi?id=105682
[fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147
[fdo#108948]: https://bugs.freedesktop.org/show_bug.cgi?id=108948
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
[fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
[fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912
[k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133
Participating hosts (7 -> 5)
------------------------------
Missing (2): shard-skl shard-iclb
Build changes
-------------
* Linux: CI_DRM_5555 -> Patchwork_12161
CI_DRM_5555: 32921c0fea5f59e84d71d6bd1c383962a78068ab @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_4812: 592b854fead32c2b0dac7198edfb9a6bffd66932 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_12161: 8e97647e1728a2850103e83a4a100201d017bfc5 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12161/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 1/4] drm/i915: Add pipe crc tracepoint
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
` (5 preceding siblings ...)
2019-02-07 1:44 ` ✓ Fi.CI.IGT: " Patchwork
@ 2019-02-07 5:23 ` kbuild test robot
2019-02-07 6:01 ` kbuild test robot
2019-02-13 17:40 ` Rodrigo Vivi
8 siblings, 0 replies; 13+ messages in thread
From: kbuild test robot @ 2019-02-07 5:23 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx, kbuild-all
[-- Attachment #1: Type: text/plain, Size: 13115 bytes --]
Hi Ville,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on next-20190206]
[cannot apply to v5.0-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Ville-Syrjala/drm-i915-Add-pipe-crc-tracepoint/20190207-123120
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-randconfig-x009-201905 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-14) 8.2.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
In file included from include/trace/define_trace.h:98,
from drivers/gpu/drm/i915/i915_trace.h:951,
from drivers/gpu/drm/i915/i915_trace_points.c:13:
include/trace/../../drivers/gpu/drm/i915/i915_trace.h: In function '__bpf_trace_intel_pipe_crc':
>> include/trace/bpf_probe.h:39:17: error: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Werror=sizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:32:35: note: in definition of macro 'UINTTYPE'
__typeof__(__builtin_choose_expr(size == 1, (u8)1, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
>> include/trace/bpf_probe.h:39:17: error: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Werror=sizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:33:28: note: in definition of macro 'UINTTYPE'
__builtin_choose_expr(size == 2, (u16)2, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
>> include/trace/bpf_probe.h:39:17: error: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Werror=sizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:34:28: note: in definition of macro 'UINTTYPE'
__builtin_choose_expr(size == 4, (u32)3, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
>> include/trace/bpf_probe.h:39:17: error: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Werror=sizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:35:28: note: in definition of macro 'UINTTYPE'
__builtin_choose_expr(size == 8, (u64)4, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
cc1: all warnings being treated as errors
vim +39 include/trace/bpf_probe.h
c4f6699d Alexei Starovoitov 2018-03-28 29
c4f6699d Alexei Starovoitov 2018-03-28 30 /* cast any integer, pointer, or small struct to u64 */
c4f6699d Alexei Starovoitov 2018-03-28 31 #define UINTTYPE(size) \
c4f6699d Alexei Starovoitov 2018-03-28 32 __typeof__(__builtin_choose_expr(size == 1, (u8)1, \
c4f6699d Alexei Starovoitov 2018-03-28 33 __builtin_choose_expr(size == 2, (u16)2, \
c4f6699d Alexei Starovoitov 2018-03-28 34 __builtin_choose_expr(size == 4, (u32)3, \
c4f6699d Alexei Starovoitov 2018-03-28 35 __builtin_choose_expr(size == 8, (u64)4, \
c4f6699d Alexei Starovoitov 2018-03-28 36 (void)5)))))
c4f6699d Alexei Starovoitov 2018-03-28 37 #define __CAST_TO_U64(x) ({ \
c4f6699d Alexei Starovoitov 2018-03-28 38 typeof(x) __src = (x); \
c4f6699d Alexei Starovoitov 2018-03-28 @39 UINTTYPE(sizeof(x)) __dst; \
c4f6699d Alexei Starovoitov 2018-03-28 40 memcpy(&__dst, &__src, sizeof(__dst)); \
c4f6699d Alexei Starovoitov 2018-03-28 41 (u64)__dst; })
c4f6699d Alexei Starovoitov 2018-03-28 42
:::::: The code at line 39 was first introduced by commit
:::::: c4f6699dfcb8558d138fe838f741b2c10f416cf9 bpf: introduce BPF_RAW_TRACEPOINT
:::::: TO: Alexei Starovoitov <ast@kernel.org>
:::::: CC: Daniel Borkmann <daniel@iogearbox.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 35652 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 1/4] drm/i915: Add pipe crc tracepoint
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
` (6 preceding siblings ...)
2019-02-07 5:23 ` [PATCH 1/4] " kbuild test robot
@ 2019-02-07 6:01 ` kbuild test robot
2019-02-13 17:40 ` Rodrigo Vivi
8 siblings, 0 replies; 13+ messages in thread
From: kbuild test robot @ 2019-02-07 6:01 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx, kbuild-all
[-- Attachment #1: Type: text/plain, Size: 13068 bytes --]
Hi Ville,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on next-20190206]
[cannot apply to v5.0-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Ville-Syrjala/drm-i915-Add-pipe-crc-tracepoint/20190207-123120
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-x001-201905 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-14) 8.2.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All warnings (new ones prefixed by >>):
In file included from include/trace/define_trace.h:98,
from drivers/gpu/drm/i915/i915_trace.h:951,
from drivers/gpu/drm/i915/i915_trace_points.c:13:
include/trace/../../drivers/gpu/drm/i915/i915_trace.h: In function '__bpf_trace_intel_pipe_crc':
>> include/trace/bpf_probe.h:39:17: warning: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Wsizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:32:35: note: in definition of macro 'UINTTYPE'
__typeof__(__builtin_choose_expr(size == 1, (u8)1, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
>> include/trace/bpf_probe.h:39:17: warning: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Wsizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:33:28: note: in definition of macro 'UINTTYPE'
__builtin_choose_expr(size == 2, (u16)2, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
>> include/trace/bpf_probe.h:39:17: warning: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Wsizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:34:28: note: in definition of macro 'UINTTYPE'
__builtin_choose_expr(size == 4, (u32)3, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
>> include/trace/bpf_probe.h:39:17: warning: 'sizeof' on array function parameter 'crcs' will return size of 'const u32 *' {aka 'const unsigned int *'} [-Wsizeof-array-argument]
UINTTYPE(sizeof(x)) __dst; \
^
include/trace/bpf_probe.h:35:28: note: in definition of macro 'UINTTYPE'
__builtin_choose_expr(size == 8, (u64)4, \
^~~~
include/trace/bpf_probe.h:43:24: note: in expansion of macro '__CAST_TO_U64'
#define __CAST1(a,...) __CAST_TO_U64(a)
^~~~~~~~~~~~~
include/trace/bpf_probe.h:44:42: note: in expansion of macro '__CAST1'
#define __CAST2(a,...) __CAST_TO_U64(a), __CAST1(__VA_ARGS__)
^~~~~~~
include/linux/kernel.h:986:24: note: in expansion of macro '__CAST2'
#define __CONCAT(a, b) a ## b
^
include/linux/kernel.h:987:27: note: in expansion of macro '__CONCAT'
#define CONCATENATE(a, b) __CONCAT(a, b)
^~~~~~~~
include/trace/bpf_probe.h:56:26: note: in expansion of macro 'CONCATENATE'
#define CAST_TO_U64(...) CONCATENATE(__CAST, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)
^~~~~~~~~~~
include/trace/bpf_probe.h:64:53: note: in expansion of macro 'CAST_TO_U64'
CONCATENATE(bpf_trace_run, COUNT_ARGS(args))(prog, CAST_TO_U64(args)); \
^~~~~~~~~~~
include/trace/trace_events.h:74:2: note: in expansion of macro 'DECLARE_EVENT_CLASS'
DECLARE_EVENT_CLASS(name, \
^~~~~~~~~~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:50: note: declared here
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
~~~~~~~~~~^~~~~~~
include/trace/bpf_probe.h:61:34: note: in definition of macro 'DECLARE_EVENT_CLASS'
__bpf_trace_##call(void *__data, proto) \
^~~~~
include/trace/trace_events.h:75:9: note: in expansion of macro 'PARAMS'
PARAMS(proto), \
^~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:19:1: note: in expansion of macro 'TRACE_EVENT'
TRACE_EVENT(intel_pipe_crc,
^~~~~~~~~~~
include/trace/../../drivers/gpu/drm/i915/i915_trace.h:20:6: note: in expansion of macro 'TP_PROTO'
TP_PROTO(struct intel_crtc *crtc, const u32 crcs[5]),
^~~~~~~~
vim +39 include/trace/bpf_probe.h
c4f6699d Alexei Starovoitov 2018-03-28 29
c4f6699d Alexei Starovoitov 2018-03-28 30 /* cast any integer, pointer, or small struct to u64 */
c4f6699d Alexei Starovoitov 2018-03-28 31 #define UINTTYPE(size) \
c4f6699d Alexei Starovoitov 2018-03-28 32 __typeof__(__builtin_choose_expr(size == 1, (u8)1, \
c4f6699d Alexei Starovoitov 2018-03-28 33 __builtin_choose_expr(size == 2, (u16)2, \
c4f6699d Alexei Starovoitov 2018-03-28 34 __builtin_choose_expr(size == 4, (u32)3, \
c4f6699d Alexei Starovoitov 2018-03-28 35 __builtin_choose_expr(size == 8, (u64)4, \
c4f6699d Alexei Starovoitov 2018-03-28 36 (void)5)))))
c4f6699d Alexei Starovoitov 2018-03-28 37 #define __CAST_TO_U64(x) ({ \
c4f6699d Alexei Starovoitov 2018-03-28 38 typeof(x) __src = (x); \
c4f6699d Alexei Starovoitov 2018-03-28 @39 UINTTYPE(sizeof(x)) __dst; \
c4f6699d Alexei Starovoitov 2018-03-28 40 memcpy(&__dst, &__src, sizeof(__dst)); \
c4f6699d Alexei Starovoitov 2018-03-28 41 (u64)__dst; })
c4f6699d Alexei Starovoitov 2018-03-28 42
:::::: The code at line 39 was first introduced by commit
:::::: c4f6699dfcb8558d138fe838f741b2c10f416cf9 bpf: introduce BPF_RAW_TRACEPOINT
:::::: TO: Alexei Starovoitov <ast@kernel.org>
:::::: CC: Daniel Borkmann <daniel@iogearbox.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31638 bytes --]
[-- Attachment #3: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH 1/4] drm/i915: Add pipe crc tracepoint
2019-02-06 20:49 [PATCH 1/4] drm/i915: Add pipe crc tracepoint Ville Syrjala
` (7 preceding siblings ...)
2019-02-07 6:01 ` kbuild test robot
@ 2019-02-13 17:40 ` Rodrigo Vivi
8 siblings, 0 replies; 13+ messages in thread
From: Rodrigo Vivi @ 2019-02-13 17:40 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
On Wed, Feb 06, 2019 at 10:49:07PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> 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@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> 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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 13+ messages in thread