commit 2a12187d5853d9fd5102278cecef7dac7c8ce7ea upstream.
If memory has been found early_init_dt_scan_memory now returns 1. If
it hasn't found any memory it will return 0, allowing other memory
setup mechanisms to carry on.
Previously early_init_dt_scan_memory always returned 0 without
distinguishing between any kind of memory setup being done or not. Any
code path after the early_init_dt_scan memory call in the ramips
plat_mem_setup code wouldn't be executed anymore. Making
early_init_dt_scan_memory the only way to initialize the memory.
Some boards, including my mt7621 based Cudy X6 board, depend on memory
initialization being done via the soc_info.mem_detect function
pointer. Those wouldn't be able to obtain memory and panic the kernel
during early bootup with the message "early_init_dt_alloc_memory_arch:
Failed to allocate 12416 bytes align=0x40".
Fixes:
|
||
|---|---|---|
| .. | ||
| bootrom.c | ||
| cevt-rt3352.c | ||
| clk.c | ||
| common.h | ||
| early_printk.c | ||
| ill_acc.c | ||
| irq-gic.c | ||
| irq.c | ||
| Kconfig | ||
| Makefile | ||
| mt7620.c | ||
| mt7621.c | ||
| of.c | ||
| Platform | ||
| prom.c | ||
| reset.c | ||
| rt288x.c | ||
| rt305x.c | ||
| rt3883.c | ||
| timer-gic.c | ||
| timer.c | ||