Re: [PATCH v2 2/2] virtio_ring: packed ring: fix virtqueue_detach_unused_buf
> On Thu, Aug 08, 2019 at 08:28:46AM -0400, Pankaj Gupta wrote: > > > > > > > > This patch makes packed ring code compatible with split ring in > > > > function > > > > 'virtqueue_detach_unused_buf_*'. > > > > > > What does that mean? What does this "fix"? > > > > Patch 1 frees the buffers When a port is unplugged from the virtio > > console device. It does this with the help of > > 'virtqueue_detach_unused_buf_split/packed' > > function. For split ring case, corresponding function decrements avail ring > > index. > > For packed ring code, this functionality is not available, so this patch > > adds the > > required support and hence help to remove the unused buffer completely. > > Explain all of this in great detail in the changelog comment. What you > have in there today does not make any sense. Sure. Will try to put in more clear words. Thanks, Pankaj > > thanks, > > greg k-h > ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v2 2/2] virtio_ring: packed ring: fix virtqueue_detach_unused_buf
On Thu, Aug 08, 2019 at 08:28:46AM -0400, Pankaj Gupta wrote: > > > > > This patch makes packed ring code compatible with split ring in function > > > 'virtqueue_detach_unused_buf_*'. > > > > What does that mean? What does this "fix"? > > Patch 1 frees the buffers When a port is unplugged from the virtio > console device. It does this with the help of > 'virtqueue_detach_unused_buf_split/packed' > function. For split ring case, corresponding function decrements avail ring > index. > For packed ring code, this functionality is not available, so this patch adds > the > required support and hence help to remove the unused buffer completely. Explain all of this in great detail in the changelog comment. What you have in there today does not make any sense. thanks, greg k-h ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v2 2/2] virtio_ring: packed ring: fix virtqueue_detach_unused_buf
> > This patch makes packed ring code compatible with split ring in function > > 'virtqueue_detach_unused_buf_*'. > > What does that mean? What does this "fix"? Patch 1 frees the buffers When a port is unplugged from the virtio console device. It does this with the help of 'virtqueue_detach_unused_buf_split/packed' function. For split ring case, corresponding function decrements avail ring index. For packed ring code, this functionality is not available, so this patch adds the required support and hence help to remove the unused buffer completely. Thanks, Pankaj > > thanks, > > greg k-h > ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Re: [PATCH v2 2/2] virtio_ring: packed ring: fix virtqueue_detach_unused_buf
On Thu, Aug 08, 2019 at 05:06:06PM +0530, Pankaj Gupta wrote: > This patch makes packed ring code compatible with split ring in function > 'virtqueue_detach_unused_buf_*'. What does that mean? What does this "fix"? thanks, greg k-h ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
[PATCH v2 2/2] virtio_ring: packed ring: fix virtqueue_detach_unused_buf
This patch makes packed ring code compatible with split ring in function 'virtqueue_detach_unused_buf_*'. Signed-off-by: Pankaj Gupta --- drivers/virtio/virtio_ring.c | 5 + 1 file changed, 5 insertions(+) diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index c8be1c4f5b55..1b98a6777b7e 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -1534,6 +1534,11 @@ static void *virtqueue_detach_unused_buf_packed(struct virtqueue *_vq) for (i = 0; i < vq->packed.vring.num; i++) { if (!vq->packed.desc_state[i].data) continue; + vq->packed.next_avail_idx--; + if (vq->packed.next_avail_idx < 0) { + vq->packed.next_avail_idx = vq->packed.vring.num - 1; + vq->packed.avail_wrap_counter ^= 1; + } /* detach_buf clears data, so grab it now. */ buf = vq->packed.desc_state[i].data; detach_buf_packed(vq, i, NULL); -- 2.21.0 ___ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization