[PATCH 16/21] mm: remove early_pfn_in_nid() and CONFIG_NODES_SPAN_OTHER_NODES

Hoan Tran hoan at os.amperecomputing.com
Tue May 19 07:38:50 AEST 2020


Hi Mike and Baoquan,

On 4/22/20 6:13 PM, Baoquan He wrote:
> On 04/12/20 at 10:48pm, Mike Rapoport wrote:
>> From: Mike Rapoport <rppt at linux.ibm.com>
>>
>> The commit f47ac088c406 ("mm: memmap_init: iterate over memblock regions
> 
> This commit id should be a temporary one, will be changed when merged
> into maintainer's tree and linus's tree. Only saying last patch plus the
> patch subject is OK?
> 
>> rather that check each PFN") made early_pfn_in_nid() obsolete and since
>> CONFIG_NODES_SPAN_OTHER_NODES is only used to pick a stub or a real
>> implementation of early_pfn_in_nid() it is also not needed anymore.
>>
>> Remove both early_pfn_in_nid() and the CONFIG_NODES_SPAN_OTHER_NODES.
>>
>> Co-developed-by: Hoan Tran <Hoan at os.amperecomputing.com>
>> Signed-off-by: Hoan Tran <Hoan at os.amperecomputing.com>
>> Signed-off-by: Mike Rapoport <rppt at linux.ibm.com>
>> ---
>>   arch/powerpc/Kconfig |  9 ---------
>>   arch/sparc/Kconfig   |  9 ---------
>>   arch/x86/Kconfig     |  9 ---------
>>   mm/page_alloc.c      | 20 --------------------
>>   4 files changed, 47 deletions(-)
>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 5f86b22b7d2c..74f316deeae1 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -685,15 +685,6 @@ config ARCH_MEMORY_PROBE
>>   	def_bool y
>>   	depends on MEMORY_HOTPLUG
>>   
>> -# Some NUMA nodes have memory ranges that span
>> -# other nodes.  Even though a pfn is valid and
>> -# between a node's start and end pfns, it may not
>> -# reside on that node.  See memmap_init_zone()
>> -# for details.
>> -config NODES_SPAN_OTHER_NODES
>> -	def_bool y
>> -	depends on NEED_MULTIPLE_NODES
>> -
>>   config STDBINUTILS
>>   	bool "Using standard binutils settings"
>>   	depends on 44x
>> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
>> index 795206b7b552..0e4f3891b904 100644
>> --- a/arch/sparc/Kconfig
>> +++ b/arch/sparc/Kconfig
>> @@ -286,15 +286,6 @@ config NODES_SHIFT
>>   	  Specify the maximum number of NUMA Nodes available on the target
>>   	  system.  Increases memory reserved to accommodate various tables.
>>   
>> -# Some NUMA nodes have memory ranges that span
>> -# other nodes.  Even though a pfn is valid and
>> -# between a node's start and end pfns, it may not
>> -# reside on that node.  See memmap_init_zone()
>> -# for details.
>> -config NODES_SPAN_OTHER_NODES
>> -	def_bool y
>> -	depends on NEED_MULTIPLE_NODES
>> -
>>   config ARCH_SPARSEMEM_ENABLE
>>   	def_bool y if SPARC64
>>   	select SPARSEMEM_VMEMMAP_ENABLE
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index 9d3e95b4fb85..37dac095659e 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -1581,15 +1581,6 @@ config X86_64_ACPI_NUMA
>>   	---help---
>>   	  Enable ACPI SRAT based node topology detection.
>>   
>> -# Some NUMA nodes have memory ranges that span
>> -# other nodes.  Even though a pfn is valid and
>> -# between a node's start and end pfns, it may not
>> -# reside on that node.  See memmap_init_zone()
>> -# for details.
>> -config NODES_SPAN_OTHER_NODES
>> -	def_bool y
>> -	depends on X86_64_ACPI_NUMA
>> -
>>   config NUMA_EMU
>>   	bool "NUMA emulation"
>>   	depends on NUMA
>> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
>> index c43ce8709457..343d87b8697d 100644
>> --- a/mm/page_alloc.c
>> +++ b/mm/page_alloc.c
>> @@ -1541,26 +1541,6 @@ int __meminit early_pfn_to_nid(unsigned long pfn)
>>   }
>>   #endif /* CONFIG_NEED_MULTIPLE_NODES */
>>   
>> -#ifdef CONFIG_NODES_SPAN_OTHER_NODES
>> -/* Only safe to use early in boot when initialisation is single-threaded */
>> -static inline bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
>> -{
>> -	int nid;
>> -
>> -	nid = __early_pfn_to_nid(pfn, &early_pfnnid_cache);
>> -	if (nid >= 0 && nid != node)
>> -		return false;
>> -	return true;
>> -}
>> -
>> -#else
>> -static inline bool __meminit early_pfn_in_nid(unsigned long pfn, int node)
>> -{
>> -	return true;
>> -}
>> -#endif
> 
> And macro early_pfn_valid() is not needed either, we may need remove it
> too.
> 
> Otherwise, removing NODES_SPAN_OTHER_NODES in this patch looks good.
> 
> Reviewed-by: Baoquan He <bhe at redhat.com>

I have tested this patch set on Arm64, and it worked as expected with 
the case where the node memory spans to other nodes or the old 
NODES_SPAN_OTHER_NODES config.

Hope to the whole patch set will be upstream soon.

Thanks and Regards
Hoan

> 
>> -
>> -
>>   void __init memblock_free_pages(struct page *page, unsigned long pfn,
>>   							unsigned int order)
>>   {
>> -- 
>> 2.25.1
>>
> 


More information about the Linuxppc-dev mailing list