[PATCH] common/sfc_efx/base: remove VQ index check during VQ start
Saini, Abhimanyu
abhimanyu.saini at amd.com
Tue Jul 12 07:00:22 CEST 2022
[AMD Official Use Only - General]
On 7/8/22 10:37, abhimanyu.saini at xilinx.com wrote:
> > From: Abhimanyu Saini <absaini at amd.com>
> >
> > The used/avail queue indexes are not bound by queue
> > size, because the descriptor entry index is calculated
> > by a simple modulo between queue index and queue_size
>
> "is calculated" is a bit vague since looking at the code
> I've failed to find the place where modulo operation is
> done. Don't we need to apply it these values are put
> into MCDI message?
>
The values are added to the MCDI as is and,
the modulo is performed by the hardware.
I can append the commit message to reflect the same?
> >
> > So, do not check initial used and avail queue indexes
> > against queue size because it is possible for these
> > indexes to be greater than queue size in the
> > following cases:
> > 1) The queue is created to be migrated into, or
> > 2) The client issues a qstop/qstart after running datapath
> >
> > Fixes: 4dda72dbdeab3 ("common/sfc_efx/base: add base virtio support for
> vDPA")
> > Cc: stable at dpdk.org
> >
> > Signed-off-by: Abhimanyu Saini <absaini at amd.com>
> > ---
> > drivers/common/sfc_efx/base/rhead_virtio.c | 12 +-----------
> > 1 file changed, 1 insertion(+), 11 deletions(-)
> >
> > diff --git a/drivers/common/sfc_efx/base/rhead_virtio.c
> b/drivers/common/sfc_efx/base/rhead_virtio.c
> > index 335cb74..7f08717 100644
> > --- a/drivers/common/sfc_efx/base/rhead_virtio.c
> > +++ b/drivers/common/sfc_efx/base/rhead_virtio.c
> > @@ -47,14 +47,6 @@
> > goto fail2;
> > }
> >
> > - if (evvdp != NULL) {
> > - if ((evvdp->evvd_vq_cidx > evvcp->evvc_vq_size) ||
> > - (evvdp->evvd_vq_pidx > evvcp->evvc_vq_size)) {
> > - rc = EINVAL;
> > - goto fail3;
> > - }
> > - }
> > -
> > req.emr_cmd = MC_CMD_VIRTIO_INIT_QUEUE;
> > req.emr_in_buf = payload;
> > req.emr_in_length = MC_CMD_VIRTIO_INIT_QUEUE_REQ_LEN;
> > @@ -116,15 +108,13 @@
> >
> > if (req.emr_rc != 0) {
> > rc = req.emr_rc;
> > - goto fail4;
> > + goto fail3;
> > }
> >
> > evvp->evv_vi_index = vi_index;
> >
> > return (0);
> >
> > -fail4:
> > - EFSYS_PROBE(fail4);
> > fail3:
> > EFSYS_PROBE(fail3);
> > fail2:
More information about the stable
mailing list