Commit 0a947c14 authored by Hannes Reinecke's avatar Hannes Reinecke Committed by Andrew Morton
Browse files

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: default avatarDavid Hildenbrand <david@redhat.com>
Signed-off-by: default avatarHannes Reinecke <hare@kernel.org>
Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
Acked-by: default avatarOscar Salvador <osalvador@suse.de>
Reviewed-by: default avatarDonet Tom <donettom@linux.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent b8179af1
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -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,8 +798,6 @@ 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
@@ -807,6 +806,7 @@ void memory_block_add_nid(struct memory_block *mem, int nid,
		 */
		mem->nid = nid;
	}
}
#endif

static int add_memory_block(unsigned long block_id, int nid, unsigned long state,
+4 −6
Original line number Diff line number Diff line
@@ -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);
		}

+1 −2
Original line number Diff line number Diff line
@@ -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);