MIPS: loongson64: set nid for reserved memblock region
authorHuang Pei <huangpei@loongson.cn>
Sat, 27 Jan 2024 09:12:21 +0000 (17:12 +0800)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Sat, 27 Jan 2024 10:07:57 +0000 (11:07 +0100)
Commit 61167ad5fecd("mm: pass nid to reserve_bootmem_region()") reveals
that reserved memblock regions have no valid node id set, just set it
right since loongson64 firmware makes it clear in memory layout info.

This works around booting failure on 3A1000+ since commit 61167ad5fecd
("mm: pass nid to reserve_bootmem_region()") under
CONFIG_DEFERRED_STRUCT_PAGE_INIT.

Signed-off-by: Huang Pei <huangpei@loongson.cn>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/loongson64/init.c
arch/mips/loongson64/numa.c

index f25caa6aa9d306e84d719e97ea54f7b8faa449c1..553142c1f14fe2261d963b3784f3ed9e6c086cd2 100644 (file)
@@ -103,6 +103,9 @@ void __init szmem(unsigned int node)
        if (loongson_sysconf.vgabios_addr)
                memblock_reserve(virt_to_phys((void *)loongson_sysconf.vgabios_addr),
                                SZ_256K);
+       /* set nid for reserved memory */
+       memblock_set_node((u64)node << 44, (u64)(node + 1) << 44,
+                       &memblock.reserved, node);
 }
 
 #ifndef CONFIG_NUMA
index 8f61e93c0c5bcf07134cc22a06913c57e5140af4..68dafd6d3e2571f615e9c9e7d9b2c895de80468a 100644 (file)
@@ -132,6 +132,8 @@ static void __init node_mem_init(unsigned int node)
 
                /* Reserve pfn range 0~node[0]->node_start_pfn */
                memblock_reserve(0, PAGE_SIZE * start_pfn);
+               /* set nid for reserved memory on node 0 */
+               memblock_set_node(0, 1ULL << 44, &memblock.reserved, 0);
        }
 }