From patchwork Mon Mar 11 18:02:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Andryuk X-Patchwork-Id: 1054663 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LPp24Kpe"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44J5pF208lz9s55 for ; Tue, 12 Mar 2019 05:13:57 +1100 (AEDT) Received: from localhost ([127.0.0.1]:38088 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h3PQx-0001nb-8C for incoming@patchwork.ozlabs.org; Mon, 11 Mar 2019 14:13:55 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47647) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h3PGu-00030K-Fc for qemu-devel@nongnu.org; Mon, 11 Mar 2019 14:03:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h3PGi-0002Ld-2l for qemu-devel@nongnu.org; Mon, 11 Mar 2019 14:03:25 -0400 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]:38776) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h3PGd-0002Dw-Ky for qemu-devel@nongnu.org; Mon, 11 Mar 2019 14:03:16 -0400 Received: by mail-qt1-x842.google.com with SMTP id s1so6129039qte.5 for ; Mon, 11 Mar 2019 11:03:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7rPHfXiOcpHxYxSc/kHk9IvcnpOOtggDU1BVuwjtYDw=; b=LPp24KpeeF6mJTHmQszt5a2qnTt+97MBjZy0XCSAhbKF20kOt9gCGdk4RS+MFWhdYp OxL/N/NWG+y/XIdiBWUDfY9QN45SGVSfzwm/7/5SkyD2P8RI+Vn1xF+LFS2xEPFmYnr4 F3tWDWWfSUENkfwOaU4MXirAcI1PKmeXLlE5jwgzE/yYO/DWRKrrqi1/cg4Ddr/KM5f6 pDrlahfwxHIh8xPnmiOSiDn2n7JczWbo427z8zNJ7Z8IsSJ3GqIkw5Mn913JinzUMeHZ kckVwuNh0dHwTONI+bKDehy1RAwlc8yM+PjGGuCcyssWEgxbU88Rv/8wK/4SMElD9ZKY IZzw== 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:mime-version:content-transfer-encoding; bh=7rPHfXiOcpHxYxSc/kHk9IvcnpOOtggDU1BVuwjtYDw=; b=GuBnFS3UE/QQNSVpz9zUfDUTfRmhBUC8X9s9Y/Np7KZst+qCedqPO4eAaPBgTnHaY0 afC97THb3VNTjWUJMw90izG46O7P67QDzQ1l5Lj7ZD2JNqVbdGjNTEU0AI7UCE2p3yXS dX8dlAoQPE8v58LZgIRKwp1rDgr7e8tZ63CMmqe4VLB1F/JWir9r0iNmWHyyc1gTX/Uy rqgq5I8jSsuEWgPvgZSG4Xn2/8gIyxyz4asBP6opSTQvIDSPiB6QtvHdVPKJJeAp/tF4 RjrDkfj4wV3WMKDFIyR5rwwu4s6OaxDJwURuhkDksK1++sTsHb2rp1653YVUdjIQj+jp dy0A== X-Gm-Message-State: APjAAAXhBTC19t+KCmCiZqBfyA3p14nEujPsBF2PaP8KrbS/di0TdHWX BZZMU2U9+a7UiZ14Aw+q6pWpFsZMD4U= X-Google-Smtp-Source: APXvYqziJ9SafszTJaceW7nKEsCc4sKaRZ/0ePJvnRe8bbPsxG6kwE88yyj9ya6JQIswTv4fyECJoQ== X-Received: by 2002:a0c:d0c9:: with SMTP id b9mr26552089qvh.95.1552327393689; Mon, 11 Mar 2019 11:03:13 -0700 (PDT) Received: from pm2-ws13.praxislan02.com ([2001:470:8:67e:ba27:ebff:fee8:ce27]) by smtp.gmail.com with ESMTPSA id f126sm4687637qka.14.2019.03.11.11.03.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 11 Mar 2019 11:03:12 -0700 (PDT) From: Jason Andryuk To: qemu-devel@nongnu.org Date: Mon, 11 Mar 2019 14:02:11 -0400 Message-Id: <20190311180216.18811-2-jandryuk@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190311180216.18811-1-jandryuk@gmail.com> References: <20190311180216.18811-1-jandryuk@gmail.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::842 Subject: [Qemu-devel] [PATCH 1/6] xen: Introduce -xen-stubdom option X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Jason Andryuk , marmarek@invisiblethingslab.com, Paul Durrant , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" With Xen, QEMU can run isolated in a dedicated service VM - a stubdom. There are a few differences when running in a stubdom compared to dom0. Add the -xen-stubdom option to select this mode at runtime. The default is off. Signed-off-by: Jason Andryuk --- include/hw/xen/xen.h | 6 ++++++ qemu-options.hx | 7 +++++++ vl.c | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index ba039c146d..fed3611623 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -21,6 +21,7 @@ enum xen_mode { extern uint32_t xen_domid; extern enum xen_mode xen_mode; extern bool xen_domid_restrict; +extern bool xen_stubdom; extern bool xen_allowed; @@ -29,6 +30,11 @@ static inline bool xen_enabled(void) return xen_allowed; } +static inline bool xen_stubdom_enabled(void) +{ + return xen_stubdom; +} + int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num); void xen_piix3_set_irq(void *opaque, int irq_num, int level); void xen_piix_pci_write_config_client(uint32_t address, uint32_t val, int len); diff --git a/qemu-options.hx b/qemu-options.hx index 1cf9aac1fe..ba56c3dd9a 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -3386,6 +3386,10 @@ DEF("xen-domid-restrict", 0, QEMU_OPTION_xen_domid_restrict, " to specified domain id. (Does not affect\n" " xenpv machine type).\n", QEMU_ARCH_ALL) +DEF("xen-stubdom", 0, QEMU_OPTION_xen_stubdom, + "-xen-stubdom specify QEMU is running in a stubdom, so certain\n" + " behavior changes. (Does not affect xenpv machine type).\n", + QEMU_ARCH_ALL) STEXI @item -xen-domid @var{id} @findex -xen-domid @@ -3396,6 +3400,9 @@ Attach to existing xen domain. libxl will use this when starting QEMU (XEN only). @findex -xen-domid-restrict Restrict set of available xen operations to specified domain id (XEN only). +@findex -xen-stubdom +@item -xen-stubdom +Run qemu in stubdom-mode (XEN only). ETEXI DEF("no-reboot", 0, QEMU_OPTION_no_reboot, \ diff --git a/vl.c b/vl.c index 4a350de5cd..0d04319d9b 100644 --- a/vl.c +++ b/vl.c @@ -206,6 +206,7 @@ bool xen_allowed; uint32_t xen_domid; enum xen_mode xen_mode = XEN_EMULATE; bool xen_domid_restrict; +bool xen_stubdom; static int has_defaults = 1; static int default_serial = 1; @@ -3796,6 +3797,13 @@ int main(int argc, char **argv, char **envp) } xen_domid_restrict = true; break; + case QEMU_OPTION_xen_stubdom: + if (!(xen_available())) { + error_report("Option not supported for this target"); + exit(1); + } + xen_stubdom = true; + break; case QEMU_OPTION_trace: g_free(trace_file); trace_file = trace_opt_parse(optarg);