From: Christoffer Dall Date: Wed, 29 Oct 2014 14:58:57 +0000 (+0100) Subject: arm: Retreive the machine name from the device tree X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3c7dcf3fdefb6fcbd450a2fe71b84b17841950a4;p=platform%2Fkernel%2Flinux-arm64.git arm: Retreive the machine name from the device tree Instead of using the mdesc descriptive name for the userspace exported machine name, use the name from the device tree file. This is particularly useful for multi-flavored device-tree driven boards like the ranchu board using the mach-virt board files. Note that this patch is not intended for newer kernels that rework all of the mach-virt logic to let a non-board machine be virt by default, but it is useful in the context of Linux v3.10-based Android kernels. Signed-off-by: Christoffer Dall --- diff --git a/arch/arm/include/asm/prom.h b/arch/arm/include/asm/prom.h index a219227c3e4..eba15e01d24 100644 --- a/arch/arm/include/asm/prom.h +++ b/arch/arm/include/asm/prom.h @@ -13,13 +13,20 @@ #define HAVE_ARCH_DEVTREE_FIXUPS +struct machine_desc; + #ifdef CONFIG_OF +extern const char * __init setup_machine_name_fdt(struct machine_desc *mdesc); extern struct machine_desc *setup_machine_fdt(unsigned int dt_phys); extern void arm_dt_memblock_reserve(void); extern void __init arm_dt_init_cpu_maps(void); #else /* CONFIG_OF */ +const char * __init setup_machine_name_fdt(struct machine_desc *mdesc) +{ + return mdesc->name; +} static inline struct machine_desc *setup_machine_fdt(unsigned int dt_phys) { diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c index 5859c8bc727..5f3c5674e05 100644 --- a/arch/arm/kernel/devtree.c +++ b/arch/arm/kernel/devtree.c @@ -169,6 +169,14 @@ void __init arm_dt_init_cpu_maps(void) } } +const char * __init setup_machine_name_fdt(struct machine_desc *mdesc) +{ + if (!initial_boot_params) + return mdesc->name; + + return of_flat_dt_get_machine_name(); +} + /** * setup_machine_fdt - Machine setup when an dtb was passed to the kernel * @dt_phys: physical address of dt blob @@ -191,6 +199,7 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys) mdesc_best = (struct machine_desc *)&__mach_desc_GENERIC_DT; #endif + initial_boot_params = NULL; if (!dt_phys) return NULL; diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index df81eaf3a4f..b76b69eee1d 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -765,7 +765,7 @@ void __init setup_arch(char **cmdline_p) if (!mdesc) mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type); machine_desc = mdesc; - machine_name = mdesc->name; + machine_name = setup_machine_name_fdt(mdesc); setup_dma_zone(mdesc);