> -----Original Message----- > From: Pei, Andy <andy....@intel.com> > Sent: Wednesday, May 18, 2022 8:14 PM > To: dev@dpdk.org > Cc: Xia, Chenbo <chenbo....@intel.com>; maxime.coque...@redhat.com; Cao, > Gang <gang....@intel.com>; Liu, Changpeng <changpeng....@intel.com>; Xu, > Rosen <rosen...@intel.com>; Xiao, QimaiX <qimaix.x...@intel.com> > Subject: [PATCH v8 05/13] vdpa/ifc: add vDPA interrupt relay for blk > device > > For the net device type, only interrupt of rxq needed to be relayed. > But for block, since all the queues are used for both read and write > requests. Interrupt of all queues needed to be relayed. > > Signed-off-by: Andy Pei <andy....@intel.com> > --- > drivers/vdpa/ifc/ifcvf_vdpa.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/vdpa/ifc/ifcvf_vdpa.c b/drivers/vdpa/ifc/ifcvf_vdpa.c > index 350214a..509a1ed 100644 > --- a/drivers/vdpa/ifc/ifcvf_vdpa.c > +++ b/drivers/vdpa/ifc/ifcvf_vdpa.c > @@ -369,6 +369,7 @@ struct rte_vdpa_dev_info { > irq_set->index = VFIO_PCI_MSIX_IRQ_INDEX; > irq_set->start = 0; > fd_ptr = (int *)&irq_set->data; > + /* The first interrupt is for the configure space change > notification */ > fd_ptr[RTE_INTR_VEC_ZERO_OFFSET] = > rte_intr_fd_get(internal->pdev->intr_handle); > > @@ -378,7 +379,13 @@ struct rte_vdpa_dev_info { > for (i = 0; i < nr_vring; i++) { > rte_vhost_get_vhost_vring(internal->vid, i, &vring); > fd_ptr[RTE_INTR_VEC_RXTX_OFFSET + i] = vring.callfd; > - if ((i & 1) == 0 && m_rx == true) { > + if (m_rx == true && > + ((i & 1) == 0 || internal->hw.device_type == IFCVF_BLK)) > { > + /* For the net we only need to relay rx queue, > + * which will change the mem of VM. > + * For the blk we need to relay all the read cmd > + * of each queue > + */ > fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); > if (fd < 0) { > DRV_LOG(ERR, "can't setup eventfd: %s", > -- > 1.8.3.1
Reviewed-by: Chenbo Xia <chenbo....@intel.com>