On Wed, 08 Dec 2021, Jani Nikula <jani.nikula@xxxxxxxxx> wrote: > On Wed, 08 Dec 2021, Lucas De Marchi <lucas.demarchi@xxxxxxxxx> wrote: >> On Wed, Dec 08, 2021 at 01:05:17PM +0200, Jani Nikula wrote: >>>Add display/intel_display_trace.[ch] for defining display >>>tracepoints. The main goal is to reduce cross-includes between gem and >>>display. It would be possible split up tracing even further, but that >>>would lead to more boilerplate. >>> >>>We end up having to include intel_crtc.h in a few places because it was >>>pulled in implicitly via intel_de.h -> i915_trace.h -> intel_crtc.h, and >>>that's no longer the case. >>> >>>There should be no changes to tracepoints. >>> >>>v3: >>>- Rebase >>> >>>v2: >>>- Define TRACE_INCLUDE_PATH relative to define_trace.h (Chris) >>>- Remove useless comments (Ville) >>> >>>Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> >>>Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> >>>Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> >> >> >> only thing I noticed in the code move is that we lost the comments about >> grouping the tracepoints. Was this intentional? Example: > > Yeah, specifically requested by Ville (see v2 changelog above). And pushed, thanks for the reviews. BR, Jani. > > BR, > Jani. > > >> >> /* watermark/fifo updates */ >> ... >> /* plane updates */ >> ... >> etc >> >> >> Reviewed-by: Lucas De Marchi <lucas.demarchi@xxxxxxxxx> >> >> Lucas De Marchi >> >> >> >> >>>--- >>> drivers/gpu/drm/i915/Makefile | 1 + >>> drivers/gpu/drm/i915/display/g4x_dp.c | 1 + >>> drivers/gpu/drm/i915/display/g4x_hdmi.c | 1 + >>> .../gpu/drm/i915/display/intel_atomic_plane.c | 5 +- >>> drivers/gpu/drm/i915/display/intel_audio.c | 1 + >>> drivers/gpu/drm/i915/display/intel_cdclk.c | 1 + >>> drivers/gpu/drm/i915/display/intel_crtc.c | 4 +- >>> .../drm/i915/display/intel_display_trace.c | 9 + >>> .../drm/i915/display/intel_display_trace.h | 587 ++++++++++++++++++ >>> drivers/gpu/drm/i915/display/intel_dp.c | 1 + >>> drivers/gpu/drm/i915/display/intel_fbc.c | 2 +- >>> drivers/gpu/drm/i915/display/intel_fdi.c | 1 + >>> .../drm/i915/display/intel_fifo_underrun.c | 2 +- >>> .../gpu/drm/i915/display/intel_frontbuffer.c | 7 +- >>> drivers/gpu/drm/i915/display/intel_sprite.c | 4 +- >>> drivers/gpu/drm/i915/display/intel_tv.c | 1 + >>> drivers/gpu/drm/i915/display/intel_vdsc.c | 4 +- >>> drivers/gpu/drm/i915/i915_debugfs.c | 1 - >>> drivers/gpu/drm/i915/i915_driver.c | 1 - >>> drivers/gpu/drm/i915/i915_irq.c | 2 +- >>> drivers/gpu/drm/i915/i915_trace.h | 573 ----------------- >>> drivers/gpu/drm/i915/intel_pm.c | 2 +- >>> 22 files changed, 621 insertions(+), 590 deletions(-) >>> create mode 100644 drivers/gpu/drm/i915/display/intel_display_trace.c >>> create mode 100644 drivers/gpu/drm/i915/display/intel_display_trace.h >>> >>>diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile >>>index 3b5857da4123..6ddd2d2bbaaf 100644 >>>--- a/drivers/gpu/drm/i915/Makefile >>>+++ b/drivers/gpu/drm/i915/Makefile >>>@@ -259,6 +259,7 @@ i915-y += \ >>> display/intel_crt.o \ >>> display/intel_ddi.o \ >>> display/intel_ddi_buf_trans.o \ >>>+ display/intel_display_trace.o \ >>> display/intel_dp.o \ >>> display/intel_dp_aux.o \ >>> display/intel_dp_aux_backlight.o \ >>>diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c b/drivers/gpu/drm/i915/display/g4x_dp.c >>>index dc41868d01ef..f37677df6ebf 100644 >>>--- a/drivers/gpu/drm/i915/display/g4x_dp.c >>>+++ b/drivers/gpu/drm/i915/display/g4x_dp.c >>>@@ -9,6 +9,7 @@ >>> #include "intel_audio.h" >>> #include "intel_backlight.h" >>> #include "intel_connector.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_dp.h" >>>diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c >>>index f5b4dd5b4275..06e00b1eaa7c 100644 >>>--- a/drivers/gpu/drm/i915/display/g4x_hdmi.c >>>+++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c >>>@@ -8,6 +8,7 @@ >>> #include "g4x_hdmi.h" >>> #include "intel_audio.h" >>> #include "intel_connector.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_dpio_phy.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c >>>index 27b8f99dd099..89005628cc3a 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c >>>+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c >>>@@ -35,15 +35,16 @@ >>> #include <drm/drm_fourcc.h> >>> #include <drm/drm_plane_helper.h> >>> >>>-#include "i915_trace.h" >>>+#include "gt/intel_rps.h" >>>+ >>> #include "intel_atomic_plane.h" >>> #include "intel_cdclk.h" >>>+#include "intel_display_trace.h" >>> #include "intel_display_types.h" >>> #include "intel_fb.h" >>> #include "intel_fb_pin.h" >>> #include "intel_pm.h" >>> #include "intel_sprite.h" >>>-#include "gt/intel_rps.h" >>> >>> static void intel_plane_state_reset(struct intel_plane_state *plane_state, >>> struct intel_plane *plane) >>>diff --git a/drivers/gpu/drm/i915/display/intel_audio.c b/drivers/gpu/drm/i915/display/intel_audio.c >>>index 03c3111ebdf0..991170c803e1 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_audio.c >>>+++ b/drivers/gpu/drm/i915/display/intel_audio.c >>>@@ -31,6 +31,7 @@ >>> #include "intel_atomic.h" >>> #include "intel_audio.h" >>> #include "intel_cdclk.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_lpe_audio.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c >>>index a5569f21811c..639a64733f61 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_cdclk.c >>>+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c >>>@@ -27,6 +27,7 @@ >>> #include "intel_audio.h" >>> #include "intel_bw.h" >>> #include "intel_cdclk.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_pcode.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c >>>index 43554b591904..6930fbedc97d 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_crtc.c >>>+++ b/drivers/gpu/drm/i915/display/intel_crtc.c >>>@@ -12,8 +12,8 @@ >>> #include <drm/drm_plane_helper.h> >>> #include <drm/drm_vblank_work.h> >>> >>>-#include "i915_trace.h" >>> #include "i915_vgpu.h" >>>+#include "i9xx_plane.h" >>> #include "icl_dsi.h" >>> #include "intel_atomic.h" >>> #include "intel_atomic_plane.h" >>>@@ -21,13 +21,13 @@ >>> #include "intel_crtc.h" >>> #include "intel_cursor.h" >>> #include "intel_display_debugfs.h" >>>+#include "intel_display_trace.h" >>> #include "intel_display_types.h" >>> #include "intel_dsi.h" >>> #include "intel_pipe_crc.h" >>> #include "intel_psr.h" >>> #include "intel_sprite.h" >>> #include "intel_vrr.h" >>>-#include "i9xx_plane.h" >>> #include "skl_universal_plane.h" >>> >>> static void assert_vblank_disabled(struct drm_crtc *crtc) >>>diff --git a/drivers/gpu/drm/i915/display/intel_display_trace.c b/drivers/gpu/drm/i915/display/intel_display_trace.c >>>new file mode 100644 >>>index 000000000000..737979ada869 >>>--- /dev/null >>>+++ b/drivers/gpu/drm/i915/display/intel_display_trace.c >>>@@ -0,0 +1,9 @@ >>>+// SPDX-License-Identifier: GPL-2.0 >>>+/* >>>+ * Copyright © 2021 Intel Corporation >>>+ */ >>>+ >>>+#ifndef __CHECKER__ >>>+#define CREATE_TRACE_POINTS >>>+#include "intel_display_trace.h" >>>+#endif >>>diff --git a/drivers/gpu/drm/i915/display/intel_display_trace.h b/drivers/gpu/drm/i915/display/intel_display_trace.h >>>new file mode 100644 >>>index 000000000000..4043e1276383 >>>--- /dev/null >>>+++ b/drivers/gpu/drm/i915/display/intel_display_trace.h >>>@@ -0,0 +1,587 @@ >>>+/* SPDX-License-Identifier: GPL-2.0 */ >>>+/* >>>+ * Copyright © 2021 Intel Corporation >>>+ */ >>>+ >>>+#undef TRACE_SYSTEM >>>+#define TRACE_SYSTEM i915 >>>+ >>>+#if !defined(__INTEL_DISPLAY_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ) >>>+#define __INTEL_DISPLAY_TRACE_H__ >>>+ >>>+#include <linux/types.h> >>>+#include <linux/tracepoint.h> >>>+ >>>+#include "i915_drv.h" >>>+#include "intel_crtc.h" >>>+#include "intel_display_types.h" >>>+ >>>+TRACE_EVENT(intel_pipe_enable, >>>+ TP_PROTO(struct intel_crtc *crtc), >>>+ TP_ARGS(crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __array(u32, frame, 3) >>>+ __array(u32, scanline, 3) >>>+ __field(enum pipe, pipe) >>>+ ), >>>+ TP_fast_assign( >>>+ struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >>>+ struct intel_crtc *it__; >>>+ 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__); >>>+ } >>>+ __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), >>>+ __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 intel_crtc *crtc), >>>+ TP_ARGS(crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __array(u32, frame, 3) >>>+ __array(u32, scanline, 3) >>>+ __field(enum pipe, pipe) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >>>+ struct intel_crtc *it__; >>>+ 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__); >>>+ } >>>+ __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), >>>+ __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), >>>+ 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 = 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, >>>+ __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), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe); >>>+ __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), >>>+ __entry->frame, __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_pch_fifo_underrun, >>>+ TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pch_transcoder), >>>+ TP_ARGS(dev_priv, pch_transcoder), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ enum pipe pipe = pch_transcoder; >>>+ struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe); >>>+ __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), >>>+ __entry->frame, __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_memory_cxsr, >>>+ TP_PROTO(struct drm_i915_private *dev_priv, bool old, bool new), >>>+ TP_ARGS(dev_priv, old, new), >>>+ >>>+ TP_STRUCT__entry( >>>+ __array(u32, frame, 3) >>>+ __array(u32, scanline, 3) >>>+ __field(bool, old) >>>+ __field(bool, new) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ struct intel_crtc *crtc; >>>+ 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); >>>+ } >>>+ __entry->old = old; >>>+ __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), >>>+ __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(g4x_wm, >>>+ TP_PROTO(struct intel_crtc *crtc, const struct g4x_wm_values *wm), >>>+ TP_ARGS(crtc, wm), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __field(u16, primary) >>>+ __field(u16, sprite) >>>+ __field(u16, cursor) >>>+ __field(u16, sr_plane) >>>+ __field(u16, sr_cursor) >>>+ __field(u16, sr_fbc) >>>+ __field(u16, hpll_plane) >>>+ __field(u16, hpll_cursor) >>>+ __field(u16, hpll_fbc) >>>+ __field(bool, cxsr) >>>+ __field(bool, hpll) >>>+ __field(bool, fbc) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->pipe; >>>+ __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>+ __entry->scanline = intel_get_crtc_scanline(crtc); >>>+ __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY]; >>>+ __entry->sprite = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0]; >>>+ __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR]; >>>+ __entry->sr_plane = wm->sr.plane; >>>+ __entry->sr_cursor = wm->sr.cursor; >>>+ __entry->sr_fbc = wm->sr.fbc; >>>+ __entry->hpll_plane = wm->hpll.plane; >>>+ __entry->hpll_cursor = wm->hpll.cursor; >>>+ __entry->hpll_fbc = wm->hpll.fbc; >>>+ __entry->cxsr = wm->cxsr; >>>+ __entry->hpll = wm->hpll_en; >>>+ __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, >>>+ __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, >>>+ yesno(__entry->fbc)) >>>+); >>>+ >>>+TRACE_EVENT(vlv_wm, >>>+ TP_PROTO(struct intel_crtc *crtc, const struct vlv_wm_values *wm), >>>+ TP_ARGS(crtc, wm), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __field(u32, level) >>>+ __field(u32, cxsr) >>>+ __field(u32, primary) >>>+ __field(u32, sprite0) >>>+ __field(u32, sprite1) >>>+ __field(u32, cursor) >>>+ __field(u32, sr_plane) >>>+ __field(u32, sr_cursor) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->pipe; >>>+ __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>+ __entry->scanline = intel_get_crtc_scanline(crtc); >>>+ __entry->level = wm->level; >>>+ __entry->cxsr = wm->cxsr; >>>+ __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY]; >>>+ __entry->sprite0 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0]; >>>+ __entry->sprite1 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE1]; >>>+ __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR]; >>>+ __entry->sr_plane = wm->sr.plane; >>>+ __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, >>>+ __entry->scanline, __entry->level, __entry->cxsr, >>>+ __entry->primary, __entry->sprite0, __entry->sprite1, __entry->cursor, >>>+ __entry->sr_plane, __entry->sr_cursor) >>>+); >>>+ >>>+TRACE_EVENT(vlv_fifo_size, >>>+ TP_PROTO(struct intel_crtc *crtc, u32 sprite0_start, u32 sprite1_start, u32 fifo_size), >>>+ TP_ARGS(crtc, sprite0_start, sprite1_start, fifo_size), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __field(u32, sprite0_start) >>>+ __field(u32, sprite1_start) >>>+ __field(u32, fifo_size) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->pipe; >>>+ __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>+ __entry->scanline = intel_get_crtc_scanline(crtc); >>>+ __entry->sprite0_start = sprite0_start; >>>+ __entry->sprite1_start = sprite1_start; >>>+ __entry->fifo_size = fifo_size; >>>+ ), >>>+ >>>+ TP_printk("pipe %c, frame=%u, scanline=%u, %d/%d/%d", >>>+ pipe_name(__entry->pipe), __entry->frame, >>>+ __entry->scanline, __entry->sprite0_start, >>>+ __entry->sprite1_start, __entry->fifo_size) >>>+); >>>+ >>>+TRACE_EVENT(intel_plane_update_noarm, >>>+ TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc), >>>+ TP_ARGS(plane, crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __array(int, src, 4) >>>+ __array(int, dst, 4) >>>+ __string(name, plane->name) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __assign_str(name, plane->name); >>>+ __entry->pipe = crtc->pipe; >>>+ __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>+ __entry->scanline = intel_get_crtc_scanline(crtc); >>>+ memcpy(__entry->src, &plane->state->src, sizeof(__entry->src)); >>>+ 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), >>>+ __entry->frame, __entry->scanline, >>>+ DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src), >>>+ DRM_RECT_ARG((const struct drm_rect *)__entry->dst)) >>>+); >>>+ >>>+TRACE_EVENT(intel_plane_update_arm, >>>+ TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc), >>>+ TP_ARGS(plane, crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __array(int, src, 4) >>>+ __array(int, dst, 4) >>>+ __string(name, plane->name) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __assign_str(name, plane->name); >>>+ __entry->pipe = crtc->pipe; >>>+ __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>+ __entry->scanline = intel_get_crtc_scanline(crtc); >>>+ memcpy(__entry->src, &plane->state->src, sizeof(__entry->src)); >>>+ 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), >>>+ __entry->frame, __entry->scanline, >>>+ DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src), >>>+ DRM_RECT_ARG((const struct drm_rect *)__entry->dst)) >>>+); >>>+ >>>+TRACE_EVENT(intel_plane_disable_arm, >>>+ TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc), >>>+ TP_ARGS(plane, crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __string(name, plane->name) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __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), >>>+ __entry->frame, __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_fbc_activate, >>>+ TP_PROTO(struct intel_plane *plane), >>>+ TP_ARGS(plane), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev), >>>+ plane->pipe); >>>+ __entry->pipe = crtc->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), __entry->frame, __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_fbc_deactivate, >>>+ TP_PROTO(struct intel_plane *plane), >>>+ TP_ARGS(plane), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev), >>>+ plane->pipe); >>>+ __entry->pipe = crtc->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), __entry->frame, __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_fbc_nuke, >>>+ TP_PROTO(struct intel_plane *plane), >>>+ TP_ARGS(plane), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev), >>>+ plane->pipe); >>>+ __entry->pipe = crtc->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), __entry->frame, __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_crtc_vblank_work_start, >>>+ TP_PROTO(struct intel_crtc *crtc), >>>+ TP_ARGS(crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->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), __entry->frame, >>>+ __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_crtc_vblank_work_end, >>>+ TP_PROTO(struct intel_crtc *crtc), >>>+ TP_ARGS(crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->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), __entry->frame, >>>+ __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_pipe_update_start, >>>+ TP_PROTO(struct intel_crtc *crtc), >>>+ TP_ARGS(crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __field(u32, min) >>>+ __field(u32, max) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->pipe; >>>+ __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>+ __entry->scanline = intel_get_crtc_scanline(crtc); >>>+ __entry->min = crtc->debug.min_vbl; >>>+ __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) >>>+); >>>+ >>>+TRACE_EVENT(intel_pipe_update_vblank_evaded, >>>+ TP_PROTO(struct intel_crtc *crtc), >>>+ TP_ARGS(crtc), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ __field(u32, min) >>>+ __field(u32, max) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->pipe = crtc->pipe; >>>+ __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", >>>+ pipe_name(__entry->pipe), __entry->frame, >>>+ __entry->scanline, __entry->min, __entry->max) >>>+); >>>+ >>>+TRACE_EVENT(intel_pipe_update_end, >>>+ TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end), >>>+ TP_ARGS(crtc, frame, scanline_end), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(enum pipe, pipe) >>>+ __field(u32, frame) >>>+ __field(u32, scanline) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __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, >>>+ __entry->scanline) >>>+); >>>+ >>>+TRACE_EVENT(intel_frontbuffer_invalidate, >>>+ TP_PROTO(unsigned int frontbuffer_bits, unsigned int origin), >>>+ TP_ARGS(frontbuffer_bits, origin), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(unsigned int, frontbuffer_bits) >>>+ __field(unsigned int, origin) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->frontbuffer_bits = frontbuffer_bits; >>>+ __entry->origin = origin; >>>+ ), >>>+ >>>+ TP_printk("frontbuffer_bits=0x%08x, origin=%u", >>>+ __entry->frontbuffer_bits, __entry->origin) >>>+); >>>+ >>>+TRACE_EVENT(intel_frontbuffer_flush, >>>+ TP_PROTO(unsigned int frontbuffer_bits, unsigned int origin), >>>+ TP_ARGS(frontbuffer_bits, origin), >>>+ >>>+ TP_STRUCT__entry( >>>+ __field(unsigned int, frontbuffer_bits) >>>+ __field(unsigned int, origin) >>>+ ), >>>+ >>>+ TP_fast_assign( >>>+ __entry->frontbuffer_bits = frontbuffer_bits; >>>+ __entry->origin = origin; >>>+ ), >>>+ >>>+ TP_printk("frontbuffer_bits=0x%08x, origin=%u", >>>+ __entry->frontbuffer_bits, __entry->origin) >>>+); >>>+ >>>+#endif /* __INTEL_DISPLAY_TRACE_H__ */ >>>+ >>>+/* This part must be outside protection */ >>>+#undef TRACE_INCLUDE_PATH >>>+#undef TRACE_INCLUDE_FILE >>>+#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/i915/display >>>+#define TRACE_INCLUDE_FILE intel_display_trace >>>+#include <trace/define_trace.h> >>>diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c >>>index a24831acb7da..b5e2508db1cf 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_dp.c >>>+++ b/drivers/gpu/drm/i915/display/intel_dp.c >>>@@ -47,6 +47,7 @@ >>> #include "intel_audio.h" >>> #include "intel_backlight.h" >>> #include "intel_connector.h" >>>+#include "intel_crtc.h" >>> #include "intel_ddi.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c >>>index 6efbef7a1fc0..8be01b93015f 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_fbc.c >>>+++ b/drivers/gpu/drm/i915/display/intel_fbc.c >>>@@ -41,10 +41,10 @@ >>> #include <drm/drm_fourcc.h> >>> >>> #include "i915_drv.h" >>>-#include "i915_trace.h" >>> #include "i915_vgpu.h" >>> #include "intel_cdclk.h" >>> #include "intel_de.h" >>>+#include "intel_display_trace.h" >>> #include "intel_display_types.h" >>> #include "intel_fbc.h" >>> #include "intel_frontbuffer.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_fdi.c b/drivers/gpu/drm/i915/display/intel_fdi.c >>>index be77be626420..3d6e22923601 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_fdi.c >>>+++ b/drivers/gpu/drm/i915/display/intel_fdi.c >>>@@ -4,6 +4,7 @@ >>> */ >>> >>> #include "intel_atomic.h" >>>+#include "intel_crtc.h" >>> #include "intel_ddi.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_fifo_underrun.c b/drivers/gpu/drm/i915/display/intel_fifo_underrun.c >>>index 76045ce84739..d636d21fa9ce 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_fifo_underrun.c >>>+++ b/drivers/gpu/drm/i915/display/intel_fifo_underrun.c >>>@@ -26,8 +26,8 @@ >>> */ >>> >>> #include "i915_drv.h" >>>-#include "i915_trace.h" >>> #include "intel_de.h" >>>+#include "intel_display_trace.h" >>> #include "intel_display_types.h" >>> #include "intel_fbc.h" >>> #include "intel_fifo_underrun.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c >>>index 0492446cd04a..791248f812aa 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c >>>+++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c >>>@@ -55,14 +55,13 @@ >>> * cancelled as soon as busyness is detected. >>> */ >>> >>>-#include "display/intel_dp.h" >>>- >>> #include "i915_drv.h" >>>-#include "i915_trace.h" >>>+#include "intel_display_trace.h" >>> #include "intel_display_types.h" >>>+#include "intel_dp.h" >>>+#include "intel_drrs.h" >>> #include "intel_fbc.h" >>> #include "intel_frontbuffer.h" >>>-#include "intel_drrs.h" >>> #include "intel_psr.h" >>> >>> /** >>>diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c >>>index 926f5cdc65fd..2357a1301f48 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_sprite.c >>>+++ b/drivers/gpu/drm/i915/display/intel_sprite.c >>>@@ -40,15 +40,15 @@ >>> #include <drm/drm_rect.h> >>> >>> #include "i915_drv.h" >>>-#include "i915_trace.h" >>> #include "i915_vgpu.h" >>>+#include "i9xx_plane.h" >>> #include "intel_atomic_plane.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_fb.h" >>> #include "intel_frontbuffer.h" >>> #include "intel_sprite.h" >>>-#include "i9xx_plane.h" >>> #include "intel_vrr.h" >>> >>> int intel_plane_check_src_coordinates(struct intel_plane_state *plane_state) >>>diff --git a/drivers/gpu/drm/i915/display/intel_tv.c b/drivers/gpu/drm/i915/display/intel_tv.c >>>index fc77947dc3d5..8a39989b87ad 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_tv.c >>>+++ b/drivers/gpu/drm/i915/display/intel_tv.c >>>@@ -36,6 +36,7 @@ >>> >>> #include "i915_drv.h" >>> #include "intel_connector.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_hotplug.h" >>>diff --git a/drivers/gpu/drm/i915/display/intel_vdsc.c b/drivers/gpu/drm/i915/display/intel_vdsc.c >>>index c6851b0e0bed..1cc4170e6ec8 100644 >>>--- a/drivers/gpu/drm/i915/display/intel_vdsc.c >>>+++ b/drivers/gpu/drm/i915/display/intel_vdsc.c >>>@@ -6,12 +6,14 @@ >>> * Manasi Navare <manasi.d.navare@xxxxxxxxx> >>> */ >>> #include <linux/limits.h> >>>+ >>> #include "i915_drv.h" >>>+#include "intel_crtc.h" >>> #include "intel_de.h" >>> #include "intel_display_types.h" >>> #include "intel_dsi.h" >>>-#include "intel_vdsc.h" >>> #include "intel_qp_tables.h" >>>+#include "intel_vdsc.h" >>> >>> enum ROW_INDEX_BPP { >>> ROW_INDEX_6BPP = 0, >>>diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c >>>index 390d541f64ea..bafb902269de 100644 >>>--- a/drivers/gpu/drm/i915/i915_debugfs.c >>>+++ b/drivers/gpu/drm/i915/i915_debugfs.c >>>@@ -48,7 +48,6 @@ >>> #include "i915_debugfs_params.h" >>> #include "i915_irq.h" >>> #include "i915_scheduler.h" >>>-#include "i915_trace.h" >>> #include "intel_pm.h" >>> >>> static inline struct drm_i915_private *node_to_i915(struct drm_info_node *node) >>>diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c >>>index bbc99fc5888f..e9125f14b3d1 100644 >>>--- a/drivers/gpu/drm/i915/i915_driver.c >>>+++ b/drivers/gpu/drm/i915/i915_driver.c >>>@@ -82,7 +82,6 @@ >>> #include "i915_suspend.h" >>> #include "i915_switcheroo.h" >>> #include "i915_sysfs.h" >>>-#include "i915_trace.h" >>> #include "i915_vgpu.h" >>> #include "intel_dram.h" >>> #include "intel_gvt.h" >>>diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c >>>index d0be94456bd8..5b98fb0532b5 100644 >>>--- a/drivers/gpu/drm/i915/i915_irq.c >>>+++ b/drivers/gpu/drm/i915/i915_irq.c >>>@@ -35,6 +35,7 @@ >>> #include <drm/drm_drv.h> >>> >>> #include "display/intel_de.h" >>>+#include "display/intel_display_trace.h" >>> #include "display/intel_display_types.h" >>> #include "display/intel_fifo_underrun.h" >>> #include "display/intel_hotplug.h" >>>@@ -49,7 +50,6 @@ >>> >>> #include "i915_drv.h" >>> #include "i915_irq.h" >>>-#include "i915_trace.h" >>> #include "intel_pm.h" >>> >>> /** >>>diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h >>>index a07bed5333cc..37b5c9e9d260 100644 >>>--- a/drivers/gpu/drm/i915/i915_trace.h >>>+++ b/drivers/gpu/drm/i915/i915_trace.h >>>@@ -12,584 +12,11 @@ >>> >>> #include <drm/drm_drv.h> >>> >>>-#include "display/intel_crtc.h" >>>-#include "display/intel_display_types.h" >>> #include "gt/intel_engine.h" >>> >>> #include "i915_drv.h" >>> #include "i915_irq.h" >>> >>>-/* watermark/fifo updates */ >>>- >>>-TRACE_EVENT(intel_pipe_enable, >>>- TP_PROTO(struct intel_crtc *crtc), >>>- TP_ARGS(crtc), >>>- >>>- TP_STRUCT__entry( >>>- __array(u32, frame, 3) >>>- __array(u32, scanline, 3) >>>- __field(enum pipe, pipe) >>>- ), >>>- TP_fast_assign( >>>- struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >>>- struct intel_crtc *it__; >>>- 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__); >>>- } >>>- __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), >>>- __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 intel_crtc *crtc), >>>- TP_ARGS(crtc), >>>- >>>- TP_STRUCT__entry( >>>- __array(u32, frame, 3) >>>- __array(u32, scanline, 3) >>>- __field(enum pipe, pipe) >>>- ), >>>- >>>- TP_fast_assign( >>>- struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); >>>- struct intel_crtc *it__; >>>- 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__); >>>- } >>>- __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), >>>- __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), >>>- 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 = 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, >>>- __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), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe); >>>- __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), >>>- __entry->frame, __entry->scanline) >>>-); >>>- >>>-TRACE_EVENT(intel_pch_fifo_underrun, >>>- TP_PROTO(struct drm_i915_private *dev_priv, enum pipe pch_transcoder), >>>- TP_ARGS(dev_priv, pch_transcoder), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- enum pipe pipe = pch_transcoder; >>>- struct intel_crtc *crtc = intel_crtc_for_pipe(dev_priv, pipe); >>>- __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), >>>- __entry->frame, __entry->scanline) >>>-); >>>- >>>-TRACE_EVENT(intel_memory_cxsr, >>>- TP_PROTO(struct drm_i915_private *dev_priv, bool old, bool new), >>>- TP_ARGS(dev_priv, old, new), >>>- >>>- TP_STRUCT__entry( >>>- __array(u32, frame, 3) >>>- __array(u32, scanline, 3) >>>- __field(bool, old) >>>- __field(bool, new) >>>- ), >>>- >>>- TP_fast_assign( >>>- struct intel_crtc *crtc; >>>- 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); >>>- } >>>- __entry->old = old; >>>- __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), >>>- __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(g4x_wm, >>>- TP_PROTO(struct intel_crtc *crtc, const struct g4x_wm_values *wm), >>>- TP_ARGS(crtc, wm), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __field(u16, primary) >>>- __field(u16, sprite) >>>- __field(u16, cursor) >>>- __field(u16, sr_plane) >>>- __field(u16, sr_cursor) >>>- __field(u16, sr_fbc) >>>- __field(u16, hpll_plane) >>>- __field(u16, hpll_cursor) >>>- __field(u16, hpll_fbc) >>>- __field(bool, cxsr) >>>- __field(bool, hpll) >>>- __field(bool, fbc) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->pipe; >>>- __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>- __entry->scanline = intel_get_crtc_scanline(crtc); >>>- __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY]; >>>- __entry->sprite = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0]; >>>- __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR]; >>>- __entry->sr_plane = wm->sr.plane; >>>- __entry->sr_cursor = wm->sr.cursor; >>>- __entry->sr_fbc = wm->sr.fbc; >>>- __entry->hpll_plane = wm->hpll.plane; >>>- __entry->hpll_cursor = wm->hpll.cursor; >>>- __entry->hpll_fbc = wm->hpll.fbc; >>>- __entry->cxsr = wm->cxsr; >>>- __entry->hpll = wm->hpll_en; >>>- __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, >>>- __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, >>>- yesno(__entry->fbc)) >>>-); >>>- >>>-TRACE_EVENT(vlv_wm, >>>- TP_PROTO(struct intel_crtc *crtc, const struct vlv_wm_values *wm), >>>- TP_ARGS(crtc, wm), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __field(u32, level) >>>- __field(u32, cxsr) >>>- __field(u32, primary) >>>- __field(u32, sprite0) >>>- __field(u32, sprite1) >>>- __field(u32, cursor) >>>- __field(u32, sr_plane) >>>- __field(u32, sr_cursor) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->pipe; >>>- __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>- __entry->scanline = intel_get_crtc_scanline(crtc); >>>- __entry->level = wm->level; >>>- __entry->cxsr = wm->cxsr; >>>- __entry->primary = wm->pipe[crtc->pipe].plane[PLANE_PRIMARY]; >>>- __entry->sprite0 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE0]; >>>- __entry->sprite1 = wm->pipe[crtc->pipe].plane[PLANE_SPRITE1]; >>>- __entry->cursor = wm->pipe[crtc->pipe].plane[PLANE_CURSOR]; >>>- __entry->sr_plane = wm->sr.plane; >>>- __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, >>>- __entry->scanline, __entry->level, __entry->cxsr, >>>- __entry->primary, __entry->sprite0, __entry->sprite1, __entry->cursor, >>>- __entry->sr_plane, __entry->sr_cursor) >>>-); >>>- >>>-TRACE_EVENT(vlv_fifo_size, >>>- TP_PROTO(struct intel_crtc *crtc, u32 sprite0_start, u32 sprite1_start, u32 fifo_size), >>>- TP_ARGS(crtc, sprite0_start, sprite1_start, fifo_size), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __field(u32, sprite0_start) >>>- __field(u32, sprite1_start) >>>- __field(u32, fifo_size) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->pipe; >>>- __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>- __entry->scanline = intel_get_crtc_scanline(crtc); >>>- __entry->sprite0_start = sprite0_start; >>>- __entry->sprite1_start = sprite1_start; >>>- __entry->fifo_size = fifo_size; >>>- ), >>>- >>>- TP_printk("pipe %c, frame=%u, scanline=%u, %d/%d/%d", >>>- pipe_name(__entry->pipe), __entry->frame, >>>- __entry->scanline, __entry->sprite0_start, >>>- __entry->sprite1_start, __entry->fifo_size) >>>-); >>>- >>>-/* plane updates */ >>>- >>>-TRACE_EVENT(intel_plane_update_noarm, >>>- TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc), >>>- TP_ARGS(plane, crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __array(int, src, 4) >>>- __array(int, dst, 4) >>>- __string(name, plane->name) >>>- ), >>>- >>>- TP_fast_assign( >>>- __assign_str(name, plane->name); >>>- __entry->pipe = crtc->pipe; >>>- __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>- __entry->scanline = intel_get_crtc_scanline(crtc); >>>- memcpy(__entry->src, &plane->state->src, sizeof(__entry->src)); >>>- 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), >>>- __entry->frame, __entry->scanline, >>>- DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src), >>>- DRM_RECT_ARG((const struct drm_rect *)__entry->dst)) >>>-); >>>- >>>-TRACE_EVENT(intel_plane_update_arm, >>>- TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc), >>>- TP_ARGS(plane, crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __array(int, src, 4) >>>- __array(int, dst, 4) >>>- __string(name, plane->name) >>>- ), >>>- >>>- TP_fast_assign( >>>- __assign_str(name, plane->name); >>>- __entry->pipe = crtc->pipe; >>>- __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>- __entry->scanline = intel_get_crtc_scanline(crtc); >>>- memcpy(__entry->src, &plane->state->src, sizeof(__entry->src)); >>>- 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), >>>- __entry->frame, __entry->scanline, >>>- DRM_RECT_FP_ARG((const struct drm_rect *)__entry->src), >>>- DRM_RECT_ARG((const struct drm_rect *)__entry->dst)) >>>-); >>>- >>>-TRACE_EVENT(intel_plane_disable_arm, >>>- TP_PROTO(struct drm_plane *plane, struct intel_crtc *crtc), >>>- TP_ARGS(plane, crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __string(name, plane->name) >>>- ), >>>- >>>- TP_fast_assign( >>>- __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), >>>- __entry->frame, __entry->scanline) >>>-); >>>- >>>-/* fbc */ >>>- >>>-TRACE_EVENT(intel_fbc_activate, >>>- TP_PROTO(struct intel_plane *plane), >>>- TP_ARGS(plane), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev), >>>- plane->pipe); >>>- __entry->pipe = crtc->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), __entry->frame, __entry->scanline) >>>-); >>>- >>>-TRACE_EVENT(intel_fbc_deactivate, >>>- TP_PROTO(struct intel_plane *plane), >>>- TP_ARGS(plane), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev), >>>- plane->pipe); >>>- __entry->pipe = crtc->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), __entry->frame, __entry->scanline) >>>-); >>>- >>>-TRACE_EVENT(intel_fbc_nuke, >>>- TP_PROTO(struct intel_plane *plane), >>>- TP_ARGS(plane), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- struct intel_crtc *crtc = intel_crtc_for_pipe(to_i915(plane->base.dev), >>>- plane->pipe); >>>- __entry->pipe = crtc->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), __entry->frame, __entry->scanline) >>>-); >>>- >>>-/* pipe updates */ >>>- >>>-TRACE_EVENT(intel_crtc_vblank_work_start, >>>- TP_PROTO(struct intel_crtc *crtc), >>>- TP_ARGS(crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->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), __entry->frame, >>>- __entry->scanline) >>>-); >>>- >>>-TRACE_EVENT(intel_crtc_vblank_work_end, >>>- TP_PROTO(struct intel_crtc *crtc), >>>- TP_ARGS(crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->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), __entry->frame, >>>- __entry->scanline) >>>-); >>>- >>>-TRACE_EVENT(intel_pipe_update_start, >>>- TP_PROTO(struct intel_crtc *crtc), >>>- TP_ARGS(crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __field(u32, min) >>>- __field(u32, max) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->pipe; >>>- __entry->frame = intel_crtc_get_vblank_counter(crtc); >>>- __entry->scanline = intel_get_crtc_scanline(crtc); >>>- __entry->min = crtc->debug.min_vbl; >>>- __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) >>>-); >>>- >>>-TRACE_EVENT(intel_pipe_update_vblank_evaded, >>>- TP_PROTO(struct intel_crtc *crtc), >>>- TP_ARGS(crtc), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- __field(u32, min) >>>- __field(u32, max) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->pipe = crtc->pipe; >>>- __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", >>>- pipe_name(__entry->pipe), __entry->frame, >>>- __entry->scanline, __entry->min, __entry->max) >>>-); >>>- >>>-TRACE_EVENT(intel_pipe_update_end, >>>- TP_PROTO(struct intel_crtc *crtc, u32 frame, int scanline_end), >>>- TP_ARGS(crtc, frame, scanline_end), >>>- >>>- TP_STRUCT__entry( >>>- __field(enum pipe, pipe) >>>- __field(u32, frame) >>>- __field(u32, scanline) >>>- ), >>>- >>>- TP_fast_assign( >>>- __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, >>>- __entry->scanline) >>>-); >>>- >>>-/* frontbuffer tracking */ >>>- >>>-TRACE_EVENT(intel_frontbuffer_invalidate, >>>- TP_PROTO(unsigned int frontbuffer_bits, unsigned int origin), >>>- TP_ARGS(frontbuffer_bits, origin), >>>- >>>- TP_STRUCT__entry( >>>- __field(unsigned int, frontbuffer_bits) >>>- __field(unsigned int, origin) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->frontbuffer_bits = frontbuffer_bits; >>>- __entry->origin = origin; >>>- ), >>>- >>>- TP_printk("frontbuffer_bits=0x%08x, origin=%u", >>>- __entry->frontbuffer_bits, __entry->origin) >>>-); >>>- >>>-TRACE_EVENT(intel_frontbuffer_flush, >>>- TP_PROTO(unsigned int frontbuffer_bits, unsigned int origin), >>>- TP_ARGS(frontbuffer_bits, origin), >>>- >>>- TP_STRUCT__entry( >>>- __field(unsigned int, frontbuffer_bits) >>>- __field(unsigned int, origin) >>>- ), >>>- >>>- TP_fast_assign( >>>- __entry->frontbuffer_bits = frontbuffer_bits; >>>- __entry->origin = origin; >>>- ), >>>- >>>- TP_printk("frontbuffer_bits=0x%08x, origin=%u", >>>- __entry->frontbuffer_bits, __entry->origin) >>>-); >>>- >>> /* object tracking */ >>> >>> TRACE_EVENT(i915_gem_object_create, >>>diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c >>>index fe3787425780..abad48e1690e 100644 >>>--- a/drivers/gpu/drm/i915/intel_pm.c >>>+++ b/drivers/gpu/drm/i915/intel_pm.c >>>@@ -36,6 +36,7 @@ >>> #include "display/intel_atomic_plane.h" >>> #include "display/intel_bw.h" >>> #include "display/intel_de.h" >>>+#include "display/intel_display_trace.h" >>> #include "display/intel_display_types.h" >>> #include "display/intel_fb.h" >>> #include "display/intel_fbc.h" >>>@@ -47,7 +48,6 @@ >>> #include "i915_drv.h" >>> #include "i915_fixed.h" >>> #include "i915_irq.h" >>>-#include "i915_trace.h" >>> #include "intel_pcode.h" >>> #include "intel_pm.h" >>> #include "vlv_sideband.h" >>>-- >>>2.30.2 >>> -- Jani Nikula, Intel Open Source Graphics Center