linux-stable/drivers/infiniband/sw/rxe
Zhu Yanjun 8ac0e6641c RDMA/rxe: Fix soft lockup problem due to using tasklets in softirq
When run stress tests with RXE, the following Call Traces often occur

  watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [swapper/2:0]
  ...
  Call Trace:
  <IRQ>
  create_object+0x3f/0x3b0
  kmem_cache_alloc_node_trace+0x129/0x2d0
  __kmalloc_reserve.isra.52+0x2e/0x80
  __alloc_skb+0x83/0x270
  rxe_init_packet+0x99/0x150 [rdma_rxe]
  rxe_requester+0x34e/0x11a0 [rdma_rxe]
  rxe_do_task+0x85/0xf0 [rdma_rxe]
  tasklet_action_common.isra.21+0xeb/0x100
  __do_softirq+0xd0/0x298
  irq_exit+0xc5/0xd0
  smp_apic_timer_interrupt+0x68/0x120
  apic_timer_interrupt+0xf/0x20
  </IRQ>
  ...

The root cause is that tasklet is actually a softirq. In a tasklet
handler, another softirq handler is triggered. Usually these softirq
handlers run on the same cpu core. So this will cause "soft lockup Bug".

Fixes: 8700e3e7c4 ("Soft RoCE driver")
Link: https://lore.kernel.org/r/20200212072635.682689-8-leon@kernel.org
Signed-off-by: Zhu Yanjun <yanjunz@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2020-02-13 10:51:09 -04:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rxe.c RDMA/rxe: Remove useless rxe_init_device_param assignments 2019-10-24 15:20:18 -03:00
rxe.h RDMA: Introduce ib_port_phys_state enum 2019-08-12 10:18:52 -04:00
rxe_av.c RDMA/rxe: Improve loopback marking 2019-02-04 15:57:49 -07:00
rxe_comp.c RDMA/rxe: Fix soft lockup problem due to using tasklets in softirq 2020-02-13 10:51:09 -04:00
rxe_cq.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_hdr.h RDMA: Use __packed annotation instead of __attribute__ ((packed)) 2019-03-25 21:14:12 -03:00
rxe_hw_counters.c IB/rxe: Make counters thread safe 2018-12-20 14:09:45 -07:00
rxe_hw_counters.h RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_mr.c IB: Allow calls to ib_umem_get from kernel ULPs 2020-01-16 16:14:28 +02:00
rxe_net.c net: ipv6_stub: use ip6_dst_lookup_flow instead of ip6_dst_lookup 2019-12-04 12:27:13 -08:00
rxe_net.h rdma_rxe: Use netlink messages to add/delete links 2019-02-19 20:52:19 -07:00
rxe_opcode.c IB/rxe: add RXE_START_MASK for rxe_opcode IB_OPCODE_RC_SEND_ONLY_INV 2018-04-27 14:20:47 -04:00
rxe_opcode.h
rxe_param.h Introduce maximum WQE size to check limits 2020-01-15 16:27:01 -04:00
rxe_pool.c RDMA: Convert CQ allocations to be under core responsibility 2019-06-11 16:39:49 -04:00
rxe_pool.h RDMA: Handle PD allocations by IB/core 2019-02-08 16:51:04 -07:00
rxe_qp.c RDMA/rxe: Compute the maximum sges and inline size based on the WQE size 2020-01-15 16:36:41 -04:00
rxe_queue.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_queue.h IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_recv.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_req.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_resp.c rxe: correctly calculate iCRC for unaligned payloads 2019-12-09 13:55:26 -05:00
rxe_srq.c IB: Pass only ib_udata in function prototypes 2019-04-01 15:00:47 -03:00
rxe_sysfs.c rdma_rxe: Use netlink messages to add/delete links 2019-02-19 20:52:19 -07:00
rxe_task.c RDMA/rxe: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:07 -04:00
rxe_task.h IB/rxe: Wait for tasklets to finish before tearing down QP 2016-12-12 16:31:45 -05:00
rxe_verbs.c RDMA/rxe: Increase DMA max_segment_size parameter 2019-10-28 14:52:03 -03:00
rxe_verbs.h RDMA/rxe: Fix error type of mmap_offset 2020-01-03 19:43:51 -04:00