• Vineet Gupta's avatar
    ARC: [plat-hsdk] Remap CCMs super early in asm boot trampoline · 3b57533b
    Vineet Gupta authored
    ARC HSDK platform stopped booting on released v5.10-rc1, getting stuck
    in startup of non master SMP cores.
    
    This was bisected to upstream commit 7fef431b
    "(mm/page_alloc: place pages to tail in __free_pages_core())"
    That commit itself is harmless, it just exposed a subtle assumption in
    our platform code (hence CC'ing linux-mm just as FYI in case some other
    arches / platforms trip on it).
    
    The upstream commit is semantically disruptive as it reverses the order
    of page allocations (actually it can be good test for hardware
    verification to exercise different memory patterns altogether).
    For ARC HSDK platform that meant a remapped memory region (pertaining to
    unused Closely Coupled Memory) started getting used early for dynamice
    allocations, while not effectively remapped on all the cores, triggering
    memory error exception on those cores.
    
    The fix is to move the CCM remapping from early platform code to to early core
    boot code. And while it is undesirable to riddle common boot code with
    platform quirks, there is no other way to do this since the faltering code
    involves setting up stack itself so even function calls are not allowed at
    that point.
    
    If anyone is interested, all the gory details can be found at Link below.
    
    Link: https://github.com/foss-for-synopsys-dwc-arc-processors/linux/issues/32
    Cc: David Hildenbrand <david@redhat.com>
    Cc: linux-mm@kvack.org
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    3b57533b
head.S 4.37 KB