* [PATCH v2 0/2] drivers/base/node: fold node register and unregister functions @ 2025-10-14 15:39 Donet Tom 2025-10-14 15:39 ` [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() Donet Tom 2025-10-14 15:39 ` [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() Donet Tom 0 siblings, 2 replies; 10+ messages in thread From: Donet Tom @ 2025-10-14 15:39 UTC (permalink / raw) To: Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador Cc: Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang, Donet Tom This change came from the discussion in [1]. It consists of two patches: 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 is no functional change in these patches. [1] https://lore.kernel.org/all/5512b1b6-31f8-4322-8a5f-add8d1e9b22f@redhat.com/ --- v1 -> v2 - Changed commit description - Removed extern from the function declarations of register_node() and unregister_node(). v1 - https://lore.kernel.org/all/cover.1758736423.git.donettom@linux.ibm.com/ Donet Tom (2): drivers/base/node: Fold register_node() into register_one_node() drivers/base/node: Fold unregister_node() into unregister_one_node() arch/powerpc/platforms/pseries/pci_dlpar.c | 2 +- arch/x86/mm/numa.c | 4 +- drivers/base/node.c | 90 +++++++++------------- include/linux/node.h | 10 +-- mm/memory_hotplug.c | 8 +- mm/mm_init.c | 2 +- 6 files changed, 49 insertions(+), 67 deletions(-) -- 2.47.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() 2025-10-14 15:39 [PATCH v2 0/2] drivers/base/node: fold node register and unregister functions Donet Tom @ 2025-10-14 15:39 ` Donet Tom 2025-10-15 3:53 ` kernel test robot ` (2 more replies) 2025-10-14 15:39 ` [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() Donet Tom 1 sibling, 3 replies; 10+ messages in thread From: Donet Tom @ 2025-10-14 15:39 UTC (permalink / raw) To: Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador Cc: Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang, Donet Tom The function 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. Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Signed-off-by: Donet Tom <donettom@linux.ibm.com> --- arch/powerpc/platforms/pseries/pci_dlpar.c | 2 +- arch/x86/mm/numa.c | 4 +- drivers/base/node.c | 52 +++++++++------------- include/linux/node.h | 4 +- mm/memory_hotplug.c | 4 +- mm/mm_init.c | 2 +- 6 files changed, 28 insertions(+), 40 deletions(-) diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c index aeb8633a3d00..8c77ec7980de 100644 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c @@ -29,7 +29,7 @@ struct pci_controller *init_phb_dynamic(struct device_node *dn) nid = of_node_to_nid(dn); if (likely((nid) >= 0)) { if (!node_online(nid)) { - if (register_one_node(nid)) { + if (register_node(nid)) { pr_err("PCI: Failed to register node %d\n", nid); } else { update_numa_distance(dn); diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c index c24890c40138..7a97327140df 100644 --- a/arch/x86/mm/numa.c +++ b/arch/x86/mm/numa.c @@ -262,7 +262,7 @@ void __init init_gi_nodes(void) * bringup_nonboot_cpus * cpu_up * __try_online_node - * register_one_node + * register_node * because node_subsys is not initialized yet. * TODO remove dependency on node_online */ @@ -303,7 +303,7 @@ void __init init_cpu_to_node(void) * bringup_nonboot_cpus * cpu_up * __try_online_node - * register_one_node + * register_node * because node_subsys is not initialized yet. * TODO remove dependency on node_online */ diff --git a/drivers/base/node.c b/drivers/base/node.c index 83aeb0518e1d..4bcaa8006cd6 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -676,33 +676,6 @@ static void node_device_release(struct device *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 * @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 */ -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 cpu; @@ -918,14 +897,23 @@ int register_one_node(int nid) return -ENOMEM; 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) { - node_devices[nid] = NULL; + put_device(&node->dev); return error; } + node_devices[nid] = node; + hugetlb_register_node(node); + compaction_register_node(node); + reclaim_register_node(node); + /* link cpu under this node */ for_each_present_cpu(cpu) { if (cpu_to_node(cpu) == nid) @@ -1018,7 +1006,7 @@ void __init node_dev_init(void) * to already created cpu devices. */ for_each_online_node(i) { - ret = register_one_node(i); + ret = register_node(i); if (ret) panic("%s() failed to add node: %d\n", __func__, ret); } diff --git a/include/linux/node.h b/include/linux/node.h index 866e3323f1fd..b7028d3ec3b4 100644 --- a/include/linux/node.h +++ b/include/linux/node.h @@ -176,7 +176,7 @@ static inline int hotplug_node_notifier(notifier_fn_t fn, int pri) #ifdef CONFIG_NUMA extern void node_dev_init(void); /* 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 int register_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 int register_one_node(int nid) +static inline int register_node(int nid) { return 0; } diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 0be83039c3b5..6c050d867031 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1311,7 +1311,7 @@ static int __try_online_node(int nid, bool set_node_online) if (set_node_online) { node_set_online(nid); - ret = register_one_node(nid); + ret = register_node(nid); BUG_ON(ret); } out: @@ -1542,7 +1542,7 @@ int add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) goto error_memblock_remove; if (ret) { node_set_online(nid); - ret = register_one_node(nid); + ret = register_node(nid); if (WARN_ON(ret)) { node_set_offline(nid); goto error_memblock_remove; diff --git a/mm/mm_init.c b/mm/mm_init.c index 3db2dea7db4c..d9ef05c4dc5b 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1909,7 +1909,7 @@ void __init free_area_init(unsigned long *max_zone_pfn) 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 *and won't be set online later. The benefit is userspace *program won't be confused by sysfs files/directories of -- 2.47.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() 2025-10-14 15:39 ` [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() Donet Tom @ 2025-10-15 3:53 ` kernel test robot 2025-10-15 12:27 ` Donet Tom 2025-10-15 12:36 ` David Hildenbrand 2025-10-15 17:26 ` SeongJae Park 2 siblings, 1 reply; 10+ messages in thread From: kernel test robot @ 2025-10-15 3:53 UTC (permalink / raw) To: Donet Tom, Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador Cc: oe-kbuild-all, Linux Memory Management List, Ritesh Harjani, Aboorva Devarajan, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang, Donet Tom Hi Donet, kernel test robot noticed the following build warnings: [auto build test WARNING on akpm-mm/mm-everything] [also build test WARNING on powerpc/fixes linus/master v6.18-rc1 next-20251014] [cannot apply to driver-core/driver-core-testing driver-core/driver-core-next driver-core/driver-core-linus powerpc/next tip/x86/mm rppt-memblock/for-next rppt-memblock/fixes] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Donet-Tom/drivers-base-node-Fold-register_node-into-register_one_node/20251015-000850 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/910853c9dd61f7a2190a56cba101e73e9c6859be.1760097207.git.donettom%40linux.ibm.com patch subject: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() config: s390-randconfig-001-20251015 (https://download.01.org/0day-ci/archive/20251015/202510151130.JYajIJuM-lkp@intel.com/config) compiler: s390-linux-gcc (GCC) 12.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251015/202510151130.JYajIJuM-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202510151130.JYajIJuM-lkp@intel.com/ All warnings (new ones prefixed by >>): >> Warning: drivers/base/node.c:889 function parameter 'nid' not described in 'register_node' -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() 2025-10-15 3:53 ` kernel test robot @ 2025-10-15 12:27 ` Donet Tom 0 siblings, 0 replies; 10+ messages in thread From: Donet Tom @ 2025-10-15 12:27 UTC (permalink / raw) To: kernel test robot, Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador Cc: oe-kbuild-all, Linux Memory Management List, Ritesh Harjani, Aboorva Devarajan, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang On 10/15/25 9:23 AM, kernel test robot wrote: > Hi Donet, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on akpm-mm/mm-everything] > [also build test WARNING on powerpc/fixes linus/master v6.18-rc1 next-20251014] > [cannot apply to driver-core/driver-core-testing driver-core/driver-core-next driver-core/driver-core-linus powerpc/next tip/x86/mm rppt-memblock/for-next rppt-memblock/fixes] > [If your patch is applied to the wrong git tree, kindly drop us a note. This patch is based on the mm-new branch. It is not applying cleanly on target branch because the target branches are missing some patches that are present in mm-new. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Donet-Tom/drivers-base-node-Fold-register_node-into-register_one_node/20251015-000850 > base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything > patch link: https://lore.kernel.org/r/910853c9dd61f7a2190a56cba101e73e9c6859be.1760097207.git.donettom%40linux.ibm.com > patch subject: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() > config: s390-randconfig-001-20251015 (https://download.01.org/0day-ci/archive/20251015/202510151130.JYajIJuM-lkp@intel.com/config) > compiler: s390-linux-gcc (GCC) 12.5.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251015/202510151130.JYajIJuM-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202510151130.JYajIJuM-lkp@intel.com/ > > All warnings (new ones prefixed by >>): > >>> Warning: drivers/base/node.c:889 function parameter 'nid' not described in 'register_node' ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() 2025-10-14 15:39 ` [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() Donet Tom 2025-10-15 3:53 ` kernel test robot @ 2025-10-15 12:36 ` David Hildenbrand 2025-10-17 5:25 ` Donet Tom 2025-10-15 17:26 ` SeongJae Park 2 siblings, 1 reply; 10+ messages in thread From: David Hildenbrand @ 2025-10-15 12:36 UTC (permalink / raw) To: Donet Tom, Andrew Morton, Mike Rapoport, Oscar Salvador Cc: Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang On 14.10.25 17:39, Donet Tom wrote: > The function 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. > > Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> > Signed-off-by: Donet Tom <donettom@linux.ibm.com> > --- [...] > /** > * unregister_node - unregister a node device > * @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 */ > > -int register_one_node(int nid) > +/** > + * register_node - Initialize and register the node device. > + * @nid - Node number to use when creating the device. > I assume that should be "@nid: ..." to silence the warning. Acked-by: David Hildenbrand <david@redhat.com> -- Cheers David / dhildenb ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() 2025-10-15 12:36 ` David Hildenbrand @ 2025-10-17 5:25 ` Donet Tom 0 siblings, 0 replies; 10+ messages in thread From: Donet Tom @ 2025-10-17 5:25 UTC (permalink / raw) To: David Hildenbrand, Andrew Morton, Mike Rapoport, Oscar Salvador Cc: Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang On 10/15/25 6:06 PM, David Hildenbrand wrote: > On 14.10.25 17:39, Donet Tom wrote: >> The function 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. >> >> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> >> Signed-off-by: Donet Tom <donettom@linux.ibm.com> >> --- > [...] > >> /** >> * unregister_node - unregister a node device >> * @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 */ >> -int register_one_node(int nid) >> +/** >> + * register_node - Initialize and register the node device. >> + * @nid - Node number to use when creating the device. >> > > I assume that should be "@nid: ..." to silence the warning. > > Thank you, David, for pointing this out. Andrew has already applied the fix. > > Acked-by: David Hildenbrand <david@redhat.com> > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() 2025-10-14 15:39 ` [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() Donet Tom 2025-10-15 3:53 ` kernel test robot 2025-10-15 12:36 ` David Hildenbrand @ 2025-10-15 17:26 ` SeongJae Park 2 siblings, 0 replies; 10+ messages in thread From: SeongJae Park @ 2025-10-15 17:26 UTC (permalink / raw) To: Donet Tom Cc: SeongJae Park, Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador, Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang On Tue, 14 Oct 2025 21:09:16 +0530 Donet Tom <donettom@linux.ibm.com> wrote: > The function 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. > > Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> > Signed-off-by: Donet Tom <donettom@linux.ibm.com> Acked-by: SeongJae Park <sj@kernel.org> Thanks, SJ [...] ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() 2025-10-14 15:39 [PATCH v2 0/2] drivers/base/node: fold node register and unregister functions Donet Tom 2025-10-14 15:39 ` [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() Donet Tom @ 2025-10-14 15:39 ` Donet Tom 2025-10-15 17:27 ` SeongJae Park 1 sibling, 1 reply; 10+ messages in thread From: Donet Tom @ 2025-10-14 15:39 UTC (permalink / raw) To: Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador Cc: Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang, Donet Tom The function unregister_node() is only called from unregister_one_node(). This patch folds unregister_node() into its only caller and renames unregister_one_node() to unregister_node(). This reduces unnecessary indirection and simplifies the code structure. No functional changes are introduced. Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Signed-off-by: Donet Tom <donettom@linux.ibm.com> --- drivers/base/node.c | 38 +++++++++++++++++--------------------- include/linux/node.h | 6 ++---- mm/memory_hotplug.c | 4 ++-- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/drivers/base/node.c b/drivers/base/node.c index 4bcaa8006cd6..758b777dec1f 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -676,23 +676,6 @@ static void node_device_release(struct device *dev) kfree(to_node(dev)); } -/** - * unregister_node - unregister a node device - * @node: node going away - * - * Unregisters a node device @node. All the devices on the node must be - * unregistered before calling this function. - */ -void unregister_node(struct node *node) -{ - hugetlb_unregister_node(node); - compaction_unregister_node(node); - reclaim_unregister_node(node); - node_remove_accesses(node); - node_remove_caches(node); - device_unregister(&node->dev); -} - struct node *node_devices[MAX_NUMNODES]; /* @@ -924,13 +907,26 @@ int register_node(int nid) return error; } - -void unregister_one_node(int nid) +/** + * unregister_node - unregister a node device + * @nid: nid of the node going away + * + * Unregisters the node device at node id @nid. All the devices on the + * node must be unregistered before calling this function. + */ +void unregister_node(int nid) { - if (!node_devices[nid]) + struct node *node = node_devices[nid]; + + if (!node) return; - unregister_node(node_devices[nid]); + hugetlb_unregister_node(node); + compaction_unregister_node(node); + reclaim_unregister_node(node); + node_remove_accesses(node); + node_remove_caches(node); + device_unregister(&node->dev); node_devices[nid] = NULL; } diff --git a/include/linux/node.h b/include/linux/node.h index b7028d3ec3b4..0269b064ba65 100644 --- a/include/linux/node.h +++ b/include/linux/node.h @@ -132,8 +132,6 @@ static inline void register_memory_blocks_under_nodes(void) } #endif -extern void unregister_node(struct node *node); - struct node_notify { int nid; }; @@ -177,7 +175,7 @@ static inline int hotplug_node_notifier(notifier_fn_t fn, int pri) extern void node_dev_init(void); /* Core of the node registration - only memory hotplug should use this */ int register_node(int nid); -extern void unregister_one_node(int nid); +void unregister_node(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 void unregister_memory_block_under_nodes(struct memory_block *mem_blk); @@ -193,7 +191,7 @@ static inline int register_node(int nid) { return 0; } -static inline int unregister_one_node(int nid) +static inline int unregister_node(int nid) { return 0; } diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 6c050d867031..94a8f6e8811a 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1596,7 +1596,7 @@ int add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags) error: if (new_node) { node_set_offline(nid); - unregister_one_node(nid); + unregister_node(nid); } error_memblock_remove: if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) @@ -2201,7 +2201,7 @@ void try_offline_node(int nid) * node now. */ node_set_offline(nid); - unregister_one_node(nid); + unregister_node(nid); } EXPORT_SYMBOL(try_offline_node); -- 2.47.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() 2025-10-14 15:39 ` [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() Donet Tom @ 2025-10-15 17:27 ` SeongJae Park 2025-10-17 5:17 ` Donet Tom 0 siblings, 1 reply; 10+ messages in thread From: SeongJae Park @ 2025-10-15 17:27 UTC (permalink / raw) To: Donet Tom Cc: SeongJae Park, Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador, Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang On Tue, 14 Oct 2025 21:09:17 +0530 Donet Tom <donettom@linux.ibm.com> wrote: > The function unregister_node() is only called from unregister_one_node(). > This patch folds unregister_node() into its only caller and renames > unregister_one_node() to unregister_node(). > > This reduces unnecessary indirection and simplifies the code structure. > No functional changes are introduced. > > Acked-by: David Hildenbrand <david@redhat.com> > Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> > Signed-off-by: Donet Tom <donettom@linux.ibm.com> Acked-by: SeongJae Park <sj@kernel.org> > --- > drivers/base/node.c | 38 +++++++++++++++++--------------------- > include/linux/node.h | 6 ++---- > mm/memory_hotplug.c | 4 ++-- > 3 files changed, 21 insertions(+), 27 deletions(-) > > diff --git a/drivers/base/node.c b/drivers/base/node.c > index 4bcaa8006cd6..758b777dec1f 100644 > --- a/drivers/base/node.c > +++ b/drivers/base/node.c > @@ -676,23 +676,6 @@ static void node_device_release(struct device *dev) > kfree(to_node(dev)); > } > > -/** > - * unregister_node - unregister a node device > - * @node: node going away > - * > - * Unregisters a node device @node. All the devices on the node must be > - * unregistered before calling this function. > - */ > -void unregister_node(struct node *node) > -{ > - hugetlb_unregister_node(node); > - compaction_unregister_node(node); > - reclaim_unregister_node(node); > - node_remove_accesses(node); > - node_remove_caches(node); > - device_unregister(&node->dev); > -} > - > struct node *node_devices[MAX_NUMNODES]; > > /* > @@ -924,13 +907,26 @@ int register_node(int nid) > > return error; > } > - > -void unregister_one_node(int nid) > +/** > + * unregister_node - unregister a node device > + * @nid: nid of the node going away > + * > + * Unregisters the node device at node id @nid. All the devices on the Nit. Why two spaces before "@nid"? [...] Thanks, SJ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() 2025-10-15 17:27 ` SeongJae Park @ 2025-10-17 5:17 ` Donet Tom 0 siblings, 0 replies; 10+ messages in thread From: Donet Tom @ 2025-10-17 5:17 UTC (permalink / raw) To: SeongJae Park Cc: Andrew Morton, David Hildenbrand, Mike Rapoport, Oscar Salvador, Ritesh Harjani, Aboorva Devarajan, linux-mm, linux-kernel, Madhavan Srinivasan, linuxppc-dev, Christophe Leroy, Peter Zijlstra, Ingo Molnar, x86, Greg Kroah-Hartman, rafael, Danilo Krummrich, Dave Jiang [-- Attachment #1: Type: text/plain, Size: 3459 bytes --] On 10/15/25 10:57 PM, SeongJae Park wrote: > On Tue, 14 Oct 2025 21:09:17 +0530 Donet Tom<donettom@linux.ibm.com> wrote: > >> The function unregister_node() is only called from unregister_one_node(). >> This patch folds unregister_node() into its only caller and renames >> unregister_one_node() to unregister_node(). >> >> This reduces unnecessary indirection and simplifies the code structure. >> No functional changes are introduced. >> >> Acked-by: David Hildenbrand<david@redhat.com> >> Acked-by: Mike Rapoport (Microsoft)<rppt@kernel.org> >> Signed-off-by: Donet Tom<donettom@linux.ibm.com> > Acked-by: SeongJae Park<sj@kernel.org> > >> --- >> drivers/base/node.c | 38 +++++++++++++++++--------------------- >> include/linux/node.h | 6 ++---- >> mm/memory_hotplug.c | 4 ++-- >> 3 files changed, 21 insertions(+), 27 deletions(-) >> >> diff --git a/drivers/base/node.c b/drivers/base/node.c >> index 4bcaa8006cd6..758b777dec1f 100644 >> --- a/drivers/base/node.c >> +++ b/drivers/base/node.c >> @@ -676,23 +676,6 @@ static void node_device_release(struct device *dev) >> kfree(to_node(dev)); >> } >> >> -/** >> - * unregister_node - unregister a node device >> - * @node: node going away >> - * >> - * Unregisters a node device @node. All the devices on the node must be >> - * unregistered before calling this function. >> - */ >> -void unregister_node(struct node *node) >> -{ >> - hugetlb_unregister_node(node); >> - compaction_unregister_node(node); >> - reclaim_unregister_node(node); >> - node_remove_accesses(node); >> - node_remove_caches(node); >> - device_unregister(&node->dev); >> -} >> - >> struct node *node_devices[MAX_NUMNODES]; >> >> /* >> @@ -924,13 +907,26 @@ int register_node(int nid) >> >> return error; >> } >> - >> -void unregister_one_node(int nid) >> +/** >> + * unregister_node - unregister a node device >> + * @nid: nid of the node going away >> + * >> + * Unregisters the node device at node id @nid. All the devices on the > Nit. Why two spaces before "@nid"? Thank you for pointing this out. Andrew could you please help apply the below fixlet on top of this patch? From 0d0345847ad33607c7ebae3798ef37ff16a20fd0 Mon Sep 17 00:00:00 2001 From: Donet Tom<donettom@linux.ibm.com> Date: Fri, 17 Oct 2025 10:27:54 +0530 Subject: [PATCH] [fixlet] drivers/base/node: Remove extra space in description This patch removes an extra space before @nid and "All". Signed-off-by: Donet Tom<donettom@linux.ibm.com> --- drivers/base/node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/base/node.c b/drivers/base/node.c index 63b223a3b38e..00cf4532f121 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -911,7 +911,7 @@ int register_node(int nid) * unregister_node - unregister a node device * @nid: nid of the node going away * - * Unregisters the node device at node id @nid. All the devices on the + * Unregisters the node device at node id @nid. All the devices on the * node must be unregistered before calling this function. */ void unregister_node(int nid) -- 2.51.0 > > [...] > > > Thanks, > SJ [-- Attachment #2: Type: text/html, Size: 6686 bytes --] ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-10-17 5:26 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-10-14 15:39 [PATCH v2 0/2] drivers/base/node: fold node register and unregister functions Donet Tom 2025-10-14 15:39 ` [PATCH v2 1/2] drivers/base/node: Fold register_node() into register_one_node() Donet Tom 2025-10-15 3:53 ` kernel test robot 2025-10-15 12:27 ` Donet Tom 2025-10-15 12:36 ` David Hildenbrand 2025-10-17 5:25 ` Donet Tom 2025-10-15 17:26 ` SeongJae Park 2025-10-14 15:39 ` [PATCH v2 2/2] drivers/base/node: Fold unregister_node() into unregister_one_node() Donet Tom 2025-10-15 17:27 ` SeongJae Park 2025-10-17 5:17 ` Donet Tom
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).