From: Mike Rapoport <rppt@kernel.org>
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>,
Rich Felker <dalias@libc.org>,
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,
Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@kernel.org>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Vlastimil Babka <vbabka@suse.cz>,
linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH v3 3/4] arch, mm: consolidate empty_zero_page
Date: Thu, 16 Apr 2026 14:42:05 +0300 [thread overview]
Message-ID: <aeDLDSJAwYfsj78A@kernel.org> (raw)
In-Reply-To: <20260416131914-f20c3a56-bddb-4488-b4bd-560e52ab9416@linutronix.de>
On Thu, Apr 16, 2026 at 01:20:17PM +0200, Thomas Weißschuh wrote:
> On Thu, Apr 16, 2026 at 02:02:27PM +0300, Mike Rapoport wrote:
> > On Thu, Apr 16, 2026 at 10:10:06AM +0200, Thomas Weißschuh wrote:
> > > On Wed, Feb 11, 2026 at 12:31:40PM +0200, Mike Rapoport wrote:
> > > > From: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
> > > >
> > > > 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.
> > >
> > > With this in mainline as commit 6215d9f4470f ("arch, mm: consolidate
> > > empty_zero_page") booting sh on QEMU is now broken.
> > > The machine hangs before any output.
> >
> > Hmm, looks like sh does not like boot_param_page declared as unsigned char *
> > This fixes the issue for me:
> >
> > diff --git a/arch/sh/include/asm/setup.h b/arch/sh/include/asm/setup.h
> > index 63c9efc06348..b7c4469cb61e 100644
> > --- a/arch/sh/include/asm/setup.h
> > +++ b/arch/sh/include/asm/setup.h
> > @@ -3,12 +3,13 @@
> > #define _SH_SETUP_H
> >
> > #include <uapi/asm/setup.h>
> > +#include <asm/page.h>
> >
> > /*
> > * This is set up by the setup-routine at boot-time
> > */
> > -extern unsigned char *boot_params_page;
> > -#define PARAM boot_params_page
> > +extern unsigned long boot_params_page[PAGE_SIZE / sizeof(unsigned long)];
> > +#define PARAM ((unsigned char *)boot_params_page)
> >
> > #define MOUNT_ROOT_RDONLY (*(unsigned long *) (PARAM+0x000))
> > #define RAMDISK_FLAGS (*(unsigned long *) (PARAM+0x004))
>
> Seems weird but works.
Seems like it's enough to declare boot_params_page as an array, this one
also worked for me:
diff --git a/arch/sh/include/asm/setup.h b/arch/sh/include/asm/setup.h
index 63c9efc06348..8488f76b48b4 100644
--- a/arch/sh/include/asm/setup.h
+++ b/arch/sh/include/asm/setup.h
@@ -7,7 +7,7 @@
/*
* This is set up by the setup-routine at boot-time
*/
-extern unsigned char *boot_params_page;
+extern unsigned char boot_params_page[];
#define PARAM boot_params_page
#define MOUNT_ROOT_RDONLY (*(unsigned long *) (PARAM+0x000))
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2026-04-16 11:42 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-11 10:31 [PATCH v3 0/4] " Mike Rapoport
2026-02-11 10:31 ` [PATCH v3 1/4] mm: don't special case !MMU for is_zero_pfn() and my_zero_pfn() Mike Rapoport
2026-02-12 8:58 ` David Hildenbrand (Arm)
2026-02-12 18:30 ` Liam R. Howlett
2026-02-11 10:31 ` [PATCH v3 2/4] mm: rename my_zero_pfn() to zero_pfn() Mike Rapoport
2026-02-12 9:01 ` David Hildenbrand (Arm)
2026-02-12 15:28 ` Vlastimil Babka
2026-02-12 18:33 ` Liam R. Howlett
2026-02-11 10:31 ` [PATCH v3 3/4] arch, mm: consolidate empty_zero_page Mike Rapoport
2026-02-11 20:14 ` Magnus Lindholm
2026-02-12 5:33 ` Dinh Nguyen
2026-02-12 8:38 ` Andreas Larsson
2026-02-12 9:04 ` David Hildenbrand (Arm)
2026-02-12 18:38 ` Liam R. Howlett
2026-04-16 8:10 ` Thomas Weißschuh
2026-04-16 11:02 ` Mike Rapoport
2026-04-16 11:20 ` Thomas Weißschuh
2026-04-16 11:42 ` Mike Rapoport [this message]
2026-02-11 10:31 ` [PATCH v3 4/4] mm: cache struct page for empty_zero_page and return it from ZERO_PAGE() Mike Rapoport
2026-02-12 9:08 ` David Hildenbrand (Arm)
2026-02-12 18:40 ` Liam R. Howlett
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=aeDLDSJAwYfsj78A@kernel.org \
--to=rppt@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=dalias@libc.org \
--cc=david@kernel.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-sh@vger.kernel.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=thomas.weissschuh@linutronix.de \
--cc=vbabka@suse.cz \
--cc=ysato@users.sourceforge.jp \
/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