Message ID | 1652876035-70513-6-git-send-email-andy.pei@intel.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Maxime Coquelin |
Headers | show |
Series | add virtio_blk device support to vdpa/ifc | expand |
Context | Check | Description |
---|---|---|
ci/checkpatch | success | coding style OK |
> -----Original Message----- > From: Pei, Andy <andy.pei@intel.com> > Sent: Wednesday, May 18, 2022 8:14 PM > To: dev@dpdk.org > Cc: Xia, Chenbo <chenbo.xia@intel.com>; maxime.coquelin@redhat.com; Cao, > Gang <gang.cao@intel.com>; Liu, Changpeng <changpeng.liu@intel.com>; Xu, > Rosen <rosen.xu@intel.com>; Xiao, QimaiX <qimaix.xiao@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.pei@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.xia@intel.com>
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",
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.pei@intel.com> --- drivers/vdpa/ifc/ifcvf_vdpa.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)