lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 378/846] RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with pending cmd-bit"
    Date
    From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>

    [ Upstream commit a917dfb66c0a1fa1caacf3d71edcafcab48e6ff0 ]

    The 'cmdq->cmdq_bitmap' bitmap is 'rcfw->cmdq_depth' bits long. The size
    stored in 'cmdq->bmap_size' is the size of the bitmap in bytes.

    Remove this erroneous 'bmap_size' and use 'rcfw->cmdq_depth' directly in
    'bnxt_qplib_disable_rcfw_channel()'. Otherwise some error messages may be
    missing.

    Other uses of 'cmdq_bitmap' already take into account 'rcfw->cmdq_depth'
    directly.

    Fixes: 1ac5a4047975 ("RDMA/bnxt_re: Add bnxt_re RoCE driver")
    Link: https://lore.kernel.org/r/47ed717c3070a1d0f53e7b4c768a4fd11caf365d.1636707421.git.christophe.jaillet@wanadoo.fr
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Acked-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 6 ++----
    drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 1 -
    2 files changed, 2 insertions(+), 5 deletions(-)

    diff --git a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
    index 5d384def5e5fe..d2d39126f1852 100644
    --- a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
    +++ b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.c
    @@ -618,8 +618,6 @@ int bnxt_qplib_alloc_rcfw_channel(struct bnxt_qplib_res *res,
    if (!cmdq->cmdq_bitmap)
    goto fail;

    - cmdq->bmap_size = bmap_size;
    -
    /* Allocate one extra to hold the QP1 entries */
    rcfw->qp_tbl_size = qp_tbl_sz + 1;
    rcfw->qp_tbl = kcalloc(rcfw->qp_tbl_size, sizeof(struct bnxt_qplib_qp_node),
    @@ -667,8 +665,8 @@ void bnxt_qplib_disable_rcfw_channel(struct bnxt_qplib_rcfw *rcfw)
    iounmap(cmdq->cmdq_mbox.reg.bar_reg);
    iounmap(creq->creq_db.reg.bar_reg);

    - indx = find_first_bit(cmdq->cmdq_bitmap, cmdq->bmap_size);
    - if (indx != cmdq->bmap_size)
    + indx = find_first_bit(cmdq->cmdq_bitmap, rcfw->cmdq_depth);
    + if (indx != rcfw->cmdq_depth)
    dev_err(&rcfw->pdev->dev,
    "disabling RCFW with pending cmd-bit %lx\n", indx);

    diff --git a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
    index 9474c00465821..0c6d0b70ce890 100644
    --- a/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
    +++ b/drivers/infiniband/hw/bnxt_re/qplib_rcfw.h
    @@ -152,7 +152,6 @@ struct bnxt_qplib_cmdq_ctx {
    wait_queue_head_t waitq;
    unsigned long flags;
    unsigned long *cmdq_bitmap;
    - u32 bmap_size;
    u32 seq_num;
    };

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 00:10    [W:3.862 / U:23.636 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site