On 06/27/2014 01:12 AM, Laura Abbott wrote:
+static unsigned int bank_cnt; +static unsigned int max_cnt;
int __init arm_add_memory(u64 start, u64 size) { u64 aligned_start; /*
* Some buggy bootloaders rely on the old meminfo behavior of not adding* more than n banks since anything past that may contain invalid data.*/- if (bank_cnt >= max_cnt) {
 pr_crit("Max banks too low, ignoring memory at 0x%08llx\n",(long long)start);return -EINVAL;- }
 - bank_cnt++;
 - /*
 */
- Ensure that start/size are aligned to a page boundary.
 - Size is appropriately rounded down, start is rounded up.
 @@ -879,6 +894,7 @@ void __init setup_arch(char **cmdline_p) mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type); machine_desc = mdesc; machine_name = mdesc->name;
- max_cnt = mdesc->bank_limit;
 
arm_add_memory is getting called before this is being set, resulting in none of the memory banks getting added[1].
setup_machine_fdt -> early_init_dt_scan -> early_init_dt_scan_memory
Would it make sense to re-introduce the config option ARM_NR_BANKS and replace max_cnt with NR_BANKS?
[1] http://pastebin.com/MawYD7kb
if (mdesc->reboot_mode != REBOOT_HARD) reboot_mode = mdesc->reboot_mode; diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c index f38cf7c..91283fd 100644 --- a/arch/arm/mach-exynos/exynos.c +++ b/arch/arm/mach-exynos/exynos.c @@ -350,4 +350,5 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)") .dt_compat = exynos_dt_compat, .restart = exynos_restart, .reserve = exynos_reserve,
- .bank_limit = 8,
 MACHINE_END