[PATCH v3 2/6] drm/xe/trace: Extract guc related traces
Gustavo Sousa
gustavo.sousa at intel.com
Fri May 31 14:34:23 UTC 2024
Quoting Radhakrishna Sripada (2024-05-30 12:13:09-03:00)
>xe_trace.h is starting to get over crowded. Move the traces
>related to guc to its own file.
>
>Suggested-by: Jani Nikula <jani.nikula at intel.com>
>Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada at intel.com>
>---
> drivers/gpu/drm/xe/Makefile | 1 +
> drivers/gpu/drm/xe/xe_guc_ct.c | 2 +-
> drivers/gpu/drm/xe/xe_trace.h | 80 -----------------------
> drivers/gpu/drm/xe/xe_trace_guc.c | 9 +++
> drivers/gpu/drm/xe/xe_trace_guc.h | 103 ++++++++++++++++++++++++++++++
> 5 files changed, 114 insertions(+), 81 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_trace_guc.c
> create mode 100644 drivers/gpu/drm/xe/xe_trace_guc.h
>
>diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>index fa9960acfe53..db77b9823f7c 100644
>--- a/drivers/gpu/drm/xe/Makefile
>+++ b/drivers/gpu/drm/xe/Makefile
>@@ -136,6 +136,7 @@ xe-y += xe_bb.o \
> xe_tile_sysfs.o \
> xe_trace.o \
> xe_trace_bo.o \
>+ xe_trace_guc.o \
> xe_ttm_sys_mgr.o \
> xe_ttm_stolen_mgr.o \
> xe_ttm_vram_mgr.o \
>diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
>index c1f258348f5c..78f79df638d5 100644
>--- a/drivers/gpu/drm/xe/xe_guc_ct.c
>+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
>@@ -29,7 +29,7 @@
> #include "xe_guc_submit.h"
> #include "xe_map.h"
> #include "xe_pm.h"
>-#include "xe_trace.h"
>+#include "xe_trace_guc.h"
>
> /* Used when a CT send wants to block and / or receive data */
> struct g2h_fence {
>diff --git a/drivers/gpu/drm/xe/xe_trace.h b/drivers/gpu/drm/xe/xe_trace.h
>index 9493cc3d6d82..8e00f0cdeb75 100644
>--- a/drivers/gpu/drm/xe/xe_trace.h
>+++ b/drivers/gpu/drm/xe/xe_trace.h
>@@ -332,86 +332,6 @@ DEFINE_EVENT(xe_hw_fence, xe_hw_fence_free,
> TP_ARGS(fence)
> );
>
>-/* GuC */
>-DECLARE_EVENT_CLASS(xe_guc_ct_flow_control,
>- TP_PROTO(u32 _head, u32 _tail, u32 size, u32 space, u32 len),
>- TP_ARGS(_head, _tail, size, space, len),
>-
>- TP_STRUCT__entry(
>- __field(u32, _head)
>- __field(u32, _tail)
>- __field(u32, size)
>- __field(u32, space)
>- __field(u32, len)
>- ),
>-
>- TP_fast_assign(
>- __entry->_head = _head;
>- __entry->_tail = _tail;
>- __entry->size = size;
>- __entry->space = space;
>- __entry->len = len;
>- ),
>-
>- TP_printk("h2g flow control: head=%u, tail=%u, size=%u, space=%u, len=%u",
>- __entry->_head, __entry->_tail, __entry->size,
>- __entry->space, __entry->len)
>-);
>-
>-DEFINE_EVENT(xe_guc_ct_flow_control, xe_guc_ct_h2g_flow_control,
>- TP_PROTO(u32 _head, u32 _tail, u32 size, u32 space, u32 len),
>- TP_ARGS(_head, _tail, size, space, len)
>-);
>-
>-DEFINE_EVENT_PRINT(xe_guc_ct_flow_control, xe_guc_ct_g2h_flow_control,
>- TP_PROTO(u32 _head, u32 _tail, u32 size, u32 space, u32 len),
>- TP_ARGS(_head, _tail, size, space, len),
>-
>- TP_printk("g2h flow control: head=%u, tail=%u, size=%u, space=%u, len=%u",
>- __entry->_head, __entry->_tail, __entry->size,
>- __entry->space, __entry->len)
>-);
>-
>-DECLARE_EVENT_CLASS(xe_guc_ctb,
>- TP_PROTO(u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
>- TP_ARGS(gt_id, action, len, _head, tail),
>-
>- TP_STRUCT__entry(
>- __field(u8, gt_id)
>- __field(u32, action)
>- __field(u32, len)
>- __field(u32, tail)
>- __field(u32, _head)
>- ),
>-
>- TP_fast_assign(
>- __entry->gt_id = gt_id;
>- __entry->action = action;
>- __entry->len = len;
>- __entry->tail = tail;
>- __entry->_head = _head;
>- ),
>-
>- TP_printk("gt%d: H2G CTB: action=0x%x, len=%d, tail=%d, head=%d\n",
>- __entry->gt_id, __entry->action, __entry->len,
>- __entry->tail, __entry->_head)
>-);
>-
>-DEFINE_EVENT(xe_guc_ctb, xe_guc_ctb_h2g,
>- TP_PROTO(u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
>- TP_ARGS(gt_id, action, len, _head, tail)
>-);
>-
>-DEFINE_EVENT_PRINT(xe_guc_ctb, xe_guc_ctb_g2h,
>- TP_PROTO(u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
>- TP_ARGS(gt_id, action, len, _head, tail),
>-
>- TP_printk("gt%d: G2H CTB: action=0x%x, len=%d, tail=%d, head=%d\n",
>- __entry->gt_id, __entry->action, __entry->len,
>- __entry->tail, __entry->_head)
>-
>-);
>-
> #endif
>
> /* This part must be outside protection */
>diff --git a/drivers/gpu/drm/xe/xe_trace_guc.c b/drivers/gpu/drm/xe/xe_trace_guc.c
>new file mode 100644
>index 000000000000..f2e2b6bd165d
>--- /dev/null
>+++ b/drivers/gpu/drm/xe/xe_trace_guc.c
>@@ -0,0 +1,9 @@
>+// SPDX-License-Identifier: GPL-2.0-only
>+/*
>+ * Copyright © 2022 Intel Corporation
s/2022/2024/
>+ */
>+
>+#ifndef __CHECKER__
>+#define CREATE_TRACE_POINTS
>+#include "xe_trace_guc.h"
>+#endif
>diff --git a/drivers/gpu/drm/xe/xe_trace_guc.h b/drivers/gpu/drm/xe/xe_trace_guc.h
>new file mode 100644
>index 000000000000..fb4976499812
>--- /dev/null
>+++ b/drivers/gpu/drm/xe/xe_trace_guc.h
>@@ -0,0 +1,103 @@
>+/* SPDX-License-Identifier: GPL-2.0-only */
>+/*
>+ * Copyright © 2022 Intel Corporation
s/2022/2024/
Reviewed-by: Gustavo Sousa <gustavo.sousa at intel.com>
>+ */
>+
>+#undef TRACE_SYSTEM
>+#define TRACE_SYSTEM xe
>+
>+#if !defined(_XE_TRACE_GUC_H_) || defined(TRACE_HEADER_MULTI_READ)
>+#define _XE_TRACE_GUC_H_
>+
>+#include <linux/tracepoint.h>
>+#include <linux/types.h>
>+
>+#include "xe_guc_exec_queue_types.h"
>+
>+DECLARE_EVENT_CLASS(xe_guc_ct_flow_control,
>+ TP_PROTO(u32 _head, u32 _tail, u32 size, u32 space, u32 len),
>+ TP_ARGS(_head, _tail, size, space, len),
>+
>+ TP_STRUCT__entry(
>+ __field(u32, _head)
>+ __field(u32, _tail)
>+ __field(u32, size)
>+ __field(u32, space)
>+ __field(u32, len)
>+ ),
>+
>+ TP_fast_assign(
>+ __entry->_head = _head;
>+ __entry->_tail = _tail;
>+ __entry->size = size;
>+ __entry->space = space;
>+ __entry->len = len;
>+ ),
>+
>+ TP_printk("h2g flow control: head=%u, tail=%u, size=%u, space=%u, len=%u",
>+ __entry->_head, __entry->_tail, __entry->size,
>+ __entry->space, __entry->len)
>+);
>+
>+DEFINE_EVENT(xe_guc_ct_flow_control, xe_guc_ct_h2g_flow_control,
>+ TP_PROTO(u32 _head, u32 _tail, u32 size, u32 space, u32 len),
>+ TP_ARGS(_head, _tail, size, space, len)
>+);
>+
>+DEFINE_EVENT_PRINT(xe_guc_ct_flow_control, xe_guc_ct_g2h_flow_control,
>+ TP_PROTO(u32 _head, u32 _tail, u32 size, u32 space, u32 len),
>+ TP_ARGS(_head, _tail, size, space, len),
>+
>+ TP_printk("g2h flow control: head=%u, tail=%u, size=%u, space=%u, len=%u",
>+ __entry->_head, __entry->_tail, __entry->size,
>+ __entry->space, __entry->len)
>+);
>+
>+DECLARE_EVENT_CLASS(xe_guc_ctb,
>+ TP_PROTO(u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
>+ TP_ARGS(gt_id, action, len, _head, tail),
>+
>+ TP_STRUCT__entry(
>+ __field(u8, gt_id)
>+ __field(u32, action)
>+ __field(u32, len)
>+ __field(u32, tail)
>+ __field(u32, _head)
>+ ),
>+
>+ TP_fast_assign(
>+ __entry->gt_id = gt_id;
>+ __entry->action = action;
>+ __entry->len = len;
>+ __entry->tail = tail;
>+ __entry->_head = _head;
>+ ),
>+
>+ TP_printk("gt%d: H2G CTB: action=0x%x, len=%d, tail=%d, head=%d\n",
>+ __entry->gt_id, __entry->action, __entry->len,
>+ __entry->tail, __entry->_head)
>+);
>+
>+DEFINE_EVENT(xe_guc_ctb, xe_guc_ctb_h2g,
>+ TP_PROTO(u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
>+ TP_ARGS(gt_id, action, len, _head, tail)
>+);
>+
>+DEFINE_EVENT_PRINT(xe_guc_ctb, xe_guc_ctb_g2h,
>+ TP_PROTO(u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
>+ TP_ARGS(gt_id, action, len, _head, tail),
>+
>+ TP_printk("gt%d: G2H CTB: action=0x%x, len=%d, tail=%d, head=%d\n",
>+ __entry->gt_id, __entry->action, __entry->len,
>+ __entry->tail, __entry->_head)
>+
>+);
>+
>+#endif
>+
>+/* This part must be outside protection */
>+#undef TRACE_INCLUDE_PATH
>+#undef TRACE_INCLUDE_FILE
>+#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/xe
>+#define TRACE_INCLUDE_FILE xe_trace_guc
>+#include <trace/define_trace.h>
>--
>2.34.1
>
More information about the Intel-xe
mailing list