[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxc: split p2m allocation in domain builder from other magic pages
commit cd353959cdfbe06c2a6abfd73f03f40b84e1e3f1 Author: Juergen Gross <jgross@xxxxxxxx> AuthorDate: Thu Nov 12 14:43:34 2015 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Mon Nov 16 13:18:56 2015 +0000 libxc: split p2m allocation in domain builder from other magic pages Carve out the p2m list allocation from the .alloc_magic_pages hook of the domain builder in order to prepare allocating the p2m list outside of the initial kernel mapping. This will be needed to support loading domains with huge memory (>512 GB). Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxc/include/xc_dom.h | 1 + tools/libxc/xc_dom_core.c | 3 +++ tools/libxc/xc_dom_x86.c | 11 ++++++++++- 3 files changed, 14 insertions(+), 1 deletions(-) diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h index 5c9cf3b..5ba48db 100644 --- a/tools/libxc/include/xc_dom.h +++ b/tools/libxc/include/xc_dom.h @@ -224,6 +224,7 @@ struct xc_dom_arch { /* pagetable setup */ int (*alloc_magic_pages) (struct xc_dom_image * dom); int (*alloc_pgtables) (struct xc_dom_image * dom); + int (*alloc_p2m_list) (struct xc_dom_image * dom); int (*setup_pgtables) (struct xc_dom_image * dom); /* arch-specific data structs setup */ diff --git a/tools/libxc/xc_dom_core.c b/tools/libxc/xc_dom_core.c index 7b48b1f..ad91b35 100644 --- a/tools/libxc/xc_dom_core.c +++ b/tools/libxc/xc_dom_core.c @@ -1096,6 +1096,9 @@ int xc_dom_build_image(struct xc_dom_image *dom) } /* allocate other pages */ + if ( dom->arch_hooks->alloc_p2m_list && + dom->arch_hooks->alloc_p2m_list(dom) != 0 ) + goto err; if ( dom->arch_hooks->alloc_magic_pages(dom) != 0 ) goto err; if ( dom->arch_hooks->alloc_pgtables(dom) != 0 ) diff --git a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c index 3c6bb9c..dd448cb 100644 --- a/tools/libxc/xc_dom_x86.c +++ b/tools/libxc/xc_dom_x86.c @@ -475,7 +475,7 @@ pfn_error: /* ------------------------------------------------------------------------ */ -static int alloc_magic_pages(struct xc_dom_image *dom) +static int alloc_p2m_list(struct xc_dom_image *dom) { size_t p2m_alloc_size = dom->p2m_size * dom->arch_hooks->sizeof_pfn; @@ -487,6 +487,13 @@ static int alloc_magic_pages(struct xc_dom_image *dom) if ( dom->p2m_guest == NULL ) return -1; + return 0; +} + +/* ------------------------------------------------------------------------ */ + +static int alloc_magic_pages(struct xc_dom_image *dom) +{ /* allocate special pages */ dom->start_info_pfn = xc_dom_alloc_page(dom, "start info"); dom->xenstore_pfn = xc_dom_alloc_page(dom, "xenstore"); @@ -1667,6 +1674,7 @@ static struct xc_dom_arch xc_dom_32_pae = { .arch_private_size = sizeof(struct xc_dom_image_x86), .alloc_magic_pages = alloc_magic_pages, .alloc_pgtables = alloc_pgtables_x86_32_pae, + .alloc_p2m_list = alloc_p2m_list, .setup_pgtables = setup_pgtables_x86_32_pae, .start_info = start_info_x86_32, .shared_info = shared_info_x86_32, @@ -1684,6 +1692,7 @@ static struct xc_dom_arch xc_dom_64 = { .arch_private_size = sizeof(struct xc_dom_image_x86), .alloc_magic_pages = alloc_magic_pages, .alloc_pgtables = alloc_pgtables_x86_64, + .alloc_p2m_list = alloc_p2m_list, .setup_pgtables = setup_pgtables_x86_64, .start_info = start_info_x86_64, .shared_info = shared_info_x86_64, -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |