On Wed, Feb 11, 2026 at 11:32 AM Mike Rapoport <[email protected]> wrote: > > From: "Mike Rapoport (Microsoft)" <[email protected]> > > Reduce 22 declarations of empty_zero_page to 3 and 23 declarations of > ZERO_PAGE() to 4. > > Every architecture defines empty_zero_page that way or another, but for the > most of them it is always a page aligned page in BSS and most definitions > of ZERO_PAGE do virt_to_page(empty_zero_page). > > Move Linus vetted x86 definition of empty_zero_page and ZERO_PAGE() to the > core MM and drop these definitions in architectures that do not implement > colored zero page (MIPS and s390). > > ZERO_PAGE() remains a macro because turning it to a wrapper for a static > inline causes severe pain in header dependencies. > > For the most part the change is mechanical, with these being noteworthy: > > * alpha: aliased empty_zero_page with ZERO_PGE that was also used for boot > parameters. Switching to a generic empty_zero_page removes the aliasing > and keeps ZERO_PGE for boot parameters only > * arm64: uses __pa_symbol() in ZERO_PAGE() so that definition of > ZERO_PAGE() is kept intact. > * m68k/parisc/um: allocated empty_zero_page from memblock, > although they do not support zero page coloring and having it in BSS > will work fine. > * sparc64 can have empty_zero_page in BSS rather allocate it, but it > can't use virt_to_page() for BSS. Keep it's definition of ZERO_PAGE() > but instead of allocating it, make mem_map_zero point to > empty_zero_page. > * sh: used empty_zero_page for boot parameters at the very early boot. > Rename the parameters page to boot_params_page and let sh use the generic > empty_zero_page. > * hexagon: had an amusing comment about empty_zero_page > > /* A handy thing to have if one has the RAM. Declared in head.S */ > > that unfortunately had to go :) > > Acked-by: Helge Deller <[email protected]> # parisc > Tested-by: Helge Deller <[email protected]> # parisc > Reviewed-by: Christophe Leroy (CS GROUP) <[email protected]> > Acked-by: Dave Hansen <[email protected]> > Acked-by: Catalin Marinas <[email protected]> > Signed-off-by: Mike Rapoport (Microsoft) <[email protected]> > --- > arch/alpha/include/asm/pgtable.h | 6 ------
> diff --git a/arch/alpha/include/asm/pgtable.h > b/arch/alpha/include/asm/pgtable.h > index 90e7a9539102..12a3c5f8ece8 100644 > --- a/arch/alpha/include/asm/pgtable.h > +++ b/arch/alpha/include/asm/pgtable.h > @@ -125,12 +125,6 @@ struct vm_area_struct; > */ > #define pgprot_noncached(prot) (prot) > > -/* > - * ZERO_PAGE is a global shared page that is always zero: used > - * for zero-mapped memory areas etc.. > - */ > -#define ZERO_PAGE(vaddr) (virt_to_page(ZERO_PGE)) > - > /* > * On certain platforms whose physical address space can overlap KSEG, > * namely EV6 and above, we must re-twiddle the physaddr to restore the This looks good from an Alpha perspective Acked-by: Magnus Lindholm <[email protected]>
