* [PATCH] libxenlight: implement libxl_set_memory_target
@ 2009-12-08 18:23 Stefano Stabellini
0 siblings, 0 replies; 8+ messages in thread
From: Stefano Stabellini @ 2009-12-08 18:23 UTC (permalink / raw)
To: xen-devel
Hi all,
this patch adds a target_memkb parameter to libxl_domain_build_info to
set the target memory for the VM at build time and a new function
called libxl_set_memory_target to dynamically modify the memory target
of a VM at run time.
Finally a new command "mem-set" is added to xl that calls directly
libxl_set_memory_target.
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
---
diff -r fe3c8ba27d2f tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Tue Dec 08 17:02:15 2009 +0000
+++ b/tools/libxl/libxl.c Tue Dec 08 17:14:35 2009 +0000
@@ -935,6 +935,7 @@
memset(&b_info, 0x00, sizeof(libxl_domain_build_info));
b_info.max_vcpus = 1;
b_info.max_memkb = 32 * 1024;
+ b_info.target_memkb = b_info.max_memkb;
b_info.kernel = "/usr/lib/xen/boot/ioemu-stubdom.gz";
b_info.u.pv.cmdline = libxl_sprintf(ctx, " -d %d", info->domid);
b_info.u.pv.ramdisk = "";
@@ -2264,6 +2265,7 @@
b_info->vpt_align = -1;
b_info->max_vcpus = 1;
b_info->max_memkb = 32 * 1024;
+ b_info->target_memkb = b_info->max_memkb;
if (c_info->hvm) {
b_info->shadow_memkb = libxl_get_required_shadow_memory(b_info->max_memkb, b_info->max_vcpus);
b_info->video_memkb = 8 * 1024;
@@ -2356,4 +2358,22 @@
console->build_state = state;
}
+int libxl_set_memory_target(struct libxl_ctx *ctx, uint32_t domid, uint32_t target_memkb)
+{
+ int rc = 0;
+ uint32_t videoram;
+ char *videoram_s = NULL;
+ char *dompath = libxl_xs_get_dompath(ctx, domid);
+ videoram_s = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/memory/videoram", dompath));
+ if (!videoram_s)
+ return -1;
+ videoram = atoi(videoram_s);
+
+ libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/memory/target", dompath), "%lu", target_memkb);
+ if ((rc = xc_domain_setmaxmem(ctx->xch, domid, target_memkb + LIBXL_MAXMEM_CONSTANT)) != 0) return rc;
+ rc = xc_domain_memory_set_pod_target(ctx->xch, domid, (target_memkb - videoram) / 4, NULL, NULL, NULL);
+ return rc;
+}
+
+
diff -r fe3c8ba27d2f tools/libxl/libxl.h
--- a/tools/libxl/libxl.h Tue Dec 08 17:02:15 2009 +0000
+++ b/tools/libxl/libxl.h Tue Dec 08 17:14:35 2009 +0000
@@ -66,6 +66,7 @@
int max_vcpus;
int cur_vcpus;
uint32_t max_memkb;
+ uint32_t target_memkb;
uint32_t video_memkb;
uint32_t shadow_memkb;
const char *kernel;
@@ -305,6 +306,8 @@
int libxl_domain_pause(struct libxl_ctx *ctx, uint32_t domid);
int libxl_domain_unpause(struct libxl_ctx *ctx, uint32_t domid);
+int libxl_set_memory_target(struct libxl_ctx *ctx, uint32_t domid, uint32_t target_memkb);
+
int libxl_console_attach(struct libxl_ctx *ctx, uint32_t domid, int cons_num);
struct libxl_dominfo * libxl_domain_list(struct libxl_ctx *ctx, int *nb_domain);
diff -r fe3c8ba27d2f tools/libxl/libxl_dom.c
--- a/tools/libxl/libxl_dom.c Tue Dec 08 17:02:15 2009 +0000
+++ b/tools/libxl/libxl_dom.c Tue Dec 08 17:14:35 2009 +0000
@@ -52,7 +52,7 @@
if (info->vpt_align != -1)
xc_set_hvm_param(ctx->xch, domid, HVM_PARAM_VPT_ALIGN, (unsigned long) info->vpt_align);
xc_domain_max_vcpus(ctx->xch, domid, info->max_vcpus);
- xc_domain_setmaxmem(ctx->xch, domid, info->max_memkb + info->video_memkb);
+ xc_domain_setmaxmem(ctx->xch, domid, info->target_memkb + LIBXL_MAXMEM_CONSTANT);
xc_domain_set_memmap_limit(ctx->xch, domid,
(info->hvm) ? info->max_memkb :
(info->max_memkb + info->u.pv.slack_memkb));
@@ -81,7 +81,9 @@
ents[0] = "memory/static-max";
ents[1] = libxl_sprintf(ctx, "%d", info->max_memkb);
ents[2] = "memory/target";
- ents[3] = libxl_sprintf(ctx, "%d", info->max_memkb); /* PROBABLY WRONG */
+ ents[3] = libxl_sprintf(ctx, "%d", info->target_memkb);
+ ents[2] = "memory/videoram";
+ ents[3] = libxl_sprintf(ctx, "%d", info->video_memkb);
ents[4] = "domid";
ents[5] = libxl_sprintf(ctx, "%d", domid);
ents[6] = "store/port";
@@ -145,7 +147,7 @@
{
int ret;
- ret = xc_hvm_build(ctx->xch, domid, info->max_memkb / 1024, info->kernel);
+ ret = xc_hvm_build_target_mem(ctx->xch, domid, (info->max_memkb - info->video_memkb) / 1024, (info->target_memkb - info->video_memkb) / 1024, info->kernel);
if (ret) {
XL_LOG_ERRNOVAL(ctx, XL_LOG_ERROR, ret, "hvm building failed");
return ERROR_FAIL;
diff -r fe3c8ba27d2f tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h Tue Dec 08 17:02:15 2009 +0000
+++ b/tools/libxl/libxl_internal.h Tue Dec 08 17:14:35 2009 +0000
@@ -31,6 +31,7 @@
#define LIBXL_DEVICE_MODEL_START_TIMEOUT 10
#define LIBXL_XENCONSOLE_LIMIT 1048576
#define LIBXL_XENCONSOLE_PROTOCOL "vt100"
+#define LIBXL_MAXMEM_CONSTANT (1 * 1024 * 1024)
#define QEMU_SIGNATURE "QemuDeviceModelRecord"
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
diff -r fe3c8ba27d2f tools/libxl/xl.c
--- a/tools/libxl/xl.c Tue Dec 08 17:02:15 2009 +0000
+++ b/tools/libxl/xl.c Tue Dec 08 17:14:35 2009 +0000
@@ -85,6 +85,7 @@
printf("vpt_align: %d\n", b_info->vpt_align);
printf("max_vcpus: %d\n", b_info->max_vcpus);
printf("max_memkb: %d\n", b_info->max_memkb);
+ printf("target_memkb: %d\n", b_info->target_memkb);
printf("kernel: %s\n", b_info->kernel);
printf("hvm: %d\n", b_info->hvm);
@@ -283,8 +284,10 @@
if (config_lookup_int (&config, "vcpus", &l) == CONFIG_TRUE)
b_info->max_vcpus = l;
- if (config_lookup_int (&config, "memory", &l) == CONFIG_TRUE)
+ if (config_lookup_int (&config, "memory", &l) == CONFIG_TRUE) {
b_info->max_memkb = l * 1024;
+ b_info->target_memkb = b_info->max_memkb;
+ }
if (config_lookup_int (&config, "shadow_memory", &l) == CONFIG_TRUE)
b_info->shadow_memkb = l * 1024;
@@ -756,6 +759,7 @@
printf(" restore restore a domain from a saved state\n\n");
printf(" cd-insert insert a cdrom into a guest's cd drive\n\n");
printf(" cd-eject eject a cdrom from a guest's cd drive\n\n");
+ printf(" mem-set set the current memory usage for a domain\n\n");
} else if(!strcmp(command, "create")) {
printf("Usage: xl create <ConfigFile> [options] [vars]\n\n");
printf("Create a domain based on <ConfigFile>.\n\n");
@@ -804,7 +808,52 @@
} else if (!strcmp(command, "cd-eject")) {
printf("Usage: xl cd-eject <Domain> <VirtualDevice>\n\n");
printf("Eject a cdrom from a guest's cd drive.\n\n");
+ } else if (!strcmp(command, "mem-set")) {
+ printf("Usage: xl mem-set <Domain> <MemKB>\n\n");
+ printf("Set the current memory usage for a domain.\n\n");
}
+}
+
+void set_memory_target(char *p, char *mem)
+{
+ struct libxl_ctx ctx;
+ uint32_t domid;
+
+ libxl_ctx_init(&ctx);
+ libxl_ctx_set_log(&ctx, log_callback, NULL);
+
+ if (libxl_param_to_domid(&ctx, p, &domid) < 0) {
+ fprintf(stderr, "%s is an invalid domain identifier\n", p);
+ exit(2);
+ }
+ libxl_set_memory_target(&ctx, domid, atoi(mem));
+}
+
+int main_memset(int argc, char **argv)
+{
+ int opt = 0;
+ char *p = NULL, *mem;
+
+ while ((opt = getopt(argc, argv, "h:")) != -1) {
+ switch (opt) {
+ case 'h':
+ help("mem-set");
+ exit(0);
+ default:
+ fprintf(stderr, "option not supported\n");
+ break;
+ }
+ }
+ if (optind >= argc - 1) {
+ help("mem-set");
+ exit(2);
+ }
+
+ p = argv[optind];
+ mem = argv[optind + 1];
+
+ set_memory_target(p, mem);
+ exit(0);
}
void console(char *p, int cons_num)
@@ -1436,6 +1485,8 @@
main_cd_insert(argc - 1, argv + 1);
} else if (!strcmp(argv[1], "cd-eject")) {
main_cd_eject(argc - 1, argv + 1);
+ } else if (!strcmp(argv[1], "mem-set")) {
+ main_memset(argc - 1, argv + 1);
} else if (!strcmp(argv[1], "help")) {
if (argc > 2)
help(argv[2]);
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
[not found] <20091208200031.4903B5980EB@homiemail-mx11.g.dreamhost.com>
@ 2009-12-08 20:29 ` Andres Lagar-Cavilla
2009-12-09 13:19 ` Stefano Stabellini
0 siblings, 1 reply; 8+ messages in thread
From: Andres Lagar-Cavilla @ 2009-12-08 20:29 UTC (permalink / raw)
To: xen-devel, Stefano Stabellini, Vincent Hanquez
Hi,
couple of comments:
- PV domains without videoram won't be able to use this
- Further, doesn't the PV domain build function need to use
target_memkb? (That's my read of what xend does at least)
- Finally, LIBXL_MAXMEM_CONSTANT looks like an "evil constant we should
avoid". Where did it come from?
Andres
> Hi all,
> this patch adds a target_memkb parameter to libxl_domain_build_info to
> set the target memory for the VM at build time and a new function
> called libxl_set_memory_target to dynamically modify the memory target
> of a VM at run time.
> Finally a new command "mem-set" is added to xl that calls directly
> libxl_set_memory_target.
>
> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>
> ---
>
> diff -r fe3c8ba27d2f tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c Tue Dec 08 17:02:15 2009 +0000
> +++ b/tools/libxl/libxl.c Tue Dec 08 17:14:35 2009 +0000
> @@ -935,6 +935,7 @@
> memset(&b_info, 0x00, sizeof(libxl_domain_build_info));
> b_info.max_vcpus = 1;
> b_info.max_memkb = 32 * 1024;
> + b_info.target_memkb = b_info.max_memkb;
> b_info.kernel = "/usr/lib/xen/boot/ioemu-stubdom.gz";
> b_info.u.pv.cmdline = libxl_sprintf(ctx, " -d %d", info->domid);
> b_info.u.pv.ramdisk = "";
> @@ -2264,6 +2265,7 @@
> b_info->vpt_align = -1;
> b_info->max_vcpus = 1;
> b_info->max_memkb = 32 * 1024;
> + b_info->target_memkb = b_info->max_memkb;
> if (c_info->hvm) {
> b_info->shadow_memkb = libxl_get_required_shadow_memory(b_info->max_memkb, b_info->max_vcpus);
> b_info->video_memkb = 8 * 1024;
> @@ -2356,4 +2358,22 @@
> console->build_state = state;
> }
>
> +int libxl_set_memory_target(struct libxl_ctx *ctx, uint32_t domid, uint32_t target_memkb)
> +{
> + int rc = 0;
> + uint32_t videoram;
> + char *videoram_s = NULL;
> + char *dompath = libxl_xs_get_dompath(ctx, domid);
>
> + videoram_s = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/memory/videoram", dompath));
> + if (!videoram_s)
> + return -1;
> + videoram = atoi(videoram_s);
> +
> + libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/memory/target", dompath), "%lu", target_memkb);
> + if ((rc = xc_domain_setmaxmem(ctx->xch, domid, target_memkb + LIBXL_MAXMEM_CONSTANT)) != 0) return rc;
> + rc = xc_domain_memory_set_pod_target(ctx->xch, domid, (target_memkb - videoram) / 4, NULL, NULL, NULL);
> + return rc;
> +}
> +
> +
> diff -r fe3c8ba27d2f tools/libxl/libxl.h
> --- a/tools/libxl/libxl.h Tue Dec 08 17:02:15 2009 +0000
> +++ b/tools/libxl/libxl.h Tue Dec 08 17:14:35 2009 +0000
> @@ -66,6 +66,7 @@
> int max_vcpus;
> int cur_vcpus;
> uint32_t max_memkb;
> + uint32_t target_memkb;
> uint32_t video_memkb;
> uint32_t shadow_memkb;
> const char *kernel;
> @@ -305,6 +306,8 @@
> int libxl_domain_pause(struct libxl_ctx *ctx, uint32_t domid);
> int libxl_domain_unpause(struct libxl_ctx *ctx, uint32_t domid);
>
> +int libxl_set_memory_target(struct libxl_ctx *ctx, uint32_t domid, uint32_t target_memkb);
> +
> int libxl_console_attach(struct libxl_ctx *ctx, uint32_t domid, int cons_num);
>
> struct libxl_dominfo * libxl_domain_list(struct libxl_ctx *ctx, int *nb_domain);
> diff -r fe3c8ba27d2f tools/libxl/libxl_dom.c
> --- a/tools/libxl/libxl_dom.c Tue Dec 08 17:02:15 2009 +0000
> +++ b/tools/libxl/libxl_dom.c Tue Dec 08 17:14:35 2009 +0000
> @@ -52,7 +52,7 @@
> if (info->vpt_align != -1)
> xc_set_hvm_param(ctx->xch, domid, HVM_PARAM_VPT_ALIGN, (unsigned long) info->vpt_align);
> xc_domain_max_vcpus(ctx->xch, domid, info->max_vcpus);
> - xc_domain_setmaxmem(ctx->xch, domid, info->max_memkb + info->video_memkb);
> + xc_domain_setmaxmem(ctx->xch, domid, info->target_memkb + LIBXL_MAXMEM_CONSTANT);
> xc_domain_set_memmap_limit(ctx->xch, domid,
> (info->hvm) ? info->max_memkb :
> (info->max_memkb + info->u.pv.slack_memkb));
> @@ -81,7 +81,9 @@
> ents[0] = "memory/static-max";
> ents[1] = libxl_sprintf(ctx, "%d", info->max_memkb);
> ents[2] = "memory/target";
> - ents[3] = libxl_sprintf(ctx, "%d", info->max_memkb); /* PROBABLY WRONG */
> + ents[3] = libxl_sprintf(ctx, "%d", info->target_memkb);
> + ents[2] = "memory/videoram";
> + ents[3] = libxl_sprintf(ctx, "%d", info->video_memkb);
> ents[4] = "domid";
> ents[5] = libxl_sprintf(ctx, "%d", domid);
> ents[6] = "store/port";
> @@ -145,7 +147,7 @@
> {
> int ret;
>
> - ret = xc_hvm_build(ctx->xch, domid, info->max_memkb / 1024, info->kernel);
> + ret = xc_hvm_build_target_mem(ctx->xch, domid, (info->max_memkb - info->video_memkb) / 1024, (info->target_memkb - info->video_memkb) / 1024, info->kernel);
> if (ret) {
> XL_LOG_ERRNOVAL(ctx, XL_LOG_ERROR, ret, "hvm building failed");
> return ERROR_FAIL;
> diff -r fe3c8ba27d2f tools/libxl/libxl_internal.h
> --- a/tools/libxl/libxl_internal.h Tue Dec 08 17:02:15 2009 +0000
> +++ b/tools/libxl/libxl_internal.h Tue Dec 08 17:14:35 2009 +0000
> @@ -31,6 +31,7 @@
> #define LIBXL_DEVICE_MODEL_START_TIMEOUT 10
> #define LIBXL_XENCONSOLE_LIMIT 1048576
> #define LIBXL_XENCONSOLE_PROTOCOL "vt100"
> +#define LIBXL_MAXMEM_CONSTANT (1 * 1024 * 1024)
> #define QEMU_SIGNATURE "QemuDeviceModelRecord"
>
> #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
> diff -r fe3c8ba27d2f tools/libxl/xl.c
> --- a/tools/libxl/xl.c Tue Dec 08 17:02:15 2009 +0000
> +++ b/tools/libxl/xl.c Tue Dec 08 17:14:35 2009 +0000
> @@ -85,6 +85,7 @@
> printf("vpt_align: %d\n", b_info->vpt_align);
> printf("max_vcpus: %d\n", b_info->max_vcpus);
> printf("max_memkb: %d\n", b_info->max_memkb);
> + printf("target_memkb: %d\n", b_info->target_memkb);
> printf("kernel: %s\n", b_info->kernel);
> printf("hvm: %d\n", b_info->hvm);
>
> @@ -283,8 +284,10 @@
> if (config_lookup_int (&config, "vcpus", &l) == CONFIG_TRUE)
> b_info->max_vcpus = l;
>
> - if (config_lookup_int (&config, "memory", &l) == CONFIG_TRUE)
> + if (config_lookup_int (&config, "memory", &l) == CONFIG_TRUE) {
> b_info->max_memkb = l * 1024;
> + b_info->target_memkb = b_info->max_memkb;
> + }
>
> if (config_lookup_int (&config, "shadow_memory", &l) == CONFIG_TRUE)
> b_info->shadow_memkb = l * 1024;
> @@ -756,6 +759,7 @@
> printf(" restore restore a domain from a saved state\n\n");
> printf(" cd-insert insert a cdrom into a guest's cd drive\n\n");
> printf(" cd-eject eject a cdrom from a guest's cd drive\n\n");
> + printf(" mem-set set the current memory usage for a domain\n\n");
> } else if(!strcmp(command, "create")) {
> printf("Usage: xl create <ConfigFile> [options] [vars]\n\n");
> printf("Create a domain based on <ConfigFile>.\n\n");
> @@ -804,7 +808,52 @@
> } else if (!strcmp(command, "cd-eject")) {
> printf("Usage: xl cd-eject <Domain> <VirtualDevice>\n\n");
> printf("Eject a cdrom from a guest's cd drive.\n\n");
> + } else if (!strcmp(command, "mem-set")) {
> + printf("Usage: xl mem-set <Domain> <MemKB>\n\n");
> + printf("Set the current memory usage for a domain.\n\n");
> }
> +}
> +
> +void set_memory_target(char *p, char *mem)
> +{
> + struct libxl_ctx ctx;
> + uint32_t domid;
> +
> + libxl_ctx_init(&ctx);
> + libxl_ctx_set_log(&ctx, log_callback, NULL);
> +
> + if (libxl_param_to_domid(&ctx, p, &domid) < 0) {
> + fprintf(stderr, "%s is an invalid domain identifier\n", p);
> + exit(2);
> + }
> + libxl_set_memory_target(&ctx, domid, atoi(mem));
> +}
> +
> +int main_memset(int argc, char **argv)
> +{
> + int opt = 0;
> + char *p = NULL, *mem;
> +
> + while ((opt = getopt(argc, argv, "h:")) != -1) {
> + switch (opt) {
> + case 'h':
> + help("mem-set");
> + exit(0);
> + default:
> + fprintf(stderr, "option not supported\n");
> + break;
> + }
> + }
> + if (optind >= argc - 1) {
> + help("mem-set");
> + exit(2);
> + }
> +
> + p = argv[optind];
> + mem = argv[optind + 1];
> +
> + set_memory_target(p, mem);
> + exit(0);
> }
>
> void console(char *p, int cons_num)
> @@ -1436,6 +1485,8 @@
> main_cd_insert(argc - 1, argv + 1);
> } else if (!strcmp(argv[1], "cd-eject")) {
> main_cd_eject(argc - 1, argv + 1);
> + } else if (!strcmp(argv[1], "mem-set")) {
> + main_memset(argc - 1, argv + 1);
> } else if (!strcmp(argv[1], "help")) {
> if (argc > 2)
> help(argv[2]);
>
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
2009-12-08 20:29 ` [PATCH] libxenlight: implement libxl_set_memory_target Andres Lagar-Cavilla
@ 2009-12-09 13:19 ` Stefano Stabellini
2009-12-09 20:47 ` Andres Lagar-Cavilla
0 siblings, 1 reply; 8+ messages in thread
From: Stefano Stabellini @ 2009-12-09 13:19 UTC (permalink / raw)
To: Andres Lagar-Cavilla
Cc: Vincent Hanquez, xen-devel@lists.xensource.com, Stabellini
On Tue, 8 Dec 2009, Andres Lagar-Cavilla wrote:
> Hi,
> couple of comments:
> - PV domains without videoram won't be able to use this
PV domains just have videoram = 0.
> - Further, doesn't the PV domain build function need to use
> target_memkb? (That's my read of what xend does at least)
Yes, you are right, I'll fix this.
> - Finally, LIBXL_MAXMEM_CONSTANT looks like an "evil constant we should
> avoid". Where did it come from?
I decided to introduce this constant after a discussion with developers
of the memory management functions in xapi: after thorough testing they
found that adding 1 MB to maxmem increases the robustness of the system.
BTW the current value of the constant is wrong because it should be
expressed in KB, I'll send a patch to fix this later today.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
2009-12-09 13:19 ` Stefano Stabellini
@ 2009-12-09 20:47 ` Andres Lagar-Cavilla
2009-12-10 13:37 ` Stefano Stabellini
0 siblings, 1 reply; 8+ messages in thread
From: Andres Lagar-Cavilla @ 2009-12-09 20:47 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: xen-devel@lists.xensource.com, Vincent Hanquez
Stefano Stabellini wrote:
> On Tue, 8 Dec 2009, Andres Lagar-Cavilla wrote:
>
>> Hi,
>> couple of comments:
>> - PV domains without videoram won't be able to use this
>>
>
> PV domains just have videoram = 0.
>
But you abort libxl_set_memory_target if the videoram node is not found.
Which won't be for PVs with no videoram...
+ videoram_s = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx,
"%s/memory/videoram", dompath));
+ if (!videoram_s)
+ return -1;
Andres
>
>> - Further, doesn't the PV domain build function need to use
>> target_memkb? (That's my read of what xend does at least)
>>
>
> Yes, you are right, I'll fix this.
>
>
>> - Finally, LIBXL_MAXMEM_CONSTANT looks like an "evil constant we should
>> avoid". Where did it come from?
>>
>
> I decided to introduce this constant after a discussion with developers
> of the memory management functions in xapi: after thorough testing they
> found that adding 1 MB to maxmem increases the robustness of the system.
>
> BTW the current value of the constant is wrong because it should be
> expressed in KB, I'll send a patch to fix this later today.
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
2009-12-09 20:47 ` Andres Lagar-Cavilla
@ 2009-12-10 13:37 ` Stefano Stabellini
2009-12-10 14:01 ` Andres Lagar-Cavilla
0 siblings, 1 reply; 8+ messages in thread
From: Stefano Stabellini @ 2009-12-10 13:37 UTC (permalink / raw)
To: Andres Lagar-Cavilla
Cc: Vincent, xen-devel@lists.xensource.com, Hanquez,
Stefano Stabellini
On Wed, 9 Dec 2009, Andres Lagar-Cavilla wrote:
> Stefano Stabellini wrote:
> > On Tue, 8 Dec 2009, Andres Lagar-Cavilla wrote:
> >
> >> Hi,
> >> couple of comments:
> >> - PV domains without videoram won't be able to use this
> >>
> >
> > PV domains just have videoram = 0.
> >
> But you abort libxl_set_memory_target if the videoram node is not found.
> Which won't be for PVs with no videoram...
> + videoram_s = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx,
> "%s/memory/videoram", dompath));
> + if (!videoram_s)
> + return -1;
>
The videoram node will be found, and the value will be 0.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
2009-12-10 13:37 ` Stefano Stabellini
@ 2009-12-10 14:01 ` Andres Lagar-Cavilla
2009-12-10 14:41 ` Stefano Stabellini
0 siblings, 1 reply; 8+ messages in thread
From: Andres Lagar-Cavilla @ 2009-12-10 14:01 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: xen-devel@lists.xensource.com, Vincent Hanquez
Errrr, no.
http://xenbits.xen.org/xen-unstable.hg?file/8f304c003af4/tools/libxl/libxl.c
shows that the videoram node will be set only if we are using a
device-model. And specifically if we are in fully virtualized mode, i.e.
dm_info->type == XENFV, i.e. *not* PV
Andres
Stefano Stabellini wrote:
> On Wed, 9 Dec 2009, Andres Lagar-Cavilla wrote:
>
>> Stefano Stabellini wrote:
>>
>>> On Tue, 8 Dec 2009, Andres Lagar-Cavilla wrote:
>>>
>>>
>>>> Hi,
>>>> couple of comments:
>>>> - PV domains without videoram won't be able to use this
>>>>
>>>>
>>> PV domains just have videoram = 0.
>>>
>>>
>> But you abort libxl_set_memory_target if the videoram node is not found.
>> Which won't be for PVs with no videoram...
>> + videoram_s = libxl_xs_read(ctx, XBT_NULL, libxl_sprintf(ctx,
>> "%s/memory/videoram", dompath));
>> + if (!videoram_s)
>> + return -1;
>>
>>
>
> The videoram node will be found, and the value will be 0.
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
2009-12-10 14:01 ` Andres Lagar-Cavilla
@ 2009-12-10 14:41 ` Stefano Stabellini
2009-12-10 15:10 ` Andres Lagar-Cavilla
0 siblings, 1 reply; 8+ messages in thread
From: Stefano Stabellini @ 2009-12-10 14:41 UTC (permalink / raw)
To: Andres Lagar-Cavilla
Cc: Vincent, xen-devel@lists.xensource.com, Hanquez,
Stefano Stabellini
On Thu, 10 Dec 2009, Andres Lagar-Cavilla wrote:
> Errrr, no.
> http://xenbits.xen.org/xen-unstable.hg?file/8f304c003af4/tools/libxl/libxl.c
> shows that the videoram node will be set only if we are using a
> device-model. And specifically if we are in fully virtualized mode, i.e.
> dm_info->type == XENFV, i.e. *not* PV
I understand that this can be confusing, but at the moment we have two
videoram parameters: dm_info->videoram is for the device model while
b_info->video_memkb is for domain building.
If you look at init_dm_info, you'll see that dm_info->videoram is set
from b_info->video_memkb.
Also if you read libxl_dom.c:build_post you'll see that no matter if the
guest is a pv or an hvm domain, memory/videoram will be written to
xenstore anyway.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] libxenlight: implement libxl_set_memory_target
2009-12-10 14:41 ` Stefano Stabellini
@ 2009-12-10 15:10 ` Andres Lagar-Cavilla
0 siblings, 0 replies; 8+ messages in thread
From: Andres Lagar-Cavilla @ 2009-12-10 15:10 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: xen-devel@lists.xensource.com
Oh, I'm working with an old changeset. Yikes. Thanks,
Andres
Stefano Stabellini wrote:
> On Thu, 10 Dec 2009, Andres Lagar-Cavilla wrote:
>
>> Errrr, no.
>> http://xenbits.xen.org/xen-unstable.hg?file/8f304c003af4/tools/libxl/libxl.c
>> shows that the videoram node will be set only if we are using a
>> device-model. And specifically if we are in fully virtualized mode, i.e.
>> dm_info->type == XENFV, i.e. *not* PV
>>
>
> I understand that this can be confusing, but at the moment we have two
> videoram parameters: dm_info->videoram is for the device model while
> b_info->video_memkb is for domain building.
> If you look at init_dm_info, you'll see that dm_info->videoram is set
> from b_info->video_memkb.
> Also if you read libxl_dom.c:build_post you'll see that no matter if the
> guest is a pv or an hvm domain, memory/videoram will be written to
> xenstore anyway.
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-12-10 15:10 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20091208200031.4903B5980EB@homiemail-mx11.g.dreamhost.com>
2009-12-08 20:29 ` [PATCH] libxenlight: implement libxl_set_memory_target Andres Lagar-Cavilla
2009-12-09 13:19 ` Stefano Stabellini
2009-12-09 20:47 ` Andres Lagar-Cavilla
2009-12-10 13:37 ` Stefano Stabellini
2009-12-10 14:01 ` Andres Lagar-Cavilla
2009-12-10 14:41 ` Stefano Stabellini
2009-12-10 15:10 ` Andres Lagar-Cavilla
2009-12-08 18:23 Stefano Stabellini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.