]> www.infradead.org Git - users/willy/xarray.git/commitdiff
drm/i915: Add flip done tracepoint
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 11 Jun 2024 13:33:36 +0000 (16:33 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 20 Jun 2024 12:37:36 +0000 (15:37 +0300)
Add a tracepoint to see exactly when async flips complete.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240611133344.30673-4-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_display_irq.c
drivers/gpu/drm/i915/display/intel_display_trace.h

index 67b19d04d1f77dec935d73994e5eb101d4a2b664..5219ba295c74ab313c70b7ac532c3b30e4d5748b 100644 (file)
@@ -346,6 +346,7 @@ static void flip_done_handler(struct drm_i915_private *i915,
        spin_lock(&i915->drm.event_lock);
 
        if (crtc->flip_done_event) {
+               trace_intel_crtc_flip_done(crtc);
                drm_crtc_send_vblank_event(&crtc->base, crtc->flip_done_event);
                crtc->flip_done_event = NULL;
        }
index 34c223ace5ea7cce600357ae1a22cdecc2973f2f..c734ef1fba3c87c650b71fcb0ea1988b08ff6c54 100644 (file)
@@ -78,6 +78,29 @@ TRACE_EVENT(intel_pipe_disable,
                      __entry->frame[PIPE_C], __entry->scanline[PIPE_C])
 );
 
+TRACE_EVENT(intel_crtc_flip_done,
+           TP_PROTO(struct intel_crtc *crtc),
+           TP_ARGS(crtc),
+
+           TP_STRUCT__entry(
+                            __string(dev, __dev_name_kms(crtc))
+                            __field(enum pipe, pipe)
+                            __field(u32, frame)
+                            __field(u32, scanline)
+                            ),
+
+           TP_fast_assign(
+                          __assign_str(dev);
+                          __entry->pipe = crtc->pipe;
+                          __entry->frame = intel_crtc_get_vblank_counter(crtc);
+                          __entry->scanline = intel_get_crtc_scanline(crtc);
+                          ),
+
+           TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
+                     __get_str(dev), pipe_name(__entry->pipe),
+                     __entry->frame, __entry->scanline)
+);
+
 TRACE_EVENT(intel_pipe_crc,
            TP_PROTO(struct intel_crtc *crtc, const u32 *crcs),
            TP_ARGS(crtc, crcs),