diff options
author | Rob Herring <rob.herring@calxeda.com> | 2014-04-16 15:34:05 +0530 |
---|---|---|
committer | Ishan Mittal <imittal@nvidia.com> | 2014-04-30 11:39:08 +0530 |
commit | bc314a47db2b7a3d3f363643188d2641128a19c1 (patch) | |
tree | fa5e84b30f1b29c59dc2333774eda85587e7892c | |
parent | d03e873944e99287cdafdecbe36301cb0ea02dfb (diff) |
of: create default early_init_dt_add_memory_arch
Create a weak version of early_init_dt_add_memory_arch which uses
memblock. This will unify all architectures except ones with custom
memory bank structs.
Conflicts:
arch/openrisc/kernel/prom.c
(cherry picked from commit 068f6310b965d67d57f89ebf4c539e5933754366)
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Michal Simek <monstr@monstr.eu>
Cc: Jonas Bonn <jonas@southpole.se>
Acked-by: Grant Likely <grant.likely@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: microblaze-uclinux@itee.uq.edu.au
Cc: linux@lists.openrisc.net
Cc: devicetree@vger.kernel.org
Change-Id: I8f3bd8d9d0816666cf90363e16f596b365db4632
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Ishan Mittal <imittal@nvidia.com>
-rw-r--r-- | arch/arm64/kernel/setup.c | 18 | ||||
-rw-r--r-- | arch/microblaze/kernel/prom.c | 5 | ||||
-rw-r--r-- | drivers/of/fdt.c | 19 |
3 files changed, 19 insertions, 23 deletions
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c index 945fccdaf04a..9c19cd30894a 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -307,24 +307,6 @@ static struct machine_desc * __init setup_machine_fdt(phys_addr_t dt_phys) return mdesc_best; } -void __init early_init_dt_add_memory_arch(u64 base, u64 size) -{ - base &= PAGE_MASK; - size &= PAGE_MASK; - if (base + size < PHYS_OFFSET) { - pr_warning("Ignoring memory block 0x%llx - 0x%llx\n", - base, base + size); - return; - } - if (base < PHYS_OFFSET) { - pr_warning("Ignoring memory range 0x%llx - 0x%llx\n", - base, PHYS_OFFSET); - size -= PHYS_OFFSET - base; - base = PHYS_OFFSET; - } - memblock_add(base, size); -} - /* * Limit the memory size that was specified via FDT. */ diff --git a/arch/microblaze/kernel/prom.c b/arch/microblaze/kernel/prom.c index 0c4453f134cb..59f2df02e817 100644 --- a/arch/microblaze/kernel/prom.c +++ b/arch/microblaze/kernel/prom.c @@ -41,11 +41,6 @@ #include <asm/sections.h> #include <asm/pci-bridge.h> -void __init early_init_dt_add_memory_arch(u64 base, u64 size) -{ - memblock_add(base, size); -} - #ifdef CONFIG_EARLY_PRINTK static char *stdout; diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 75ccce3a69fb..9ef99cd21a6c 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -702,6 +702,25 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname, } #ifdef CONFIG_HAVE_MEMBLOCK +void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) +{ + const u64 phys_offset = __pa(PAGE_OFFSET); + base &= PAGE_MASK; + size &= PAGE_MASK; + if (base + size < phys_offset) { + pr_warning("Ignoring memory block 0x%llx - 0x%llx\n", + base, base + size); + return; + } + if (base < phys_offset) { + pr_warning("Ignoring memory range 0x%llx - 0x%llx\n", + base, phys_offset); + size -= phys_offset - base; + base = phys_offset; + } + memblock_add(base, size); +} + /* * called from unflatten_device_tree() to bootstrap devicetree itself * Architectures can override this definition if memblock isn't used |