summaryrefslogtreecommitdiffstats
path: root/arch/x86/xen/xen-ops.h
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2015-07-17 06:51:35 +0200
committerDavid Vrabel <david.vrabel@citrix.com>2015-08-20 13:24:24 +0200
commit70e61199559a09c62714694cd5ac3c3640c41552 (patch)
tree6bc58e53e500ea120ecd1780d0a195b656501ffc /arch/x86/xen/xen-ops.h
parentxen: add explicit memblock_reserve() calls for special pages (diff)
downloadlinux-70e61199559a09c62714694cd5ac3c3640c41552.tar.xz
linux-70e61199559a09c62714694cd5ac3c3640c41552.zip
xen: move p2m list if conflicting with e820 map
Check whether the hypervisor supplied p2m list is placed at a location which is conflicting with the target E820 map. If this is the case relocate it to a new area unused up to now and compliant to the E820 map. As the p2m list might by huge (up to several GB) and is required to be mapped virtually, set up a temporary mapping for the copied list. For pvh domains just delete the p2m related information from start info instead of reserving the p2m memory, as we don't need it at all. For 32 bit kernels adjust the memblock_reserve() parameters in order to cover the page tables only. This requires to memblock_reserve() the start_info page on it's own. Signed-off-by: Juergen Gross <jgross@suse.com> Acked-by: Konrad Rzeszutek Wilk <Konrad.wilk@oracle.com> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Diffstat (limited to 'arch/x86/xen/xen-ops.h')
-rw-r--r--arch/x86/xen/xen-ops.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h
index 8795c2ef57f3..1399423f3418 100644
--- a/arch/x86/xen/xen-ops.h
+++ b/arch/x86/xen/xen-ops.h
@@ -40,6 +40,9 @@ void __init xen_pt_check_e820(void);
void xen_mm_pin_all(void);
void xen_mm_unpin_all(void);
+#ifdef CONFIG_X86_64
+void __init xen_relocate_p2m(void);
+#endif
bool __init xen_is_e820_reserved(phys_addr_t start, phys_addr_t size);
unsigned long __ref xen_chk_extra_mem(unsigned long pfn);