Message ID | 20250401092716.537512-3-osalvador@suse.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Implement numa node notifier | expand |
On Tue, Apr 01, 2025 at 11:27:16AM +0200, Oscar Salvador wrote: > memory notify consumers are only interested in which node the memory we > are adding belongs to, so replace current status_change_nid{_normal} fields > with only one that specifies the node. > > Signed-off-by: Oscar Salvador <osalvador@suse.de> > --- Looks good to me, Reviewed-by: Harry Yoo <harry.yoo@oracle.com> > include/linux/memory.h | 3 +-- > mm/memory_hotplug.c | 6 ++---- > mm/page_ext.c | 12 +----------- > 3 files changed, 4 insertions(+), 17 deletions(-) > > diff --git a/mm/page_ext.c b/mm/page_ext.c > index c351fdfe9e9a..477e6f24b7ab 100644 > --- a/mm/page_ext.c > +++ b/mm/page_ext.c > @@ -378,16 +378,6 @@ static int __meminit online_page_ext(unsigned long start_pfn, > start = SECTION_ALIGN_DOWN(start_pfn); > end = SECTION_ALIGN_UP(start_pfn + nr_pages); > > - if (nid == NUMA_NO_NODE) { > - /* > - * In this case, "nid" already exists and contains valid memory. > - * "start_pfn" passed to us is a pfn which is an arg for > - * online__pages(), and start_pfn should exist. > - */ > - nid = pfn_to_nid(start_pfn); > - VM_BUG_ON(!node_online(nid)); > - } Ok, now that users who care 'status change' are using node notifier, mem_arg.nid is the NUMA node the pfn range belongs to, and always not NUMA_NO_NODE. > for (pfn = start; !fail && pfn < end; pfn += PAGES_PER_SECTION) > fail = init_section_page_ext(pfn, nid); > if (!fail)
On 4/1/25 11:27, Oscar Salvador wrote: > memory notify consumers are only interested in which node the memory we > are adding belongs to, so replace current status_change_nid{_normal} fields > with only one that specifies the node. > > Signed-off-by: Oscar Salvador <osalvador@suse.de> Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
diff --git a/include/linux/memory.h b/include/linux/memory.h index 1d814dfbb8a8..4d8884578a1a 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h @@ -117,8 +117,7 @@ struct memory_notify { unsigned long altmap_nr_pages; unsigned long start_pfn; unsigned long nr_pages; - int status_change_nid_normal; - int status_change_nid; + int nid; }; struct node_notify { diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 4bb9ff282ec9..185d799c79e2 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1198,6 +1198,7 @@ int online_pages(unsigned long pfn, unsigned long nr_pages, mem_arg.start_pfn = pfn; mem_arg.nr_pages = nr_pages; + mem_arg.nid = nid; node_states_check_changes_online(nr_pages, zone, &node_arg); if (node_arg.status_change_nid >= 0) { @@ -1210,8 +1211,6 @@ int online_pages(unsigned long pfn, unsigned long nr_pages, } cancel_mem_notifier_on_err = true; - mem_arg.status_change_nid = node_arg.status_change_nid; - mem_arg.status_change_nid_normal = node_arg.status_change_nid_normal; ret = memory_notify(MEM_GOING_ONLINE, &mem_arg); ret = notifier_to_errno(ret); if (ret) @@ -2050,6 +2049,7 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages, mem_arg.start_pfn = start_pfn; mem_arg.nr_pages = nr_pages; + mem_arg.nid = node; node_states_check_changes_offline(nr_pages, zone, &node_arg); if (node_arg.status_change_nid >= 0) { @@ -2061,8 +2061,6 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages, } cancel_mem_notifier_on_err = true; - mem_arg.status_change_nid = node_arg.status_change_nid; - mem_arg.status_change_nid_normal = node_arg.status_change_nid_normal; ret = memory_notify(MEM_GOING_OFFLINE, &mem_arg); ret = notifier_to_errno(ret); if (ret) { diff --git a/mm/page_ext.c b/mm/page_ext.c index c351fdfe9e9a..477e6f24b7ab 100644 --- a/mm/page_ext.c +++ b/mm/page_ext.c @@ -378,16 +378,6 @@ static int __meminit online_page_ext(unsigned long start_pfn, start = SECTION_ALIGN_DOWN(start_pfn); end = SECTION_ALIGN_UP(start_pfn + nr_pages); - if (nid == NUMA_NO_NODE) { - /* - * In this case, "nid" already exists and contains valid memory. - * "start_pfn" passed to us is a pfn which is an arg for - * online__pages(), and start_pfn should exist. - */ - nid = pfn_to_nid(start_pfn); - VM_BUG_ON(!node_online(nid)); - } - for (pfn = start; !fail && pfn < end; pfn += PAGES_PER_SECTION) fail = init_section_page_ext(pfn, nid); if (!fail) @@ -436,7 +426,7 @@ static int __meminit page_ext_callback(struct notifier_block *self, switch (action) { case MEM_GOING_ONLINE: ret = online_page_ext(mn->start_pfn, - mn->nr_pages, mn->status_change_nid); + mn->nr_pages, mn->nid); break; case MEM_OFFLINE: offline_page_ext(mn->start_pfn,
memory notify consumers are only interested in which node the memory we are adding belongs to, so replace current status_change_nid{_normal} fields with only one that specifies the node. Signed-off-by: Oscar Salvador <osalvador@suse.de> --- include/linux/memory.h | 3 +-- mm/memory_hotplug.c | 6 ++---- mm/page_ext.c | 12 +----------- 3 files changed, 4 insertions(+), 17 deletions(-)