Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From 7b279da44ac7f838876f0038a081e076eee4b751 Mon Sep 17 00:00:00 2001
- From: Leo Li <[email protected]>
- Date: Mon, 2 Mar 2026 16:47:05 -0500
- Subject: [PATCH] DEBUG: Add some trace events
- ---
- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 6 +++
- .../amd/display/amdgpu_dm/amdgpu_dm_trace.h | 23 ++++++++
- drivers/gpu/drm/drm_atomic_helper.c | 5 ++
- drivers/gpu/drm/drm_atomic_uapi.c | 3 ++
- drivers/gpu/drm/drm_trace.h | 53 +++++++++++++++++--
- drivers/gpu/drm/drm_vblank.c | 2 +-
- 6 files changed, 86 insertions(+), 6 deletions(-)
- diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
- index 50a10b4fbb3ff..067245adccdae 100644
- --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
- +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
- @@ -9513,6 +9513,8 @@ static void prepare_flip_isr(struct amdgpu_crtc *acrtc)
- drm_dbg_state(acrtc->base.dev,
- "crtc:%d, pflip_stat:AMDGPU_FLIP_SUBMITTED\n",
- acrtc->crtc_id);
- +
- + trace_amdgpu_dm_event_arm(acrtc->event, acrtc->base.index, AMDGPU_FLIP_SUBMITTED, "flip");
- }
- static void update_freesync_state_on_stream(
- @@ -10131,6 +10133,10 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
- drm_crtc_vblank_get(pcrtc);
- acrtc_attach->event = acrtc_attach->base.state->event;
- acrtc_attach->base.state->event = NULL;
- + trace_amdgpu_dm_event_arm(acrtc_attach->event,
- + acrtc_attach->base.index,
- + acrtc_attach->pflip_status,
- + "cursor");
- }
- spin_unlock_irqrestore(&pcrtc->dev->event_lock, flags);
- }
- diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_trace.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_trace.h
- index aa56fd6d56c34..2984be24baa52 100644
- --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_trace.h
- +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_trace.h
- @@ -753,6 +753,29 @@ TRACE_EVENT(amdgpu_dm_brightness,
- )
- );
- +TRACE_EVENT(amdgpu_dm_event_arm,
- + TP_PROTO(struct drm_pending_vblank_event *e, int crtc_id, int pflip_status, const char *site),
- + TP_ARGS(e, crtc_id, pflip_status, site),
- + TP_STRUCT__entry(
- + __field(struct drm_pending_vblank_event *, event)
- + __field(int, crtc_id)
- + __field(int, pflip_status)
- + __string(site, site)
- + ),
- + TP_fast_assign(
- + __entry->event = e;
- + __entry->crtc_id = crtc_id;
- + __entry->pflip_status = pflip_status;
- + __assign_str(site);
- + ),
- + TP_printk("event=%p crtc_id=%d pflip_status=%d site=%s",
- + __entry->event,
- + __entry->crtc_id,
- + __entry->pflip_status,
- + __get_str(site)
- + )
- +);
- +
- #endif /* _AMDGPU_DM_TRACE_H_ */
- #undef TRACE_INCLUDE_PATH
- diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
- index e641fcf8c5683..a6503d0b97706 100644
- --- a/drivers/gpu/drm/drm_atomic_helper.c
- +++ b/drivers/gpu/drm/drm_atomic_helper.c
- @@ -47,6 +47,7 @@
- #include "drm_crtc_helper_internal.h"
- #include "drm_crtc_internal.h"
- +#include "drm_trace.h"
- /**
- * DOC: overview
- @@ -1879,7 +1880,10 @@ void drm_atomic_helper_wait_for_flip_done(struct drm_device *dev,
- if (!crtc || !commit)
- continue;
- + trace_drm_vblank_dbg_wait_flipdone_start(crtc->index);
- ret = wait_for_completion_timeout(&commit->flip_done, 10 * HZ);
- + trace_drm_vblank_dbg_wait_flipdone_end(crtc->index,
- + jiffies_to_msecs(ret));
- if (ret == 0)
- drm_err(dev, "[CRTC:%d:%s] flip_done timed out\n",
- crtc->base.id, crtc->name);
- @@ -2482,6 +2486,7 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state,
- return -ENOMEM;
- new_crtc_state->event = commit->event;
- + trace_drm_vblank_dbg_event_created(new_crtc_state->event, crtc->index);
- }
- new_crtc_state->event->base.completion = &commit->flip_done;
- diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
- index b2cb5ae5a1392..4e35d128828dc 100644
- --- a/drivers/gpu/drm/drm_atomic_uapi.c
- +++ b/drivers/gpu/drm/drm_atomic_uapi.c
- @@ -43,6 +43,7 @@
- #include <linux/file.h>
- #include "drm_crtc_internal.h"
- +#include "drm_trace.h"
- /**
- * DOC: overview
- @@ -941,6 +942,8 @@ static struct drm_pending_vblank_event *create_vblank_event(
- e->event.vbl.crtc_id = crtc->base.id;
- e->event.vbl.user_data = user_data;
- + trace_drm_vblank_dbg_event_created(e, crtc->index);
- +
- return e;
- }
- diff --git a/drivers/gpu/drm/drm_trace.h b/drivers/gpu/drm/drm_trace.h
- index 11c6dd577e8ed..f0dca8a42ab10 100644
- --- a/drivers/gpu/drm/drm_trace.h
- +++ b/drivers/gpu/drm/drm_trace.h
- @@ -49,21 +49,64 @@ TRACE_EVENT(drm_vblank_event_queued,
- __entry->seq)
- );
- -TRACE_EVENT(drm_vblank_event_delivered,
- - TP_PROTO(struct drm_file *file, int crtc, unsigned int seq),
- - TP_ARGS(file, crtc, seq),
- +TRACE_EVENT(drm_vblank_dbg_event_delivered,
- + TP_PROTO(void *e, struct drm_file *file, int crtc, unsigned int seq),
- + TP_ARGS(e, file, crtc, seq),
- TP_STRUCT__entry(
- + __field(void *, e)
- __field(struct drm_file *, file)
- __field(int, crtc)
- __field(unsigned int, seq)
- ),
- TP_fast_assign(
- + __entry->e = e;
- __entry->file = file;
- __entry->crtc = crtc;
- __entry->seq = seq;
- ),
- - TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \
- - __entry->seq)
- + TP_printk("event=%p, file=%p, crtc=%d, seq=%u",
- + __entry->e, __entry->file, __entry->crtc, __entry->seq)
- +);
- +
- +TRACE_EVENT(drm_vblank_dbg_event_created,
- + TP_PROTO(void *e, int crtc),
- + TP_ARGS(e, crtc),
- + TP_STRUCT__entry(
- + __field(void *, e)
- + __field(int, crtc)
- + ),
- + TP_fast_assign(
- + __entry->e = e;
- + __entry->crtc = crtc;
- + ),
- + TP_printk("event=%p, crtc=%d", __entry->e, __entry->crtc)
- +);
- +
- +TRACE_EVENT(drm_vblank_dbg_wait_flipdone_start,
- + TP_PROTO(int crtc),
- + TP_ARGS(crtc),
- + TP_STRUCT__entry(
- + __field(int, crtc)
- + ),
- + TP_fast_assign(
- + __entry->crtc = crtc;
- + ),
- + TP_printk("crtc=%d", __entry->crtc)
- +);
- +
- +TRACE_EVENT(drm_vblank_dbg_wait_flipdone_end,
- + TP_PROTO(int crtc, unsigned int msecs),
- + TP_ARGS(crtc, msecs),
- + TP_STRUCT__entry(
- + __field(int, crtc)
- + __field(unsigned int, msecs)
- + ),
- + TP_fast_assign(
- + __entry->crtc = crtc;
- + __entry->msecs = msecs;
- + ),
- + TP_printk("crtc=%d, remaining_wait_ms=%u",
- + __entry->crtc, __entry->msecs)
- );
- #endif /* _DRM_TRACE_H_ */
- diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
- index 32d013c5c8fc6..940fab8c36775 100644
- --- a/drivers/gpu/drm/drm_vblank.c
- +++ b/drivers/gpu/drm/drm_vblank.c
- @@ -1059,7 +1059,7 @@ static void send_vblank_event(struct drm_device *dev,
- e->event.seq.time_ns = ktime_to_ns(now);
- break;
- }
- - trace_drm_vblank_event_delivered(e->base.file_priv, e->pipe, seq);
- + trace_drm_vblank_dbg_event_delivered(e, e->base.file_priv, e->pipe, seq);
- /*
- * Use the same timestamp for any associated fence signal to avoid
- * mismatch in timestamps for vsync & fence events triggered by the
- --
- 2.52.0
Advertisement
Add Comment
Please, Sign In to add comment