From patchwork Wed Sep 23 06:45:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?SsO8cmdlbiBHcm/Dnw==?= X-Patchwork-Id: 11794111 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4C6FD92C for ; Wed, 23 Sep 2020 06:47:04 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1D9B220739 for ; Wed, 23 Sep 2020 06:47:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="f/Ph/ufS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1D9B220739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kKyXF-0001Wc-Lv; Wed, 23 Sep 2020 06:45:49 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kKyXE-0001WR-ED for xen-devel@lists.xenproject.org; Wed, 23 Sep 2020 06:45:48 +0000 X-Inumbo-ID: 3fb7b2e5-4c87-41cf-ad32-591d896f3405 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 3fb7b2e5-4c87-41cf-ad32-591d896f3405; Wed, 23 Sep 2020 06:45:46 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1600843545; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Sv7P9R7t+6Lz9Xw4HtSzYW6xSNj+0ova4G9FBISr/CY=; b=f/Ph/ufSeI5JvN5e1GEKiiWK7l/HtEb3y6bhLFAZ6tl6zSERQTomGwgsTZmNgzUQj0J0gv oi4C6cMVe4ccIWPqiuyddA/HRj9ktVm3FRn/LXOTrmubd6ApNK15FOJV+6OSidhW5udMnw wq2RjPn/pGKvD0T0p7MQsubLBVGHJ7w= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 6B2A1AE71; Wed, 23 Sep 2020 06:46:22 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Ian Jackson , Wei Liu Subject: [PATCH 1/3] tools/init-xenstore-domain: add logging Date: Wed, 23 Sep 2020 08:45:39 +0200 Message-Id: <20200923064541.19546-2-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200923064541.19546-1-jgross@suse.com> References: <20200923064541.19546-1-jgross@suse.com> MIME-Version: 1.0 X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add a possibility to do logging in init-xenstore-domain: use -v[...] for selecting the log-level as in xl, log to stderr. Signed-off-by: Juergen Gross Acked-by: Wei Liu --- tools/helpers/init-xenstore-domain.c | 51 ++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c index 5bdb48dc80..22c4be6a3f 100644 --- a/tools/helpers/init-xenstore-domain.c +++ b/tools/helpers/init-xenstore-domain.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,7 @@ static struct option options[] = { { "param", 1, NULL, 'p' }, { "name", 1, NULL, 'n' }, { "maxmem", 1, NULL, 'M' }, + { "verbose", 0, NULL, 'v' }, { NULL, 0, NULL, 0 } }; @@ -57,7 +59,8 @@ static void usage(void) " --maxmem maximum memory size in the format:\n" " |/|:/\n" " (an absolute value in MB, a fraction a/b of\n" -" the host memory, or the maximum of both)\n"); +" the host memory, or the maximum of both)\n" +" -v[v[v]] verbosity of domain building\n"); } static int build(xc_interface *xch) @@ -349,8 +352,10 @@ int main(int argc, char** argv) char buf[16], be_path[64], fe_path[64]; int rv, fd; char *maxmem_str = NULL; + xentoollog_level minmsglevel = XTL_PROGRESS; + xentoollog_logger *logger = NULL; - while ( (opt = getopt_long(argc, argv, "", options, NULL)) != -1 ) + while ( (opt = getopt_long(argc, argv, "v", options, NULL)) != -1 ) { switch ( opt ) { @@ -375,6 +380,10 @@ int main(int argc, char** argv) case 'M': maxmem_str = optarg; break; + case 'v': + if ( minmsglevel ) + minmsglevel--; + break; default: usage(); return 2; @@ -387,11 +396,15 @@ int main(int argc, char** argv) return 2; } - xch = xc_interface_open(NULL, NULL, 0); + logger = (xentoollog_logger *)xtl_createlogger_stdiostream(stderr, + minmsglevel, 0); + + xch = xc_interface_open(logger, logger, 0); if ( !xch ) { fprintf(stderr, "xc_interface_open() failed\n"); - return 1; + rv = 1; + goto out; } if ( maxmem_str ) @@ -400,7 +413,8 @@ int main(int argc, char** argv) if ( maxmem < 0 ) { xc_interface_close(xch); - return 1; + rv = 1; + goto out; } } @@ -414,17 +428,24 @@ int main(int argc, char** argv) xc_interface_close(xch); if ( rv ) - return 1; + { + rv = 1; + goto out; + } rv = gen_stub_json_config(domid, NULL); if ( rv ) - return 3; + { + rv = 3; + goto out; + } xsh = xs_open(0); if ( !xsh ) { fprintf(stderr, "xs_open() failed.\n"); - return 3; + rv = 3; + goto out; } snprintf(buf, 16, "%d", domid); do_xs_write(xsh, "/tool/xenstored/domid", buf); @@ -460,7 +481,8 @@ int main(int argc, char** argv) if ( fd < 0 ) { fprintf(stderr, "Creating " XEN_RUN_DIR "/xenstored.pid failed\n"); - return 3; + rv = 3; + goto out; } rv = snprintf(buf, 16, "domid:%d\n", domid); rv = write(fd, buf, rv); @@ -469,10 +491,17 @@ int main(int argc, char** argv) { fprintf(stderr, "Writing domid to " XEN_RUN_DIR "/xenstored.pid failed\n"); - return 3; + rv = 3; + goto out; } - return 0; + rv = 0; + + out: + if ( logger ) + xtl_logger_destroy(logger); + + return rv; } /* From patchwork Wed Sep 23 06:45:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?SsO8cmdlbiBHcm/Dnw==?= X-Patchwork-Id: 11794107 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9B14F618 for ; Wed, 23 Sep 2020 06:46:48 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6D09A20739 for ; Wed, 23 Sep 2020 06:46:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="OBoT3hUJ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D09A20739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kKyXF-0001WW-Dk; Wed, 23 Sep 2020 06:45:49 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kKyXD-0001WL-Jh for xen-devel@lists.xenproject.org; Wed, 23 Sep 2020 06:45:47 +0000 X-Inumbo-ID: 852c345f-ead3-4ce9-8769-8a80c02d9989 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 852c345f-ead3-4ce9-8769-8a80c02d9989; Wed, 23 Sep 2020 06:45:46 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1600843545; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5TjIt/1n9BC1orQoZ0QREW1u8v4OegKFuF7yOySNGxI=; b=OBoT3hUJYZP6rvma/pWNEEeGiUEFhhhBMp4xGdkSoPWvnzdjURa7rgxP2eJAMeajPFA3ZG DbFhLINda7AWC1cinRvyjWFE8frxBIZ7sJKVlPy0Q9HFF4j9LBzmyhFPlNDOcq2kO0b1Nb 9HytrkQUAxFNNqV+x7OWqLfrV4SJD8I= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 8FB4AAEAA; Wed, 23 Sep 2020 06:46:22 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Ian Jackson , Wei Liu Subject: [PATCH 2/3] tools/init-xenstore-domain: support xenstore pvh stubdom Date: Wed, 23 Sep 2020 08:45:40 +0200 Message-Id: <20200923064541.19546-3-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200923064541.19546-1-jgross@suse.com> References: <20200923064541.19546-1-jgross@suse.com> MIME-Version: 1.0 X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Instead of creating the xenstore-stubdom domain first and parsing the kernel later do it the other way round. This enables to probe for the domain type supported by the xenstore-stubdom and to support both, pv and pvh type stubdoms. Try to parse the stubdom image first for PV support, if this fails use HVM. Then create the domain with the appropriate type selected. Signed-off-by: Juergen Gross Acked-by: Wei Liu --- tools/helpers/init-xenstore-domain.c | 119 +++++++++++++++++++-------- 1 file changed, 85 insertions(+), 34 deletions(-) diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c index 22c4be6a3f..c174357c0e 100644 --- a/tools/helpers/init-xenstore-domain.c +++ b/tools/helpers/init-xenstore-domain.c @@ -18,6 +18,10 @@ #include "init-dom-json.h" #include "_paths.h" +#define LAPIC_BASE_ADDRESS 0xfee00000UL +#define MB(x) ((uint64_t)x << 20) +#define GB(x) ((uint64_t)x << 30) + static uint32_t domid = ~0; static char *kernel; static char *ramdisk; @@ -69,6 +73,8 @@ static int build(xc_interface *xch) int rv, xs_fd; struct xc_dom_image *dom = NULL; int limit_kb = (maxmem ? : (memory + 1)) * 1024; + uint64_t mem_size = MB(memory); + struct e820entry e820[3]; struct xen_domctl_createdomain config = { .ssidref = SECINITSID_DOMU, .flags = XEN_DOMCTL_CDF_xs_domain, @@ -101,6 +107,66 @@ static int build(xc_interface *xch) } } + dom = xc_dom_allocate(xch, NULL, NULL); + if ( !dom ) + { + fprintf(stderr, "xc_dom_allocate failed\n"); + rv = -1; + goto err; + } + + rv = xc_dom_kernel_file(dom, kernel); + if ( rv ) + { + fprintf(stderr, "xc_dom_kernel_file failed\n"); + goto err; + } + + if ( ramdisk ) + { + rv = xc_dom_module_file(dom, ramdisk, NULL); + if ( rv ) + { + fprintf(stderr, "xc_dom_module_file failed\n"); + goto err; + } + } + + dom->container_type = XC_DOM_HVM_CONTAINER; + rv = xc_dom_parse_image(dom); + if ( rv ) + { + dom->container_type = XC_DOM_PV_CONTAINER; + rv = xc_dom_parse_image(dom); + if ( rv ) + { + fprintf(stderr, "xc_dom_parse_image failed\n"); + goto err; + } + } + else + { + config.flags |= XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap; + config.arch.emulation_flags = XEN_X86_EMU_LAPIC; + dom->target_pages = mem_size >> XC_PAGE_SHIFT; + dom->mmio_size = GB(4) - LAPIC_BASE_ADDRESS; + dom->lowmem_end = (mem_size > LAPIC_BASE_ADDRESS) ? + LAPIC_BASE_ADDRESS : mem_size; + dom->highmem_end = (mem_size > LAPIC_BASE_ADDRESS) ? + GB(4) + mem_size - LAPIC_BASE_ADDRESS : 0; + dom->mmio_start = LAPIC_BASE_ADDRESS; + dom->max_vcpus = 1; + e820[0].addr = 0; + e820[0].size = dom->lowmem_end; + e820[0].type = E820_RAM; + e820[1].addr = LAPIC_BASE_ADDRESS; + e820[1].size = dom->mmio_size; + e820[1].type = E820_RESERVED; + e820[2].addr = GB(4); + e820[2].size = dom->highmem_end - GB(4); + e820[2].type = E820_RAM; + } + rv = xc_domain_create(xch, &domid, &config); if ( rv ) { @@ -125,11 +191,15 @@ static int build(xc_interface *xch) fprintf(stderr, "xc_evtchn_alloc_unbound failed\n"); goto err; } - rv = xc_domain_set_memmap_limit(xch, domid, limit_kb); - if ( rv ) + + if ( dom->container_type == XC_DOM_PV_CONTAINER ) { - fprintf(stderr, "xc_domain_set_memmap_limit failed\n"); - goto err; + rv = xc_domain_set_memmap_limit(xch, domid, limit_kb); + if ( rv ) + { + fprintf(stderr, "xc_domain_set_memmap_limit failed\n"); + goto err; + } } rv = ioctl(xs_fd, IOCTL_XENBUS_BACKEND_SETUP, domid); @@ -144,45 +214,16 @@ static int build(xc_interface *xch) else snprintf(cmdline, 512, "--event %d --internal-db", rv); - dom = xc_dom_allocate(xch, cmdline, NULL); - if ( !dom ) - { - fprintf(stderr, "xc_dom_allocate failed\n"); - goto err; - } - dom->container_type = XC_DOM_PV_CONTAINER; + dom->cmdline = xc_dom_strdup(dom, cmdline); dom->xenstore_domid = domid; dom->console_evtchn = console_evtchn; - rv = xc_dom_kernel_file(dom, kernel); - if ( rv ) - { - fprintf(stderr, "xc_dom_kernel_file failed\n"); - goto err; - } - - if ( ramdisk ) - { - rv = xc_dom_module_file(dom, ramdisk, NULL); - if ( rv ) - { - fprintf(stderr, "xc_dom_module_file failed\n"); - goto err; - } - } - rv = xc_dom_boot_xen_init(dom, xch, domid); if ( rv ) { fprintf(stderr, "xc_dom_boot_xen_init failed\n"); goto err; } - rv = xc_dom_parse_image(dom); - if ( rv ) - { - fprintf(stderr, "xc_dom_parse_image failed\n"); - goto err; - } rv = xc_dom_mem_init(dom, memory); if ( rv ) { @@ -195,6 +236,16 @@ static int build(xc_interface *xch) fprintf(stderr, "xc_dom_boot_mem_init failed\n"); goto err; } + if ( dom->container_type == XC_DOM_HVM_CONTAINER ) + { + rv = xc_domain_set_memory_map(xch, domid, e820, + dom->highmem_end ? 3 : 2); + if ( rv ) + { + fprintf(stderr, "xc_domain_set_memory_map failed\n"); + goto err; + } + } rv = xc_dom_build_image(dom); if ( rv ) { From patchwork Wed Sep 23 06:45:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?SsO8cmdlbiBHcm/Dnw==?= X-Patchwork-Id: 11794109 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C3B1F618 for ; Wed, 23 Sep 2020 06:47:02 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 96EEF21D43 for ; Wed, 23 Sep 2020 06:47:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="ZReoZv5i" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 96EEF21D43 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kKyXJ-0001X0-Ue; Wed, 23 Sep 2020 06:45:53 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kKyXJ-0001WR-5f for xen-devel@lists.xenproject.org; Wed, 23 Sep 2020 06:45:53 +0000 X-Inumbo-ID: 784aa80b-0714-4865-aceb-1fe4615a96d3 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 784aa80b-0714-4865-aceb-1fe4615a96d3; Wed, 23 Sep 2020 06:45:46 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1600843545; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=hiEmrxVeJNQLnM0Fx5gFjQdQxTv/21+Ys/Zu5SejwOo=; b=ZReoZv5iIoD7ohX2yyennswB0e6fwltaIJaT4A37u9T3gJMwpzMIfqKOi9WLFR/+OazHh4 +HPsBSHC6+aNK5/3MpXe1NCZfmt3cakndaEe6CAqJNkRJlQOwNU9OkKg9upKdjq8U+mdjM 6E5jlR3PEhBgzVyLv2ItaNJZ2xC7IUE= Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id D081AAB0E; Wed, 23 Sep 2020 06:46:22 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Andrew Cooper , George Dunlap , Ian Jackson , Jan Beulich , Julien Grall , Stefano Stabellini , Wei Liu , Samuel Thibault Subject: [PATCH 3/3] stubdom: add xenstore pvh stubdom Date: Wed, 23 Sep 2020 08:45:41 +0200 Message-Id: <20200923064541.19546-4-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200923064541.19546-1-jgross@suse.com> References: <20200923064541.19546-1-jgross@suse.com> MIME-Version: 1.0 X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Add a PVH xenstore stubdom in order to support a Xenstore stubdom on a hypervisor built without PV-support. Signed-off-by: Juergen Gross Reviewed-by: Samuel Thibault Acked-by: Wei Liu --- .gitignore | 1 + stubdom/Makefile | 31 ++++++++++++++++++++-- stubdom/configure | 47 ++++++++++++++++++++++++++++++++++ stubdom/configure.ac | 1 + stubdom/xenstorepvh-minios.cfg | 10 ++++++++ 5 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 stubdom/xenstorepvh-minios.cfg diff --git a/.gitignore b/.gitignore index 5e8c47e2db..e7b388e31b 100644 --- a/.gitignore +++ b/.gitignore @@ -91,6 +91,7 @@ stubdom/stubdompath.sh stubdom/tpm_emulator-* stubdom/vtpm/vtpm_manager.h stubdom/xenstore +stubdom/xenstorepvh stubdom/zlib-* tools/*/build/lib*/*.py tools/autom4te.cache/ diff --git a/stubdom/Makefile b/stubdom/Makefile index fb9617fa14..90d9ffcd9f 100644 --- a/stubdom/Makefile +++ b/stubdom/Makefile @@ -367,7 +367,10 @@ $(foreach lib,$(STUB_LIBS),$(eval $(call BUILD_lib,$(lib)))) xenstore/stamp: $(XEN_ROOT)/tools/xenstore/Makefile $(do_links) -LINK_DIRS := xenstore $(foreach dir,$(STUB_LIBS),libs-$(XEN_TARGET_ARCH)/$(dir)) +xenstorepvh/stamp: $(XEN_ROOT)/tools/xenstore/Makefile + $(do_links) + +LINK_DIRS := xenstore xenstorepvh $(foreach dir,$(STUB_LIBS),libs-$(XEN_TARGET_ARCH)/$(dir)) LINK_STAMPS := $(foreach dir,$(LINK_DIRS),$(dir)/stamp) mk-headers-$(XEN_TARGET_ARCH): $(IOEMU_LINKFARM_TARGET) $(LINK_STAMPS) @@ -486,6 +489,17 @@ xenstore-minios-config.mk: $(CURDIR)/xenstore-minios.cfg xenstore: $(CROSS_ROOT) xenstore-minios-config.mk CPPFLAGS="$(TARGET_CPPFLAGS) $(shell cat xenstore-minios-config.mk)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C $@ xenstored.a CONFIG_STUBDOM=y +############# +# xenstorepvh +############# + +xenstorepvh-minios-config.mk: $(CURDIR)/xenstorepvh-minios.cfg + MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config + +.PHONY: xenstorepvh +xenstorepvh: $(CROSS_ROOT) xenstorepvh-minios-config.mk + CPPFLAGS="$(TARGET_CPPFLAGS) $(shell cat xenstorepvh-minios-config.mk)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C $@ xenstored.a CONFIG_STUBDOM=y + ######## # minios ######## @@ -519,6 +533,10 @@ pv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxenguest grub xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxenguest xenstore DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a +.PHONY: xenstorepvh-stubdom +xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh libxenguest xenstorepvh + DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a + ######### # install ######### @@ -548,6 +566,10 @@ install-xenstore: xenstore-stubdom $(INSTALL_DIR) "$(DESTDIR)$(XENFIRMWAREDIR)" $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-xenstore/mini-os.gz "$(DESTDIR)$(XENFIRMWAREDIR)/xenstore-stubdom.gz" +install-xenstorepvh: xenstorepvh-stubdom + $(INSTALL_DIR) "$(DESTDIR)$(XENFIRMWAREDIR)" + $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-xenstorepvh/mini-os.gz "$(DESTDIR)$(XENFIRMWAREDIR)/xenstorepvh-stubdom.gz" + install-vtpm: vtpm-stubdom $(INSTALL_DIR) "$(DESTDIR)$(XENFIRMWAREDIR)" $(INSTALL_DATA) mini-os-$(XEN_TARGET_ARCH)-vtpm/mini-os.gz "$(DESTDIR)$(XENFIRMWAREDIR)/vtpm-stubdom.gz" @@ -581,6 +603,9 @@ uninstall-grub: uninstall-xenstore: rm -f $(DESTDIR)$(XENFIRMWAREDIR)/xenstore-stubdom.gz +uninstall-xenstorepvh: + rm -f $(DESTDIR)$(XENFIRMWAREDIR)/xenstorepvh-stubdom.gz + uninstall-vtpm: rm -f $(DESTDIR)$(XENFIRMWAREDIR)/vtpm-stubdom.gz @@ -600,6 +625,7 @@ clean: rm -fr mini-os-$(XEN_TARGET_ARCH)-caml rm -fr mini-os-$(XEN_TARGET_ARCH)-grub rm -fr mini-os-$(XEN_TARGET_ARCH)-xenstore + rm -fr mini-os-$(XEN_TARGET_ARCH)-xenstorepvh rm -fr mini-os-$(XEN_TARGET_ARCH)-vtpm rm -fr mini-os-$(XEN_TARGET_ARCH)-vtpmmgr $(MAKE) DESTDIR= -C caml clean @@ -612,6 +638,7 @@ clean: rm -fr pkg-config -[ ! -d ioemu ] || $(MAKE) DESTDIR= -C ioemu clean -[ ! -d xenstore ] || $(MAKE) DESTDIR= -C xenstore clean + -[ ! -d xenstorepvh ] || $(MAKE) DESTDIR= -C xenstorepvh clean # clean the cross-compilation result .PHONY: crossclean @@ -620,7 +647,7 @@ crossclean: clean rm -fr newlib-$(XEN_TARGET_ARCH) rm -fr zlib-$(XEN_TARGET_ARCH) pciutils-$(XEN_TARGET_ARCH) rm -fr libs-$(XEN_TARGET_ARCH) - rm -fr ioemu xenstore + rm -fr ioemu xenstore xenstorepvh rm -fr gmp-$(XEN_TARGET_ARCH) rm -fr polarssl-$(XEN_TARGET_ARCH) rm -fr openssl-$(XEN_TARGET_ARCH) diff --git a/stubdom/configure b/stubdom/configure index 3668203db8..903414589b 100755 --- a/stubdom/configure +++ b/stubdom/configure @@ -630,6 +630,7 @@ WGET CMAKE extfiles debug +xenstorepvh xenstore grub caml @@ -689,6 +690,7 @@ enable_c_stubdom enable_caml_stubdom enable_pv_grub enable_xenstore_stubdom +enable_xenstore_pvh_stubdom enable_vtpm_stubdom enable_vtpmmgr_stubdom enable_qemu_traditional @@ -1344,6 +1346,9 @@ Optional Features: --disable-xenstore-stubdom Build and install xenstore-stubdom (default is ENABLED) + --disable-xenstorepvh-stubdom + Build and install xenstorepvh-stubdom (default is + ENABLED) --enable-vtpm-stubdom Build and install vtpm-stubdom --enable-vtpmmgr-stubdom Build and install vtpmmgr-stubdom @@ -2178,6 +2183,48 @@ fi +# Check whether --enable-xenstorepvh-stubdom was given. +if test "${enable_xenstore_pvh_stubdom+set}" = set; then : + enableval=$enable_xenstore_pvh_stubdom; + +if test "x$enableval" = "xyes"; then : + + +xenstorepvh=y +STUBDOM_TARGETS="$STUBDOM_TARGETS xenstorepvh" +STUBDOM_BUILD="$STUBDOM_BUILD xenstorepvh-stubdom" +STUBDOM_INSTALL="$STUBDOM_INSTALL install-xenstorepvh" +STUBDOM_UNINSTALL="$STUBDOM_UNINSTALL install-xenstorepvh" + + +else + +if test "x$enableval" = "xno"; then : + + +xenstorepvh=n + + +fi + +fi + + +else + + +xenstorepvh=y +STUBDOM_TARGETS="$STUBDOM_TARGETS xenstorepvh" +STUBDOM_BUILD="$STUBDOM_BUILD xenstorepvh-stubdom" +STUBDOM_INSTALL="$STUBDOM_INSTALL install-xenstorepvh" +STUBDOM_UNINSTALL="$STUBDOM_UNINSTALL install-xenstorepvh" + + +fi + + + + # Check whether --enable-vtpm-stubdom was given. if test "${enable_vtpm_stubdom+set}" = set; then : enableval=$enable_vtpm_stubdom; diff --git a/stubdom/configure.ac b/stubdom/configure.ac index a2d514c021..bd6f765929 100644 --- a/stubdom/configure.ac +++ b/stubdom/configure.ac @@ -23,6 +23,7 @@ AX_STUBDOM_DEFAULT_DISABLE([c-stubdom], [c]) AX_STUBDOM_DEFAULT_DISABLE([caml-stubdom], [caml]) AX_STUBDOM_DEFAULT_ENABLE([pv-grub], [grub]) AX_STUBDOM_DEFAULT_ENABLE([xenstore-stubdom], [xenstore]) +AX_STUBDOM_DEFAULT_ENABLE([xenstorepvh-stubdom], [xenstorepvh]) AX_STUBDOM_CONDITIONAL([vtpm-stubdom], [vtpm]) AX_STUBDOM_CONDITIONAL([vtpmmgr-stubdom], [vtpmmgr]) diff --git a/stubdom/xenstorepvh-minios.cfg b/stubdom/xenstorepvh-minios.cfg new file mode 100644 index 0000000000..6af51f5753 --- /dev/null +++ b/stubdom/xenstorepvh-minios.cfg @@ -0,0 +1,10 @@ +CONFIG_PARAVIRT=n +CONFIG_BLKFRONT=n +CONFIG_NETFRONT=n +CONFIG_FBFRONT=n +CONFIG_KBDFRONT=n +CONFIG_CONSFRONT=n +CONFIG_XENBUS=n +CONFIG_LWIP=n +CONFIG_BALLOON=y +XEN_INTERFACE_VERSION=__XEN_LATEST_INTERFACE_VERSION__