Re: [PATCH 6/7] RDMA/bnxt_re: Update kernel user abi to pass chip context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 3, 2019 at 2:35 AM Jason Gunthorpe <jgg@xxxxxxxxxxxx> wrote:
>
> On Mon, Dec 31, 2018 at 01:10:06AM -0500, Devesh Sharma wrote:
> > User space verbs provider library would need chip context.
> > Changing the ABI to add chip version details in structure.
> > Furthermore, changing the kernel driver ucontext allocation
> > code to initializ the abi structure with appropriate values.
> >
> > Signed-off-by: Devesh Sharma <devesh.sharma@xxxxxxxxxxxx>
> >  drivers/infiniband/hw/bnxt_re/ib_verbs.c | 12 +++++++++---
> >  include/uapi/rdma/bnxt_re-abi.h          |  9 ++++++---
> >  2 files changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> > index 7a09ca7..3bec789 100644
> > +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> > @@ -3693,9 +3693,10 @@ struct ib_ucontext *bnxt_re_alloc_ucontext(struct ib_device *ibdev,
> >                                          struct ib_udata *udata)
> >  {
> >       struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev);
> > +     struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
> >       struct bnxt_re_uctx_resp resp;
> >       struct bnxt_re_ucontext *uctx;
> > -     struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr;
> > +     u32 chip_met_rev_num = 0;
> >       int rc;
> >
> >       dev_dbg(rdev_to_dev(rdev), "ABI version requested %d",
> > @@ -3720,8 +3721,13 @@ struct ib_ucontext *bnxt_re_alloc_ucontext(struct ib_device *ibdev,
> >       }
> >       spin_lock_init(&uctx->sh_lock);
> >
> > -     resp.dev_id = rdev->en_dev->pdev->devfn; /*Temp, Use idr_alloc instead*/
> > -     resp.max_qp = rdev->qplib_ctx.qpc_count;
> > +     chip_met_rev_num = rdev->chip_ctx->chip_num;
> > +     chip_met_rev_num |= ((u32)rdev->chip_ctx->chip_rev & 0xFF) <<
> > +                          BNXT_RE_CHIP_ID0_CHIP_REV_SFT;
> > +     chip_met_rev_num |= ((u32)rdev->chip_ctx->chip_metal & 0xFF) <<
> > +                          BNXT_RE_CHIP_ID0_CHIP_MET_SFT;
> > +     resp.chip_id0 = chip_met_rev_num;
> > +     resp.chip_id1 = 0; /* future extension of chip info */
> >       resp.pg_size = PAGE_SIZE;
> >       resp.cqe_sz = sizeof(struct cq_base);
> >       resp.max_cqd = dev_attr->max_cq_wqes;
> > diff --git a/include/uapi/rdma/bnxt_re-abi.h b/include/uapi/rdma/bnxt_re-abi.h
> > index a7a6111..c62b106 100644
> > +++ b/include/uapi/rdma/bnxt_re-abi.h
> > @@ -42,11 +42,14 @@
> >
> >  #include <linux/types.h>
> >
> > -#define BNXT_RE_ABI_VERSION  1
> > +#define BNXT_RE_ABI_VERSION  2
> >
> > +#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT                0x00
> > +#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT                0x10
> > +#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT                0x18
> >  struct bnxt_re_uctx_resp {
> > -     __u32 dev_id;
> > -     __u32 max_qp;
> > +     __u32 chip_id0;
> > +     __u32 chip_id1;
>
> You changed something called max_qp into chip_id1 ? How is that
> backwards compatible???
Yes, this is breaking indeed as Leon also commented. replacing with
union and ABI range check
will be implemented in V2.
>
> Where is the matching rdma-core patch for this change?
Slightly lagging behind, That will be posted along with V2.

>
> Jason




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux