From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Andryuk Subject: [PATCH 1/6] xen: Introduce -xen-stubdom option Date: Mon, 11 Mar 2019 14:02:11 -0400 Message-ID: <20190311180216.18811-2-jandryuk@gmail.com> References: <20190311180216.18811-1-jandryuk@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h3PGd-0001BD-LG for xen-devel@lists.xenproject.org; Mon, 11 Mar 2019 18:03:15 +0000 Received: by mail-qt1-x843.google.com with SMTP id b16so5029852qtt.2 for ; Mon, 11 Mar 2019 11:03:14 -0700 (PDT) In-Reply-To: <20190311180216.18811-1-jandryuk@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Stefano Stabellini , Jason Andryuk , marmarek@invisiblethingslab.com, Paul Durrant , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org V2l0aCBYZW4sIFFFTVUgY2FuIHJ1biBpc29sYXRlZCBpbiBhIGRlZGljYXRlZCBzZXJ2aWNlIFZN IC0gYSBzdHViZG9tLgpUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW5jZXMgd2hlbiBydW5uaW5nIGlu IGEgc3R1YmRvbSBjb21wYXJlZCB0byBkb20wLgpBZGQgdGhlIC14ZW4tc3R1YmRvbSBvcHRpb24g dG8gc2VsZWN0IHRoaXMgbW9kZSBhdCBydW50aW1lLiAgVGhlIGRlZmF1bHQKaXMgb2ZmLgoKU2ln bmVkLW9mZi1ieTogSmFzb24gQW5kcnl1ayA8amFuZHJ5dWtAZ21haWwuY29tPgotLS0KIGluY2x1 ZGUvaHcveGVuL3hlbi5oIHwgNiArKysrKysKIHFlbXUtb3B0aW9ucy5oeCAgICAgIHwgNyArKysr KysrCiB2bC5jICAgICAgICAgICAgICAgICB8IDggKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcveGVuL3hlbi5oIGIvaW5j bHVkZS9ody94ZW4veGVuLmgKaW5kZXggYmEwMzljMTQ2ZC4uZmVkMzYxMTYyMyAxMDA2NDQKLS0t IGEvaW5jbHVkZS9ody94ZW4veGVuLmgKKysrIGIvaW5jbHVkZS9ody94ZW4veGVuLmgKQEAgLTIx LDYgKzIxLDcgQEAgZW51bSB4ZW5fbW9kZSB7CiBleHRlcm4gdWludDMyX3QgeGVuX2RvbWlkOwog ZXh0ZXJuIGVudW0geGVuX21vZGUgeGVuX21vZGU7CiBleHRlcm4gYm9vbCB4ZW5fZG9taWRfcmVz dHJpY3Q7CitleHRlcm4gYm9vbCB4ZW5fc3R1YmRvbTsKIAogZXh0ZXJuIGJvb2wgeGVuX2FsbG93 ZWQ7CiAKQEAgLTI5LDYgKzMwLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB4ZW5fZW5hYmxlZCh2 b2lkKQogICAgIHJldHVybiB4ZW5fYWxsb3dlZDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHhl bl9zdHViZG9tX2VuYWJsZWQodm9pZCkKK3sKKyAgICByZXR1cm4geGVuX3N0dWJkb207Cit9CisK IGludCB4ZW5fcGNpX3Nsb3RfZ2V0X3BpcnEoUENJRGV2aWNlICpwY2lfZGV2LCBpbnQgaXJxX251 bSk7CiB2b2lkIHhlbl9waWl4M19zZXRfaXJxKHZvaWQgKm9wYXF1ZSwgaW50IGlycV9udW0sIGlu dCBsZXZlbCk7CiB2b2lkIHhlbl9waWl4X3BjaV93cml0ZV9jb25maWdfY2xpZW50KHVpbnQzMl90 IGFkZHJlc3MsIHVpbnQzMl90IHZhbCwgaW50IGxlbik7CmRpZmYgLS1naXQgYS9xZW11LW9wdGlv bnMuaHggYi9xZW11LW9wdGlvbnMuaHgKaW5kZXggMWNmOWFhYzFmZS4uYmE1NmMzZGQ5YSAxMDA2 NDQKLS0tIGEvcWVtdS1vcHRpb25zLmh4CisrKyBiL3FlbXUtb3B0aW9ucy5oeApAQCAtMzM4Niw2 ICszMzg2LDEwIEBAIERFRigieGVuLWRvbWlkLXJlc3RyaWN0IiwgMCwgUUVNVV9PUFRJT05feGVu X2RvbWlkX3Jlc3RyaWN0LAogICAgICIgICAgICAgICAgICAgICAgICAgICAgICB0byBzcGVjaWZp ZWQgZG9tYWluIGlkLiAoRG9lcyBub3QgYWZmZWN0XG4iCiAgICAgIiAgICAgICAgICAgICAgICAg ICAgICAgIHhlbnB2IG1hY2hpbmUgdHlwZSkuXG4iLAogICAgIFFFTVVfQVJDSF9BTEwpCitERUYo Inhlbi1zdHViZG9tIiwgMCwgUUVNVV9PUFRJT05feGVuX3N0dWJkb20sCisgICAgIi14ZW4tc3R1 YmRvbSAgICBzcGVjaWZ5IFFFTVUgaXMgcnVubmluZyBpbiBhIHN0dWJkb20sIHNvIGNlcnRhaW5c biIKKyAgICAiICAgICAgICAgICAgICAgIGJlaGF2aW9yIGNoYW5nZXMuIChEb2VzIG5vdCBhZmZl Y3QgeGVucHYgbWFjaGluZSB0eXBlKS5cbiIsCisgICAgUUVNVV9BUkNIX0FMTCkKIFNURVhJCiBA aXRlbSAteGVuLWRvbWlkIEB2YXJ7aWR9CiBAZmluZGV4IC14ZW4tZG9taWQKQEAgLTMzOTYsNiAr MzQwMCw5IEBAIEF0dGFjaCB0byBleGlzdGluZyB4ZW4gZG9tYWluLgogbGlieGwgd2lsbCB1c2Ug dGhpcyB3aGVuIHN0YXJ0aW5nIFFFTVUgKFhFTiBvbmx5KS4KIEBmaW5kZXggLXhlbi1kb21pZC1y ZXN0cmljdAogUmVzdHJpY3Qgc2V0IG9mIGF2YWlsYWJsZSB4ZW4gb3BlcmF0aW9ucyB0byBzcGVj aWZpZWQgZG9tYWluIGlkIChYRU4gb25seSkuCitAZmluZGV4IC14ZW4tc3R1YmRvbQorQGl0ZW0g LXhlbi1zdHViZG9tCitSdW4gcWVtdSBpbiBzdHViZG9tLW1vZGUgKFhFTiBvbmx5KS4KIEVURVhJ CiAKIERFRigibm8tcmVib290IiwgMCwgUUVNVV9PUFRJT05fbm9fcmVib290LCBcCmRpZmYgLS1n aXQgYS92bC5jIGIvdmwuYwppbmRleCA0YTM1MGRlNWNkLi4wZDA0MzE5ZDliIDEwMDY0NAotLS0g YS92bC5jCisrKyBiL3ZsLmMKQEAgLTIwNiw2ICsyMDYsNyBAQCBib29sIHhlbl9hbGxvd2VkOwog dWludDMyX3QgeGVuX2RvbWlkOwogZW51bSB4ZW5fbW9kZSB4ZW5fbW9kZSA9IFhFTl9FTVVMQVRF OwogYm9vbCB4ZW5fZG9taWRfcmVzdHJpY3Q7Citib29sIHhlbl9zdHViZG9tOwogCiBzdGF0aWMg aW50IGhhc19kZWZhdWx0cyA9IDE7CiBzdGF0aWMgaW50IGRlZmF1bHRfc2VyaWFsID0gMTsKQEAg LTM3OTYsNiArMzc5NywxMyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNoYXIg KiplbnZwKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB4ZW5fZG9taWRfcmVz dHJpY3QgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBR RU1VX09QVElPTl94ZW5fc3R1YmRvbToKKyAgICAgICAgICAgICAgICBpZiAoISh4ZW5fYXZhaWxh YmxlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiT3B0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRoaXMgdGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHhlbl9zdHViZG9tID0gdHJ1ZTsK KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUUVNVV9PUFRJT05fdHJh Y2U6CiAgICAgICAgICAgICAgICAgZ19mcmVlKHRyYWNlX2ZpbGUpOwogICAgICAgICAgICAgICAg IHRyYWNlX2ZpbGUgPSB0cmFjZV9vcHRfcGFyc2Uob3B0YXJnKTsKLS0gCjIuMjAuMQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 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) From: Jason Andryuk Date: Mon, 11 Mar 2019 14:02:11 -0400 Message-Id: <20190311180216.18811-2-jandryuk@gmail.com> In-Reply-To: <20190311180216.18811-1-jandryuk@gmail.com> References: <20190311180216.18811-1-jandryuk@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH 1/6] xen: Introduce -xen-stubdom option List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: xen-devel@lists.xenproject.org, marmarek@invisiblethingslab.com, Jason Andryuk , Stefano Stabellini , Anthony Perard , Paul Durrant , Paolo Bonzini 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); -- 2.20.1