On 24/09/2026 22:10, Melissa Wen wrote:
Some amdgpu_dc_performance trace event params are passed as unsigned
long but stored as uint32_t, cutting them off on 64-bit. Use the right
type on entry fields and on printk use unsigned format accordingly.

Fixes: 0cf5eb76e2b4 ("drm/amd/display: Add tracing to dc")
Signed-off-by: Melissa Wen <[email protected]>
---
  .../drm/amd/display/amdgpu_dm/amdgpu_dm_trace.h | 17 +++++++----------
  1 file changed, 7 insertions(+), 10 deletions(-)

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 c59ba41a9721..26c85d95bcc0 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
@@ -76,10 +76,10 @@ TRACE_EVENT(amdgpu_dc_performance,
                const char *func, unsigned int line),
        TP_ARGS(read_count, write_count, last_read, last_write, func, line),
        TP_STRUCT__entry(
-                       __field(uint32_t, reads)
-                       __field(uint32_t, writes)
-                       __field(uint32_t, read_delta)
-                       __field(uint32_t, write_delta)
+                       __field(unsigned long, reads)
+                       __field(unsigned long, writes)
+                       __field(unsigned long, read_delta)
+                       __field(unsigned long, write_delta)
                        __string(func, func)
                        __field(uint32_t, line)
                        ),
@@ -93,12 +93,9 @@ TRACE_EVENT(amdgpu_dc_performance,
                        *last_read = read_count;
                        *last_write = write_count;
                        ),
-       TP_printk("%s:%d reads=%08ld (%08ld total), writes=%08ld (%08ld total)",
-                       __get_str(func), __entry->line,
-                       (unsigned long)__entry->read_delta,
-                       (unsigned long)__entry->reads,
-                       (unsigned long)__entry->write_delta,
-                       (unsigned long)__entry->writes)
+       TP_printk("%s:%u reads=%08lu (%08lu total), writes=%08lu (%08lu total)",
+                 __get_str(func), __entry->line, __entry->read_delta,
+                 __entry->reads, __entry->write_delta, __entry->writes)
  );
TRACE_EVENT(amdgpu_dm_connector_atomic_check,

8 character width might be insufficient now. I have no idea if it can happen in practice, probably not?

Do fields in struct dc_perf_trace need to be 64-bit wide is a related question?

Regards,

Tvrtko

Reply via email to