63 lines
2.3 KiB
Diff
63 lines
2.3 KiB
Diff
|
|
From 9a7ca8a7c920360db9dcaf616ca6f1440c025043 Mon Sep 17 00:00:00 2001
|
||
|
|
From: David Hildenbrand <david@redhat.com>
|
||
|
|
Date: Thu, 25 Jul 2019 13:36:38 +0200
|
||
|
|
Subject: [PATCH] virtio-balloon: don't track subpages for the PBP
|
||
|
|
|
||
|
|
As ramblocks cannot get removed/readded while we are processing a bulk
|
||
|
|
of inflation requests, there is no more need to track the page size
|
||
|
|
in form of the number of subpages.
|
||
|
|
|
||
|
|
Suggested-by: David Gibson <david@gibson.dropbear.id.au>
|
||
|
|
Signed-off-by: David Hildenbrand <david@redhat.com>
|
||
|
|
Message-Id: <20190725113638.4702-8-david@redhat.com>
|
||
|
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
||
|
|
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||
|
|
(cherry-picked from commit 9a7ca8a7c920360db9dcaf616ca6f1440c025043)
|
||
|
|
---
|
||
|
|
hw/virtio/virtio-balloon.c | 8 +++-----
|
||
|
|
1 file changed, 3 insertions(+), 5 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
|
||
|
|
index a6282d58d4..fe9664e42c 100644
|
||
|
|
--- a/hw/virtio/virtio-balloon.c
|
||
|
|
+++ b/hw/virtio/virtio-balloon.c
|
||
|
|
@@ -36,7 +36,6 @@
|
||
|
|
|
||
|
|
typedef struct PartiallyBalloonedPage {
|
||
|
|
ram_addr_t base_gpa;
|
||
|
|
- long subpages;
|
||
|
|
unsigned long *bitmap;
|
||
|
|
} PartiallyBalloonedPage;
|
||
|
|
|
||
|
|
@@ -55,16 +54,15 @@ static PartiallyBalloonedPage *virtio_balloon_pbp_alloc(ram_addr_t base_gpa,
|
||
|
|
PartiallyBalloonedPage *pbp = g_new0(PartiallyBalloonedPage, 1);
|
||
|
|
|
||
|
|
pbp->base_gpa = base_gpa;
|
||
|
|
- pbp->subpages = subpages;
|
||
|
|
pbp->bitmap = bitmap_new(subpages);
|
||
|
|
|
||
|
|
return pbp;
|
||
|
|
}
|
||
|
|
|
||
|
|
static bool virtio_balloon_pbp_matches(PartiallyBalloonedPage *pbp,
|
||
|
|
- ram_addr_t base_gpa, long subpages)
|
||
|
|
+ ram_addr_t base_gpa)
|
||
|
|
{
|
||
|
|
- return pbp->subpages == subpages && pbp->base_gpa == base_gpa;
|
||
|
|
+ return pbp->base_gpa == base_gpa;
|
||
|
|
}
|
||
|
|
|
||
|
|
static void balloon_inflate_page(VirtIOBalloon *balloon,
|
||
|
|
@@ -106,7 +104,7 @@ static void balloon_inflate_page(VirtIOBalloon *balloon,
|
||
|
|
base_gpa = memory_region_get_ram_addr(mr) + mr_offset -
|
||
|
|
(rb_offset - rb_aligned_offset);
|
||
|
|
|
||
|
|
- if (*pbp && !virtio_balloon_pbp_matches(*pbp, base_gpa, subpages)) {
|
||
|
|
+ if (*pbp && !virtio_balloon_pbp_matches(*pbp, base_gpa)) {
|
||
|
|
/* We've partially ballooned part of a host page, but now
|
||
|
|
* we're trying to balloon part of a different one. Too hard,
|
||
|
|
* give up on the old partial page */
|
||
|
|
--
|
||
|
|
2.19.1
|
||
|
|
|