From: Oscar Salvador <osalvador@suse.de>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@redhat.com>,
Vlastimil Babka <vbabka@suse.cz>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Harry Yoo <harry.yoo@oracle.com>, Rakie Kim <rakie.kim@sk.com>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Oscar Salvador <osalvador@suse.de>
Subject: [PATCH v7 10/11] mm,page_ext: Derive the node from the pfn
Date: Mon, 16 Jun 2025 15:51:53 +0200 [thread overview]
Message-ID: <20250616135158.450136-11-osalvador@suse.de> (raw)
In-Reply-To: <20250616135158.450136-1-osalvador@suse.de>
page_ext is the only user of 'status_change_nid', which is set in
online/offline operations, to know to which node we are
adding/removing memory.
Prior to call any notifiers, the memmap is initialized via, which among
other things, sets the node the pages belong to, to all corresponging pages.
This means that there is no need to keep using 'status_change_nid' since
we can derive the node from the pfn.
This will allow us to finally drop 'status_change_nid' from the memory_notify
struct.
Suggested-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Oscar Salvador <osalvador@suse.de>
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
Acked-by: David Hildenbrand <david@redhat.com>
---
mm/page_ext.c | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
diff --git a/mm/page_ext.c b/mm/page_ext.c
index c351fdfe9e9a..d7396a8970e5 100644
--- a/mm/page_ext.c
+++ b/mm/page_ext.c
@@ -369,25 +369,15 @@ static void __invalidate_page_ext(unsigned long pfn)
}
static int __meminit online_page_ext(unsigned long start_pfn,
- unsigned long nr_pages,
- int nid)
+ unsigned long nr_pages)
{
+ int nid = pfn_to_nid(start_pfn);
unsigned long start, end, pfn;
int fail = 0;
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)
@@ -435,8 +425,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);
+ ret = online_page_ext(mn->start_pfn, mn->nr_pages);
break;
case MEM_OFFLINE:
offline_page_ext(mn->start_pfn,
--
2.49.0
next prev parent reply other threads:[~2025-06-16 13:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-16 13:51 [PATCH v7 00/11] Implement numa node notifier Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 01/11] mm,slub: Do not special case N_NORMAL nodes for slab_nodes Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 02/11] mm,memory_hotplug: Remove status_change_nid_normal and update documentation Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 03/11] mm,memory_hotplug: Implement numa node notifier Oscar Salvador
2025-06-16 14:31 ` David Hildenbrand
2025-06-16 13:51 ` [PATCH v7 04/11] mm,slub: Use node-notifier instead of memory-notifier Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 05/11] mm,memory-tiers: " Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 06/11] drivers,cxl: " Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 07/11] drivers,hmat: " Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 08/11] kernel,cpuset: " Oscar Salvador
2025-06-16 13:51 ` [PATCH v7 09/11] mm,mempolicy: " Oscar Salvador
2025-06-17 0:14 ` Gregory Price
2025-06-16 13:51 ` Oscar Salvador [this message]
2025-06-16 13:51 ` [PATCH v7 11/11] mm,memory_hotplug: Drop status_change_nid parameter from memory_notify Oscar Salvador
2025-06-16 14:11 ` Vlastimil Babka
2025-06-16 14:32 ` [PATCH v7 00/11] Implement numa node notifier David Hildenbrand
2025-06-17 9:26 ` Oscar Salvador
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250616135158.450136-11-osalvador@suse.de \
--to=osalvador@suse.de \
--cc=42.hyeyoo@gmail.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=harry.yoo@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rakie.kim@sk.com \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox