lkml.org 
[lkml]   [2019]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 48/52] IB/mlx4: Follow mirror sequence of device add during device removal
    Date
    From: Parav Pandit <parav@mellanox.com>

    [ Upstream commit 89f988d93c62384758b19323c886db917a80c371 ]

    Current code device add sequence is:

    ib_register_device()
    ib_mad_init()
    init_sriov_init()
    register_netdev_notifier()

    Therefore, the remove sequence should be,

    unregister_netdev_notifier()
    close_sriov()
    mad_cleanup()
    ib_unregister_device()

    However it is not above.
    Hence, make do above remove sequence.

    Fixes: fa417f7b520ee ("IB/mlx4: Add support for IBoE")
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Link: https://lore.kernel.org/r/20191212091214.315005-3-leon@kernel.org
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/hw/mlx4/main.c | 9 +++++----
    1 file changed, 5 insertions(+), 4 deletions(-)

    diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
    index 8d2f1e38b891c..907d99822bf0e 100644
    --- a/drivers/infiniband/hw/mlx4/main.c
    +++ b/drivers/infiniband/hw/mlx4/main.c
    @@ -3008,16 +3008,17 @@ static void mlx4_ib_remove(struct mlx4_dev *dev, void *ibdev_ptr)
    ibdev->ib_active = false;
    flush_workqueue(wq);

    - mlx4_ib_close_sriov(ibdev);
    - mlx4_ib_mad_cleanup(ibdev);
    - ib_unregister_device(&ibdev->ib_dev);
    - mlx4_ib_diag_cleanup(ibdev);
    if (ibdev->iboe.nb.notifier_call) {
    if (unregister_netdevice_notifier(&ibdev->iboe.nb))
    pr_warn("failure unregistering notifier\n");
    ibdev->iboe.nb.notifier_call = NULL;
    }

    + mlx4_ib_close_sriov(ibdev);
    + mlx4_ib_mad_cleanup(ibdev);
    + ib_unregister_device(&ibdev->ib_dev);
    + mlx4_ib_diag_cleanup(ibdev);
    +
    mlx4_qp_release_range(dev, ibdev->steer_qpn_base,
    ibdev->steer_qpn_count);
    kfree(ibdev->ib_uc_qpns_bitmap);
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-20 15:32    [W:3.243 / U:0.784 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site