RDMA/bnxt_re: Fix hang during driver unload
Driver unload hits a hang during stress testing of load/unload.
stack trace snippet -
tasklet_kill at
ffffffff9aabb8b2
bnxt_qplib_nq_stop_irq at
ffffffffc0a805fb [bnxt_re]
bnxt_qplib_disable_nq at
ffffffffc0a80c5b [bnxt_re]
bnxt_re_dev_uninit at
ffffffffc0a67d15 [bnxt_re]
bnxt_re_remove_device at
ffffffffc0a6af1d [bnxt_re]
tasklet_kill can hang if the tasklet is scheduled after it is disabled.
Modified the sequences to disable the interrupt first and synchronize
irq before disabling the tasklet.
Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Link: https://lore.kernel.org/r/1689322969-25402-3-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>