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: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-11 10:31 [PATCH v3 0/4] arch, mm: consolidate empty_zero_page Mike Rapoport
2026-02-11 10:31 ` Mike Rapoport
2026-02-11 10:31 ` 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-11 10:31 ` Mike Rapoport
2026-02-11 10:31 ` Mike Rapoport
2026-02-12 8:58 ` David Hildenbrand (Arm)
2026-02-12 8:58 ` David Hildenbrand (Arm)
2026-02-12 8:58 ` David Hildenbrand (Arm)
2026-02-12 18:30 ` Liam R. Howlett
2026-02-12 18:30 ` Liam R. Howlett
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-11 10:31 ` Mike Rapoport
2026-02-11 10:31 ` Mike Rapoport
2026-02-12 9:01 ` David Hildenbrand (Arm)
2026-02-12 9:01 ` David Hildenbrand (Arm)
2026-02-12 9:01 ` David Hildenbrand (Arm)
2026-02-12 15:28 ` Vlastimil Babka
2026-02-12 15:28 ` Vlastimil Babka
2026-02-12 15:28 ` Vlastimil Babka
2026-02-12 18:33 ` Liam R. Howlett
2026-02-12 18:33 ` Liam R. Howlett
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 10:31 ` Mike Rapoport
2026-02-11 10:31 ` Mike Rapoport
2026-02-11 20:14 ` Magnus Lindholm
2026-02-11 20:14 ` Magnus Lindholm
2026-02-11 20:14 ` Magnus Lindholm
2026-02-12 5:33 ` Dinh Nguyen
2026-02-12 5:33 ` Dinh Nguyen
2026-02-12 5:33 ` Dinh Nguyen
2026-02-12 8:38 ` Andreas Larsson
2026-02-12 8:38 ` Andreas Larsson
2026-02-12 8:38 ` Andreas Larsson
2026-02-12 9:04 ` David Hildenbrand (Arm)
2026-02-12 9:04 ` David Hildenbrand (Arm)
2026-02-12 9:04 ` David Hildenbrand (Arm)
2026-02-12 18:38 ` Liam R. Howlett
2026-02-12 18:38 ` Liam R. Howlett
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-11 10:31 ` Mike Rapoport
2026-02-11 10:31 ` Mike Rapoport
2026-02-12 9:08 ` David Hildenbrand (Arm)
2026-02-12 9:08 ` David Hildenbrand (Arm)
2026-02-12 9:08 ` David Hildenbrand (Arm)
2026-02-12 18:40 ` Liam R. Howlett
2026-02-12 18:40 ` Liam R. Howlett
2026-02-12 18:40 ` Liam R. Howlett
2026-04-30 3:25 ` [PATCH v3 0/4] arch, mm: consolidate empty_zero_page patchwork-bot+linux-riscv
2026-04-30 3:25 ` patchwork-bot+linux-riscv
2026-04-30 3:25 ` patchwork-bot+linux-riscv
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 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.