drivers/base/node: fold register_node() into register_one_node()

Patch series "drivers/base/node: fold node register and unregister
functions", v2.

The first patch merges register_one_node() and register_node(), leaving a
single register_node() function.

The second patch merges unregister_one_node() and unregister_node(),
leaving a single unregister_node() function.

There are no functional changes in these patches.


This patch (of 2):

register_node() is only called from register_one_node().  This patch folds
register_node() into its only caller and renames register_one_node() to
register_node().

This reduces unnecessary indirection and simplifies the code structure. 
No functional changes are introduced.

[akpm@linux-foundation.org: fix kerneldoc, per David]
Link: https://lkml.kernel.org/r/cover.1760097207.git.donettom@linux.ibm.com
Link: https://lkml.kernel.org/r/910853c9dd61f7a2190a56cba101e73e9c6859be.1760097207.git.donettom@linux.ibm.com
Signed-off-by: Donet Tom <donettom@linux.ibm.com>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Acked-by: SeongJae Park <sj@kernel.org>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Aboorva Devarajan <aboorvad@linux.ibm.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: "Ritesh Harjani (IBM)" <ritesh.list@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Donet Tom 2025-10-14 21:09:16 +05:30 committed by Andrew Morton
parent 900fcf00e1
commit eb8762dc22
6 changed files with 28 additions and 40 deletions

View File

@ -29,7 +29,7 @@ struct pci_controller *init_phb_dynamic(struct device_node *dn)
nid = of_node_to_nid(dn); nid = of_node_to_nid(dn);
if (likely((nid) >= 0)) { if (likely((nid) >= 0)) {
if (!node_online(nid)) { if (!node_online(nid)) {
if (register_one_node(nid)) { if (register_node(nid)) {
pr_err("PCI: Failed to register node %d\n", nid); pr_err("PCI: Failed to register node %d\n", nid);
} else { } else {
update_numa_distance(dn); update_numa_distance(dn);

View File

@ -262,7 +262,7 @@ void __init init_gi_nodes(void)
* bringup_nonboot_cpus * bringup_nonboot_cpus
* cpu_up * cpu_up
* __try_online_node * __try_online_node
* register_one_node * register_node
* because node_subsys is not initialized yet. * because node_subsys is not initialized yet.
* TODO remove dependency on node_online * TODO remove dependency on node_online
*/ */
@ -303,7 +303,7 @@ void __init init_cpu_to_node(void)
* bringup_nonboot_cpus * bringup_nonboot_cpus
* cpu_up * cpu_up
* __try_online_node * __try_online_node
* register_one_node * register_node
* because node_subsys is not initialized yet. * because node_subsys is not initialized yet.
* TODO remove dependency on node_online * TODO remove dependency on node_online
*/ */

View File

@ -676,33 +676,6 @@ static void node_device_release(struct device *dev)
kfree(to_node(dev)); kfree(to_node(dev));
} }
/*
* register_node - Setup a sysfs device for a node.
* @num - Node number to use when creating the device.
*
* Initialize and register the node device.
*/
static int register_node(struct node *node, int num)
{
int error;
node->dev.id = num;
node->dev.bus = &node_subsys;
node->dev.release = node_device_release;
node->dev.groups = node_dev_groups;
error = device_register(&node->dev);
if (error) {
put_device(&node->dev);
} else {
hugetlb_register_node(node);
compaction_register_node(node);
reclaim_register_node(node);
}
return error;
}
/** /**
* unregister_node - unregister a node device * unregister_node - unregister a node device
* @node: node going away * @node: node going away
@ -907,7 +880,13 @@ void register_memory_blocks_under_node_hotplug(int nid, unsigned long start_pfn,
} }
#endif /* CONFIG_MEMORY_HOTPLUG */ #endif /* CONFIG_MEMORY_HOTPLUG */
int register_one_node(int nid) /**
* register_node - Initialize and register the node device.
* @nid: Node number to use when creating the device.
*
* Return: 0 on success, -errno otherwise
*/
int register_node(int nid)
{ {
int error; int error;
int cpu; int cpu;
@ -918,14 +897,23 @@ int register_one_node(int nid)
return -ENOMEM; return -ENOMEM;
INIT_LIST_HEAD(&node->access_list); INIT_LIST_HEAD(&node->access_list);
node_devices[nid] = node;
error = register_node(node_devices[nid], nid); node->dev.id = nid;
node->dev.bus = &node_subsys;
node->dev.release = node_device_release;
node->dev.groups = node_dev_groups;
error = device_register(&node->dev);
if (error) { if (error) {
node_devices[nid] = NULL; put_device(&node->dev);
return error; return error;
} }
node_devices[nid] = node;
hugetlb_register_node(node);
compaction_register_node(node);
reclaim_register_node(node);
/* link cpu under this node */ /* link cpu under this node */
for_each_present_cpu(cpu) { for_each_present_cpu(cpu) {
if (cpu_to_node(cpu) == nid) if (cpu_to_node(cpu) == nid)
@ -1018,7 +1006,7 @@ void __init node_dev_init(void)
* to already created cpu devices. * to already created cpu devices.
*/ */
for_each_online_node(i) { for_each_online_node(i) {
ret = register_one_node(i); ret = register_node(i);
if (ret) if (ret)
panic("%s() failed to add node: %d\n", __func__, ret); panic("%s() failed to add node: %d\n", __func__, ret);
} }

View File

@ -176,7 +176,7 @@ static inline int hotplug_node_notifier(notifier_fn_t fn, int pri)
#ifdef CONFIG_NUMA #ifdef CONFIG_NUMA
extern void node_dev_init(void); extern void node_dev_init(void);
/* Core of the node registration - only memory hotplug should use this */ /* Core of the node registration - only memory hotplug should use this */
extern int register_one_node(int nid); int register_node(int nid);
extern void unregister_one_node(int nid); extern void unregister_one_node(int nid);
extern int register_cpu_under_node(unsigned int cpu, unsigned int nid); extern int register_cpu_under_node(unsigned int cpu, unsigned int nid);
extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid); extern int unregister_cpu_under_node(unsigned int cpu, unsigned int nid);
@ -189,7 +189,7 @@ extern int register_memory_node_under_compute_node(unsigned int mem_nid,
static inline void node_dev_init(void) static inline void node_dev_init(void)
{ {
} }
static inline int register_one_node(int nid) static inline int register_node(int nid)
{ {
return 0; return 0;
} }

View File

@ -1311,7 +1311,7 @@ static int __try_online_node(int nid, bool set_node_online)
if (set_node_online) { if (set_node_online) {
node_set_online(nid); node_set_online(nid);
ret = register_one_node(nid); ret = register_node(nid);
BUG_ON(ret); BUG_ON(ret);
} }
out: out:
@ -1542,7 +1542,7 @@ int add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags)
goto error_memblock_remove; goto error_memblock_remove;
if (ret) { if (ret) {
node_set_online(nid); node_set_online(nid);
ret = register_one_node(nid); ret = register_node(nid);
if (WARN_ON(ret)) { if (WARN_ON(ret)) {
node_set_offline(nid); node_set_offline(nid);
goto error_memblock_remove; goto error_memblock_remove;

View File

@ -1909,7 +1909,7 @@ void __init free_area_init(unsigned long *max_zone_pfn)
free_area_init_node(nid); free_area_init_node(nid);
/* /*
* No sysfs hierarchy will be created via register_one_node() * No sysfs hierarchy will be created via register_node()
*for memory-less node because here it's not marked as N_MEMORY *for memory-less node because here it's not marked as N_MEMORY
*and won't be set online later. The benefit is userspace *and won't be set online later. The benefit is userspace
*program won't be confused by sysfs files/directories of *program won't be confused by sysfs files/directories of