• Andreas Rammhold's avatar
    of/fdt: run soc memory setup when early_init_dt_scan_memory fails · 2a12187d
    Andreas Rammhold authored
    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: 1f012283 ("of/fdt: Rework early_init_dt_scan_memory() to call directly")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarAndreas Rammhold <andreas@rammhold.de>
    Link: https://lore.kernel.org/r/20221223112748.2935235-1-andreas@rammhold.deSigned-off-by: default avatarRob Herring <robh@kernel.org>
    2a12187d
fdt.c 34.5 KB