From 77004db8e9931a25016bb559fa2e3641a08c51e5 Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski via lttng-dev Date: Thu, 8 Sep 2022 10:23:51 +0200 Subject: [PATCH] Add new tracepoints for dma_fence Allows usage of dma_fence tracepoints from lttng. Signed-off-by: Rouven Czerwinski Signed-off-by: Mathieu Desnoyers --- include/instrumentation/events/dma_fence.h | 83 ++++++++++++++++++++++ src/probes/Kbuild | 7 ++ src/probes/lttng-probe-dma-fence.c | 32 +++++++++ 3 files changed, 122 insertions(+) create mode 100644 include/instrumentation/events/dma_fence.h create mode 100644 src/probes/lttng-probe-dma-fence.c diff --git a/include/instrumentation/events/dma_fence.h b/include/instrumentation/events/dma_fence.h new file mode 100644 index 00000000..95d94ed5 --- /dev/null +++ b/include/instrumentation/events/dma_fence.h @@ -0,0 +1,83 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM dma_fence + +#if !defined(LTTNG_TRACE_DMA_FENCE_H) || defined(TRACE_HEADER_MULTI_READ) +#define LTTNG_TRACE_DMA_FENCE_H + +#include + +LTTNG_TRACEPOINT_EVENT_CLASS(dma_fence_class, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence), + + TP_FIELDS( + ctf_string(driver, fence->ops->get_driver_name(fence)) + ctf_string(timeline, fence->ops->get_timeline_name(fence)) + ctf_integer(unsigned int, context, fence->context) + ctf_integer(unsigned int, seqno, fence->seqno) + ) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_emit, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_init, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_destroy, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_enable_signal, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_signaled, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_wait_start, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +LTTNG_TRACEPOINT_EVENT_INSTANCE(dma_fence_class, + dma_fence_wait_end, + + TP_PROTO(struct dma_fence *fence), + + TP_ARGS(fence) +) + +#endif /* LTTNG_TRACE_DMA_FENCE_H */ + +/* This part must be outside protection */ +#include diff --git a/src/probes/Kbuild b/src/probes/Kbuild index aa002534..7597389b 100644 --- a/src/probes/Kbuild +++ b/src/probes/Kbuild @@ -97,6 +97,13 @@ endif # CONFIG_X86 obj-$(CONFIG_LTTNG) += lttng-probe-signal.o +ifneq ($(CONFIG_DMA_SHARED_BUFFER),) + obj-$(CONFIG_LTTNG) += $(shell \ + if [ $(VERSION) -ge 5 \ + -o \( $VERSION -eq 4 -a $(PATCHLEVEL) -ge 9 \) ] ; then \ + echo "lttng-probe-dma-fence.o" ; fi;) +endif # CONFIG_DMA_SHARED_BUFFER + ifneq ($(CONFIG_BLOCK),) # need blk_cmd_buf_len ifneq ($(CONFIG_EVENT_TRACING),) diff --git a/src/probes/lttng-probe-dma-fence.c b/src/probes/lttng-probe-dma-fence.c new file mode 100644 index 00000000..a6c9cd12 --- /dev/null +++ b/src/probes/lttng-probe-dma-fence.c @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) + * + * probes/lttng-probe-dma-fence.c + * + * LTTng dma-fence probes. + * + * Copyright (C) 2022 Pengutronix, Rouven Czerwinski + */ + +#include +/* + * Create the tracepoint static inlines from the kernel to validate that our + * trace event macros match the kernel we run on. + */ +#include + +/* + * Create LTTng tracepoint probes. + */ +#define LTTNG_PACKAGE_BUILD +#define CREATE_TRACE_POINTS +#define TRACE_INCLUDE_PATH instrumentation/events + +#include + +MODULE_LICENSE("GPL and additional rights"); +MODULE_AUTHOR("Rouven Czerwinski "); +MODULE_DESCRIPTION("LTTng dma-fence probes"); +MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "." + __stringify(LTTNG_MODULES_MINOR_VERSION) "." + __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION) + LTTNG_MODULES_EXTRAVERSION); -- 2.34.1