diff options
author | Juergen Gross <jgross@suse.com> | 2014-11-28 13:53:53 +0300 |
---|---|---|
committer | David Vrabel <david.vrabel@citrix.com> | 2014-12-04 17:08:48 +0300 |
commit | 1f3ac86b4c45a146e090d24bf66c49b95e72f071 (patch) | |
tree | c383b9279b427a1c1a1dc8810c3cd6799bfaba1c /arch/x86/xen/mmu.c | |
parent | 7108c9ce8f6e59f775b0c8250dba52b569b6cba2 (diff) | |
download | linux-1f3ac86b4c45a146e090d24bf66c49b95e72f071.tar.xz |
xen: Delay remapping memory of pv-domain
Early in the boot process the memory layout of a pv-domain is changed
to match the E820 map (either the host one for Dom0 or the Xen one)
regarding placement of RAM and PCI holes. This requires removing memory
pages initially located at positions not suitable for RAM and adding
them later at higher addresses where no restrictions apply.
To be able to operate on the hypervisor supported p2m list until a
virtual mapped linear p2m list can be constructed, remapping must
be delayed until virtual memory management is initialized, as the
initial p2m list can't be extended unlimited at physical memory
initialization time due to it's fixed structure.
A further advantage is the reduction in complexity and code volume as
we don't have to be careful regarding memory restrictions during p2m
updates.
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
Diffstat (limited to 'arch/x86/xen/mmu.c')
-rw-r--r-- | arch/x86/xen/mmu.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index b995b871da02..601914d2b0a8 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c @@ -1225,6 +1225,10 @@ static void __init xen_pagetable_init(void) /* Allocate and initialize top and mid mfn levels for p2m structure */ xen_build_mfn_list_list(); + /* Remap memory freed due to conflicts with E820 map */ + if (!xen_feature(XENFEAT_auto_translated_physmap)) + xen_remap_memory(); + xen_setup_shared_info(); xen_post_allocator_init(); } |