Re: [PATCH 2/2] MIPS: loongson64: set nid for reserved memblock region

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




在2024年1月21日一月 上午2:14,Huang Pei写道:
> On Fri, Jan 19, 2024 at 10:05:39AM +0000, Jiaxun Yang wrote:
>> 
>> 
>> 在 2024/1/19 04:02, Huang Pei 写道:
>> > 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.
>> 
>> This should be done at MIPS arch level I guess.
> You mean the real fix or the set nid for the reserved memblock region?

Set nid for reserved region.

>
> + the real fix is [1](see old mail).
>
> I do not think MIPS arch needs it:
>
> + This ONLY matters on NUMA, most of MIPS platforms is UMA.

There are still some NUMA capable platforms around, such as SGI-IP27.

Thanks
- Jiaxun

>
> + MM does not care about the nid of reserved memblock region provided by 
> arch/platform, nor it provide "memblock_reserved_node" like
> "memblock_add_node". Loongson64 knows about nid of reserved region and the
> regular distribution of physical memory bewtween nodes, that is why it can
> be done by simple "memblock_set_node" and I add it.
>
>> 
>> Thanks
>> - Jiaxun
>> 
>> > 
>> > Signed-off-by: Huang Pei <huangpei@xxxxxxxxxxx>
>> > ---
>> >   arch/mips/loongson64/init.c | 2 ++
>> >   arch/mips/loongson64/numa.c | 2 ++
>> >   2 files changed, 4 insertions(+)
>> > 
>> > diff --git a/arch/mips/loongson64/init.c b/arch/mips/loongson64/init.c
>> > index f25caa6aa9d3..000ba91c0886 100644
>> > --- a/arch/mips/loongson64/init.c
>> > +++ b/arch/mips/loongson64/init.c
>> > @@ -103,6 +103,8 @@ 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
>> > diff --git a/arch/mips/loongson64/numa.c b/arch/mips/loongson64/numa.c
>> > index 8f61e93c0c5b..6345e096c532 100644
>> > --- a/arch/mips/loongson64/numa.c
>> > +++ b/arch/mips/loongson64/numa.c
>> > @@ -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, (u64)1 << 44, &memblock.reserved, 1);
>> >   	}
>> >   }
>> 
>> -- 
>> ---
>> Jiaxun Yang

-- 
- Jiaxun





[Index of Archives]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux