]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/hns: Add trace for AEQE dumping
authorJunxian Huang <huangjunxian6@hisilicon.com>
Mon, 21 Apr 2025 13:27:47 +0000 (21:27 +0800)
committerLeon Romanovsky <leon@kernel.org>
Mon, 21 Apr 2025 18:20:27 +0000 (14:20 -0400)
Add trace for AEQE dumping.

Output example:
$ cat /sys/kernel/debug/tracing/trace
  tracer: nop

  entries-in-buffer/entries-written: 2/2   #P:128

                                 _-----=> irqs-off/BH-disabled
                               / _----=> need-resched
                               | / _---=> hardirq/softirq
                               || / _--=> preempt-depth
                               ||| / _-=> migrate-disable
                               |||| /     delay
            TASK-PID     CPU#  |||||  TIMESTAMP  FUNCTION
               | |         |   |||||     |         |
  <idle>-0       [120] d.h1.  7995.835587: hns_ae_info: event 19 aeqe:
{0x80006013,0x0,0x0,0x10d2c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}

Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://patch.msgid.link/20250421132750.1363348-4-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c
drivers/infiniband/hw/hns/hns_roce_trace.h

index ecc1e0b1df4e73ab7f7dfe7b9d176bd41533c245..5d3bf84c1aae444f53ce84351a7f7e977965fbe3 100644 (file)
@@ -6260,6 +6260,7 @@ static irqreturn_t hns_roce_v2_aeq_int(struct hns_roce_dev *hr_dev,
                eq->sub_type = sub_type;
                ++eq->cons_index;
                aeqe_found = IRQ_HANDLED;
+               trace_hns_ae_info(event_type, aeqe, eq->eqe_size);
 
                atomic64_inc(&hr_dev->dfx_cnt[HNS_ROCE_DFX_AEQE_CNT]);
 
index 56e152387db48f1e211b563dceb7752a234113d8..75c89aff68c3d6da4ba6712ea4b5d14b3a657abb 100644 (file)
@@ -85,6 +85,25 @@ DEFINE_EVENT(wqe_template, hns_srq_wqe,
                      enum hns_roce_trace_type type),
             TP_ARGS(qpn, idx, wqe, len, id, type));
 
+TRACE_EVENT(hns_ae_info,
+           TP_PROTO(int event_type, void *aeqe, unsigned int len),
+           TP_ARGS(event_type, aeqe, len),
+
+           TP_STRUCT__entry(__field(int, event_type)
+                            __array(__le32, aeqe,
+                                    HNS_ROCE_V3_EQE_SIZE / sizeof(__le32))
+                            __field(u32, len)
+           ),
+
+           TP_fast_assign(__entry->event_type = event_type;
+                          __entry->len = len / sizeof(__le32);
+                          memcpy(__entry->aeqe, aeqe, len);
+           ),
+
+           TP_printk("event %2d aeqe: %s", __entry->event_type,
+                     __print_array(__entry->aeqe, __entry->len, sizeof(__le32)))
+);
+
 #endif /* __HNS_ROCE_TRACE_H */
 
 #undef TRACE_INCLUDE_FILE