From patchwork Fri Sep 2 02:55:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shannon Zhao X-Patchwork-Id: 75269 Delivered-To: patch@linaro.org Received: by 10.140.29.8 with SMTP id a8csp623798qga; Thu, 1 Sep 2016 19:58:55 -0700 (PDT) X-Received: by 10.202.91.87 with SMTP id p84mr1224618oib.127.1472785131979; Thu, 01 Sep 2016 19:58:51 -0700 (PDT) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id w58si10111289otd.197.2016.09.01.19.58.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 01 Sep 2016 19:58:51 -0700 (PDT) Received-SPF: neutral (google.com: 192.237.175.120 is neither permitted nor denied by best guess record for domain of xen-devel-bounces@lists.xen.org) client-ip=192.237.175.120; Authentication-Results: mx.google.com; spf=neutral (google.com: 192.237.175.120 is neither permitted nor denied by best guess record for domain of xen-devel-bounces@lists.xen.org) smtp.mailfrom=xen-devel-bounces@lists.xen.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bfef1-000709-LU; Fri, 02 Sep 2016 02:56:55 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bfeez-0006xi-VA for xen-devel@lists.xen.org; Fri, 02 Sep 2016 02:56:54 +0000 Received: from [193.109.254.147] by server-10.bemta-6.messagelabs.com id 89/B5-27438-57AE8C75; Fri, 02 Sep 2016 02:56:53 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRWlGSWpSXmKPExsVi9XuGg27JqxP hBof+qlos+biYxYHR4+ju30wBjFGsmXlJ+RUJrBndvZtYCm5ZVczvPsLSwLhdt4uRi0NI4BSj xKR5s1kgnN2MErfnLQdyODnYBHQlPm6cwg5iiwjISqzumsMOUsQscJ1R4s77bawgCWGBYImH7 58zgtgsAioSX362gDXzCnhIfHj6D6xZQkBDYmXvBLA4p4CnxNtVn8DiQkA1j189YoKoF5Q4Of MJWA2zgITEwRcvmCF6FSXa1p9kg7AlJQ6uuAF2qQTI2Z+Pt0IlTCUWXZjBNIFRcBaSWbOQzFr AyLSKUaM4tagstUjXyEgvqSgzPaMkNzEzR9fQwEwvN7W4ODE9NScxqVgvOT93EyMwSBmAYAfj mvmBhxglOZiURHnzn5wIF+JLyk+pzEgszogvKs1JLT7EKMPBoSTBu+MlUE6wKDU9tSItMwcYL zBpCQ4eJRHeFSBp3uKCxNzizHSI1ClGRSlx3hyQhABIIqM0D64NFqOXGGWlhHkZgQ4R4ilILc rNLEGVf8UozsGoJMx7AmQKT2ZeCdz0V0CLmYAWl1w7DrK4JBEhJdXAWButFteS+Pamjq7Qy55 1zN6XdX9riwetuqWz6F67z14RjnsKemJP+Dldf01znmtcb+I0VZLZruHtl/cJe6omzljIyB/A k8nMsWay4Kfpm3dZ/tAMN5ZRsv6tHfNEoDOYOa1fxuX7pXki8UnBb/VtRRqTfUPElf89FLGLn /gg8Il+iOJKntVKLMUZiYZazEXFiQAP80g3zAIAAA== X-Env-Sender: zhaoshenglong@huawei.com X-Msg-Ref: server-9.tower-27.messagelabs.com!1472785008!57120985!1 X-Originating-IP: [58.251.152.64] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 8.84; banners=-,-,- X-VirusChecked: Checked Received: (qmail 6051 invoked from network); 2 Sep 2016 02:56:51 -0000 Received: from szxga01-in.huawei.com (HELO szxga01-in.huawei.com) (58.251.152.64) by server-9.tower-27.messagelabs.com with RC4-SHA encrypted SMTP; 2 Sep 2016 02:56:51 -0000 Received: from 172.24.1.60 (EHLO szxeml431-hub.china.huawei.com) ([172.24.1.60]) by szxrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id DQM36292; Fri, 02 Sep 2016 10:56:14 +0800 (CST) Received: from HGHY1Z002260041.china.huawei.com (10.177.16.142) by szxeml431-hub.china.huawei.com (10.82.67.208) with Microsoft SMTP Server id 14.3.235.1; Fri, 2 Sep 2016 10:55:59 +0800 From: Shannon Zhao To: Date: Fri, 2 Sep 2016 10:55:24 +0800 Message-ID: <1472784939-14404-2-git-send-email-zhaoshenglong@huawei.com> X-Mailer: git-send-email 1.9.0.msysgit.0 In-Reply-To: <1472784939-14404-1-git-send-email-zhaoshenglong@huawei.com> References: <1472784939-14404-1-git-send-email-zhaoshenglong@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.177.16.142] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A0B0205.57C8EA4F.0030, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: f0ee6badd93b89f77bb3321e75cd3ad3 Cc: sstabellini@kernel.org, wei.liu2@citrix.com, ian.jackson@eu.citrix.com, peter.huangpeng@huawei.com, julien.grall@arm.com, shannon.zhao@linaro.org, boris.ostrovsky@oracle.com Subject: [Xen-devel] [PATCH v5 01/16] tools/libxl: Add an unified configuration option for ACPI X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" From: Shannon Zhao Since the existing configuration option "u.hvm.acpi" is x86 specific and we want to reuse it on ARM as well, add a unified option "acpi" for x86 and ARM, and for ARM it's disabled by default. Signed-off-by: Shannon Zhao --- docs/man/xl.cfg.pod.5.in | 1 + tools/libxl/libxl_arch.h | 4 ++++ tools/libxl/libxl_arm.c | 6 ++++++ tools/libxl/libxl_create.c | 4 +++- tools/libxl/libxl_dm.c | 4 ++-- tools/libxl/libxl_internal.h | 6 ++++++ tools/libxl/libxl_types.idl | 4 ++++ tools/libxl/libxl_x86.c | 6 ++++++ tools/libxl/xl_cmdimpl.c | 2 +- 9 files changed, 33 insertions(+), 4 deletions(-) diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in index a685b83..9242e3d 100644 --- a/docs/man/xl.cfg.pod.5.in +++ b/docs/man/xl.cfg.pod.5.in @@ -1237,6 +1237,7 @@ the virtual firmware to the guest Operating System. ACPI is required by most modern guest Operating Systems. This option is enabled by default and usually you should omit it. However it may be necessary to disable ACPI for compatibility with some guest Operating Systems. +This option is true for x86 while it's false for ARM by default. =item B diff --git a/tools/libxl/libxl_arch.h b/tools/libxl/libxl_arch.h index 7c6536b..337061f 100644 --- a/tools/libxl/libxl_arch.h +++ b/tools/libxl/libxl_arch.h @@ -65,4 +65,8 @@ int libxl__arch_domain_construct_memmap(libxl__gc *gc, int libxl__dom_load_acpi(libxl__gc *gc, libxl_domain_build_info *info, struct xc_dom_image *dom); + +_hidden +void libxl__arch_domain_build_info_acpi_setdefault( + libxl_domain_build_info *b_info); #endif diff --git a/tools/libxl/libxl_arm.c b/tools/libxl/libxl_arm.c index bd3d611..8ec5cd5 100644 --- a/tools/libxl/libxl_arm.c +++ b/tools/libxl/libxl_arm.c @@ -985,6 +985,12 @@ int libxl__arch_domain_construct_memmap(libxl__gc *gc, return 0; } +void libxl__arch_domain_build_info_acpi_setdefault( + libxl_domain_build_info *b_info) +{ + libxl_defbool_setdefault(&b_info->acpi, false); +} + /* * Local variables: * mode: C diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index 08822e3..b5737ab 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -215,6 +215,8 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, if (!b_info->event_channels) b_info->event_channels = 1023; + libxl__arch_domain_build_info_acpi_setdefault(b_info); + switch (b_info->type) { case LIBXL_DOMAIN_TYPE_HVM: if (b_info->shadow_memkb == LIBXL_MEMKB_DEFAULT) @@ -454,7 +456,7 @@ int libxl__domain_build(libxl__gc *gc, localents = libxl__calloc(gc, 9, sizeof(char *)); i = 0; localents[i++] = "platform/acpi"; - localents[i++] = libxl_defbool_val(info->u.hvm.acpi) ? "1" : "0"; + localents[i++] = libxl__acpi_defbool_val(info) ? "1" : "0"; localents[i++] = "platform/acpi_s3"; localents[i++] = libxl_defbool_val(info->u.hvm.acpi_s3) ? "1" : "0"; localents[i++] = "platform/acpi_s4"; diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index de16a59..7b5ebc6 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -583,7 +583,7 @@ static int libxl__build_device_model_args_old(libxl__gc *gc, if (b_info->u.hvm.soundhw) { flexarray_vappend(dm_args, "-soundhw", b_info->u.hvm.soundhw, NULL); } - if (libxl_defbool_val(b_info->u.hvm.acpi)) { + if (libxl__acpi_defbool_val(b_info)) { flexarray_append(dm_args, "-acpi"); } if (b_info->max_vcpus > 1) { @@ -1204,7 +1204,7 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, if (b_info->u.hvm.soundhw) { flexarray_vappend(dm_args, "-soundhw", b_info->u.hvm.soundhw, NULL); } - if (!libxl_defbool_val(b_info->u.hvm.acpi)) { + if (!libxl__acpi_defbool_val(b_info)) { flexarray_append(dm_args, "-no-acpi"); } if (b_info->max_vcpus > 1) { diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 991a1cc..9a34a04 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -4267,6 +4267,12 @@ _hidden int libxl__read_sysfs_file_contents(libxl__gc *gc, #define LIBXL_QEMU_USER_PREFIX "xen-qemuuser" #define LIBXL_QEMU_USER_BASE LIBXL_QEMU_USER_PREFIX"-domid" #define LIBXL_QEMU_USER_SHARED LIBXL_QEMU_USER_PREFIX"-shared" + +static inline bool libxl__acpi_defbool_val(const libxl_domain_build_info *b_info) +{ + return libxl_defbool_val(b_info->acpi) && + libxl_defbool_val(b_info->u.hvm.acpi); +} #endif /* diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 98bfc3a..a02446f 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -494,11 +494,15 @@ libxl_domain_build_info = Struct("domain_build_info",[ # Note that the partial device tree should avoid to use the phandle # 65000 which is reserved by the toolstack. ("device_tree", string), + ("acpi", libxl_defbool), ("u", KeyedUnion(None, libxl_domain_type, "type", [("hvm", Struct(None, [("firmware", string), ("bios", libxl_bios_type), ("pae", libxl_defbool), ("apic", libxl_defbool), + # The following acpi field is deprecated. + # Please use the unified acpi field above + # which works for both x86 and ARM. ("acpi", libxl_defbool), ("acpi_s3", libxl_defbool), ("acpi_s4", libxl_defbool), diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index 42f2139..e9127bb 100644 --- a/tools/libxl/libxl_x86.c +++ b/tools/libxl/libxl_x86.c @@ -570,6 +570,12 @@ out: return rc; } +void libxl__arch_domain_build_info_acpi_setdefault( + libxl_domain_build_info *b_info) +{ + libxl_defbool_setdefault(&b_info->acpi, true); +} + /* * Local variables: * mode: C diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 1d06598..be17702 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -1547,6 +1547,7 @@ static void parse_config_data(const char *config_source, b_info->cmdline = parse_cmdline(config); xlu_cfg_get_defbool(config, "driver_domain", &c_info->driver_domain, 0); + xlu_cfg_get_defbool(config, "acpi", &b_info->acpi, 0); switch(b_info->type) { case LIBXL_DOMAIN_TYPE_HVM: @@ -1576,7 +1577,6 @@ static void parse_config_data(const char *config_source, xlu_cfg_get_defbool(config, "pae", &b_info->u.hvm.pae, 0); xlu_cfg_get_defbool(config, "apic", &b_info->u.hvm.apic, 0); - xlu_cfg_get_defbool(config, "acpi", &b_info->u.hvm.acpi, 0); xlu_cfg_get_defbool(config, "acpi_s3", &b_info->u.hvm.acpi_s3, 0); xlu_cfg_get_defbool(config, "acpi_s4", &b_info->u.hvm.acpi_s4, 0); xlu_cfg_get_defbool(config, "nx", &b_info->u.hvm.nx, 0);