From: Michal Simek <monstr@monstr.eu>
To: Ramin Moussavi <ramin.moussavi@yacoub.de>,
Guenter Roeck <linux@roeck-us.net>
Cc: Mike Rapoport <rppt@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] microblaze: restore the page alignment of swapper_pg_dir
Date: Tue, 28 Jul 2026 07:28:37 +0200 [thread overview]
Message-ID: <7ec502cf-366c-4b7d-8f91-a30532ce2960@monstr.eu> (raw)
In-Reply-To: <20260727215823.1422701-1-ramin.moussavi@yacoub.de>
On 7/27/26 23:58, Ramin Moussavi wrote:
> microblaze handles TLB misses in software, and the handler builds the
> address of the L1 entry by ORing the index into the page directory base
> instead of adding it (hw_exception_handler.S):
>
> bsrli r5, r3, PGDIR_SHIFT - 2
> andi r5, r5, PAGE_SIZE - 4
> /* Assume pgdir aligned on 4K boundary, no need for
> "andi r4,r4,0xfffff003" */
> or r4, r4, r5
> lwi r4, r4, 0 /* Get L1 entry */
>
> The index is masked to the low 12 bits, so the OR only works if those bits
> of the base are zero -- which is exactly the assumption the comment states
> and the reason the masking of the base can be skipped.
>
> swapper_pg_dir had no alignment directive of its own. It was aligned
> because it followed empty_zero_page in head.S, and that one carried the
> .align 12:
>
> .section .data
> .global empty_zero_page
> .align 12
> empty_zero_page:
> .space PAGE_SIZE
> .global swapper_pg_dir
> swapper_pg_dir:
> .space PAGE_SIZE
>
> Commit 6215d9f4470f ("arch, mm: consolidate empty_zero_page") removed
> empty_zero_page from head.S, and with it the .align 12 that -- despite
> sitting next to empty_zero_page -- was what page aligned swapper_pg_dir.
> Since then swapper_pg_dir lands wherever .data happens to put it, its low
> bits are no longer zero, and every kernel TLB miss ORs the index into a
> base with a nonzero offset. The resulting L1 lookups read the wrong
> words, no valid translation is ever installed, and the kernel spins in
> exceptions long before it can print anything. On qemu-system-microblazeel
> (petalogix-s3adsp1800) the console stays completely silent at 100% CPU;
> there is no oops and no guest error reported by qemu, which makes this
> awkward to diagnose.
>
> Give swapper_pg_dir the alignment it requires, rather than relying on a
> neighbour to provide it.
>
> microblaze has no noMMU variant left in mainline -- CONFIG_MMU is
> def_bool y and mmu_defconfig is the only defconfig -- so this is not a
> corner case: every mainline microblaze kernel since v7.1-rc1 fails to
> boot, including the v7.1 release.
>
> v7.0: swapper_pg_dir = 0xc05fd000 (aligned)
> v7.1-rc1: swapper_pg_dir = 0xc0603140 (offset 320)
> v7.1-rc1 + this fix: swapper_pg_dir = 0xc0604000 (aligned)
> next-20260726: swapper_pg_dir = 0xc0615140 (offset 320)
> next-20260726 + this fix: swapper_pg_dir = 0xc0616000 (aligned)
hm. This is the first time I get information about this regression.
Guenter: I know you had Microblaze in your testing. Is it still running?
Thanks,
Michal
next prev parent reply other threads:[~2026-07-28 5:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 21:58 Ramin Moussavi
2026-07-28 1:06 ` Andrew Morton
2026-07-28 5:28 ` Michal Simek [this message]
2026-07-28 6:24 ` Guenter Roeck
2026-07-28 7:11 ` Michal Simek
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=7ec502cf-366c-4b7d-8f91-a30532ce2960@monstr.eu \
--to=monstr@monstr.eu \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=ramin.moussavi@yacoub.de \
--cc=rppt@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®