]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
xen/balloon: Support xend-based toolstack take two
authorJuergen Gross <jgross@suse.com>
Fri, 17 Jan 2020 13:49:31 +0000 (14:49 +0100)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 13 Mar 2020 05:19:20 +0000 (01:19 -0400)
BugLink: https://bugs.launchpad.net/bugs/1867051
commit eda4eabf86fd6806eaabc23fb90dd056fdac037b upstream.

Commit 3aa6c19d2f38be ("xen/balloon: Support xend-based toolstack")
tried to fix a regression with running on rather ancient Xen versions.
Unfortunately the fix was based on the assumption that xend would
just use another Xenstore node, but in reality only some downstream
versions of xend are doing that. The upstream xend does not write
that Xenstore node at all, so the problem must be fixed in another
way.

The easiest way to achieve that is to fall back to the behavior
before commit 96edd61dcf4436 ("xen/balloon: don't online new memory
initially") in case the static memory maximum can't be read.

This is achieved by setting static_max to the current number of
memory pages known by the system resulting in target_diff becoming
zero.

Fixes: 3aa6c19d2f38be ("xen/balloon: Support xend-based toolstack")
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: <stable@vger.kernel.org> # 4.13
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/xen/xen-balloon.c

index 6d12fc36821093eb006eae43ea1daa0709091862..a8d24433c8e9685e42b8e4f27054cc179b185aab 100644 (file)
@@ -94,7 +94,7 @@ static void watch_target(struct xenbus_watch *watch,
                                  "%llu", &static_max) == 1))
                        static_max >>= PAGE_SHIFT - 10;
                else
-                       static_max = new_target;
+                       static_max = balloon_stats.current_pages;
 
                target_diff = (xen_pv_domain() || xen_initial_domain()) ? 0
                                : static_max - balloon_stats.target_pages;