[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] arm: move get_paddr_function to arch setup.c from device_tree.c
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1349967418 -3600 # Node ID 375a7e0e275f408018bbe9a0922b3b4628f28d6f # Parent e78fff21c038aa1bd8a0db3b337299d81e872c0e arm: move get_paddr_function to arch setup.c from device_tree.c It's not realy got any DT functionality in it and its only caller is setup_pagetables. Put it here because future patches want to incorporate of the module layout in memory and I'd like to confine that to setup.c Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Tim Deegan <tim@xxxxxxx> Committed-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- diff -r e78fff21c038 -r 375a7e0e275f xen/arch/arm/mm.c --- a/xen/arch/arm/mm.c Thu Oct 11 15:56:57 2012 +0100 +++ b/xen/arch/arm/mm.c Thu Oct 11 15:56:58 2012 +0100 @@ -205,15 +205,12 @@ void unmap_domain_page(const void *va) /* Boot-time pagetable setup. * Changes here may need matching changes in head.S */ -void __init setup_pagetables(unsigned long boot_phys_offset) +void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr) { - paddr_t xen_paddr; unsigned long dest_va; lpae_t pte, *p; int i; - xen_paddr = device_tree_get_xen_paddr(); - /* Map the destination in the boot misc area. */ dest_va = BOOT_MISC_VIRT_START; pte = mfn_to_xen_entry(xen_paddr >> PAGE_SHIFT); diff -r e78fff21c038 -r 375a7e0e275f xen/arch/arm/setup.c --- a/xen/arch/arm/setup.c Thu Oct 11 15:56:57 2012 +0100 +++ b/xen/arch/arm/setup.c Thu Oct 11 15:56:58 2012 +0100 @@ -38,6 +38,7 @@ #include <asm/current.h> #include <asm/setup.h> #include <asm/vfp.h> +#include <asm/early_printk.h> #include "gic.h" static __attribute_used__ void init_done(void) @@ -67,6 +68,38 @@ static void __init processor_id(void) READ_CP32(ID_ISAR3), READ_CP32(ID_ISAR4), READ_CP32(ID_ISAR5)); } +/** + * get_xen_paddr - get physical address to relocate Xen to + * + * Xen is relocated to the top of RAM and aligned to a XEN_PADDR_ALIGN + * boundary. + */ +static paddr_t __init get_xen_paddr(void) +{ + struct dt_mem_info *mi = &early_info.mem; + paddr_t min_size; + paddr_t paddr = 0, t; + int i; + + min_size = (_end - _start + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1); + + /* Find the highest bank with enough space. */ + for ( i = 0; i < mi->nr_banks; i++ ) + { + if ( mi->bank[i].size >= min_size ) + { + t = mi->bank[i].start + mi->bank[i].size - min_size; + if ( t > paddr ) + paddr = t; + } + } + + if ( !paddr ) + early_panic("Not enough memory to relocate Xen\n"); + + return paddr; +} + static void __init setup_mm(unsigned long dtb_paddr, size_t dtb_size) { paddr_t ram_start; @@ -156,7 +189,7 @@ void __init start_xen(unsigned long boot cmdline_parse(device_tree_bootargs(fdt)); - setup_pagetables(boot_phys_offset); + setup_pagetables(boot_phys_offset, get_xen_paddr()); #ifdef EARLY_UART_ADDRESS /* Map the UART */ diff -r e78fff21c038 -r 375a7e0e275f xen/common/device_tree.c --- a/xen/common/device_tree.c Thu Oct 11 15:56:57 2012 +0100 +++ b/xen/common/device_tree.c Thu Oct 11 15:56:58 2012 +0100 @@ -273,38 +273,6 @@ size_t __init device_tree_early_init(con return fdt_totalsize(fdt); } -/** - * device_tree_get_xen_paddr - get physical address to relocate Xen to - * - * Xen is relocated to the top of RAM and aligned to a XEN_PADDR_ALIGN - * boundary. - */ -paddr_t __init device_tree_get_xen_paddr(void) -{ - struct dt_mem_info *mi = &early_info.mem; - paddr_t min_size; - paddr_t paddr = 0, t; - int i; - - min_size = (_end - _start + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1); - - /* Find the highest bank with enough space. */ - for ( i = 0; i < mi->nr_banks; i++ ) - { - if ( mi->bank[i].size >= min_size ) - { - t = mi->bank[i].start + mi->bank[i].size - min_size; - if ( t > paddr ) - paddr = t; - } - } - - if ( !paddr ) - early_panic("Not enough memory to relocate Xen\n"); - - return paddr; -} - /* * Local variables: * mode: C diff -r e78fff21c038 -r 375a7e0e275f xen/include/asm-arm/mm.h --- a/xen/include/asm-arm/mm.h Thu Oct 11 15:56:57 2012 +0100 +++ b/xen/include/asm-arm/mm.h Thu Oct 11 15:56:58 2012 +0100 @@ -138,7 +138,7 @@ extern unsigned long max_page; extern unsigned long total_pages; /* Boot-time pagetable setup */ -extern void setup_pagetables(unsigned long boot_phys_offset); +extern void setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr); /* MMU setup for seccondary CPUS (which already have paging enabled) */ extern void __cpuinit mmu_init_secondary_cpu(void); /* Set up the xenheap: up to 1GB of contiguous, always-mapped memory. diff -r e78fff21c038 -r 375a7e0e275f xen/include/xen/device_tree.h --- a/xen/include/xen/device_tree.h Thu Oct 11 15:56:57 2012 +0100 +++ b/xen/include/xen/device_tree.h Thu Oct 11 15:56:58 2012 +0100 @@ -39,7 +39,6 @@ extern struct dt_early_info early_info; extern void *device_tree_flattened; size_t device_tree_early_init(const void *fdt); -paddr_t device_tree_get_xen_paddr(void); void device_tree_get_reg(const u32 **cell, u32 address_cells, u32 size_cells, u64 *start, u64 *size); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |