drivers/base: move memory_block_add_nid() into the caller

Now the node id only needs to be set for early memory, so move
memory_block_add_nid() into the caller and rename it into
memory_block_add_nid_early().  This allows us to further simplify the code
by dropping the 'context' argument to
do_register_memory_block_under_node().

Link: https://lkml.kernel.org/r/20250729064637.51662-4-hare@kernel.org
Suggested-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Hannes Reinecke <hare@kernel.org>
Acked-by: David Hildenbrand <david@redhat.com>
Acked-by: Oscar Salvador <osalvador@suse.de>
Reviewed-by: Donet Tom <donettom@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Hannes Reinecke 2025-07-29 08:46:36 +02:00 committed by Andrew Morton
parent b8179af120
commit 0a947c14e4
3 changed files with 23 additions and 26 deletions

View File

@ -769,21 +769,22 @@ static struct zone *early_node_zone_for_memory_block(struct memory_block *mem,
#ifdef CONFIG_NUMA
/**
* memory_block_add_nid() - Indicate that system RAM falling into this memory
* block device (partially) belongs to the given node.
* memory_block_add_nid_early() - Indicate that early system RAM falling into
* this memory block device (partially) belongs
* to the given node.
* @mem: The memory block device.
* @nid: The node id.
* @context: The memory initialization context.
*
* Indicate that system RAM falling into this memory block (partially) belongs
* to the given node. If the context indicates ("early") that we are adding the
* node during node device subsystem initialization, this will also properly
* set/adjust mem->zone based on the zone ranges of the given node.
* Indicate that early system RAM falling into this memory block (partially)
* belongs to the given node. This will also properly set/adjust mem->zone based
* on the zone ranges of the given node.
*
* Memory hotplug handles this on memory block creation, where we can only have
* a single nid span a memory block.
*/
void memory_block_add_nid(struct memory_block *mem, int nid,
enum meminit_context context)
void memory_block_add_nid_early(struct memory_block *mem, int nid)
{
if (context == MEMINIT_EARLY && mem->nid != nid) {
if (mem->nid != nid) {
/*
* For early memory we have to determine the zone when setting
* the node id and handle multiple nodes spanning a single
@ -797,15 +798,14 @@ void memory_block_add_nid(struct memory_block *mem, int nid,
mem->zone = early_node_zone_for_memory_block(mem, nid);
else
mem->zone = NULL;
/*
* If this memory block spans multiple nodes, we only indicate
* the last processed node. If we span multiple nodes (not applicable
* to hotplugged memory), zone == NULL will prohibit memory offlining
* and consequently unplug.
*/
mem->nid = nid;
}
/*
* If this memory block spans multiple nodes, we only indicate
* the last processed node. If we span multiple nodes (not applicable
* to hotplugged memory), zone == NULL will prohibit memory offlining
* and consequently unplug.
*/
mem->nid = nid;
}
#endif

View File

@ -781,13 +781,10 @@ int unregister_cpu_under_node(unsigned int cpu, unsigned int nid)
#ifdef CONFIG_MEMORY_HOTPLUG
static void do_register_memory_block_under_node(int nid,
struct memory_block *mem_blk,
enum meminit_context context)
struct memory_block *mem_blk)
{
int ret;
memory_block_add_nid(mem_blk, nid, context);
ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj,
&mem_blk->dev.kobj,
kobject_name(&mem_blk->dev.kobj));
@ -815,7 +812,7 @@ static int register_mem_block_under_node_hotplug(struct memory_block *mem_blk,
{
int nid = *(int *)arg;
do_register_memory_block_under_node(nid, mem_blk, MEMINIT_HOTPLUG);
do_register_memory_block_under_node(nid, mem_blk);
return 0;
}
@ -855,7 +852,8 @@ static void register_memory_blocks_under_nodes(void)
if (!mem)
continue;
do_register_memory_block_under_node(nid, mem, MEMINIT_EARLY);
memory_block_add_nid_early(mem, nid);
do_register_memory_block_under_node(nid, mem);
put_device(&mem->dev);
}

View File

@ -202,8 +202,7 @@ static inline unsigned long phys_to_block_id(unsigned long phys)
}
#ifdef CONFIG_NUMA
void memory_block_add_nid(struct memory_block *mem, int nid,
enum meminit_context context);
void memory_block_add_nid_early(struct memory_block *mem, int nid);
#endif /* CONFIG_NUMA */
int memory_block_advise_max_size(unsigned long size);
unsigned long memory_block_advised_max_size(void);