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(-)
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,
--
2.49.0
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>
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) -- Cheers, Harry (formerly known as Hyeonggon)
© 2016 - 2025 Red Hat, Inc.