From 93483b04e29f959bff29b8e3f707f5c72d8c42c0 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 26 Sep 2013 12:35:39 +0100 Subject: xen/arm: Support dtb /memreserve/ regions This requires a mapping of the DTB during setup_mm. Previously this was in the BOOT_MISC slot, which is clobbered by setup_pagetables. Split it out into its own slot which can be preserved. Also handle these regions as part of consider_modules() and when adding pages to the heaps to ensure we do not locate any part of Xen or the heaps over them. Signed-off-by: Ian Campbell Acked-by: Tim Deegan --- xen/include/asm-arm/config.h | 7 ++++--- xen/include/asm-arm/mm.h | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'xen/include') diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h index 624c73e54f..efeb9525df 100644 --- a/xen/include/asm-arm/config.h +++ b/xen/include/asm-arm/config.h @@ -80,10 +80,10 @@ * 0 - 2M Unmapped * 2M - 4M Xen text, data, bss * 4M - 6M Fixmap: special-purpose 4K mapping slots - * 6M - 8M Early boot misc (see below) + * 6M - 8M Early boot mapping of FDT + * 8M - 10M Early boot misc (see below) * * The early boot misc area is used: - * - in head.S for the DTB for device_tree_early_init(). * - in setup_pagetables() when relocating Xen. * * ARM32 layout: @@ -116,7 +116,8 @@ #define XEN_VIRT_START _AT(vaddr_t,0x00200000) #define FIXMAP_ADDR(n) (_AT(vaddr_t,0x00400000) + (n) * PAGE_SIZE) -#define BOOT_MISC_VIRT_START _AT(vaddr_t,0x00600000) +#define BOOT_FDT_VIRT_START _AT(vaddr_t,0x00600000) +#define BOOT_MISC_VIRT_START _AT(vaddr_t,0x00800000) #define HYPERVISOR_VIRT_START XEN_VIRT_START diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h index 173db1b9c7..0129cd10fa 100644 --- a/xen/include/asm-arm/mm.h +++ b/xen/include/asm-arm/mm.h @@ -147,6 +147,8 @@ extern unsigned long total_pages; /* Boot-time pagetable setup */ extern void setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr); +/* Remove early mappings */ +extern void remove_early_mappings(void); /* Allocate and initialise pagetables for a secondary CPU */ extern int __cpuinit init_secondary_pagetables(int cpu); /* Switch secondary CPUS to its own pagetables and finalise MMU setup */ -- cgit v1.2.3