From: Kaitao Cheng <kaitao.cheng@linux.dev>
To: Mike Rapoport <rppt@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
"Liam R . Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>,
Suren Baghdasaryan <surenb@google.com>,
Michal Hocko <mhocko@suse.com>,
Muchun Song <muchun.song@linux.dev>
Cc: Priyanshu Kumar <priyanshukumarpu@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Kaitao Cheng <chengkaitao@kylinos.cn>
Subject: [PATCH v2 1/3] mm: Remove unused exact_nid parameter from memmap_alloc()
Date: Sat, 19 Sep 2026 21:53:25 +0800 [thread overview]
Message-ID: <20260919135327.74089-2-kaitao.cheng@linux.dev> (raw)
In-Reply-To: <20260919135327.74089-1-kaitao.cheng@linux.dev>
From: Kaitao Cheng <chengkaitao@kylinos.cn>
Commit ffe55393137c ("mm/sparse: remove sparse buffer pre-allocation
mechanism") removed sparse_buffer_init(), which was the only caller of
memmap_alloc() that passed true for exact_nid.
All remaining callers pass false, leaving the exact-node allocation
branch unreachable. Remove the exact_nid parameter and unconditionally
use memblock_alloc_try_nid_raw().
This has no functional impact.
Signed-off-by: Kaitao Cheng <chengkaitao@kylinos.cn>
---
mm/mm_init.c | 14 ++++----------
mm/mm_init.h | 4 ++--
mm/sparse-vmemmap.c | 2 +-
mm/sparse.c | 2 +-
4 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 9ce6060de06d..af3c8a2cc91b 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1596,7 +1596,7 @@ static void __init free_area_init_core(struct pglist_data *pgdat)
}
void __init *memmap_alloc(phys_addr_t size, phys_addr_t align,
- phys_addr_t min_addr, int nid, bool exact_nid)
+ phys_addr_t min_addr, int nid)
{
void *ptr;
@@ -1604,14 +1604,8 @@ void __init *memmap_alloc(phys_addr_t size, phys_addr_t align,
* Kmemleak will explicitly scan mem_map by traversing all valid
* `struct *page`,so memblock does not need to be added to the scan list.
*/
- if (exact_nid)
- ptr = memblock_alloc_exact_nid_raw(size, align, min_addr,
- MEMBLOCK_ALLOC_NOLEAKTRACE,
- nid);
- else
- ptr = memblock_alloc_try_nid_raw(size, align, min_addr,
- MEMBLOCK_ALLOC_NOLEAKTRACE,
- nid);
+ ptr = memblock_alloc_try_nid_raw(size, align, min_addr,
+ MEMBLOCK_ALLOC_NOLEAKTRACE, nid);
if (ptr && size > 0)
page_init_poison(ptr, size);
@@ -1639,7 +1633,7 @@ static void __init alloc_node_mem_map(struct pglist_data *pgdat)
end = ALIGN(pgdat_end_pfn(pgdat), MAX_ORDER_NR_PAGES);
size = (end - start) * sizeof(struct page);
map = memmap_alloc(size, SMP_CACHE_BYTES, MEMBLOCK_LOW_LIMIT,
- pgdat->node_id, false);
+ pgdat->node_id);
if (!map)
panic("Failed to allocate %ld bytes for node %d memory map\n",
size, pgdat->node_id);
diff --git a/mm/mm_init.h b/mm/mm_init.h
index c9fc35e7e9f1..a8ed5c20851b 100644
--- a/mm/mm_init.h
+++ b/mm/mm_init.h
@@ -31,8 +31,8 @@ static inline void clear_zone_contiguous(struct zone *zone)
void memblock_free_pages(unsigned long pfn, unsigned int order);
-void *memmap_alloc(phys_addr_t size, phys_addr_t align, phys_addr_t min_addr,
- int nid, bool exact_nid);
+void *memmap_alloc(phys_addr_t size, phys_addr_t align,
+ phys_addr_t min_addr, int nid);
void memmap_init_range(unsigned long size, int nid, unsigned long zone,
unsigned long start_pfn, unsigned long zone_end_pfn,
diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c
index 96506f594924..dbd1ebe93fe9 100644
--- a/mm/sparse-vmemmap.c
+++ b/mm/sparse-vmemmap.c
@@ -62,7 +62,7 @@ void __ref *vmemmap_alloc_block(unsigned long size, int node)
}
return NULL;
} else
- return memmap_alloc(size, size, __pa(MAX_DMA_ADDRESS), node, false);
+ return memmap_alloc(size, size, __pa(MAX_DMA_ADDRESS), node);
}
static void * __meminit altmap_alloc_block_buf(unsigned long size,
diff --git a/mm/sparse.c b/mm/sparse.c
index b75921c622ed..36692b1dd733 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -215,7 +215,7 @@ struct page __init *__populate_section_memmap(unsigned long pfn,
{
const unsigned long size = PAGE_ALIGN(sizeof(struct page) * PAGES_PER_SECTION);
- return memmap_alloc(size, size, __pa(MAX_DMA_ADDRESS), nid, false);
+ return memmap_alloc(size, size, __pa(MAX_DMA_ADDRESS), nid);
}
#endif /* !CONFIG_SPARSEMEM_VMEMMAP */
--
2.54.0 (Apple Git-157)
next prev parent reply other threads:[~2026-09-19 13:54 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-19 13:53 [PATCH v2 0/3] memblock: Remove unused exact nid allocation API Kaitao Cheng
2026-09-19 13:53 ` Kaitao Cheng [this message]
2026-09-19 13:53 ` [PATCH v2 2/3] memblock tests: Move exact nid tests to memblock_alloc_range_nid() Kaitao Cheng
2026-09-19 13:53 ` [PATCH v2 3/3] memblock: Remove unused memblock_alloc_exact_nid_raw() Kaitao Cheng
2026-09-24 7:48 ` [PATCH v2 0/3] memblock: Remove unused exact nid allocation API Mike Rapoport
2026-10-12 3:06 ` Kaitao Cheng
2026-10-13 9:50 ` Mike Rapoport
2026-10-13 10:06 ` Muchun Song
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=20260919135327.74089-2-kaitao.cheng@linux.dev \
--to=kaitao.cheng@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=chengkaitao@kylinos.cn \
--cc=david@kernel.org \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=priyanshukumarpu@gmail.com \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.