]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drivers/base: move memory_block_add_nid() into the caller
authorHannes Reinecke <hare@kernel.org>
Tue, 29 Jul 2025 06:46:36 +0000 (08:46 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 3 Oct 2025 23:42:43 +0000 (16:42 -0700)
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>
drivers/base/memory.c
drivers/base/node.c
include/linux/memory.h

index fb212a889e6534305e15f5d08f1919e1bb32b150..6d84a02cfa5dc4511e265e0c0d522f0431e56a78 100644 (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
 
index 67b01d57973774da6ba015adca67f755d4ee1fe7..6b6e55a98b796b103839a785f091706c7d0c9a11 100644 (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);
                }
 
index 4a29153e372effa23df7771ad5a3ece136414779..43d378038ce2f3fba8791be452dfe33b206653ef 100644 (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);