On 08/03/2016 12:49 AM, Jim Fehlig wrote:
Long, long ago before libxl_get_required_shadow_memory() was
made publicly available, its code was copied to the libxl driver
for calculating shadow memory requirements of HVM domains.
Long ago, libxl_get_required_shadow_memory() was exported in
libxl_utils.h and included in xen-devel packages everywhere.
Remove the copied code, which has become stale, and let libxl
provode a proper shadow memory value.
Signed-off-by: Jim Fehlig <jfehlig(a)suse.com>
---
I ensured libxl_get_required_shadow_memory() was available
as far back as Xen 4.4, which is the minimum version supported
by the libxl driver.
Cool, and FWIW, Looks good to me:
Acked-by: Joao Martins <joao.m.martins(a)oracle.com>
(Also tested an HVM guest in which codepath goes through):
src/libxl/libxl_conf.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 1344604..5202ca1 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -493,15 +493,10 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
}
}
- /*
- * The following comment and calculation were taken directly from
- * libxenlight's internal function libxl_get_required_shadow_memory():
- *
- * 256 pages (1MB) per vcpu, plus 1 page per MiB of RAM for the P2M map,
- * plus 1 page per MiB of RAM to shadow the resident processes.
- */
- b_info->shadow_memkb = 4 * (256 *
libxl_bitmap_count_set(&b_info->avail_vcpus) +
- 2 * (b_info->max_memkb / 1024));
+ /* Allow libxl to calculate shadow memory requirements */
+ b_info->shadow_memkb =
+ libxl_get_required_shadow_memory(b_info->max_memkb,
+ b_info->max_vcpus);
} else {
/*
* For compatibility with the legacy xen toolstack, default to pygrub