Re: [PATCH v1 3/6] virtio: remove flags check for unmap packed indirect desc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 23 Feb 2022 10:53:26 +0800, Jason Wang <jasowang@xxxxxxxxxx> 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 <xuanzhuo@xxxxxxxxxxxxxxxxx>
> > ---
> >   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@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization




[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux