From: Zhu Yanjun <yanjun.zhu@xxxxxxxxx> This is a dead lock problem. The xa_lock first is acquired in this: {SOFTIRQ-ON-W} state was registered at: lock_acquire+0x1d2/0x5a0 _raw_spin_lock+0x33/0x80 __rxe_add_to_pool+0x183/0x230 [rdma_rxe] __ib_alloc_pd+0xf9/0x550 [ib_core] ib_mad_init_device+0x2d9/0xd20 [ib_core] add_client_context+0x2fa/0x450 [ib_core] enable_device_and_get+0x1b7/0x350 [ib_core] ib_register_device+0x757/0xaf0 [ib_core] rxe_register_device+0x2eb/0x390 [rdma_rxe] rxe_net_add+0x83/0xc0 [rdma_rxe] rxe_newlink+0x76/0x90 [rdma_rxe] nldev_newlink+0x245/0x3e0 [ib_core] rdma_nl_rcv_msg+0x2d4/0x790 [ib_core] rdma_nl_rcv+0x1ca/0x3f0 [ib_core] netlink_unicast+0x43b/0x640 netlink_sendmsg+0x7eb/0xc40 sock_sendmsg+0xe0/0x110 __sys_sendto+0x1d7/0x2b0 __x64_sys_sendto+0xdd/0x1b0 do_syscall_64+0x37/0x80 entry_SYSCALL_64_after_hwframe+0x44/0xae Then xa_lock is acquired in this: {IN-SOFTIRQ-W}: Call Trace: <TASK> dump_stack_lvl+0x44/0x57 mark_lock.part.52.cold.79+0x3c/0x46 __lock_acquire+0x1565/0x34a0 lock_acquire+0x1d2/0x5a0 _raw_spin_lock_irqsave+0x42/0x90 rxe_pool_get_index+0x72/0x1d0 [rdma_rxe] rxe_get_av+0x168/0x2a0 [rdma_rxe] rxe_requester+0x75b/0x4a90 [rdma_rxe] rxe_do_task+0x134/0x230 [rdma_rxe] tasklet_action_common.isra.12+0x1f7/0x2d0 __do_softirq+0x1ea/0xa4c run_ksoftirqd+0x32/0x60 smpboot_thread_fn+0x503/0x860 kthread+0x29b/0x340 ret_from_fork+0x1f/0x30 </TASK>