提交 9e9a5fcb 编写于 作者: I Ian Campbell 提交者: Jeremy Fitzhardinge

xen: use host E820 map for dom0

When running as initial domain, get the real physical memory map from
xen using the XENMEM_machine_memory_map hypercall and use it to setup
the e820 regions.
Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: NStefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
上级 375b2a9a
...@@ -149,6 +149,7 @@ char * __init xen_memory_setup(void) ...@@ -149,6 +149,7 @@ char * __init xen_memory_setup(void)
unsigned long extra_pages = 0; unsigned long extra_pages = 0;
unsigned long extra_limit; unsigned long extra_limit;
int i; int i;
int op;
max_pfn = min(MAX_DOMAIN_PAGES, max_pfn); max_pfn = min(MAX_DOMAIN_PAGES, max_pfn);
mem_end = PFN_PHYS(max_pfn); mem_end = PFN_PHYS(max_pfn);
...@@ -156,7 +157,10 @@ char * __init xen_memory_setup(void) ...@@ -156,7 +157,10 @@ char * __init xen_memory_setup(void)
memmap.nr_entries = E820MAX; memmap.nr_entries = E820MAX;
set_xen_guest_handle(memmap.buffer, map); set_xen_guest_handle(memmap.buffer, map);
rc = HYPERVISOR_memory_op(XENMEM_memory_map, &memmap); op = xen_initial_domain() ?
XENMEM_machine_memory_map :
XENMEM_memory_map;
rc = HYPERVISOR_memory_op(op, &memmap);
if (rc == -ENOSYS) { if (rc == -ENOSYS) {
memmap.nr_entries = 1; memmap.nr_entries = 1;
map[0].addr = 0ULL; map[0].addr = 0ULL;
...@@ -235,7 +239,8 @@ char * __init xen_memory_setup(void) ...@@ -235,7 +239,8 @@ char * __init xen_memory_setup(void)
else else
extra_pages = 0; extra_pages = 0;
xen_add_extra_mem(extra_pages); if (!xen_initial_domain())
xen_add_extra_mem(extra_pages);
return "Xen"; return "Xen";
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册