From patchwork Mon Aug 28 08:55:47 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhupinder Thakur X-Patchwork-Id: 111108 Delivered-To: patch@linaro.org Received: by 10.140.95.78 with SMTP id h72csp4547980qge; Mon, 28 Aug 2017 01:58:44 -0700 (PDT) X-Received: by 10.107.138.29 with SMTP id m29mr6177720iod.263.1503910724495; Mon, 28 Aug 2017 01:58:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1503910724; cv=none; d=google.com; s=arc-20160816; b=BjK+aLkFx96n/eofMvwAv35cebjogu5Gwy+tMzrfsIObMASVmjEAlgqChKOB6LReUS hqNJegSlMNCUZOc+8WQDczXKU7wBBdP3HsIT5kP6hy0HScIobSOM47G0tb7Rgjapkps+ d2VzphcnRi/llmkhFTsKaU/Hfaj4jQWafNx24TCAvJg/eLtdg43+z0HF1cEeknuk7cRs 16ANPsqjkHQk+JtxCvl184c0VegT6eKTdcR9GpRiHse1Ppy5SdT+j9U345hHg7uB/4d0 gBQx1eqniAQOeWnW/kTDNJy6BtoJrbnsur8URU0rYaflM/jhGsCDC9Bh0bv15lGnfmZR mLXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-unsubscribe:list-id :precedence:subject:cc:references:in-reply-to:message-id:date:to :from:dkim-signature:arc-authentication-results; bh=8dtN5Z6XkzSAzP7su9v/SMW6vqO0BrcpmaesV0kPtew=; b=KkY/WWpBxwi3fA/+dYM0xuwfl3pl2rhXGCFcyo/CCHROBwX9WV7uYgussVAT6J0kHT Ms+opF673mZ31QAc5lOLvuLvB/Xvtdsyjd0MiYqS81daC4I7fr1tKZCu3lPzGg1Q2eQ3 BrvbhA24Dv+fGVxErGfB1DrPUYVFK338QaBF7kEzW+JZ94NxbN84+YLZCaDXVrTweRei GxVxBCy0/tlvX+ux9w6sOrv2vCLg2NFaCWDtHp5Dvek305LD+Zk3DJOBUagJx5wu7lnk ktRj0hPCNTcLKIui9pyyWDwMH2CQY/EK4NF1gtUVaLkSY7ykilyxGbMpRLlvi1nu8TlT fogw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LlByt/GW; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org. [192.237.175.120]) by mx.google.com with ESMTPS id o11si7475679itb.111.2017.08.28.01.58.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Aug 2017 01:58:44 -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; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LlByt/GW; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.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 1dmFqW-0004jW-St; Mon, 28 Aug 2017 08:56:36 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dmFqV-0004iq-79 for xen-devel@lists.xenproject.org; Mon, 28 Aug 2017 08:56:35 +0000 Received: from [85.158.143.35] by server-4.bemta-6.messagelabs.com id 93/80-02962-2CAD3A95; Mon, 28 Aug 2017 08:56:34 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrNIsWRWlGSWpSXmKPExsVyMfTANt2DtxZ HGtxdbWLxfctkJgdGj8MfrrAEMEaxZuYl5VcksGZ8n97KWPDJuOL9kXOMDYzLNLsYuTiEBGYy SrTOuMgI4rAIzGOWODJ1KZgjIdDPKnH5wCP2LkZOICdNYsOKb0xdjBxAdrXEzMZCkLCQgJbE0 VOzWSEm7WeS6L93jRmkhk3ARGJWhwRIjYiAksS9VZOZQGqYBeYzSjRN6mUDSQgLeEp8/nKcGc RmEVCV2Hu2kx2kl1fAW6Lxnh7EWjmJm+c6wUo4BXwkdqy9yw6x11ui6/UH1gmMAgsYGVYxahS nFpWlFukaWeglFWWmZ5TkJmbm6BoamOnlphYXJ6an5iQmFesl5+duYgQGFgMQ7GA8vzbwEKMk B5OSKO/OisWRQnxJ+SmVGYnFGfFFpTmpxYcYZTg4lCR4z9wEygkWpaanVqRl5gBDHCYtwcGjJ ML7ASTNW1yQmFucmQ6ROsVoyXHlyrovTBwbVq8HklMObP/CJMSSl5+XKiXO+xCkQQCkIaM0D2 4cLA4vMcpKCfMyAh0oxFOQWpSbWYIq/4pRnINRSZj3IMgUnsy8Eritr4AOYgI6SFFwIchBJYk IKakGxpxnLx1WcU+Zneiknp1UrKNVXHCwbAVDY9uP3+mf7506K98dMrH443eRzH4x11K+z7u/ 7c5rOsv55fyFTR23onj9iirbyxuvSNbseq9sxqF2fqma87kZ3EefdzXeTtnOHW2ePFF97xq2v /lSbcZz9n78/FmrJvdknHbsaYcojstl2yetbCr2U2Ipzkg01GIuKk4EAPU+I0W+AgAA X-Env-Sender: bhupinder.thakur@linaro.org X-Msg-Ref: server-2.tower-21.messagelabs.com!1503910592!65946901!1 X-Originating-IP: [209.85.192.182] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 45323 invoked from network); 28 Aug 2017 08:56:33 -0000 Received: from mail-pf0-f182.google.com (HELO mail-pf0-f182.google.com) (209.85.192.182) by server-2.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 28 Aug 2017 08:56:33 -0000 Received: by mail-pf0-f182.google.com with SMTP id h75so14499389pfh.1 for ; Mon, 28 Aug 2017 01:56:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=p3M4k25sgODLCb8EWa11OUakliOw4e6cNBaSDFl9PHQ=; b=LlByt/GWzRDCATMtjk/IpKxIIHr7hxSM30HCXaK+NT2HZv4gmmYsDrTbKB9uOhW9ae DBevDVtxVH3rgflzL6Pl/aWgSHIGuO0H+3wVz2CEJ0R5D5Osz3te5Ig8lbWiEzn+pgZ3 sqtlzDT1ZOutEnbs1R6FEa6jC3mV8KuFl+Rsc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=p3M4k25sgODLCb8EWa11OUakliOw4e6cNBaSDFl9PHQ=; b=jqLWlZLssvSU2wlxOSgOCUHL1B0CDG3nABUMAjbt8DNFGdWNPnEEBZEdplO1+N4ICJ SoPXVWZjg68xq57+0+jgASM7GFXcf8TTk9PatQqogtDT24heNlD9CtKh4dZPjjikL0kB l0x+SnQq5RT+dE5+Jhwthm6O1aw9rHn4b/fmKp0+Xy9buR7GhoPvVSbx9Wzi5ilKfLmy lnHayhSauPEMlOB57e0qKigbZP/SM6cM6afifgaUBn2GvSdRcwojRCL3X+aqHGolmDtV qIv48wCVlff2AXsn3IbymSBqpAX3FqqHajXSmZaQXDlC4EKMrGAE3GP1cmENYB7scW+v metA== X-Gm-Message-State: AHYfb5g2mRHnC6xNarILO7y4nz0+xJC62+VD5u2jg8DnI2x+xsZ7DlmS SqVrKiP0Qn/gPsAVFaBItw== X-Received: by 10.99.121.138 with SMTP id u132mr6919249pgc.424.1503910591900; Mon, 28 Aug 2017 01:56:31 -0700 (PDT) Received: from blr-ubuntu-linaro.wlan.qualcomm.com (blr-bdr-fw-01_globalnat_allzones-outside.qualcomm.com. [103.229.18.19]) by smtp.gmail.com with ESMTPSA id d88sm21713569pfl.158.2017.08.28.01.56.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 28 Aug 2017 01:56:31 -0700 (PDT) From: Bhupinder Thakur To: xen-devel@lists.xenproject.org Date: Mon, 28 Aug 2017 14:25:47 +0530 Message-Id: <1503910570-24427-5-git-send-email-bhupinder.thakur@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1503910570-24427-1-git-send-email-bhupinder.thakur@linaro.org> References: <1503910570-24427-1-git-send-email-bhupinder.thakur@linaro.org> Cc: Wei Liu , Julien Grall , Stefano Stabellini , Ian Jackson Subject: [Xen-devel] [PATCH 04/27 v8] xen/arm: vpl011: Add support for vuart in libxl 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: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" An option is provided in libxl to enable/disable SBSA vuart while creating a guest domain. Libxl now supports a generic vuart console and SBSA uart is a specific type. In future support can be added for multiple vuart of different types. User can enable SBSA vuart by adding the following line in the guest configuration file: vuart = "sbsa_uart" Signed-off-by: Bhupinder Thakur Acked-by: Stefano Stabellini Acked-by: Wei Liu --- CC: Ian Jackson CC: Wei Liu CC: Stefano Stabellini CC: Julien Grall Changes since v4: - Renamed "pl011" to "sbsa_uart". Changes since v3: - Added a new config option CONFIG_VUART_CONSOLE to enable/disable vuart console support. - Moved libxl_vuart_type to arch-arm part of libxl_domain_build_info - Updated xl command help to mention new console type - vuart. Changes since v2: - Defined vuart option as an enum instead of a string. - Removed the domain creation flag defined for vuart and the related code to pass on the information while domain creation. Now vpl011 is initialized independent of domain creation through new DOMCTL APIs. tools/libxl/libxl.h | 6 ++++++ tools/libxl/libxl_console.c | 3 +++ tools/libxl/libxl_dom.c | 1 + tools/libxl/libxl_internal.h | 3 +++ tools/libxl/libxl_types.idl | 7 +++++++ tools/xl/xl_cmdtable.c | 2 +- tools/xl/xl_console.c | 5 ++++- tools/xl/xl_parse.c | 8 ++++++++ 8 files changed, 33 insertions(+), 2 deletions(-) diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index 229e289..8ce920a 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -306,6 +306,12 @@ #define LIBXL_HAVE_BUILDINFO_HVM_ACPI_LAPTOP_SLATE 1 /* + * LIBXL_HAVE_BUILDINFO_ARM_VUART indicates that the toolstack supports virtual UART + * for ARM. + */ +#define LIBXL_HAVE_BUILDINFO_ARM_VUART 1 + +/* * libxl ABI compatibility * * The only guarantee which libxl makes regarding ABI compatibility diff --git a/tools/libxl/libxl_console.c b/tools/libxl/libxl_console.c index 446e766..853be15 100644 --- a/tools/libxl/libxl_console.c +++ b/tools/libxl/libxl_console.c @@ -67,6 +67,9 @@ int libxl_console_exec(libxl_ctx *ctx, uint32_t domid, int cons_num, case LIBXL_CONSOLE_TYPE_SERIAL: cons_type_s = "serial"; break; + case LIBXL_CONSOLE_TYPE_VUART: + cons_type_s = "vuart"; + break; default: goto out; } diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index f54fd49..e0f0d78 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -803,6 +803,7 @@ int libxl__build_pv(libxl__gc *gc, uint32_t domid, if (xc_dom_translated(dom)) { state->console_mfn = dom->console_pfn; state->store_mfn = dom->xenstore_pfn; + state->vuart_gfn = dom->vuart_gfn; } else { state->console_mfn = xc_dom_p2m(dom, dom->console_pfn); state->store_mfn = xc_dom_p2m(dom, dom->xenstore_pfn); diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 7247509..6b38453 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -1139,6 +1139,9 @@ typedef struct { uint32_t num_vmemranges; xc_domain_configuration_t config; + + xen_pfn_t vuart_gfn; + evtchn_port_t vuart_port; } libxl__domain_build_state; _hidden int libxl__build_pre(libxl__gc *gc, uint32_t domid, diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 6e80d36..9959efb 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -105,6 +105,7 @@ libxl_console_type = Enumeration("console_type", [ (0, "UNKNOWN"), (1, "SERIAL"), (2, "PV"), + (3, "VUART"), ]) libxl_disk_format = Enumeration("disk_format", [ @@ -240,6 +241,11 @@ libxl_checkpointed_stream = Enumeration("checkpointed_stream", [ (2, "COLO"), ]) +libxl_vuart_type = Enumeration("vuart_type", [ + (0, "unknown"), + (1, "sbsa_uart"), + ]) + # # Complex libxl types # @@ -581,6 +587,7 @@ libxl_domain_build_info = Struct("domain_build_info",[ ("arch_arm", Struct(None, [("gic_version", libxl_gic_version), + ("vuart", libxl_vuart_type), ])), # Alternate p2m is not bound to any architecture or guest type, as it is # supported by x86 HVM and ARM support is planned. diff --git a/tools/xl/xl_cmdtable.c b/tools/xl/xl_cmdtable.c index 2c71a9f..3094bce 100644 --- a/tools/xl/xl_cmdtable.c +++ b/tools/xl/xl_cmdtable.c @@ -133,7 +133,7 @@ struct cmd_spec cmd_table[] = { &main_console, 0, 0, "Attach to domain's console", "[options] \n" - "-t console type, pv or serial\n" + "-t console type, pv , serial or vuart\n" "-n console number" }, { "vncviewer", diff --git a/tools/xl/xl_console.c b/tools/xl/xl_console.c index 0508dda..4e65d73 100644 --- a/tools/xl/xl_console.c +++ b/tools/xl/xl_console.c @@ -27,6 +27,7 @@ int main_console(int argc, char **argv) uint32_t domid; int opt = 0, num = 0; libxl_console_type type = 0; + char *console_names = "pv, serial, vuart"; SWITCH_FOREACH_OPT(opt, "n:t:", NULL, "console", 1) { case 't': @@ -34,8 +35,10 @@ int main_console(int argc, char **argv) type = LIBXL_CONSOLE_TYPE_PV; else if (!strcmp(optarg, "serial")) type = LIBXL_CONSOLE_TYPE_SERIAL; + else if (!strcmp(optarg, "vuart")) + type = LIBXL_CONSOLE_TYPE_VUART; else { - fprintf(stderr, "console type supported are: pv, serial\n"); + fprintf(stderr, "console type supported are: %s\n", console_names); return EXIT_FAILURE; } break; diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index 5c2bf17..71588de 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -918,6 +918,14 @@ void parse_config_data(const char *config_source, if (!xlu_cfg_get_long (config, "maxvcpus", &l, 0)) b_info->max_vcpus = l; + if (!xlu_cfg_get_string(config, "vuart", &buf, 0)) { + if (libxl_vuart_type_from_string(buf, &b_info->arch_arm.vuart)) { + fprintf(stderr, "ERROR: invalid value \"%s\" for \"vuart\"\n", + buf); + exit(1); + } + } + parse_vnuma_config(config, b_info); /* Set max_memkb to target_memkb and max_vcpus to avail_vcpus if