On Mon, Aug 14, 2023 at 10:00:19AM -0700, Selvin Xavier wrote: > Syncrhonization is required to avoid simultaneous allocation > of the PD. Add a new mutex lock to handle allocation from > the PD table. > > Signed-off-by: Kashyap Desai <kashyap.desai@xxxxxxxxxxxx> > Signed-off-by: Selvin Xavier <selvin.xavier@xxxxxxxxxxxx> > --- > drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +- > drivers/infiniband/hw/bnxt_re/qplib_res.c | 26 ++++++++++++++++++++------ > drivers/infiniband/hw/bnxt_re/qplib_res.h | 4 +++- > 3 files changed, 24 insertions(+), 8 deletions(-) This needs a fixes line, it seems like a serious bug?? > diff --git a/drivers/infiniband/hw/bnxt_re/qplib_res.c b/drivers/infiniband/hw/bnxt_re/qplib_res.c > index 6f1e8b7..79c43c2 100644 > --- a/drivers/infiniband/hw/bnxt_re/qplib_res.c > +++ b/drivers/infiniband/hw/bnxt_re/qplib_res.c > @@ -642,31 +642,44 @@ static void bnxt_qplib_init_sgid_tbl(struct bnxt_qplib_sgid_tbl *sgid_tbl, > } > > /* PDs */ > -int bnxt_qplib_alloc_pd(struct bnxt_qplib_pd_tbl *pdt, struct bnxt_qplib_pd *pd) > +int bnxt_qplib_alloc_pd(struct bnxt_qplib_res *res, struct bnxt_qplib_pd *pd) > { > + struct bnxt_qplib_pd_tbl *pdt = &res->pd_tbl; > u32 bit_num; > + int rc = 0; > > + mutex_lock(&res->pd_tbl_lock); > bit_num = find_first_bit(pdt->tbl, pdt->max); Please make a followup patch to change this into an IDA unless the pd max is really small. Don't opencode IDAs in drivers.. Jason