[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v1 18/20] libxl/acpi: Add ACPI e820 entry
Add entry for ACPI tables created for PVHv2 guests to e820 map. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- New patch tools/libxc/include/xc_dom.h | 4 ++++ tools/libxl/libxl_dom.c | 8 ++++---- tools/libxl/libxl_x86.c | 11 +++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/tools/libxc/include/xc_dom.h b/tools/libxc/include/xc_dom.h index 6cb10c4..ec2da14 100644 --- a/tools/libxc/include/xc_dom.h +++ b/tools/libxc/include/xc_dom.h @@ -102,6 +102,10 @@ struct xc_dom_image { xen_vaddr_t virt_alloc_end; xen_vaddr_t bsd_symtab_start; + /* ACPI tables (PVHv2 only) */ + xen_pfn_t acpi_pfn; + xen_pfn_t acpi_pages; + /* * initrd parameters as specified in start_info page * Depending on capabilities of the booted kernel this may be a virtual diff --git a/tools/libxl/libxl_dom.c b/tools/libxl/libxl_dom.c index ec29060..ccc41b4 100644 --- a/tools/libxl/libxl_dom.c +++ b/tools/libxl/libxl_dom.c @@ -1063,16 +1063,16 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid, dom->vnode_to_pnode[i] = info->vnuma_nodes[i].pnode; } + rc = libxl__build_dom(gc, domid, info, state, dom); + if (rc != 0) + goto out; + rc = libxl__arch_domain_construct_memmap(gc, d_config, domid, dom); if (rc != 0) { LOG(ERROR, "setting domain memory map failed"); goto out; } - rc = libxl__build_dom(gc, domid, info, state, dom); - if (rc != 0) - goto out; - rc = hvm_build_set_params(ctx->xch, domid, info, state->store_port, &state->store_mfn, state->console_port, &state->console_mfn, state->store_domid, diff --git a/tools/libxl/libxl_x86.c b/tools/libxl/libxl_x86.c index 46cfafb..32ce1d2 100644 --- a/tools/libxl/libxl_x86.c +++ b/tools/libxl/libxl_x86.c @@ -503,6 +503,10 @@ int libxl__arch_domain_construct_memmap(libxl__gc *gc, if (highmem_size) e820_entries++; + /* PVHv2's ACPI tables */ + if (dom->acpi_pages) + e820_entries++; + if (e820_entries >= E820MAX) { LOG(ERROR, "Ooops! Too many entries in the memory map!"); rc = ERROR_INVAL; @@ -528,6 +532,13 @@ int libxl__arch_domain_construct_memmap(libxl__gc *gc, nr++; } + if (dom->acpi_pages) { + e820[nr].addr = dom->acpi_pfn << XC_DOM_PAGE_SHIFT(dom); + e820[nr].size = dom->acpi_pages << XC_DOM_PAGE_SHIFT(dom); + e820[nr].type = E820_ACPI; + nr++; + } + /* High memory */ if (highmem_size) { e820[nr].addr = ((uint64_t)1 << 32); -- 1.7.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |