On Wed, 23 Feb 2022 10:53:26 +0800, Jason Wang <jasow...@redhat.com> wrote:
>
> 在 2022/2/10 下午4:51, Xuan Zhuo 写道:
> > When calling vring_unmap_desc_packed(), it will not encounter the
> > situation that the flags contains VRING_DESC_F_INDIRECT. So remove this
> > logic.
>
>
> This seems not correct.
>
> There's a call from detach_buf_packed() that can work for indirect
> descriptors?
>

Yes, it works with indirect descriptors. But these descriptors do not contain
VRING_DESC_F_INDIRECT.

The one that contains VRING_DESC_F_INDIRECT is vq->packed.desc_extra[id].flags.
This is handled by vring_unmap_state_packed().

Thanks.

> Thanks
>
>
> >
> > Signed-off-by: Xuan Zhuo <xuanz...@linux.alibaba.com>
> > ---
> >   drivers/virtio/virtio_ring.c | 18 +++++-------------
> >   1 file changed, 5 insertions(+), 13 deletions(-)
> >
> > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> > index fadd0a7503e9..cfb028ca238e 100644
> > --- a/drivers/virtio/virtio_ring.c
> > +++ b/drivers/virtio/virtio_ring.c
> > @@ -1009,19 +1009,11 @@ static void vring_unmap_desc_packed(const struct 
> > vring_virtqueue *vq,
> >
> >     flags = le16_to_cpu(desc->flags);
> >
> > -   if (flags & VRING_DESC_F_INDIRECT) {
> > -           dma_unmap_single(vring_dma_dev(vq),
> > -                            le64_to_cpu(desc->addr),
> > -                            le32_to_cpu(desc->len),
> > -                            (flags & VRING_DESC_F_WRITE) ?
> > -                            DMA_FROM_DEVICE : DMA_TO_DEVICE);
> > -   } else {
> > -           dma_unmap_page(vring_dma_dev(vq),
> > -                          le64_to_cpu(desc->addr),
> > -                          le32_to_cpu(desc->len),
> > -                          (flags & VRING_DESC_F_WRITE) ?
> > -                          DMA_FROM_DEVICE : DMA_TO_DEVICE);
> > -   }
> > +   dma_unmap_page(vring_dma_dev(vq),
> > +                  le64_to_cpu(desc->addr),
> > +                  le32_to_cpu(desc->len),
> > +                  (flags & VRING_DESC_F_WRITE) ?
> > +                  DMA_FROM_DEVICE : DMA_TO_DEVICE);
> >   }
> >
> >   static struct vring_packed_desc *alloc_indirect_packed(unsigned int 
> > total_sg,
>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to