Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753451AbeAEXWT (ORCPT + 1 other); Fri, 5 Jan 2018 18:22:19 -0500 Received: from mail-ot0-f193.google.com ([74.125.82.193]:41059 "EHLO mail-ot0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752644AbeAEXU7 (ORCPT ); Fri, 5 Jan 2018 18:20:59 -0500 X-Google-Smtp-Source: ACJfBov8RgM6wXg8Ye3wRHQIFFnTbMbtkwhC1s5gzhrjglHZp7qltaGmJNyoI6JnhnkGGCzBGJAK0Q== From: Rob Herring To: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Frank Rowand , Chris Zankel , Max Filippov , linux-xtensa@linux-xtensa.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Ley Foon Tan , nios2-dev@lists.rocketboards.org, Ralf Baechle , linux-mips@linux-mips.org, James Hogan , linux-metag@vger.kernel.org, Mikael Starvik , Jesper Nilsson , linux-cris-kernel@axis.com Subject: [PATCH 1/7] of/fdt: use memblock_virt_alloc for early alloc Date: Fri, 5 Jan 2018 17:20:48 -0600 Message-Id: <20180105232054.27394-2-robh@kernel.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180105232054.27394-1-robh@kernel.org> References: <20180105232054.27394-1-robh@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: memblock_virt_alloc() works for both memblock and bootmem, so use it and make early_init_dt_alloc_memory_arch a static function. The arches using bootmem define early_init_dt_alloc_memory_arch as either: __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS)) or: alloc_bootmem_align(size, align) Both of these evaluate to the same thing as does memblock_virt_alloc for bootmem. So we can disable the arch specific functions by making early_init_dt_alloc_memory_arch static and they can be removed in subsequent commits. Cc: Frank Rowand Signed-off-by: Rob Herring --- drivers/of/fdt.c | 16 ++++------------ drivers/of/unittest.c | 11 ++++++++--- include/linux/of_fdt.h | 1 - 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 4675e5ac4d11..444e65aa0d29 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -1183,14 +1184,6 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, return memblock_reserve(base, size); } -/* - * called from unflatten_device_tree() to bootstrap devicetree itself - * Architectures can override this definition if memblock isn't used - */ -void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align) -{ - return __va(memblock_alloc(size, align)); -} #else void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) { @@ -1209,13 +1202,12 @@ int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, &base, &size, nomap ? " (nomap)" : ""); return -ENOSYS; } +#endif -void * __init __weak early_init_dt_alloc_memory_arch(u64 size, u64 align) +static void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) { - WARN_ON(1); - return NULL; + return memblock_virt_alloc(size, align); } -#endif bool __init early_init_dt_verify(void *params) { diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index 0f8052f1355c..7a9abaae874d 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c @@ -5,6 +5,7 @@ #define pr_fmt(fmt) "### dt-test ### " fmt +#include #include #include #include @@ -2053,6 +2054,11 @@ static struct overlay_info overlays[] = { static struct device_node *overlay_base_root; +static void * __init dt_alloc_memory(u64 size, u64 align) +{ + return memblock_virt_alloc(size, align); +} + /* * Create base device tree for the overlay unittest. * @@ -2092,8 +2098,7 @@ void __init unittest_unflatten_overlay_base(void) return; } - info->data = early_init_dt_alloc_memory_arch(size, - roundup_pow_of_two(FDT_V17_SIZE)); + info->data = dt_alloc_memory(size, roundup_pow_of_two(FDT_V17_SIZE)); if (!info->data) { pr_err("alloc for dtb 'overlay_base' failed"); return; @@ -2102,7 +2107,7 @@ void __init unittest_unflatten_overlay_base(void) memcpy(info->data, info->dtb_begin, size); __unflatten_device_tree(info->data, NULL, &info->np_overlay, - early_init_dt_alloc_memory_arch, true); + dt_alloc_memory, true); overlay_base_root = info->np_overlay; } diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h index 444e6e283828..02c05028d0ba 100644 --- a/include/linux/of_fdt.h +++ b/include/linux/of_fdt.h @@ -83,7 +83,6 @@ extern void early_init_dt_add_memory_arch(u64 base, u64 size); extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size); extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size, bool no_map); -extern void * early_init_dt_alloc_memory_arch(u64 size, u64 align); extern u64 dt_mem_next_cell(int s, const __be32 **cellp); /* Early flat tree scan hooks */ -- 2.14.1