|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 1/4] tools/dombuilder: xc_dom_x86 cleanup
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 <andrew.cooper3@xxxxxxxxxx>
---
CC: Ian Jackson <Ian.Jackson@xxxxxxxxxx>
CC: Wei Liu <wl@xxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Julien Grall <julien@xxxxxxx>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
CC: Varad Gautam <vrd@xxxxxxxxx>
---
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,
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |