mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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



  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®