From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Include dev_name() in the tracpoints so one can filter based on the device. Example: echo 'dev=="0000:00:02.0"' > events/i915/intel_cpu_fifo_underrun/filter TODO: maybe don't both specifying the field name always and just make it 'dev' (or whatever) always? TODO: add for other tracpoints too if this is deemed good enough Suggested-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_trace.h | 96 +++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h index 7ef7a1e1664c..8931b6756f44 100644 --- a/drivers/gpu/drm/i915/i915_trace.h +++ b/drivers/gpu/drm/i915/i915_trace.h @@ -20,11 +20,18 @@ /* watermark/fifo updates */ +#define __dev_name_i915(field, i915) __string(field, dev_name((i915)->drm.dev)) +#define __dev_name_crtc(field, crtc) __string(field, dev_name((crtc)->base.dev->dev)) +#define __assign_dev_name_i915(field, i915) __assign_str(field, dev_name((i915)->drm.dev)) +#define __assign_dev_name_crtc(field, crtc) __assign_str(field, dev_name((crtc)->base.dev->dev)) +#define __get_dev_name(field) __get_str(field) + TRACE_EVENT(intel_pipe_enable, TP_PROTO(struct intel_crtc *crtc), TP_ARGS(crtc), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __array(u32, frame, 3) __array(u32, scanline, 3) __field(enum pipe, pipe) @@ -32,6 +39,7 @@ TRACE_EVENT(intel_pipe_enable, TP_fast_assign( struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); struct intel_crtc *it__; + __assign_dev_name_crtc(dev, crtc); for_each_intel_crtc(&dev_priv->drm, it__) { __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__); __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__); @@ -39,8 +47,8 @@ TRACE_EVENT(intel_pipe_enable, __entry->pipe = crtc->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), + TP_printk("dev %s, pipe %c enable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u", + __get_dev_name(dev), 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]) @@ -51,6 +59,7 @@ TRACE_EVENT(intel_pipe_disable, TP_ARGS(crtc), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __array(u32, frame, 3) __array(u32, scanline, 3) __field(enum pipe, pipe) @@ -59,6 +68,7 @@ TRACE_EVENT(intel_pipe_disable, TP_fast_assign( struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); struct intel_crtc *it__; + __assign_dev_name_crtc(dev, crtc); for_each_intel_crtc(&dev_priv->drm, it__) { __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__); __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__); @@ -66,8 +76,8 @@ TRACE_EVENT(intel_pipe_disable, __entry->pipe = crtc->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), + TP_printk("dev %s, pipe %c disable, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u", + __get_dev_name(dev), 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]) @@ -78,6 +88,7 @@ TRACE_EVENT(intel_pipe_crc, TP_ARGS(crtc, crcs), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -85,14 +96,15 @@ TRACE_EVENT(intel_pipe_crc, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __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, + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline, __entry->crcs[0], __entry->crcs[1], __entry->crcs[2], __entry->crcs[3], __entry->crcs[4]) ); @@ -102,20 +114,22 @@ TRACE_EVENT(intel_cpu_fifo_underrun, TP_ARGS(dev_priv, pipe), TP_STRUCT__entry( + __dev_name_i915(dev, dev_priv) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) ), TP_fast_assign( - struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe); + struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe); + __assign_dev_name_i915(dev, dev_priv); __entry->pipe = pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); ), - TP_printk("pipe %c, frame=%u, scanline=%u", - pipe_name(__entry->pipe), + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline) ); @@ -124,6 +138,7 @@ TRACE_EVENT(intel_pch_fifo_underrun, TP_ARGS(dev_priv, pch_transcoder), TP_STRUCT__entry( + __dev_name_i915(dev, dev_priv) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -132,13 +147,14 @@ TRACE_EVENT(intel_pch_fifo_underrun, TP_fast_assign( enum pipe pipe = pch_transcoder; struct intel_crtc *crtc = intel_get_crtc_for_pipe(dev_priv, pipe); + __assign_dev_name_i915(dev, dev_priv); __entry->pipe = pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); ), - TP_printk("pch transcoder %c, frame=%u, scanline=%u", - pipe_name(__entry->pipe), + TP_printk("dev %s, pch transcoder %c, frame=%u, scanline=%u", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline) ); @@ -147,6 +163,7 @@ TRACE_EVENT(intel_memory_cxsr, TP_ARGS(dev_priv, old, new), TP_STRUCT__entry( + __dev_name_i915(dev, dev_priv) __array(u32, frame, 3) __array(u32, scanline, 3) __field(bool, old) @@ -155,6 +172,7 @@ TRACE_EVENT(intel_memory_cxsr, TP_fast_assign( struct intel_crtc *crtc; + __assign_dev_name_i915(dev, dev_priv); for_each_intel_crtc(&dev_priv->drm, crtc) { __entry->frame[crtc->pipe] = intel_crtc_get_vblank_counter(crtc); __entry->scanline[crtc->pipe] = intel_get_crtc_scanline(crtc); @@ -163,8 +181,8 @@ TRACE_EVENT(intel_memory_cxsr, __entry->new = new; ), - TP_printk("%s->%s, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u", - onoff(__entry->old), onoff(__entry->new), + TP_printk("dev %s, %s->%s, pipe A: frame=%u, scanline=%u, pipe B: frame=%u, scanline=%u, pipe C: frame=%u, scanline=%u", + __get_dev_name(dev), onoff(__entry->old), onoff(__entry->new), __entry->frame[PIPE_A], __entry->scanline[PIPE_A], __entry->frame[PIPE_B], __entry->scanline[PIPE_B], __entry->frame[PIPE_C], __entry->scanline[PIPE_C]) @@ -175,6 +193,7 @@ TRACE_EVENT(g4x_wm, TP_ARGS(crtc, wm), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -193,6 +212,7 @@ TRACE_EVENT(g4x_wm, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); @@ -210,8 +230,8 @@ TRACE_EVENT(g4x_wm, __entry->fbc = wm->fbc_en; ), - TP_printk("pipe %c, frame=%u, scanline=%u, wm %d/%d/%d, sr %s/%d/%d/%d, hpll %s/%d/%d/%d, fbc %s", - pipe_name(__entry->pipe), __entry->frame, __entry->scanline, + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, wm %d/%d/%d, sr %s/%d/%d/%d, hpll %s/%d/%d/%d, fbc %s", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline, __entry->primary, __entry->sprite, __entry->cursor, yesno(__entry->cxsr), __entry->sr_plane, __entry->sr_cursor, __entry->sr_fbc, yesno(__entry->hpll), __entry->hpll_plane, __entry->hpll_cursor, __entry->hpll_fbc, @@ -223,6 +243,7 @@ TRACE_EVENT(vlv_wm, TP_ARGS(crtc, wm), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -237,6 +258,7 @@ TRACE_EVENT(vlv_wm, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); @@ -250,8 +272,8 @@ TRACE_EVENT(vlv_wm, __entry->sr_cursor = wm->sr.cursor; ), - TP_printk("pipe %c, frame=%u, scanline=%u, level=%d, cxsr=%d, wm %d/%d/%d/%d, sr %d/%d", - pipe_name(__entry->pipe), __entry->frame, + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, level=%d, cxsr=%d, wm %d/%d/%d/%d, sr %d/%d", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline, __entry->level, __entry->cxsr, __entry->primary, __entry->sprite0, __entry->sprite1, __entry->cursor, __entry->sr_plane, __entry->sr_cursor) @@ -262,6 +284,7 @@ TRACE_EVENT(vlv_fifo_size, TP_ARGS(crtc, sprite0_start, sprite1_start, fifo_size), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -271,6 +294,7 @@ TRACE_EVENT(vlv_fifo_size, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); @@ -279,8 +303,8 @@ TRACE_EVENT(vlv_fifo_size, __entry->fifo_size = fifo_size; ), - TP_printk("pipe %c, frame=%u, scanline=%u, %d/%d/%d", - pipe_name(__entry->pipe), __entry->frame, + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, %d/%d/%d", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline, __entry->sprite0_start, __entry->sprite1_start, __entry->fifo_size) ); @@ -292,6 +316,7 @@ TRACE_EVENT(intel_update_plane, TP_ARGS(plane, crtc), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -301,6 +326,7 @@ TRACE_EVENT(intel_update_plane, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __assign_str(name, plane->name); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); @@ -309,8 +335,8 @@ TRACE_EVENT(intel_update_plane, memcpy(__entry->dst, &plane->state->dst, sizeof(__entry->dst)); ), - TP_printk("pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT, - pipe_name(__entry->pipe), __get_str(name), + TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT, + __get_dev_name(dev), pipe_name(__entry->pipe), __get_str(name), __entry->frame, __entry->scanline, DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src), DRM_RECT_ARG((const struct drm_rect *)__entry->dst)) @@ -321,6 +347,7 @@ TRACE_EVENT(intel_disable_plane, TP_ARGS(plane, crtc), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -328,14 +355,15 @@ TRACE_EVENT(intel_disable_plane, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __assign_str(name, plane->name); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); ), - TP_printk("pipe %c, plane %s, frame=%u, scanline=%u", - pipe_name(__entry->pipe), __get_str(name), + TP_printk("dev %s, pipe %c, plane %s, frame=%u, scanline=%u", + __get_dev_name(dev), pipe_name(__entry->pipe), __get_str(name), __entry->frame, __entry->scanline) ); @@ -346,6 +374,7 @@ TRACE_EVENT(i915_pipe_update_start, TP_ARGS(crtc), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -354,6 +383,7 @@ TRACE_EVENT(i915_pipe_update_start, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = intel_crtc_get_vblank_counter(crtc); __entry->scanline = intel_get_crtc_scanline(crtc); @@ -361,9 +391,9 @@ TRACE_EVENT(i915_pipe_update_start, __entry->max = crtc->debug.max_vbl; ), - TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u", - pipe_name(__entry->pipe), __entry->frame, - __entry->scanline, __entry->min, __entry->max) + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, min=%u, max=%u", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, + __entry->scanline, __entry->min, __entry->max) ); TRACE_EVENT(i915_pipe_update_vblank_evaded, @@ -371,6 +401,7 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded, TP_ARGS(crtc), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) @@ -379,6 +410,7 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded, ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = crtc->debug.start_vbl_count; __entry->scanline = crtc->debug.scanline_start; @@ -386,9 +418,9 @@ TRACE_EVENT(i915_pipe_update_vblank_evaded, __entry->max = crtc->debug.max_vbl; ), - TP_printk("pipe %c, frame=%u, scanline=%u, min=%u, max=%u", - pipe_name(__entry->pipe), __entry->frame, - __entry->scanline, __entry->min, __entry->max) + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u, min=%u, max=%u", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, + __entry->scanline, __entry->min, __entry->max) ); TRACE_EVENT(i915_pipe_update_end, @@ -396,19 +428,21 @@ TRACE_EVENT(i915_pipe_update_end, TP_ARGS(crtc, frame, scanline_end), TP_STRUCT__entry( + __dev_name_crtc(dev, crtc) __field(enum pipe, pipe) __field(u32, frame) __field(u32, scanline) ), TP_fast_assign( + __assign_dev_name_crtc(dev, crtc); __entry->pipe = crtc->pipe; __entry->frame = frame; __entry->scanline = scanline_end; ), - TP_printk("pipe %c, frame=%u, scanline=%u", - pipe_name(__entry->pipe), __entry->frame, + TP_printk("dev %s, pipe %c, frame=%u, scanline=%u", + __get_dev_name(dev), pipe_name(__entry->pipe), __entry->frame, __entry->scanline) ); -- 2.23.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx