]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: Pass the plane state explicitly to tracepoints
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 18 Dec 2024 17:36:49 +0000 (19:36 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 28 Jan 2025 16:39:48 +0000 (18:39 +0200)
Using the plane->state pointer in the tracepoints is incorrect
as technically a different state could already have been swapped
in (though in reality that is currently prevented by the stall
hacks in the commit machinery). But let's not leave such footguns
lying around when we can just pass in the correct state by hand.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241218173650.19782-4-ville.syrjala@linux.intel.com
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
drivers/gpu/drm/i915/display/intel_atomic_plane.c
drivers/gpu/drm/i915/display/intel_display_trace.h

index c558143f4f8244535cf459c5c3990c0d0457366d..651f81ed85abc562343bc02762aea694911f9458 100644 (file)
@@ -772,7 +772,7 @@ void intel_plane_update_noarm(struct intel_dsb *dsb,
 {
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
 
-       trace_intel_plane_update_noarm(plane, crtc);
+       trace_intel_plane_update_noarm(plane_state, crtc);
 
        if (plane->update_noarm)
                plane->update_noarm(dsb, plane, crtc_state, plane_state);
@@ -802,7 +802,7 @@ void intel_plane_update_arm(struct intel_dsb *dsb,
                return;
        }
 
-       trace_intel_plane_update_arm(plane, crtc);
+       trace_intel_plane_update_arm(plane_state, crtc);
        plane->update_arm(dsb, plane, crtc_state, plane_state);
 }
 
index 989d6f0f3c42a97acb49bc4bad037e182b05bf58..4fe65452e555462460216cacfe46c347179f15d8 100644 (file)
@@ -21,6 +21,7 @@
 #include "intel_vblank.h"
 
 #define __dev_name_display(display) dev_name((display)->drm->dev)
+#define __dev_name_drm(obj) dev_name((obj)->dev->dev)
 #define __dev_name_kms(obj) dev_name((obj)->base.dev->dev)
 
 /*
@@ -403,17 +404,17 @@ TRACE_EVENT(intel_plane_async_flip,
 );
 
 TRACE_EVENT(intel_plane_update_noarm,
-           TP_PROTO(struct intel_plane *plane, struct intel_crtc *crtc),
-           TP_ARGS(plane, crtc),
+           TP_PROTO(const struct intel_plane_state *plane_state, struct intel_crtc *crtc),
+           TP_ARGS(plane_state, crtc),
 
            TP_STRUCT__entry(
-                            __string(dev, __dev_name_kms(plane))
+                            __string(dev, __dev_name_drm(plane_state->uapi.plane))
                             __field(char, pipe_name)
                             __field(u32, frame)
                             __field(u32, scanline)
                             __array(int, src, 4)
                             __array(int, dst, 4)
-                            __string(name, plane->base.name)
+                            __string(name, plane_state->uapi.plane->name)
                             ),
 
            TP_fast_assign(
@@ -422,8 +423,8 @@ TRACE_EVENT(intel_plane_update_noarm,
                           __entry->pipe_name = pipe_name(crtc->pipe);
                           __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
-                          memcpy(__entry->src, &plane->base.state->src, sizeof(__entry->src));
-                          memcpy(__entry->dst, &plane->base.state->dst, sizeof(__entry->dst));
+                          memcpy(__entry->src, &plane_state->uapi.src, sizeof(__entry->src));
+                          memcpy(__entry->dst, &plane_state->uapi.dst, sizeof(__entry->dst));
                           ),
 
            TP_printk("dev %s, pipe %c, %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,
@@ -434,17 +435,17 @@ TRACE_EVENT(intel_plane_update_noarm,
 );
 
 TRACE_EVENT(intel_plane_update_arm,
-           TP_PROTO(struct intel_plane *plane, struct intel_crtc *crtc),
-           TP_ARGS(plane, crtc),
+           TP_PROTO(const struct intel_plane_state *plane_state, struct intel_crtc *crtc),
+           TP_ARGS(plane_state, crtc),
 
            TP_STRUCT__entry(
-                            __string(dev, __dev_name_kms(plane))
+                            __string(dev, __dev_name_drm(plane_state->uapi.plane))
                             __field(char, pipe_name)
                             __field(u32, frame)
                             __field(u32, scanline)
                             __array(int, src, 4)
                             __array(int, dst, 4)
-                            __string(name, plane->base.name)
+                            __string(name, plane_state->uapi.plane->name)
                             ),
 
            TP_fast_assign(
@@ -453,8 +454,8 @@ TRACE_EVENT(intel_plane_update_arm,
                           __entry->pipe_name = pipe_name(crtc->pipe);
                           __entry->frame = intel_crtc_get_vblank_counter(crtc);
                           __entry->scanline = intel_get_crtc_scanline(crtc);
-                          memcpy(__entry->src, &plane->base.state->src, sizeof(__entry->src));
-                          memcpy(__entry->dst, &plane->base.state->dst, sizeof(__entry->dst));
+                          memcpy(__entry->src, &plane_state->uapi.src, sizeof(__entry->src));
+                          memcpy(__entry->dst, &plane_state->uapi.dst, sizeof(__entry->dst));
                           ),
 
            TP_printk("dev %s, pipe %c, %s, frame=%u, scanline=%u, " DRM_RECT_FP_FMT " -> " DRM_RECT_FMT,