On Tue, Nov 17, 2020 at 1:31 PM Peiyong Lin lpy@google.com wrote:
On Thu, Oct 22, 2020 at 10:34 AM Peiyong Lin lpy@google.com wrote:
Historically there is no common trace event for GPU frequency, in downstream Android each different hardware vendor implements their own way to expose GPU frequency, for example as a debugfs node. This patch standardize it as a common trace event in upstream linux kernel to help the ecosystem have a common implementation across hardware vendors. Toolings in the Linux ecosystem will benefit from this especially in the downstream Android, where this information is critical to graphics developers.
Signed-off-by: Peiyong Lin lpy@google.com
Changelog since v3:
- Correct copyright title.
Changelog since v2:
- Add more comments to indicate when the event should be emitted.
- Change state to frequency.
Changelog since v1:
- Use %u in TP_printk
drivers/gpu/Makefile | 1 + drivers/gpu/trace/Kconfig | 3 +++ drivers/gpu/trace/Makefile | 1 + drivers/gpu/trace/trace_gpu_frequency.c | 13 ++++++++++ include/trace/events/power.h | 33 +++++++++++++++++++++++++ 5 files changed, 51 insertions(+) create mode 100644 drivers/gpu/trace/trace_gpu_frequency.c
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile index 835c88318cec..f289a47eb031 100644 --- a/drivers/gpu/Makefile +++ b/drivers/gpu/Makefile @@ -6,3 +6,4 @@ obj-$(CONFIG_TEGRA_HOST1X) += host1x/ obj-y += drm/ vga/ obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/ obj-$(CONFIG_TRACE_GPU_MEM) += trace/ +obj-$(CONFIG_TRACE_GPU_FREQUENCY) += trace/ diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig index c24e9edd022e..ac4aec8d5845 100644 --- a/drivers/gpu/trace/Kconfig +++ b/drivers/gpu/trace/Kconfig @@ -2,3 +2,6 @@
config TRACE_GPU_MEM bool
+config TRACE_GPU_FREQUENCY
bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile index b70fbdc5847f..2b7ae69327d6 100644 --- a/drivers/gpu/trace/Makefile +++ b/drivers/gpu/trace/Makefile @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o +obj-$(CONFIG_TRACE_GPU_FREQUENCY) += trace_gpu_frequency.o diff --git a/drivers/gpu/trace/trace_gpu_frequency.c b/drivers/gpu/trace/trace_gpu_frequency.c new file mode 100644 index 000000000000..668fabd6b77a --- /dev/null +++ b/drivers/gpu/trace/trace_gpu_frequency.c @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- GPU frequency trace points
- Copyright (C) 2020 Google LLC
- */
+#include <linux/module.h>
+#define CREATE_TRACE_POINTS +#include <trace/events/power.h>
+EXPORT_TRACEPOINT_SYMBOL(gpu_frequency); diff --git a/include/trace/events/power.h b/include/trace/events/power.h index af5018aa9517..343825a76953 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h @@ -500,6 +500,39 @@ DEFINE_EVENT(dev_pm_qos_request, dev_pm_qos_remove_request,
TP_ARGS(name, type, new_value)
);
+/**
- gpu_frequency - Reports the GPU frequency in GPU clock domains.
- This event should be emitted whenever there's a GPU frequency change happens,
- or a GPU goes from idle state to active state, or vice versa.
- When the GPU goes from idle state to active state, this event should report
- the GPU frequency of the active state. When the GPU goes from active state to
- idle state, this event should report a zero frequency value.
- @frequency: New frequency (in KHz)
- @gpu_id: Id for each GPU clock domain
- */
+TRACE_EVENT(gpu_frequency,
TP_PROTO(unsigned int frequency, unsigned int gpu_id),
TP_ARGS(frequency, gpu_id),
TP_STRUCT__entry(
__field(unsigned int, frequency)
__field(unsigned int, gpu_id)
),
TP_fast_assign(
__entry->frequency = frequency;
__entry->gpu_id = gpu_id;
),
TP_printk("frequency=%u gpu_id=%u",
__entry->frequency, __entry->gpu_id)
+); #endif /* _TRACE_POWER_H */
/* This part must be outside protection */
2.29.0.rc1.297.gfa9743e501-goog
Hi there,
Per request, re-send this patch with dri-devel@ list CCed.
Thanks, Peiyong
Hi there,
For GPU drivers folks in dri-devel@ list, any input?
Thanks, Peiyong