On Tue, Mar 26, 2024 at 02:11:28PM +0800, Baoquan He wrote: > Because memory-less node's ->node_present_pages and its > zone's ->present_pages are all 0, the judgement before calling > node_set_state() to set N_MEMORY, N_HIGH_MEMORY, N_NORMAL_MEMORY for > node is enough to skip memory-less node. The 'continue;' statement > inside for_each_node() loop of free_area_init() is gilding the lily. > > Here, remove the special handling to make memory-less node share the > same code flow as normal node. And the code comment above the 'continue' > statement is not needed either. > > Signed-off-by: Baoquan He <bhe@xxxxxxxxxx> > --- > mm/mm_init.c | 18 +++--------------- > 1 file changed, 3 insertions(+), 15 deletions(-) > > diff --git a/mm/mm_init.c b/mm/mm_init.c > index 089dc60159e9..99681ffb9091 100644 > --- a/mm/mm_init.c > +++ b/mm/mm_init.c > @@ -1834,28 +1834,16 @@ void __init free_area_init(unsigned long *max_zone_pfn) > panic("Cannot allocate %zuB for node %d.\n", > sizeof(*pgdat), nid); > arch_refresh_nodedata(nid, pgdat); > - free_area_init_node(nid); > - > - /* > - * We do not want to confuse userspace by sysfs > - * files/directories for node without any memory > - * attached to it, so this node is not marked as > - * N_MEMORY and not marked online so that no sysfs > - * hierarchy will be created via register_one_node for > - * it. The pgdat will get fully initialized by > - * hotadd_init_pgdat() when memory is hotplugged into > - * this node. > - */ I think this comment is still valuable. Maybe rephrase it a bit and move it before 'if (pgdat->node_present_pages)'? > - continue; > } > > pgdat = NODE_DATA(nid); > free_area_init_node(nid); > > /* Any memory on that node */ > - if (pgdat->node_present_pages) > + if (pgdat->node_present_pages) { > node_set_state(nid, N_MEMORY); > - check_for_memory(pgdat); > + check_for_memory(pgdat); > + } > } > > calc_nr_kernel_pages(); > -- > 2.41.0 > -- Sincerely yours, Mike.