From d2766bee0f1f0fc1c4dbf30dcc9a43b91d5f19ce Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 10 Oct 2013 15:43:42 +0100 Subject: [PATCH] xen: arm: map entire memory banks on arm64 Currently we only map regions which are not part of boot modules. However we subsequently free at least some of those modules to the heaps in discard_initial_modules and if we were unluckly with sizing/location we might end up adding unmapped pages to the heap. The heaps on 64-bit use 1GB mappings, so in practice this is probably pretty unlikely and I've not actually seen it. Signed-off-by: Ian Campbell Acked-by: Julien Grall --- xen/arch/arm/setup.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 7d6e596b62..1081b43c49 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -520,6 +520,8 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size) xenheap_pages += (bank_size >> PAGE_SHIFT); + setup_xenheap_mappings(bank_start>>PAGE_SHIFT, bank_size>>PAGE_SHIFT); + /* XXX we assume that the ram regions are ordered */ s = bank_start; while ( s < bank_end ) @@ -536,8 +538,6 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size) if ( e > bank_end ) e = bank_end; - setup_xenheap_mappings(s>>PAGE_SHIFT, (e-s)>>PAGE_SHIFT); - xenheap_mfn_end = e; dt_unreserved_regions(s, e, init_boot_pages, 0); -- 2.30.2