From: Roger Pau Monne Date: Fri, 22 Dec 2017 17:06:45 +0000 (+0000) Subject: MAYBE FIX libxl/xl: use the new location of domain_build_info fields X-Git-Tag: 4.8.3pre-shim-comet-2~28 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=23adea59ac342fa94795f92a528c6443cb159517;p=xen.git MAYBE FIX libxl/xl: use the new location of domain_build_info fields This is required because those options will be used by the new PVH guest type, and thus need to be shared between PV and HVM. Defines are added in order to signal consumers that the fields are available. Signed-off-by: Roger Pau Monné Acked-by: Ian Jackson Rebased over changes to libxl.h 4.8: Rebased over lots of changes --- diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c index 2b6b051419..e91eeeca8f 100644 --- a/tools/libxl/libxl_bootloader.c +++ b/tools/libxl/libxl_bootloader.c @@ -410,7 +410,6 @@ static void bootloader_disk_attached_cb(libxl__egc *egc, } LOG(DEBUG, "Config bootloader value: %s", *U_PV_F(info,bootloader)); - if ( !strcmp(*U_PV_F(info,bootloader), "/usr/bin/pygrub") ) LOG(WARN, "bootloader='/usr/bin/pygrub' is deprecated; use " \ "bootloader='pygrub' instead"); diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 824689b726..5811007e44 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -306,11 +306,11 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, break; } - if (libxl__timer_mode_is_default(&b_info->u.hvm.timer_mode)) - b_info->u.hvm.timer_mode = LIBXL_TIMER_MODE_NO_DELAY_FOR_MISSED_TICKS; + if (libxl__timer_mode_is_default(U_HVM_F(b_info,timer_mode))) + *U_HVM_F(b_info,timer_mode) = LIBXL_TIMER_MODE_NO_DELAY_FOR_MISSED_TICKS; libxl_defbool_setdefault(&b_info->u.hvm.pae, true); - libxl_defbool_setdefault(&b_info->u.hvm.apic, true); + libxl_defbool_setdefault(U_HVM_F(b_info,apic), true); libxl_defbool_setdefault(&b_info->u.hvm.acpi, true); libxl_defbool_setdefault(&b_info->u.hvm.acpi_s3, true); libxl_defbool_setdefault(&b_info->u.hvm.acpi_s4, true); @@ -318,7 +318,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, libxl_defbool_setdefault(&b_info->u.hvm.viridian, false); libxl_defbool_setdefault(&b_info->u.hvm.hpet, true); libxl_defbool_setdefault(&b_info->u.hvm.vpt_align, true); - libxl_defbool_setdefault(&b_info->u.hvm.nested_hvm, false); + libxl_defbool_setdefault(U_HVM_F(b_info,nested_hvm), false); libxl_defbool_setdefault(&b_info->u.hvm.altp2m, false); libxl_defbool_setdefault(&b_info->u.hvm.usb, false); libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci, true); @@ -906,7 +906,7 @@ static void initiate_domain_create(libxl__egc *egc, } if (d_config->c_info.type == LIBXL_DOMAIN_TYPE_HVM && - (libxl_defbool_val(d_config->b_info.u.hvm.nested_hvm) && + (libxl_defbool_val(*U_HVM_F(&d_config->b_info,nested_hvm)) && libxl_defbool_val(d_config->b_info.u.hvm.altp2m))) { ret = ERROR_INVAL; LOG(ERROR, "nestedhvm and altp2mhvm cannot be used together"); diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index f36712aaa8..30b53fa64f 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -290,7 +290,7 @@ static void hvm_set_conf_params(xc_interface *handle, uint32_t domid, xc_hvm_param_set(handle, domid, HVM_PARAM_VPT_ALIGN, libxl_defbool_val(info->u.hvm.vpt_align)); xc_hvm_param_set(handle, domid, HVM_PARAM_NESTEDHVM, - libxl_defbool_val(info->u.hvm.nested_hvm)); + libxl_defbool_val(*U_HVM_F(info,nested_hvm))); xc_hvm_param_set(handle, domid, HVM_PARAM_ALTP2M, libxl_defbool_val(info->u.hvm.altp2m)); } diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index e1844c859d..f76493e93a 100644 --- a/tools/libxl/libxl_x86.c +++ b/tools/libxl/libxl_x86.c @@ -12,7 +12,7 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc, if (d_config->b_info.device_model_version != LIBXL_DEVICE_MODEL_VERSION_NONE) { xc_config->emulation_flags = XEN_X86_EMU_ALL; - } else if (libxl_defbool_val(d_config->b_info.u.hvm.apic)) { + } else if (libxl_defbool_val(*U_HVM_F(&d_config->b_info,apic))) { /* * HVM guests without device model may want * to have LAPIC emulation. diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 5e634037ee..ad1720311f 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1611,8 +1611,8 @@ static void parse_config_data(const char *config_source, } if (U_HVM_OK(b_info)) { - xlu_cfg_get_defbool(config, "nestedhvm", U_HVM_F(b_info, nested_hvm), 0); - xlu_cfg_get_defbool(config, "apic", U_HVM_F(b_info, apic), 0); + xlu_cfg_get_defbool(config, "nestedhvm", U_HVM_F(b_info,nested_hvm), 0); + xlu_cfg_get_defbool(config, "apic", U_HVM_F(b_info,apic), 0); } switch(b_info->type) { @@ -1738,7 +1738,7 @@ static void parse_config_data(const char *config_source, break; case LIBXL_DOMAIN_TYPE_PV: { - if (!b_info->U_PV bootloader && !b_info->kernel) { + if (!*U_PV_F(b_info,bootloader) && !b_info->kernel) { fprintf(stderr, "Neither kernel nor bootloader specified\n"); exit(1); } diff --git a/tools/libxl/xl_sxp.c b/tools/libxl/xl_sxp.c index 07a481f511..69fa584d50 100644 --- a/tools/libxl/xl_sxp.c +++ b/tools/libxl/xl_sxp.c @@ -74,12 +74,12 @@ void printf_info_sexp(int domid, libxl_domain_config *d_config, FILE *fh) fprintf(fh, "\t(nomigrate %s)\n", libxl_defbool_to_string(b_info->disable_migrate)); - if (c_info->type == LIBXL_DOMAIN_TYPE_PV && b_info->U_PV bootloader) { - fprintf(fh, "\t(bootloader %s)\n", b_info->U_PV bootloader); - if (b_info->U_PV bootloader_args) { + if (c_info->type == LIBXL_DOMAIN_TYPE_PV && *U_PV_F(b_info,bootloader)) { + fprintf(fh, "\t(bootloader %s)\n", *U_PV_F(b_info,bootloader)); + if (*U_PV_F(b_info,bootloader_args)) { fprintf(fh, "\t(bootloader_args"); - for (i=0; b_info->U_PV bootloader_args[i]; i++) - fprintf(fh, " %s", b_info->U_PV bootloader_args[i]); + for (i=0; *U_PV_F(b_info,bootloader_args)[i]; i++) + fprintf(fh, " %s", (*U_PV_F(b_info,bootloader_args))[i]); fprintf(fh, ")\n"); } } @@ -104,9 +104,9 @@ void printf_info_sexp(int domid, libxl_domain_config *d_config, FILE *fh) fprintf(fh, "\t\t\t(vpt_align %s)\n", libxl_defbool_to_string(b_info->u.hvm.vpt_align)); fprintf(fh, "\t\t\t(timer_mode %s)\n", - libxl_timer_mode_to_string(b_info->U_HVM timer_mode)); + libxl_timer_mode_to_string(*U_HVM_F(b_info,timer_mode))); fprintf(fh, "\t\t\t(nestedhvm %s)\n", - libxl_defbool_to_string(b_info->U_HVM nested_hvm)); + libxl_defbool_to_string(*U_HVM_F(b_info,nested_hvm))); fprintf(fh, "\t\t\t(stdvga %s)\n", b_info->u.hvm.vga.kind == LIBXL_VGA_INTERFACE_TYPE_STD ? "True" : "False");