summary refs log tree commit diff
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2019-12-12 15:17:50 +0100
committerJuergen Gross <jgross@suse.com>2019-12-13 08:39:52 +0100
commitc673ec61ade89bf2f417960f986bc25671762efb (patch)
tree34416758a6feb4200575f6c17dd42bf221e50e04
parentfa2ac657f9783f0891b2935490afe9a7fd29d3fa (diff)
downloadlinux-c673ec61ade89bf2f417960f986bc25671762efb.tar.gz
xen/balloon: fix ballooned page accounting without hotplug enabled
When CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not defined
reserve_additional_memory() will set balloon_stats.target_pages to a
wrong value in case there are still some ballooned pages allocated via
alloc_xenballooned_pages().

This will result in balloon_process() no longer be triggered when
ballooned pages are freed in batches.

Reported-by: Nicholas Tsirakis <niko.tsirakis@gmail.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
-rw-r--r--drivers/xen/balloon.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 5bae515c8e25..bed90d612e48 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -395,7 +395,8 @@ static struct notifier_block xen_memory_nb = {
 #else
 static enum bp_state reserve_additional_memory(void)
 {
-	balloon_stats.target_pages = balloon_stats.current_pages;
+	balloon_stats.target_pages = balloon_stats.current_pages +
+				     balloon_stats.target_unpopulated;
 	return BP_ECANCELED;
 }
 #endif /* CONFIG_XEN_BALLOON_MEMORY_HOTPLUG */