[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/2] virito-balloon: process all in sgs for free_page_vq
From: |
Jason Wang |
Subject: |
[PATCH 1/2] virito-balloon: process all in sgs for free_page_vq |
Date: |
Thu, 25 Nov 2021 10:20:45 +0800 |
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:
--
2.25.1
- [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq,
Jason Wang <=
Re: [PATCH 1/2] virito-balloon: process all in sgs for free_page_vq, David Hildenbrand, 2021/11/25