> -----Original Message----- > From: Maxime Coquelin <maxime.coque...@redhat.com> > Sent: Monday, May 17, 2021 03:38 PM > To: Balazs Nemeth <bnem...@redhat.com>; dev@dpdk.org; Ling, WeiX > <weix.l...@intel.com> > Subject: Re: [dpdk-dev] [PATCH] vhost: fix invalid use of stored last used > index > > Hi Ling, > > > On 5/14/21 6:02 PM, Balazs Nemeth wrote: > > The optimization introduced by commit d18db8049c7c ("vhost: read last > > used index once") didn't account for the fact that > > vhost_flush_enqueue_shadow_packed increments the last_used_idx. For > > this reason, store last_used_idx after the potential call to > > vhost_flush_enqueue_shadow_packed. > > > > Fixes: d18db8049c7c ("vhost: read last used index once") > > Signed-off-by: Balazs Nemeth <bnem...@redhat.com> > > --- > > lib/vhost/virtio_net.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/lib/vhost/virtio_net.c b/lib/vhost/virtio_net.c index > > abfd67d38c..8da8a86a10 100644 > > --- a/lib/vhost/virtio_net.c > > +++ b/lib/vhost/virtio_net.c > > @@ -218,14 +218,17 @@ vhost_flush_enqueue_batch_packed(struct > > virtio_net *dev, { > > uint16_t i; > > uint16_t flags; > > - uint16_t last_used_idx = vq->last_used_idx; > > - struct vring_packed_desc *desc_base = &vq- > >desc_packed[last_used_idx]; > > + uint16_t last_used_idx; > > + struct vring_packed_desc *desc_base; > > > > if (vq->shadow_used_idx) { > > do_data_copy_enqueue(dev, vq); > > vhost_flush_enqueue_shadow_packed(dev, vq); > > } > > > > + last_used_idx = vq->last_used_idx; > > + desc_base = &vq->desc_packed[last_used_idx]; > > + > > flags = PACKED_DESC_ENQUEUE_USED_FLAG(vq- > >used_wrap_counter); > > > > vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) { > > > > Could you please confirm the patch fixes the issue you reported? > > Thanks, > Maxime
Hi Maxime, Apply your patch https://patches.dpdk.org/project/dpdk/patch/83fa6253725a7bc69bccb7897f380422354a2898.1621008025.git.bnem...@redhat.com/ based on DPDK-21.05-rc3(7989b7e7da9b), tested PASSED. Regards, Ling Wei