Commit 2a1b7c8b authored by Mike Marciniszyn's avatar Mike Marciniszyn Committed by Doug Ledford

IB/rdmavt: Add additional fields to post send trace

This fix is to get additional debugging information.

The following fields are added:
- wqe
- qpt
- num_sge
- ssn
- pid
- send_flags

These additional fields provide for more focused filtering
and triggering.

The patch also moves the trace to just before the wqe is
posted to get the most accurate information and future proofs
the code to trace all possible reserved opcodes.
Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 43a474aa
...@@ -1772,11 +1772,11 @@ static int rvt_post_one_wr(struct rvt_qp *qp, ...@@ -1772,11 +1772,11 @@ static int rvt_post_one_wr(struct rvt_qp *qp,
0); 0);
qp->s_next_psn = wqe->lpsn + 1; qp->s_next_psn = wqe->lpsn + 1;
} }
trace_rvt_post_one_wr(qp, wqe);
if (unlikely(reserved_op)) if (unlikely(reserved_op))
rvt_qp_wqe_reserve(qp, wqe); rvt_qp_wqe_reserve(qp, wqe);
else else
qp->s_avail--; qp->s_avail--;
trace_rvt_post_one_wr(qp, wqe);
smp_wmb(); /* see request builders */ smp_wmb(); /* see request builders */
qp->s_head = next; qp->s_head = next;
......
...@@ -71,10 +71,20 @@ __print_symbolic(opcode, \ ...@@ -71,10 +71,20 @@ __print_symbolic(opcode, \
wr_opcode_name(RDMA_READ_WITH_INV), \ wr_opcode_name(RDMA_READ_WITH_INV), \
wr_opcode_name(LOCAL_INV), \ wr_opcode_name(LOCAL_INV), \
wr_opcode_name(MASKED_ATOMIC_CMP_AND_SWP), \ wr_opcode_name(MASKED_ATOMIC_CMP_AND_SWP), \
wr_opcode_name(MASKED_ATOMIC_FETCH_AND_ADD)) wr_opcode_name(MASKED_ATOMIC_FETCH_AND_ADD), \
wr_opcode_name(RESERVED1), \
wr_opcode_name(RESERVED2), \
wr_opcode_name(RESERVED3), \
wr_opcode_name(RESERVED4), \
wr_opcode_name(RESERVED5), \
wr_opcode_name(RESERVED6), \
wr_opcode_name(RESERVED7), \
wr_opcode_name(RESERVED8), \
wr_opcode_name(RESERVED9), \
wr_opcode_name(RESERVED10))
#define POS_PRN \ #define POS_PRN \
"[%s] wr_id %llx qpn %x psn 0x%x lpsn 0x%x length %u opcode 0x%.2x,%s size %u avail %u head %u last %u" "[%s] wqe %p wr_id %llx send_flags %x qpn %x qpt %u psn %x lpsn %x ssn %x length %u opcode 0x%.2x,%s size %u avail %u head %u last %u pid %u num_sge %u"
TRACE_EVENT( TRACE_EVENT(
rvt_post_one_wr, rvt_post_one_wr,
...@@ -83,7 +93,9 @@ TRACE_EVENT( ...@@ -83,7 +93,9 @@ TRACE_EVENT(
TP_STRUCT__entry( TP_STRUCT__entry(
RDI_DEV_ENTRY(ib_to_rvt(qp->ibqp.device)) RDI_DEV_ENTRY(ib_to_rvt(qp->ibqp.device))
__field(u64, wr_id) __field(u64, wr_id)
__field(struct rvt_swqe *, wqe)
__field(u32, qpn) __field(u32, qpn)
__field(u32, qpt)
__field(u32, psn) __field(u32, psn)
__field(u32, lpsn) __field(u32, lpsn)
__field(u32, length) __field(u32, length)
...@@ -92,11 +104,17 @@ TRACE_EVENT( ...@@ -92,11 +104,17 @@ TRACE_EVENT(
__field(u32, avail) __field(u32, avail)
__field(u32, head) __field(u32, head)
__field(u32, last) __field(u32, last)
__field(u32, ssn)
__field(int, send_flags)
__field(pid_t, pid)
__field(int, num_sge)
), ),
TP_fast_assign( TP_fast_assign(
RDI_DEV_ASSIGN(ib_to_rvt(qp->ibqp.device)) RDI_DEV_ASSIGN(ib_to_rvt(qp->ibqp.device))
__entry->wqe = wqe;
__entry->wr_id = wqe->wr.wr_id; __entry->wr_id = wqe->wr.wr_id;
__entry->qpn = qp->ibqp.qp_num; __entry->qpn = qp->ibqp.qp_num;
__entry->qpt = qp->ibqp.qp_type;
__entry->psn = wqe->psn; __entry->psn = wqe->psn;
__entry->lpsn = wqe->lpsn; __entry->lpsn = wqe->lpsn;
__entry->length = wqe->length; __entry->length = wqe->length;
...@@ -105,20 +123,30 @@ TRACE_EVENT( ...@@ -105,20 +123,30 @@ TRACE_EVENT(
__entry->avail = qp->s_avail; __entry->avail = qp->s_avail;
__entry->head = qp->s_head; __entry->head = qp->s_head;
__entry->last = qp->s_last; __entry->last = qp->s_last;
__entry->pid = qp->pid;
__entry->ssn = wqe->ssn;
__entry->send_flags = wqe->wr.send_flags;
__entry->num_sge = wqe->wr.num_sge;
), ),
TP_printk( TP_printk(
POS_PRN, POS_PRN,
__get_str(dev), __get_str(dev),
__entry->wqe,
__entry->wr_id, __entry->wr_id,
__entry->send_flags,
__entry->qpn, __entry->qpn,
__entry->qpt,
__entry->psn, __entry->psn,
__entry->lpsn, __entry->lpsn,
__entry->ssn,
__entry->length, __entry->length,
__entry->opcode, show_wr_opcode(__entry->opcode), __entry->opcode, show_wr_opcode(__entry->opcode),
__entry->size, __entry->size,
__entry->avail, __entry->avail,
__entry->head, __entry->head,
__entry->last __entry->last,
__entry->pid,
__entry->num_sge
) )
); );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment