libxl: proper accounting for the videoram
Remove the videoram from the memory target of the domains consistently,
leave the total amount of memory in maxmem.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
diff -r d740144dfc1c tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Thu Aug 26 18:56:19 2010 +0100
+++ b/tools/libxl/libxl.c Thu Aug 26 18:56:47 2010 +0100
@@ -2865,11 +2865,12 @@ retry_transaction:
libxl_xs_write(&gc, t, libxl_sprintf(&gc, "%s/memory/static-max",
dompath), "%"PRIu32, target_memkb);
}
- rc = xc_domain_memory_set_pod_target(ctx->xch, domid, (target_memkb -
videoram) / 4, NULL, NULL, NULL);
+ target_memkb -= videoram;
+ rc = xc_domain_memory_set_pod_target(ctx->xch, domid, target_memkb / 4,
NULL, NULL, NULL);
if (rc != 0) {
XL_LOG_ERRNO(ctx, XL_LOG_ERROR,
"xc_domain_memory_set_pod_target domid=%d, memkb=%d "
- "failed rc=%d\n", domid, (target_memkb - videoram) / 4,
+ "failed rc=%d\n", domid, target_memkb / 4,
rc);
abort = 1;
goto out;
@@ -2977,11 +2978,12 @@ retry_transaction:
libxl_xs_write(&gc, t, libxl_sprintf(&gc, "%s/memory/static-max",
dompath), "%"PRIu32, memorykb);
}
- rc = xc_domain_memory_set_pod_target(ctx->xch, domid, (new_target_memkb -
videoram) / 4, NULL, NULL, NULL);
+ new_target_memkb -= videoram;
+ rc = xc_domain_memory_set_pod_target(ctx->xch, domid, new_target_memkb /
4, NULL, NULL, NULL);
if (rc != 0) {
XL_LOG_ERRNO(ctx, XL_LOG_ERROR,
"xc_domain_memory_set_pod_target domid=%d, memkb=%d "
- "failed rc=%d\n", domid, (new_target_memkb - videoram) / 4,
+ "failed rc=%d\n", domid, new_target_memkb / 4,
rc);
abort = 1;
goto out;
diff -r d740144dfc1c tools/libxl/libxl_dom.c
--- a/tools/libxl/libxl_dom.c Thu Aug 26 18:56:19 2010 +0100
+++ b/tools/libxl/libxl_dom.c Thu Aug 26 18:56:47 2010 +0100
@@ -100,7 +100,7 @@ int build_post(libxl_ctx *ctx, uint32_t
ents[0] = "memory/static-max";
ents[1] = libxl_sprintf(&gc, "%d", info->max_memkb);
ents[2] = "memory/target";
- ents[3] = libxl_sprintf(&gc, "%d", info->target_memkb);
+ ents[3] = libxl_sprintf(&gc, "%d", info->target_memkb - info->video_memkb);
ents[4] = "memory/videoram";
ents[5] = libxl_sprintf(&gc, "%d", info->video_memkb);
ents[6] = "domid";
@@ -230,7 +230,7 @@ int build_hvm(libxl_ctx *ctx, uint32_t d
ret = xc_hvm_build_target_mem(
ctx->xch,
domid,
- (info->max_memkb - info->video_memkb) / 1024,
+ info->max_memkb / 1024,
(info->target_memkb - info->video_memkb) / 1024,
libxl_abs_path(&gc, (char *)info->kernel.path,
libxl_xenfirmwaredir_path()));
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|