[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq
From: |
David Hildenbrand |
Subject: |
Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq |
Date: |
Thu, 25 Nov 2021 09:28:59 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 |
On 25.11.21 03:20, Jason Wang wrote:
> We only process the first in sg which may lead to the bitmap of the
> pages belongs to following sgs were not cleared. This may result more
> pages to be migrated. Fixing this by process all in sgs for
> free_page_vq.
>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
> hw/virtio/virtio-balloon.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
> index c6962fcbfe..17de2558cb 100644
> --- a/hw/virtio/virtio-balloon.c
> +++ b/hw/virtio/virtio-balloon.c
> @@ -510,6 +510,7 @@ static bool get_free_page_hints(VirtIOBalloon *dev)
> VirtIODevice *vdev = VIRTIO_DEVICE(dev);
> VirtQueue *vq = dev->free_page_vq;
> bool ret = true;
> + int i;
>
> while (dev->block_iothread) {
> qemu_cond_wait(&dev->free_page_cond, &dev->free_page_lock);
> @@ -544,8 +545,10 @@ static bool get_free_page_hints(VirtIOBalloon *dev)
> }
>
> if (elem->in_num && dev->free_page_hint_status ==
> FREE_PAGE_HINT_S_START) {
> - qemu_guest_free_page_hint(elem->in_sg[0].iov_base,
> - elem->in_sg[0].iov_len);
> + for (i = 0; i < elem->in_num; i++) {
> + qemu_guest_free_page_hint(elem->in_sg[i].iov_base,
> + elem->in_sg[i].iov_len);
> + }
> }
>
> out:
>
Yes, but:
1. Linux never used more than one
2. QEMU never consumed more than one
The spec states:
"(b) The driver maps a series of pages and adds them to the free_page_vq
as individual scatter-gather input buffer entries."
However, the spec was written by someone else (Alex) as the code was
(Wei). The code was there first.
I don't particularly care what to adjust (code or spec). However, to me
it feels more like the spec is slightly wrong and it was intended like
the code is by the original code author.
But then again, I don't particularly care :)
--
Thanks,
David / dhildenb
Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq,
David Hildenbrand <=
- Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Michael S. Tsirkin, 2021/11/25
- Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, David Hildenbrand, 2021/11/25
- RE: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Wang, Wei W, 2021/11/25
- Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Michael S. Tsirkin, 2021/11/25
- Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Jason Wang, 2021/11/25
- RE: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Wang, Wei W, 2021/11/25
- Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Jason Wang, 2021/11/25
Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, Philippe Mathieu-Daudé, 2021/11/25