From patchwork Tue Dec 17 20:15:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Cooper X-Patchwork-Id: 11298545 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 18B546C1 for ; Tue, 17 Dec 2019 20:17:13 +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 E72502465E for ; Tue, 17 Dec 2019 20:17:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="dGLZLP/w" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E72502465E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none 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.89) (envelope-from ) id 1ihJGI-0005Lk-1D; Tue, 17 Dec 2019 20:16:06 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ihJGH-0005Ld-HJ for xen-devel@lists.xenproject.org; Tue, 17 Dec 2019 20:16:05 +0000 X-Inumbo-ID: 08317d96-210a-11ea-88e7-bc764e2007e4 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 08317d96-210a-11ea-88e7-bc764e2007e4; Tue, 17 Dec 2019 20:15:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1576613756; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=UIoR9Jt1do7A36WFyGZ+Wi6DXdFlYgY5dbm8wHWAgts=; b=dGLZLP/w9+kEeDfBjgr+3q4qBJnIM4g0jIA45zXL+H4btgaFBJYo1Vj8 84kuUFnGUfM4eqA2SkZxS5dPJddGIWHjddBkHuaxKkVLG5HSi1lsxtD7z saGVnN3519PmtkIhyXh9xR79r8aOjCQj6DSvhpmBz7b089oDrJK6S2K5R w=; Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa4.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ip4:168.245.78.127 ~all" Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: cm0G/iCHSr7pk8tmx5FtcW89HpSDIHbWDB8FXkIPOTDtUjlWItoFNvxxx307NSWPfWAtvyFXiK X0oHUD7LSkFZgTfD+D+tLPAbXTReHN6kLjTXTmPrH/BWvFh3bNz9EQn1KnD0xNPJSP8z73I9Af Klf1oBl25G7WMBjmOZ02t7ldN/Y2BtpNlFfobPsGdYwCOVKMfe2mVN2WUQj/uK5OFZ0vdBdCaw LyA9R3vFWCM3DyIbmfJfuIXhpsswE5PGRHe64gdyPCX5LnXIfOAwMYpb043G25EmuFNDuPneUX Jsw= X-SBRS: 2.7 X-MesageID: 10420422 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.69,326,1571716800"; d="scan'208";a="10420422" From: Andrew Cooper To: Xen-devel Date: Tue, 17 Dec 2019 20:15:47 +0000 Message-ID: <20191217201550.15864-2-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20191217201550.15864-1-andrew.cooper3@citrix.com> References: <20191217201550.15864-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 1/4] tools/dombuilder: xc_dom_x86 cleanup X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Andrew Cooper , Varad Gautam , Ian Jackson , Volodymyr Babchuk Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" The two xc_dom_params structures for PV pagetables are never modified and can live in .rodata. Reduce their scope to the alloc_pgtable_*() functions which construct xc_dom_image_x86 appropriately. Rename {alloc,setup}_pgtables() to {alloc,setup}_pgtables_pv() to highlight that they are PV only, and drop some _x86() suffixes from static helpers. No functional change. Signed-off-by: Andrew Cooper --- CC: Ian Jackson CC: Wei Liu CC: Stefano Stabellini CC: Julien Grall CC: Volodymyr Babchuk CC: Varad Gautam --- tools/libxc/xc_dom_x86.c | 60 ++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index 9e279d6768..1ce3c798ef 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -103,7 +103,7 @@ struct xc_dom_image_x86 { unsigned n_mappings; #define MAPPING_MAX 2 struct xc_dom_x86_mapping maps[MAPPING_MAX]; - struct xc_dom_params *params; + const struct xc_dom_params *params; }; /* get guest IO ABI protocol */ @@ -235,7 +235,7 @@ static int count_pgtables(struct xc_dom_image *dom, xen_vaddr_t from, return 0; } -static int alloc_pgtables(struct xc_dom_image *dom) +static int alloc_pgtables_pv(struct xc_dom_image *dom) { int pages, extra_pages; xen_vaddr_t try_virt_end; @@ -268,20 +268,20 @@ static int alloc_pgtables(struct xc_dom_image *dom) /* ------------------------------------------------------------------------ */ /* i386 pagetables */ -static struct xc_dom_params x86_32_params = { - .levels = PGTBL_LEVELS_I386, - .vaddr_mask = bits_to_mask(VIRT_BITS_I386), - .lvl_prot[0] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED, - .lvl_prot[1] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, - .lvl_prot[2] = _PAGE_PRESENT, -}; - static int alloc_pgtables_x86_32_pae(struct xc_dom_image *dom) { + static const struct xc_dom_params x86_32_params = { + .levels = PGTBL_LEVELS_I386, + .vaddr_mask = bits_to_mask(VIRT_BITS_I386), + .lvl_prot[0] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED, + .lvl_prot[1] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, + .lvl_prot[2] = _PAGE_PRESENT, + }; struct xc_dom_image_x86 *domx86 = dom->arch_private; domx86->params = &x86_32_params; - return alloc_pgtables(dom); + + return alloc_pgtables_pv(dom); } #define pfn_to_paddr(pfn) ((xen_paddr_t)(pfn) << PAGE_SHIFT_X86) @@ -355,7 +355,7 @@ static xen_pfn_t move_l3_below_4G(struct xc_dom_image *dom, return l3mfn; } -static x86_pgentry_t *get_pg_table_x86(struct xc_dom_image *dom, int m, int l) +static x86_pgentry_t *get_pg_table(struct xc_dom_image *dom, int m, int l) { struct xc_dom_image_x86 *domx86 = dom->arch_private; struct xc_dom_x86_mapping *map; @@ -371,8 +371,7 @@ static x86_pgentry_t *get_pg_table_x86(struct xc_dom_image *dom, int m, int l) return NULL; } -static x86_pgentry_t get_pg_prot_x86(struct xc_dom_image *dom, int l, - xen_pfn_t pfn) +static x86_pgentry_t get_pg_prot(struct xc_dom_image *dom, int l, xen_pfn_t pfn) { struct xc_dom_image_x86 *domx86 = dom->arch_private; struct xc_dom_x86_mapping *map; @@ -396,7 +395,7 @@ static x86_pgentry_t get_pg_prot_x86(struct xc_dom_image *dom, int l, return prot; } -static int setup_pgtables_x86(struct xc_dom_image *dom) +static int setup_pgtables_pv(struct xc_dom_image *dom) { struct xc_dom_image_x86 *domx86 = dom->arch_private; struct xc_dom_x86_mapping *map1, *map2; @@ -413,7 +412,7 @@ static int setup_pgtables_x86(struct xc_dom_image *dom) map1 = domx86->maps + m1; from = map1->lvls[l].from; to = map1->lvls[l].to; - pg = get_pg_table_x86(dom, m1, l); + pg = get_pg_table(dom, m1, l); if ( !pg ) return -1; for ( m2 = 0; m2 < domx86->n_mappings; m2++ ) @@ -433,7 +432,7 @@ static int setup_pgtables_x86(struct xc_dom_image *dom) for ( p = p_s; p <= p_e; p++ ) { pg[p] = pfn_to_paddr(xc_dom_p2m(dom, pfn)) | - get_pg_prot_x86(dom, l, pfn); + get_pg_prot(dom, l, pfn); pfn++; } } @@ -464,32 +463,32 @@ static int setup_pgtables_x86_32_pae(struct xc_dom_image *dom) } } - return setup_pgtables_x86(dom); + return setup_pgtables_pv(dom); } /* ------------------------------------------------------------------------ */ /* x86_64 pagetables */ -static struct xc_dom_params x86_64_params = { - .levels = PGTBL_LEVELS_X86_64, - .vaddr_mask = bits_to_mask(VIRT_BITS_X86_64), - .lvl_prot[0] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED, - .lvl_prot[1] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, - .lvl_prot[2] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, - .lvl_prot[3] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, -}; - static int alloc_pgtables_x86_64(struct xc_dom_image *dom) { + const static struct xc_dom_params x86_64_params = { + .levels = PGTBL_LEVELS_X86_64, + .vaddr_mask = bits_to_mask(VIRT_BITS_X86_64), + .lvl_prot[0] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED, + .lvl_prot[1] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, + .lvl_prot[2] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, + .lvl_prot[3] = _PAGE_PRESENT|_PAGE_RW|_PAGE_ACCESSED|_PAGE_DIRTY|_PAGE_USER, + }; struct xc_dom_image_x86 *domx86 = dom->arch_private; domx86->params = &x86_64_params; - return alloc_pgtables(dom); + + return alloc_pgtables_pv(dom); } static int setup_pgtables_x86_64(struct xc_dom_image *dom) { - return setup_pgtables_x86(dom); + return setup_pgtables_pv(dom); } /* ------------------------------------------------------------------------ */ @@ -1908,9 +1907,6 @@ static struct xc_dom_arch xc_hvm_32 = { .sizeof_pfn = 4, .alloc_magic_pages = alloc_magic_pages_hvm, .alloc_pgtables = alloc_pgtables_hvm, - .setup_pgtables = NULL, - .start_info = NULL, - .shared_info = NULL, .vcpu = vcpu_hvm, .meminit = meminit_hvm, .bootearly = bootearly,