Skip to content

Commit

Permalink
drm/xe/trace: Print device_id in xe_trace_guc events
Browse files Browse the repository at this point in the history
In multi-gpu environments it is important to know the device
guc txn belongs to. The tracing information includes the device_id
to indicate the device the event is associated with.

v2: Use variable sized variant to display dev name(Gustavo)
v3: Pass single argument to __assign_str to fix kunit error
v4: Minor formatting tweaks

Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240607182943.3572524-5-radhakrishna.sripada@intel.com
  • Loading branch information
Radhakrishna Sripada authored and Matt Roper committed Jun 12, 2024
1 parent 3432f26 commit 3cba2f1
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 25 deletions.
11 changes: 6 additions & 5 deletions drivers/gpu/drm/xe/xe_guc_ct.c
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ static int h2g_write(struct xe_guc_ct *ct, const u32 *action, u32 len,
/* Update descriptor */
desc_write(xe, h2g, tail, h2g->info.tail);

trace_xe_guc_ctb_h2g(gt->info.id, *(action - 1), full_len,
trace_xe_guc_ctb_h2g(xe, gt->info.id, *(action - 1), full_len,
desc_read(xe, h2g, head), h2g->info.tail);

return 0;
Expand Down Expand Up @@ -684,6 +684,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
u32 g2h_len, u32 num_g2h,
struct g2h_fence *g2h_fence)
{
struct xe_device *xe = ct_to_xe(ct);
struct xe_gt *gt = ct_to_gt(ct);
struct drm_printer p = xe_gt_info_printer(gt);
unsigned int sleep_period_ms = 1;
Expand Down Expand Up @@ -711,7 +712,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
if (sleep_period_ms == 1024)
goto broken;

trace_xe_guc_ct_h2g_flow_control(h2g->info.head, h2g->info.tail,
trace_xe_guc_ct_h2g_flow_control(xe, h2g->info.head, h2g->info.tail,
h2g->info.size,
h2g->info.space,
len + GUC_CTB_HDR_LEN);
Expand All @@ -723,7 +724,7 @@ static int guc_ct_send_locked(struct xe_guc_ct *ct, const u32 *action, u32 len,
struct xe_device *xe = ct_to_xe(ct);
struct guc_ctb *g2h = &ct->ctbs.g2h;

trace_xe_guc_ct_g2h_flow_control(g2h->info.head,
trace_xe_guc_ct_g2h_flow_control(xe, g2h->info.head,
desc_read(xe, g2h, tail),
g2h->info.size,
g2h->info.space,
Expand Down Expand Up @@ -1213,8 +1214,8 @@ static int g2h_read(struct xe_guc_ct *ct, u32 *msg, bool fast_path)
g2h->info.head = (head + avail) % g2h->info.size;
desc_write(xe, g2h, head, g2h->info.head);

trace_xe_guc_ctb_g2h(ct_to_gt(ct)->info.id, action, len,
g2h->info.head, tail);
trace_xe_guc_ctb_g2h(xe, ct_to_gt(ct)->info.id,
action, len, g2h->info.head, tail);

return len;
}
Expand Down
47 changes: 27 additions & 20 deletions drivers/gpu/drm/xe/xe_trace_guc.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,17 @@
#include <linux/tracepoint.h>
#include <linux/types.h>

#include "xe_device_types.h"
#include "xe_guc_exec_queue_types.h"

#define __dev_name_xe(xe) dev_name((xe)->drm.dev)

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_PROTO(struct xe_device *xe, u32 _head, u32 _tail, u32 size, u32 space, u32 len),
TP_ARGS(xe, _head, _tail, size, space, len),

TP_STRUCT__entry(
__string(dev, __dev_name_xe(xe))
__field(u32, _head)
__field(u32, _tail)
__field(u32, size)
Expand All @@ -27,37 +31,39 @@ DECLARE_EVENT_CLASS(xe_guc_ct_flow_control,
),

TP_fast_assign(
__assign_str(dev);
__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,
TP_printk("h2g flow control: dev=%s, head=%u, tail=%u, size=%u, space=%u, len=%u",
__get_str(dev), __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)
TP_PROTO(struct xe_device *xe, u32 _head, u32 _tail, u32 size, u32 space, u32 len),
TP_ARGS(xe, _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_PROTO(struct xe_device *xe, u32 _head, u32 _tail, u32 size, u32 space, u32 len),
TP_ARGS(xe, _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,
TP_printk("g2h flow control: dev=%s, head=%u, tail=%u, size=%u, space=%u, len=%u",
__get_str(dev), __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_PROTO(struct xe_device *xe, u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
TP_ARGS(xe, gt_id, action, len, _head, tail),

TP_STRUCT__entry(
__string(dev, __dev_name_xe(xe))
__field(u8, gt_id)
__field(u32, action)
__field(u32, len)
Expand All @@ -66,29 +72,30 @@ DECLARE_EVENT_CLASS(xe_guc_ctb,
),

TP_fast_assign(
__assign_str(dev);
__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,
TP_printk("H2G CTB: dev=%s, gt%d: action=0x%x, len=%d, tail=%d, head=%d\n",
__get_str(dev), __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)
TP_PROTO(struct xe_device *xe, u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
TP_ARGS(xe, 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_PROTO(struct xe_device *xe, u8 gt_id, u32 action, u32 len, u32 _head, u32 tail),
TP_ARGS(xe, 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,
TP_printk("G2H CTB: dev=%s, gt%d: action=0x%x, len=%d, tail=%d, head=%d\n",
__get_str(dev), __entry->gt_id, __entry->action, __entry->len,
__entry->tail, __entry->_head)

);
Expand Down

0 comments on commit 3cba2f1

Please sign in to comment.