Sleep in TR_assign not allowd WARNING: CPU: 0 PID: 1888000 at kernel/trace/ring_buffer.c:2492 rb_commit+0xc1/0x220 CPU: 0 PID: 1888000 Comm: kworker/u9:0 Kdump: loaded Tainted: G OE --------- - - 4.18.0-305.3.1.el8.x86_64 #1 l: Hardware name: Red Hat KVM, BIOS 1.13.0-2.module_el8.3.0+555+a55c8938 04/01/2014 l: Workqueue: ib-comp-unb-wq ib_cq_poll_work [ib_core] l: RIP: 0010:rb_commit+0xc1/0x220 l: RSP: 0000:ffffa8ac80f9bca0 EFLAGS: 00010202 l: RAX: ffff8951c7c01300 RBX: ffff8951c7c14a00 RCX: 0000000000000246 l: RDX: ffff8951c707c000 RSI: ffff8951c707c57c RDI: ffff8951c7c14a00 l: RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 l: R10: ffff8951c7c01300 R11: 0000000000000001 R12: 0000000000000246 l: R13: 0000000000000000 R14: ffffffff964c70c0 R15: 0000000000000000 l: FS: 0000000000000000(0000) GS:ffff8951fbc00000(0000) knlGS:0000000000000000 l: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 l: CR2: 00007f20e8f39010 CR3: 000000002ca10005 CR4: 0000000000170ef0 l: Call Trace: l: ring_buffer_unlock_commit+0x1d/0xa0 l: trace_buffer_unlock_commit_regs+0x3b/0x1b0 l: trace_event_buffer_commit+0x67/0x1d0 l: trace_event_raw_event_ib_mad_recv_done_handler+0x11c/0x160 [ib_core] l: ib_mad_recv_done+0x48b/0xc10 [ib_core] l: ? trace_event_raw_event_cq_poll+0x6f/0xb0 [ib_core] l: __ib_process_cq+0x91/0x1c0 [ib_core] l: ib_cq_poll_work+0x26/0x80 [ib_core] l: process_one_work+0x1a7/0x360 l: ? create_worker+0x1a0/0x1a0 l: worker_thread+0x30/0x390 l: ? create_worker+0x1a0/0x1a0 l: kthread+0x116/0x130 l: ? kthread_flush_work_fn+0x10/0x10 l: ret_from_fork+0x35/0x40 l: ---[ end trace 78ba8509d3830a16 ]--- Signed-off-by: Leonid Ravich <lravich@xxxxxxxxx> --- drivers/infiniband/core/mad.c | 3 --- include/trace/events/ib_mad.h | 13 ++++--------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index 1893aa613ad7..3937b40b93c1 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c @@ -59,7 +59,6 @@ static void create_mad_addr_info(struct ib_mad_send_wr_private *mad_send_wr, struct ib_mad_qp_info *qp_info, struct trace_event_raw_ib_mad_send_template *entry) { - u16 pkey; struct ib_device *dev = qp_info->port_priv->device; u32 pnum = qp_info->port_priv->port_num; struct ib_ud_wr *wr = &mad_send_wr->send_wr; @@ -69,8 +68,6 @@ static void create_mad_addr_info(struct ib_mad_send_wr_private *mad_send_wr, /* These are common */ entry->sl = attr.sl; - ib_query_pkey(dev, pnum, wr->pkey_index, &pkey); - entry->pkey = pkey; entry->rqpn = wr->remote_qpn; entry->rqkey = wr->remote_qkey; entry->dlid = rdma_ah_get_dlid(&attr); diff --git a/include/trace/events/ib_mad.h b/include/trace/events/ib_mad.h index 59363a083ecb..d92691c78cff 100644 --- a/include/trace/events/ib_mad.h +++ b/include/trace/events/ib_mad.h @@ -49,7 +49,6 @@ DECLARE_EVENT_CLASS(ib_mad_send_template, __field(int, retries_left) __field(int, max_retries) __field(int, retry) - __field(u16, pkey) ), TP_fast_assign( @@ -89,7 +88,7 @@ DECLARE_EVENT_CLASS(ib_mad_send_template, "hdr : base_ver 0x%x class 0x%x class_ver 0x%x " \ "method 0x%x status 0x%x class_specific 0x%x tid 0x%llx " \ "attr_id 0x%x attr_mod 0x%x => dlid 0x%08x sl %d "\ - "pkey 0x%x rpqn 0x%x rqpkey 0x%x", + "rpqn 0x%x rqpkey 0x%x", __entry->dev_index, __entry->port_num, __entry->qp_num, __entry->agent_priv, be64_to_cpu(__entry->wrtid), __entry->retries_left, __entry->max_retries, @@ -100,7 +99,7 @@ DECLARE_EVENT_CLASS(ib_mad_send_template, be16_to_cpu(__entry->class_specific), be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id), be32_to_cpu(__entry->attr_mod), - be32_to_cpu(__entry->dlid), __entry->sl, __entry->pkey, + be32_to_cpu(__entry->dlid), __entry->sl, __entry->rqpn, __entry->rqkey ) ); @@ -204,7 +203,6 @@ TRACE_EVENT(ib_mad_recv_done_handler, __field(u16, wc_status) __field(u32, slid) __field(u32, dev_index) - __field(u16, pkey) ), TP_fast_assign( @@ -224,9 +222,6 @@ TRACE_EVENT(ib_mad_recv_done_handler, __entry->slid = wc->slid; __entry->src_qp = wc->src_qp; __entry->sl = wc->sl; - ib_query_pkey(qp_info->port_priv->device, - qp_info->port_priv->port_num, - wc->pkey_index, &__entry->pkey); __entry->wc_status = wc->status; ), @@ -234,7 +229,7 @@ TRACE_EVENT(ib_mad_recv_done_handler, "base_ver 0x%02x class 0x%02x class_ver 0x%02x " \ "method 0x%02x status 0x%04x class_specific 0x%04x " \ "tid 0x%016llx attr_id 0x%04x attr_mod 0x%08x " \ - "slid 0x%08x src QP%d, sl %d pkey 0x%04x", + "slid 0x%08x src QP%d, sl %d", __entry->dev_index, __entry->port_num, __entry->qp_num, __entry->wc_status, __entry->length, @@ -244,7 +239,7 @@ TRACE_EVENT(ib_mad_recv_done_handler, be16_to_cpu(__entry->class_specific), be64_to_cpu(__entry->tid), be16_to_cpu(__entry->attr_id), be32_to_cpu(__entry->attr_mod), - __entry->slid, __entry->src_qp, __entry->sl, __entry->pkey + __entry->slid, __entry->src_qp, __entry->sl ) ); -- 2.34.1