linux/drivers/infiniband/hw/mlx5
Erez Shitrit 7b74a83cf5 IB/mlx5: Fetch soft WQE's on fatal error state
On fatal error the driver simulates CQE's for ULPs that rely on
completion of all their posted work-request.

For the GSI traffic, the mlx5 has its own mechanism that sends the
completions via software CQE's directly to the relevant CQ.

This should be kept in fatal error too, so the driver should simulate
such CQE's with the specified error state in order to complete GSI QP
work requests.

Without the fix the next deadlock might appears:
        schedule_timeout+0x274/0x350
        wait_for_common+0xec/0x240
        mcast_remove_one+0xd0/0x120 [ib_core]
        ib_unregister_device+0x12c/0x230 [ib_core]
        mlx5_ib_remove+0xc4/0x270 [mlx5_ib]
        mlx5_detach_device+0x184/0x1a0 [mlx5_core]
        mlx5_unload_one+0x308/0x340 [mlx5_core]
        mlx5_pci_err_detected+0x74/0xe0 [mlx5_core]

Cc: <stable@vger.kernel.org> # 4.7
Fixes: 89ea94a7b6 ("IB/mlx5: Reset flow support for IB kernel ULPs")
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-05-24 09:39:25 -06:00
..
ah.c IB/mlx5: Enable ECN capable bits for UD RoCE v2 QPs 2018-03-27 14:43:10 -06:00
cmd.c net/mlx5: Mkey creation command adjustments 2018-04-05 13:04:49 -06:00
cmd.h IB/mlx5: Device memory support in mlx5_ib 2018-04-05 13:04:49 -06:00
cong.c IB/mlx5: Change debugfs to have per port contents 2018-01-08 11:42:22 -07:00
cq.c IB/mlx5: Fetch soft WQE's on fatal error state 2018-05-24 09:39:25 -06:00
doorbell.c
gsi.c
ib_rep.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-23 11:31:58 -04:00
ib_rep.h IB/mlx5: Add proper representors support 2018-02-23 12:36:39 -08:00
ib_virt.c IB/mlx5: Restore IB guid/policy for virtual functions 2017-07-24 10:34:28 -04:00
Kconfig infiniband: mlx5: fix build errors when INFINIBAND_USER_ACCESS=m 2018-04-17 19:26:43 -06:00
mad.c IB/mlx5: Route MADs for dual port RoCE 2018-01-08 11:42:23 -07:00
main.c RDMA/mlx5: Remove debug prints of VMA pointers 2018-05-24 09:39:25 -06:00
Makefile IB/mlx5: Add basic regiser/unregister representors code 2018-02-23 12:36:39 -08:00
mem.c IB/mlx5: Simplify mlx5_ib_cont_pages 2017-09-25 11:47:24 -04:00
mlx5_ib.h IB/mlx5: Device memory mr registration support 2018-04-05 13:04:49 -06:00
mr.c RDMA/mlx5: Fix multiple NULL-ptr deref errors in rereg_mr flow 2018-04-27 11:03:15 -04:00
odp.c IB/mlx5: Move locks initialization to the corresponding stage 2018-01-03 17:26:59 -07:00
qp.c Merge branch 'k.o/for-rc' into k.o/wip/dl-for-next 2018-05-09 15:48:48 -04:00
srq.c IB/mlx5: Fix integer overflows in mlx5_ib_create_srq 2018-03-13 16:31:21 -04:00