From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH] libxl: check nesthvm and altp2m in libxl level Date: Fri, 24 Jul 2015 16:39:38 +0100 Message-ID: <1437752378-14603-1-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZIf4Y-00016r-Vp for xen-devel@lists.xenproject.org; Fri, 24 Jul 2015 15:39:43 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Xen-devel Cc: Wei Liu , "Sahita, Ravi" , Ian Jackson , Ian Campbell , Ed White List-Id: xen-devel@lists.xenproject.org In ea214001 ("x86/altp2m: add altp2mhvm HVM domain parameter"), a check was added to ensure nestedhvm and altp2m cannot be enabled at the same time. That check was added in xl, but in fact it should be in libxl because it should be the entity that decides whether the provided configuration is valid. This patch moves the check to libxl. The code snippet is moved after calling libxl__domain_build_info_setdefault so that we can: 1. remove libxl_defbool_is_default in `if()'; 2. detect mistake in libxl__domain_build_info_setdefault. Signed-off-by: Wei Liu --- Cc: Ed White Cc: "Sahita, Ravi" I said I discovered an issue during review but also volunteered to fix it after the series is merged. Here is the patch to do that. --- tools/libxl/libxl_create.c | 6 ++++++ tools/libxl/xl_cmdimpl.c | 8 -------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 855b42c..de536ba 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -883,6 +883,12 @@ static void initiate_domain_create(libxl__egc *egc, goto error_out; } + if (libxl_defbool_val(d_config->b_info.u.hvm.nested_hvm) && + libxl_defbool_val(d_config->b_info.u.hvm.altp2m)) { + LOG(ERROR, "nestedhvm and altp2mhvm cannot be used together"); + goto error_out; + } + for (i = 0; i < d_config->num_disks; i++) { ret = libxl__device_disk_setdefault(gc, &d_config->disks[i]); if (ret) { diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index d0bf0cb..9755d55 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1568,14 +1568,6 @@ static void parse_config_data(const char *config_source, xlu_cfg_get_defbool(config, "altp2mhvm", &b_info->u.hvm.altp2m, 0); - if (!libxl_defbool_is_default(b_info->u.hvm.nested_hvm) && - libxl_defbool_val(b_info->u.hvm.nested_hvm) && - !libxl_defbool_is_default(b_info->u.hvm.altp2m) && - libxl_defbool_val(b_info->u.hvm.altp2m)) { - fprintf(stderr, "ERROR: nestedhvm and altp2mhvm cannot be used together\n"); - exit(1); - } - xlu_cfg_replace_string(config, "smbios_firmware", &b_info->u.hvm.smbios_firmware, 0); xlu_cfg_replace_string(config, "acpi_firmware", -- 2.1.4