On Tue, Jun 06, 2023 at 03:17:47PM +0000, Wei Hu wrote: > Add EQ interrupt support for mana ib driver. Allocate EQs per ucontext > to receive interrupt. Attach EQ when CQ is created. Call CQ interrupt > handler when completion interrupt happens. EQs are destroyed when > ucontext is deallocated. > > The change calls some public APIs in mana ethernet driver to > allocate EQs and other resources. Ehe EQ process routine is also shared > by mana ethernet and mana ib drivers. > > Co-developed-by: Ajay Sharma <sharmaajay@xxxxxxxxxxxxx> > Signed-off-by: Ajay Sharma <sharmaajay@xxxxxxxxxxxxx> > Signed-off-by: Wei Hu <weh@xxxxxxxxxxxxx> > --- > > v2: Use ibdev_dbg to print error messages and return -ENOMEN > when kzalloc fails. <...> > + if (atomic_read(&ibcq->usecnt) == 0) { What exactly are you checking here? And in all places where you access ibcq->usecnt? > + mana_ib_gd_destroy_dma_region(mdev, cq->gdma_region); > + ibdev_dbg(ibdev, "freeing gdma cq %p\n", gc->cq_table[cq->id]); > + kfree(gc->cq_table[cq->id]); > + gc->cq_table[cq->id] = NULL; > + ib_umem_release(cq->umem); > + } > > return 0; > } > + > +void mana_ib_cq_handler(void *ctx, struct gdma_queue *gdma_cq) > +{ > + struct mana_ib_cq *cq = ctx; > + struct ib_device *ibdev = cq->ibcq.device; > + > + ibdev_dbg(ibdev, "Enter %s %d\n", __func__, __LINE__); This patch has two many debug prints, most if not all should go. Thanks