mm/init: remove the unnecessary special treatment for memory-less node
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 also rephrase the code comments above the 'continue' statement and move them above above line 'if (pgdat->node_present_pages)'. [bhe@redhat.com: redo code comments, per Mike] Link: https://lkml.kernel.org/r/ZhYJAVQRYJSTKZng@MiWiFi-R3L-srv Link: https://lkml.kernel.org/r/20240326061134.1055295-3-bhe@redhat.com Signed-off-by: Baoquan He <bhe@redhat.com> Cc: Mel Gorman <mgorman@suse.de> Cc: "Mike Rapoport (IBM)" <rppt@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
850ed20539
commit
c091dd963f
27
mm/mm_init.c
27
mm/mm_init.c
@ -1835,28 +1835,23 @@ 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.
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
|
||||
pgdat = NODE_DATA(nid);
|
||||
free_area_init_node(nid);
|
||||
|
||||
/* Any memory on that node */
|
||||
if (pgdat->node_present_pages)
|
||||
/*
|
||||
* No sysfs hierarcy will be created via register_one_node()
|
||||
*for memory-less node because here it's not marked as N_MEMORY
|
||||
*and won't be set online later. The benefit is userspace
|
||||
*program won't be confused by sysfs files/directories of
|
||||
*memory-less node. The pgdat will get fully initialized by
|
||||
*hotadd_init_pgdat() when memory is hotplugged into this node.
|
||||
*/
|
||||
if (pgdat->node_present_pages) {
|
||||
node_set_state(nid, N_MEMORY);
|
||||
check_for_memory(pgdat);
|
||||
check_for_memory(pgdat);
|
||||
}
|
||||
}
|
||||
|
||||
calc_nr_kernel_pages();
|
||||
|
Loading…
Reference in New Issue
Block a user