RDS: change spin_lock to spin_lock_bh
softirq can occur when holding rds_ib_mr_pool.busy_lock
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff815167e3>] xen_hvm_callback_vector+0x13/0x20
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff81040fe9>] ? __ticket_spin_lock+0x19/0x20
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff8150cfae>] ? _raw_spin_lock+0xe/0x20
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03d05fa>] ? rds_ib_free_mr+0x3a/0x180 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03898f0>] ? rds_destroy_mr+0xb0/0xc0 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa0389a08>] ? rds_rdma_unuse+0xd8/0x100 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa0384660>] ? rds_recv_local+0x180/0x310 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03850ed>] ? rds_recv_incoming+0x7d/0x290 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03cb194>] ? rds_ib_process_recv+0x2b4/0x340 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03cccb2>] ? rds_ib_recv_cqe_handler+0x152/0x220 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03c7fc6>] ? poll_cq+0x66/0xe0 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03c80d9>] ? rds_ib_rx+0x99/0x210 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03c82da>] ? rds_ib_tasklet_fn_recv+0x3a/0x50 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff8107568d>] ? tasklet_action+0xcd/0x110
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff81075117>] ? __do_softirq+0xb7/0x210
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff815166bc>] ? call_softirq+0x1c/0x30
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff810173b5>] ? do_softirq+0x65/0xa0
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff81074f1d>] ? irq_exit+0xbd/0xe0
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff812fa735>] ? xen_evtchn_do_upcall+0x35/0x50
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff815167e3>] ? xen_hvm_callback_vector+0x13/0x20
Mar 29 21:53:11 scac10db01vm03 kernel: <EOI> [<
ffffffff81040fdd>] ? __ticket_spin_lock+0xd/0x20
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff8150cfae>] ? _raw_spin_lock+0xe/0x20
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03d096f>] ? rds_ib_alloc_fmr+0xff/0x530 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa03d0e52>] ? rds_ib_get_mr+0xb2/0x190 [rds_rdma]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa038a0f1>] ? __rds_rdma_map+0x241/0x360 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa038a377>] ? rds_get_mr+0x57/0x60 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffffa0380360>] ? rds_setsockopt+0x160/0x250 [rds]
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff812048fb>] ? selinux_socket_setsockopt+0x4b/0x60
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff81429e8f>] ? sys_setsockopt+0x7f/0xe0
Mar 29 21:53:11 scac10db01vm03 kernel: [<
ffffffff81515482>] ? system_call_fastpath+0x16/0x1b
We need to avoid the entrance of softirq when taking busy_lock in rds_ib_alloc_fmr()
Orabug:
21795851
Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com>
Reviewed-by: Chien-Hua Yen <chien.yen@oracle.com>
Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>