The current balloon code tries to calculate a delta factor for the
balloon target when running in HVM mode in order to account for memory
used by the firmware.
This workaround for memory accounting doesn't work properly on a PVH
Dom0, that has a static-max value different from the target value even
at startup. Note that this is not a problem for DomUs because guests are
started with a static-max value that matches the amount of RAM in the
memory map.
Fix this by forcefully setting target_diff for Dom0, regardless of
it's mode.
Reported-by: Gabriel Bercarug <[email protected]>
Signed-off-by: Roger Pau Monné <[email protected]>
---
Cc: Gabriel Ercarug <[email protected]>
Cc: Boris Ostrovsky <[email protected]>
Cc: Juergen Gross <[email protected]>
Cc: [email protected]
---
drivers/xen/xen-balloon.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/xen/xen-balloon.c b/drivers/xen/xen-balloon.c
index b437fccd4e62..294f35ce9e46 100644
--- a/drivers/xen/xen-balloon.c
+++ b/drivers/xen/xen-balloon.c
@@ -81,7 +81,7 @@ static void watch_target(struct xenbus_watch *watch,
static_max = new_target;
else
static_max >>= PAGE_SHIFT - 10;
- target_diff = xen_pv_domain() ? 0
+ target_diff = (xen_pv_domain() || xen_initial_domain()) ? 0
: static_max - balloon_stats.target_pages;
}
--
2.18.0
On 08/08/18 13:46, Roger Pau Monne wrote:
> The current balloon code tries to calculate a delta factor for the
> balloon target when running in HVM mode in order to account for memory
> used by the firmware.
>
> This workaround for memory accounting doesn't work properly on a PVH
> Dom0, that has a static-max value different from the target value even
> at startup. Note that this is not a problem for DomUs because guests are
> started with a static-max value that matches the amount of RAM in the
> memory map.
>
> Fix this by forcefully setting target_diff for Dom0, regardless of
> it's mode.
>
> Reported-by: Gabriel Bercarug <[email protected]>
> Signed-off-by: Roger Pau Monné <[email protected]>
Reviewed-by: Juergen Gross <[email protected]>
Juergen
On 08/08/2018 07:46 AM, Roger Pau Monne wrote:
> The current balloon code tries to calculate a delta factor for the
> balloon target when running in HVM mode in order to account for memory
> used by the firmware.
>
> This workaround for memory accounting doesn't work properly on a PVH
> Dom0, that has a static-max value different from the target value even
> at startup. Note that this is not a problem for DomUs because guests are
> started with a static-max value that matches the amount of RAM in the
> memory map.
>
> Fix this by forcefully setting target_diff for Dom0, regardless of
> it's mode.
>
> Reported-by: Gabriel Bercarug <[email protected]>
> Signed-off-by: Roger Pau Monné <[email protected]>
>
Applied to for-linus-4.19
-boris