From 9703ac9c785e949235bdecad99da300b9bdf5348 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 4 Nov 2025 11:52:48 -0800 Subject: [PATCH] UPSTREAM: ANDROID: tracing: add power/gpu_work_period From Android 16 CDD: [C-0-13] MUST implement the shell command dumpsys gpu --gpuwork to display the aggregated GPU work data returned by the power/gpu_work_period kernel tracepoint, or display no data if the tracepoint is not supported. The AOSP implementation is frameworks/native/services/gpuservice/gpuwork/. Bug: 457797217 Test: cat /sys/kernel/tracing/events/power/gpu_work_period/format Change-Id: Ia3d695d4297d8e2d6b4ad89e5747e39aec737810 Signed-off-by: Chia-I Wu Signed-off-by: Sorayukii --- drivers/gpu/trace/trace_gpu_power.c | 2 ++ include/trace/events/gpu_power.h | 31 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/drivers/gpu/trace/trace_gpu_power.c b/drivers/gpu/trace/trace_gpu_power.c index 502e9f19e698..7ef8aaa64d0b 100644 --- a/drivers/gpu/trace/trace_gpu_power.c +++ b/drivers/gpu/trace/trace_gpu_power.c @@ -3,9 +3,11 @@ * Copyright 2025 Google LLC */ +#include #include #define CREATE_TRACE_POINTS #include EXPORT_TRACEPOINT_SYMBOL(gpu_frequency); +EXPORT_TRACEPOINT_SYMBOL(gpu_work_period); diff --git a/include/trace/events/gpu_power.h b/include/trace/events/gpu_power.h index 0a8a17954148..316b5c035e72 100644 --- a/include/trace/events/gpu_power.h +++ b/include/trace/events/gpu_power.h @@ -26,6 +26,37 @@ TRACE_EVENT(gpu_frequency, TP_printk("state=%u gpu_id=%u", __entry->state, __entry->gpu_id) ); +TRACE_EVENT(gpu_work_period, + + TP_PROTO(u32 gpu_id, u32 uid, u64 start_time_ns, u64 end_time_ns, + u64 total_active_duration_ns), + + TP_ARGS(gpu_id, uid, start_time_ns, end_time_ns, total_active_duration_ns), + + TP_STRUCT__entry( + __field(u32, gpu_id) + __field(u32, uid) + __field(u64, start_time_ns) + __field(u64, end_time_ns) + __field(u64, total_active_duration_ns) + ), + + TP_fast_assign( + __entry->gpu_id = gpu_id; + __entry->uid = uid; + __entry->start_time_ns = start_time_ns; + __entry->end_time_ns = end_time_ns; + __entry->total_active_duration_ns = total_active_duration_ns; + ), + + TP_printk("gpu_id=%u uid=%u start_time_ns=%llu end_time_ns=%llu total_active_duration_ns=%llu", + __entry->gpu_id, + __entry->uid, + __entry->start_time_ns, + __entry->end_time_ns, + __entry->total_active_duration_ns) +); + #endif /* _TRACE_GPU_POWER_H */ /* This part must be outside protection */