* [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd()
@ 2026-04-04 7:17 Muchun Song
2026-04-04 7:17 ` [PATCH 1/4] arm64/mm: drop vmemmap_pmd helpers and use generic code Muchun Song
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Muchun Song @ 2026-04-04 7:17 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon, Huacai Chen, Paul Walmsley,
Palmer Dabbelt, Albert Ou, David S. Miller, Andreas Larsson,
Andrew Morton, David Hildenbrand
Cc: Muchun Song, Muchun Song, WANG Xuerui, Alexandre Ghiti,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, Ryan Roberts, Kevin Brodsky,
Dev Jain, Anshuman Khandual, Yang Shi, Chaitanya S Prakash,
Yuquan Wang, Petr Tesarik, Austin Kim, Vishal Moola (Oracle),
Junhui Liu, Matthew Wilcox (Oracle), Alex Shi, Chengkaitao,
linux-arm-kernel, linux-kernel, loongarch, linux-riscv,
sparclinux, linux-mm
The two weak functions vmemmap_set_pmd() and vmemmap_check_pmd() are
currently no-ops on every architecture, forcing each platform that needs
them to duplicate the same handful of lines. Provide a generic implementation:
- vmemmap_set_pmd() simply sets a huge PMD with PAGE_KERNEL protection.
- vmemmap_check_pmd() verifies that the PMD is present and leaf,
then calls the existing vmemmap_verify() helper.
Architectures that need special handling can continue to override the
weak symbols; everyone else gets the standard version for free.
This series drops the custom implementations in arm64, riscv, loongarch,
and sparc, replacing them with the generic implementation introduced
in the first patch.
Muchun Song (5):
mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and
vmemmap_check_pmd()
arm64/mm: drop vmemmap_pmd helpers and use generic code
riscv/mm: drop vmemmap_pmd helpers and use generic code
loongarch/mm: drop vmemmap_check_pmd helper and use generic code
sparc/mm: drop vmemmap_check_pmd helper and use generic code
arch/arm64/mm/mmu.c | 14 --------------
arch/loongarch/mm/init.c | 11 -----------
arch/riscv/mm/init.c | 13 -------------
arch/sparc/mm/init_64.c | 11 -----------
mm/sparse-vmemmap.c | 7 ++++++-
5 files changed, 6 insertions(+), 50 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/4] arm64/mm: drop vmemmap_pmd helpers and use generic code
2026-04-04 7:17 [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
@ 2026-04-04 7:17 ` Muchun Song
2026-04-04 7:17 ` [PATCH 2/5] " Muchun Song
2026-04-04 7:35 ` [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
2 siblings, 0 replies; 4+ messages in thread
From: Muchun Song @ 2026-04-04 7:17 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon
Cc: Muchun Song, Muchun Song, Ryan Roberts, Andrew Morton,
David Hildenbrand, Kevin Brodsky, Dev Jain, Lorenzo Stoakes,
Anshuman Khandual, Yang Shi, Chaitanya S Prakash,
linux-arm-kernel, linux-kernel
The generic implementations now suffice; remove the arm64 copies.
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
---
arch/arm64/mm/mmu.c | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index ec1c6971a561..b87053452641 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1745,20 +1745,6 @@ static void free_empty_tables(unsigned long addr, unsigned long end,
}
#endif
-void __meminit vmemmap_set_pmd(pmd_t *pmdp, void *p, int node,
- unsigned long addr, unsigned long next)
-{
- pmd_set_huge(pmdp, __pa(p), __pgprot(PROT_SECT_NORMAL));
-}
-
-int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node,
- unsigned long addr, unsigned long next)
-{
- vmemmap_verify((pte_t *)pmdp, node, addr, next);
-
- return pmd_sect(READ_ONCE(*pmdp));
-}
-
int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
struct vmem_altmap *altmap)
{
--
2.20.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/5] arm64/mm: drop vmemmap_pmd helpers and use generic code
2026-04-04 7:17 [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
2026-04-04 7:17 ` [PATCH 1/4] arm64/mm: drop vmemmap_pmd helpers and use generic code Muchun Song
@ 2026-04-04 7:17 ` Muchun Song
2026-04-04 7:35 ` [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
2 siblings, 0 replies; 4+ messages in thread
From: Muchun Song @ 2026-04-04 7:17 UTC (permalink / raw)
To: Catalin Marinas, Will Deacon
Cc: Muchun Song, Muchun Song, Ryan Roberts, Andrew Morton,
Kevin Brodsky, Dev Jain, Anshuman Khandual, Lorenzo Stoakes,
Yang Shi, Chaitanya S Prakash, linux-arm-kernel, linux-kernel
The generic implementations now suffice; remove the arm64 copies.
Signed-off-by: Muchun Song <songmuchun@bytedance.com>
---
arch/arm64/mm/mmu.c | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index ec1c6971a561..b87053452641 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1745,20 +1745,6 @@ static void free_empty_tables(unsigned long addr, unsigned long end,
}
#endif
-void __meminit vmemmap_set_pmd(pmd_t *pmdp, void *p, int node,
- unsigned long addr, unsigned long next)
-{
- pmd_set_huge(pmdp, __pa(p), __pgprot(PROT_SECT_NORMAL));
-}
-
-int __meminit vmemmap_check_pmd(pmd_t *pmdp, int node,
- unsigned long addr, unsigned long next)
-{
- vmemmap_verify((pte_t *)pmdp, node, addr, next);
-
- return pmd_sect(READ_ONCE(*pmdp));
-}
-
int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
struct vmem_altmap *altmap)
{
--
2.20.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd()
2026-04-04 7:17 [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
2026-04-04 7:17 ` [PATCH 1/4] arm64/mm: drop vmemmap_pmd helpers and use generic code Muchun Song
2026-04-04 7:17 ` [PATCH 2/5] " Muchun Song
@ 2026-04-04 7:35 ` Muchun Song
2 siblings, 0 replies; 4+ messages in thread
From: Muchun Song @ 2026-04-04 7:35 UTC (permalink / raw)
To: Muchun Song
Cc: Catalin Marinas, Will Deacon, Huacai Chen, Paul Walmsley,
Palmer Dabbelt, Albert Ou, David S. Miller, Andreas Larsson,
Andrew Morton, David Hildenbrand, WANG Xuerui, Alexandre Ghiti,
Lorenzo Stoakes, Liam R. Howlett, Vlastimil Babka, Mike Rapoport,
Suren Baghdasaryan, Michal Hocko, Ryan Roberts, Kevin Brodsky,
Dev Jain, Anshuman Khandual, Yang Shi, Chaitanya S Prakash,
Yuquan Wang, Petr Tesarik, Austin Kim, Vishal Moola (Oracle),
Junhui Liu, Matthew Wilcox (Oracle), Alex Shi, Chengkaitao,
linux-arm-kernel, linux-kernel, loongarch, linux-riscv,
sparclinux, linux-mm
> On Apr 4, 2026, at 15:17, Muchun Song <songmuchun@bytedance.com> wrote:
>
> The two weak functions vmemmap_set_pmd() and vmemmap_check_pmd() are
> currently no-ops on every architecture, forcing each platform that needs
> them to duplicate the same handful of lines. Provide a generic implementation:
>
> - vmemmap_set_pmd() simply sets a huge PMD with PAGE_KERNEL protection.
>
> - vmemmap_check_pmd() verifies that the PMD is present and leaf,
> then calls the existing vmemmap_verify() helper.
>
> Architectures that need special handling can continue to override the
> weak symbols; everyone else gets the standard version for free.
>
> This series drops the custom implementations in arm64, riscv, loongarch,
> and sparc, replacing them with the generic implementation introduced
> in the first patch.
>
> Muchun Song (5):
> mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and
> vmemmap_check_pmd()
> arm64/mm: drop vmemmap_pmd helpers and use generic code
> riscv/mm: drop vmemmap_pmd helpers and use generic code
> loongarch/mm: drop vmemmap_check_pmd helper and use generic code
> sparc/mm: drop vmemmap_check_pmd helper and use generic code
Hi all,
Please accept my sincere apologies for the mailing list noise.
Due to an error in my local scripts (failing to clean up the patch
output directory before regenerating the series with an updated commit
range), multiple duplicate and conflicting patches were accidentally
sent to the list simultaneously (10 patches in total instead of the
intended 5).
Sorry again for the inconvenience.
Thanks,
Muchun
>
> arch/arm64/mm/mmu.c | 14 --------------
> arch/loongarch/mm/init.c | 11 -----------
> arch/riscv/mm/init.c | 13 -------------
> arch/sparc/mm/init_64.c | 11 -----------
> mm/sparse-vmemmap.c | 7 ++++++-
> 5 files changed, 6 insertions(+), 50 deletions(-)
>
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-04 7:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-04 7:17 [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
2026-04-04 7:17 ` [PATCH 1/4] arm64/mm: drop vmemmap_pmd helpers and use generic code Muchun Song
2026-04-04 7:17 ` [PATCH 2/5] " Muchun Song
2026-04-04 7:35 ` [PATCH 0/5] mm/sparse-vmemmap: provide generic vmemmap_set_pmd() and vmemmap_check_pmd() Muchun Song
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox