* [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it @ 2010-12-16 14:16 anthony.perard 2010-12-16 14:16 ` [PATCH] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard 2011-01-06 14:28 ` [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it Ian Jackson 0 siblings, 2 replies; 11+ messages in thread From: anthony.perard @ 2010-12-16 14:16 UTC (permalink / raw) To: Xen Devel; +Cc: anthony.perard From: Anthony PERARD <anthony.perard@citrix.com> This patch adds target_ram in device_model_info structure, to be used in libxl_build_device_model_args_new. Qemu upstream needs to know about it. It introduces also libxl__sizekb_to_mb to convert size from KB to MB by rounding up the result. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- tools/libxl/libxl.c | 4 ++++ tools/libxl/libxl.idl | 1 + tools/libxl/libxl_utils.h | 4 ++++ tools/libxl/xl_cmdimpl.c | 3 ++- 4 files changed, 11 insertions(+), 1 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index aa28c72..9dfd211 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1384,6 +1384,10 @@ static char ** libxl_build_device_model_args_new(libxl__gc *gc, else flexarray_set(dm_args, num++, "xenfv"); + /* RAM Size */ + flexarray_set(dm_args, num++, "-m"); + flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->target_ram)); + if (info->type == XENFV) { disks = libxl_device_disk_list(libxl__gc_owner(gc), info->domid, &nb); for (i; i < nb; i++) { diff --git a/tools/libxl/libxl.idl b/tools/libxl/libxl.idl index 8dd7749..89694b1 100644 --- a/tools/libxl/libxl.idl +++ b/tools/libxl/libxl.idl @@ -139,6 +139,7 @@ libxl_device_model_info = Struct("device_model_info",[ ("device_model", string), ("saved_state", string), ("type", libxl_qemu_machine_type), + ("target_ram", uint32), ("videoram", integer, False, "size of the videoram in MB"), ("stdvga", bool, False, "stdvga enabled or disabled"), ("vnc", bool, False, "vnc enabled or disabled"), diff --git a/tools/libxl/libxl_utils.h b/tools/libxl/libxl_utils.h index 7846c42..940fecd 100644 --- a/tools/libxl/libxl_utils.h +++ b/tools/libxl/libxl_utils.h @@ -82,5 +82,9 @@ void libxl_cpumap_set(libxl_cpumap *cpumap, int cpu); void libxl_cpumap_reset(libxl_cpumap *cpumap, int cpu); #define libxl_for_each_cpu(var, map) for (var = 0; var < (map).size * 8; var++) +static inline uint32_t libxl__sizekb_to_mb(uint32_t s) { + return (s + 1023) / 1024; +} + #endif diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 5555319..3718a5a 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -359,7 +359,8 @@ static void init_dm_info(libxl_device_model_info *dm_info, dm_info->dom_name = strdup(c_info->name); dm_info->device_model = strdup("qemu-dm"); - dm_info->videoram = b_info->video_memkb / 1024; + dm_info->target_ram = libxl__sizekb_to_mb(b_info->target_memkb); + dm_info->videoram = libxl__sizekb_to_mb(b_info->video_memkb); dm_info->apic = b_info->u.hvm.apic; dm_info->vcpus = b_info->max_vcpus; dm_info->vcpu_avail = b_info->cur_vcpus; -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH] libxl: Lists qdisk device in libxl_device_disk_list 2010-12-16 14:16 [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it anthony.perard @ 2010-12-16 14:16 ` anthony.perard 2011-01-06 14:30 ` Ian Jackson 2011-01-06 14:28 ` [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it Ian Jackson 1 sibling, 1 reply; 11+ messages in thread From: anthony.perard @ 2010-12-16 14:16 UTC (permalink / raw) To: Xen Devel; +Cc: anthony.perard From: Anthony PERARD <anthony.perard@citrix.com> As libxl switch to qdisk when blktap isn't available, this patch makes libxl_device_disk_list also list qdisk device. So libxl_build_device_model_args_new will be able to add qdisk device to the command line options of Qemu. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- tools/libxl/libxl.c | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 9dfd211..78dcf62 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2492,7 +2492,7 @@ int libxl_device_vkb_hard_shutdown(libxl_ctx *ctx, uint32_t domid) libxl_device_disk *libxl_device_disk_list(libxl_ctx *ctx, uint32_t domid, int *num) { libxl__gc gc = LIBXL_INIT_GC(ctx); - char *be_path_tap, *be_path_vbd; + char *be_path_tap, *be_path_vbd, *be_path_qdisk; libxl_device_disk *dend, *disks, *ret = NULL; char **b, **l = NULL; unsigned int numl, len; @@ -2500,6 +2500,7 @@ libxl_device_disk *libxl_device_disk_list(libxl_ctx *ctx, uint32_t domid, int *n be_path_vbd = libxl__sprintf(&gc, "%s/backend/vbd/%d", libxl__xs_get_dompath(&gc, 0), domid); be_path_tap = libxl__sprintf(&gc, "%s/backend/tap/%d", libxl__xs_get_dompath(&gc, 0), domid); + be_path_qdisk = libxl__sprintf(&gc, "%s/backend/qdisk/%d", libxl__xs_get_dompath(&gc, 0), domid); b = l = libxl__xs_directory(&gc, XBT_NULL, be_path_vbd, &numl); if (l) { @@ -2542,6 +2543,33 @@ libxl_device_disk *libxl_device_disk_list(libxl_ctx *ctx, uint32_t domid, int *n disks->is_cdrom = !strcmp(type, "cdrom"); } } + b = l = libxl__xs_directory(&gc, XBT_NULL, be_path_qdisk, &numl); + if (l) { + ret = realloc(ret, sizeof(libxl_device_disk) * (*num + numl)); + disks = ret + *num; + *num += numl; + for (dend = ret + *num; disks < dend; ++disks, ++l) { + char *physpath_tmp; + disks->backend_domid = 0; + disks->domid = domid; + physpath_tmp = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/params", be_path_qdisk, *l), &len); + if (strchr(physpath_tmp, ':')) { + disks->physpath = strdup(strchr(physpath_tmp, ':') + 1); + free(physpath_tmp); + } else { + disks->physpath = physpath_tmp; + } + libxl_string_to_phystype(ctx, libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/type", be_path_qdisk, *l)), &(disks->phystype)); + disks->virtpath = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/dev", be_path_qdisk, *l), &len); + disks->unpluggable = atoi(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/removable", be_path_qdisk, *l))); + if (!strcmp(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/mode", be_path_qdisk, *l)), "w")) + disks->readwrite = 1; + else + disks->readwrite = 0; + type = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/device-type", libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/frontend", be_path_qdisk, *l)))); + disks->is_cdrom = !strcmp(type, "cdrom"); + } + } libxl__free_all(&gc); return ret; } -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] libxl: Lists qdisk device in libxl_device_disk_list 2010-12-16 14:16 ` [PATCH] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard @ 2011-01-06 14:30 ` Ian Jackson 2011-01-06 17:50 ` [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list anthony.perard 2011-01-06 17:50 ` [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard 0 siblings, 2 replies; 11+ messages in thread From: Ian Jackson @ 2011-01-06 14:30 UTC (permalink / raw) To: anthony.perard; +Cc: Xen Devel anthony.perard@citrix.com writes ("[Xen-devel] [PATCH] libxl: Lists qdisk device in libxl_device_disk_list"): > As libxl switch to qdisk when blktap isn't available, this patch makes > libxl_device_disk_list also list qdisk device. So > libxl_build_device_model_args_new will be able to add qdisk device to > the command line options of Qemu. Thanks for this contribution. But what you have done is introduced yet a third copy of a section of code which has been cloned-and-hacked one already. Can you please make a patch which breaks the common code out into a separate function, or macro, or uses a loop, or something ? I don't much mind how it's done but to my mind a function is probably going to be easiest. Ian. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list 2011-01-06 14:30 ` Ian Jackson @ 2011-01-06 17:50 ` anthony.perard 2011-01-06 18:04 ` Ian Jackson 2011-01-06 17:50 ` [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard 1 sibling, 1 reply; 11+ messages in thread From: anthony.perard @ 2011-01-06 17:50 UTC (permalink / raw) To: Xen Devel; +Cc: anthony.perard From: Anthony PERARD <anthony.perard@citrix.com> This patch adds function libxl_append_disk_list_of_type to get disks parameter of one backend type. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- tools/libxl/libxl.c | 99 ++++++++++++++++++++++++++------------------------- 1 files changed, 50 insertions(+), 49 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 10d4527..79ad06c 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2518,61 +2518,62 @@ int libxl_device_vkb_hard_shutdown(libxl_ctx *ctx, uint32_t domid) return ERROR_NI; } -libxl_device_disk *libxl_device_disk_list(libxl_ctx *ctx, uint32_t domid, int *num) +static unsigned int libxl_append_disk_list_of_type(libxl_ctx *ctx, + uint32_t domid, + const char *type, + libxl_device_disk **disks, + unsigned int *ndisks) { libxl__gc gc = LIBXL_INIT_GC(ctx); - char *be_path_tap, *be_path_vbd; - libxl_device_disk *dend, *disks, *ret = NULL; - char **b, **l = NULL; - unsigned int numl, len; - char *type; - - be_path_vbd = libxl__sprintf(&gc, "%s/backend/vbd/%d", libxl__xs_get_dompath(&gc, 0), domid); - be_path_tap = libxl__sprintf(&gc, "%s/backend/tap/%d", libxl__xs_get_dompath(&gc, 0), domid); - - b = l = libxl__xs_directory(&gc, XBT_NULL, be_path_vbd, &numl); - if (l) { - ret = realloc(ret, sizeof(libxl_device_disk) * numl); - disks = ret; - *num = numl; - dend = ret + *num; - for (; disks < dend; ++disks, ++l) { - disks->backend_domid = 0; - disks->domid = domid; - disks->physpath = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/params", be_path_vbd, *l), &len); - libxl_string_to_phystype(ctx, libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/type", be_path_vbd, *l)), &(disks->phystype)); - disks->virtpath = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/dev", be_path_vbd, *l), &len); - disks->unpluggable = atoi(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/removable", be_path_vbd, *l))); - if (!strcmp(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/mode", be_path_vbd, *l)), "w")) - disks->readwrite = 1; - else - disks->readwrite = 0; - type = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/device-type", libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/frontend", be_path_vbd, *l)))); - disks->is_cdrom = !strcmp(type, "cdrom"); - } - } - b = l = libxl__xs_directory(&gc, XBT_NULL, be_path_tap, &numl); - if (l) { - ret = realloc(ret, sizeof(libxl_device_disk) * (*num + numl)); - disks = ret + *num; - *num += numl; - for (dend = ret + *num; disks < dend; ++disks, ++l) { - disks->backend_domid = 0; - disks->domid = domid; - disks->physpath = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/params", be_path_tap, *l), &len); - libxl_string_to_phystype(ctx, libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/type", be_path_tap, *l)), &(disks->phystype)); - disks->virtpath = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/dev", be_path_tap, *l), &len); - disks->unpluggable = atoi(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/removable", be_path_tap, *l))); - if (!strcmp(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/mode", be_path_tap, *l)), "w")) - disks->readwrite = 1; + char *be_path = NULL; + char **dir = NULL; + unsigned int n = 0, len = 0; + libxl_device_disk *pdisk = NULL, *pdisk_end = NULL; + char *physpath_tmp = NULL; + + be_path = libxl__sprintf(&gc, "%s/backend/%s/%d", + libxl__xs_get_dompath(&gc, 0), type, domid); + dir = libxl__xs_directory(&gc, XBT_NULL, be_path, &n); + if (dir) { + *disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n)); + pdisk = *disks + *ndisks; + *ndisks += n; + pdisk_end = *disks + *ndisks; + for (; pdisk < pdisk_end; pdisk++, dir++) { + pdisk->backend_domid = 0; + pdisk->domid = domid; + physpath_tmp = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/params", be_path, *dir), &len); + if (strchr(physpath_tmp, ':')) { + pdisk->physpath = strdup(strchr(physpath_tmp, ':') + 1); + free(physpath_tmp); + } else { + pdisk->physpath = physpath_tmp; + } + libxl_string_to_phystype(ctx, libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/type", be_path, *dir)), &(pdisk->phystype)); + pdisk->virtpath = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/dev", be_path, *dir), &len); + pdisk->unpluggable = atoi(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/removable", be_path, *dir))); + if (!strcmp(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/mode", be_path, *dir)), "w")) + pdisk->readwrite = 1; else - disks->readwrite = 0; - type = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/device-type", libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/frontend", be_path_tap, *l)))); - disks->is_cdrom = !strcmp(type, "cdrom"); + pdisk->readwrite = 0; + type = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/device-type", libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/frontend", be_path, *dir)))); + pdisk->is_cdrom = !strcmp(type, "cdrom"); } } + libxl__free_all(&gc); - return ret; + return n; +} + +libxl_device_disk *libxl_device_disk_list(libxl_ctx *ctx, uint32_t domid, int *num) +{ + libxl_device_disk *disks = NULL; + unsigned int ndisks = 0; + + *num = libxl_append_disk_list_of_type(ctx, domid, "vbd", &disks, &ndisks); + *num += libxl_append_disk_list_of_type(ctx, domid, "tap", &disks, &ndisks); + + return disks; } int libxl_device_disk_getinfo(libxl_ctx *ctx, uint32_t domid, -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list 2011-01-06 17:50 ` [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list anthony.perard @ 2011-01-06 18:04 ` Ian Jackson 0 siblings, 0 replies; 11+ messages in thread From: Ian Jackson @ 2011-01-06 18:04 UTC (permalink / raw) To: anthony.perard; +Cc: Xen Devel anthony.perard@citrix.com writes ("[Xen-devel] [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list"): > From: Anthony PERARD <anthony.perard@citrix.com> > > This patch adds function libxl_append_disk_list_of_type to get disks > parameter of one backend type. Great, thanks. The creation and destruction of a private gc in the internal function is perhaps unusual but in this case it doesn't lead to a bug, and yes the outer function doesn't need a gc. Applied. Ian. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list 2011-01-06 14:30 ` Ian Jackson 2011-01-06 17:50 ` [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list anthony.perard @ 2011-01-06 17:50 ` anthony.perard 2011-01-06 18:05 ` Ian Jackson 1 sibling, 1 reply; 11+ messages in thread From: anthony.perard @ 2011-01-06 17:50 UTC (permalink / raw) To: Xen Devel; +Cc: anthony.perard From: Anthony PERARD <anthony.perard@citrix.com> As libxl switch to qdisk when blktap isn't available, this patch makes libxl_device_disk_list also list qdisk device. So libxl_build_device_model_args_new will be able to add qdisk device to the command line options of Qemu. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> --- tools/libxl/libxl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 79ad06c..fa42d98 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -2572,6 +2572,7 @@ libxl_device_disk *libxl_device_disk_list(libxl_ctx *ctx, uint32_t domid, int *n *num = libxl_append_disk_list_of_type(ctx, domid, "vbd", &disks, &ndisks); *num += libxl_append_disk_list_of_type(ctx, domid, "tap", &disks, &ndisks); + *num += libxl_append_disk_list_of_type(ctx, domid, "qdisk", &disks, &ndisks); return disks; } -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list 2011-01-06 17:50 ` [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard @ 2011-01-06 18:05 ` Ian Jackson 0 siblings, 0 replies; 11+ messages in thread From: Ian Jackson @ 2011-01-06 18:05 UTC (permalink / raw) To: anthony.perard; +Cc: Xen Devel anthony.perard@citrix.com writes ("[Xen-devel] [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list"): > As libxl switch to qdisk when blktap isn't available, this patch makes > libxl_device_disk_list also list qdisk device. So > libxl_build_device_model_args_new will be able to add qdisk device to > the command line options of Qemu. Applied, thanks. Ian. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it 2010-12-16 14:16 [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it anthony.perard 2010-12-16 14:16 ` [PATCH] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard @ 2011-01-06 14:28 ` Ian Jackson 2011-01-06 14:35 ` Keir Fraser 1 sibling, 1 reply; 11+ messages in thread From: Ian Jackson @ 2011-01-06 14:28 UTC (permalink / raw) To: anthony.perard; +Cc: Xen Devel anthony.perard@citrix.com writes ("[Xen-devel] [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it"): > This patch adds target_ram in device_model_info structure, to be used in > libxl_build_device_model_args_new. Qemu upstream needs to know about it. I have applied this patch, thanks. I'm just a little concerned, though: can you explain _why_ qemu upstream needs to know the target ram size ? Ian. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it 2011-01-06 14:28 ` [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it Ian Jackson @ 2011-01-06 14:35 ` Keir Fraser 2011-01-06 15:12 ` Anthony PERARD 0 siblings, 1 reply; 11+ messages in thread From: Keir Fraser @ 2011-01-06 14:35 UTC (permalink / raw) To: Ian Jackson, anthony.perard; +Cc: Xen Devel On 06/01/2011 14:28, "Ian Jackson" <Ian.Jackson@eu.citrix.com> wrote: > anthony.perard@citrix.com writes ("[Xen-devel] [PATCH] libxl: Specify the > target ram size to Qemu (new) when calling it"): >> This patch adds target_ram in device_model_info structure, to be used in >> libxl_build_device_model_args_new. Qemu upstream needs to know about it. > > I have applied this patch, thanks. > > I'm just a little concerned, though: can you explain _why_ qemu > upstream needs to know the target ram size ? Qemu used to be responsible for initialising BIOS info tables, including memory size information such as e820, in lieu of the virtual BIOS doing it. I ripped all that out from our diverged tree, and put it in hvmloader/rombios, but maybe they still do it in upstream qemu. I think it would be harmless if so, since hvmloader/rombios will overwrite/ignore. -- Keir > Ian. > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it 2011-01-06 14:35 ` Keir Fraser @ 2011-01-06 15:12 ` Anthony PERARD 2011-01-06 15:46 ` Ian Jackson 0 siblings, 1 reply; 11+ messages in thread From: Anthony PERARD @ 2011-01-06 15:12 UTC (permalink / raw) To: Keir Fraser; +Cc: Xen Devel, Ian Jackson On Thu, 6 Jan 2011, Keir Fraser wrote: > On 06/01/2011 14:28, "Ian Jackson" <Ian.Jackson@eu.citrix.com> wrote: > > > anthony.perard@citrix.com writes ("[Xen-devel] [PATCH] libxl: Specify the > > target ram size to Qemu (new) when calling it"): > >> This patch adds target_ram in device_model_info structure, to be used in > >> libxl_build_device_model_args_new. Qemu upstream needs to know about it. > > > > I have applied this patch, thanks. > > > > I'm just a little concerned, though: can you explain _why_ qemu > > upstream needs to know the target ram size ? > > Qemu used to be responsible for initialising BIOS info tables, including > memory size information such as e820, in lieu of the virtual BIOS doing it. > I ripped all that out from our diverged tree, and put it in > hvmloader/rombios, but maybe they still do it in upstream qemu. I think it > would be harmless if so, since hvmloader/rombios will overwrite/ignore. There are another reason, qemu "allocate" the memory for the vga at a dynamic address. In qemu-xen, this address is static. So qemu need to know the size of the ram to put the memory of the vga after the ram. Qemu do the same for other memory like the rom of a nic. Information about the ram is put in the struct RAMBlock of qemu. -- Anthony PERARD ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it 2011-01-06 15:12 ` Anthony PERARD @ 2011-01-06 15:46 ` Ian Jackson 0 siblings, 0 replies; 11+ messages in thread From: Ian Jackson @ 2011-01-06 15:46 UTC (permalink / raw) To: Anthony Perard; +Cc: Xen Devel, Keir Fraser Anthony Perard writes ("Re: [Xen-devel] [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it"): > On Thu, 6 Jan 2011, Keir Fraser wrote: > > Qemu used to be responsible for initialising BIOS info tables, including > > memory size information such as e820, in lieu of the virtual BIOS doing it. > > I ripped all that out from our diverged tree, and put it in > > hvmloader/rombios, but maybe they still do it in upstream qemu. I think it > > would be harmless if so, since hvmloader/rombios will overwrite/ignore. > > There are another reason, qemu "allocate" the memory for the vga at a > dynamic address. In qemu-xen, this address is static. So qemu need to > know the size of the ram to put the memory of the vga after the ram. > Qemu do the same for other memory like the rom of a nic. > > Information about the ram is put in the struct RAMBlock of qemu. Right. OK, I'll stop worrying :-). Ian. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-01-06 18:05 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-12-16 14:16 [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it anthony.perard 2010-12-16 14:16 ` [PATCH] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard 2011-01-06 14:30 ` Ian Jackson 2011-01-06 17:50 ` [PATCH V2 1/2] libxl: Factorize function libxl_device_disk_list anthony.perard 2011-01-06 18:04 ` Ian Jackson 2011-01-06 17:50 ` [PATCH V2 2/2] libxl: Lists qdisk device in libxl_device_disk_list anthony.perard 2011-01-06 18:05 ` Ian Jackson 2011-01-06 14:28 ` [PATCH] libxl: Specify the target ram size to Qemu (new) when calling it Ian Jackson 2011-01-06 14:35 ` Keir Fraser 2011-01-06 15:12 ` Anthony PERARD 2011-01-06 15:46 ` Ian Jackson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).