All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Deacon <will@kernel.org>
To: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, Will Deacon <will@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>, Ard Biesheuvel <ardb@kernel.org>,
	Eric Biggers <ebiggers@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Oliver Upton <oupton@kernel.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Marc Zyngier <maz@kernel.org>
Subject: [PATCH v2 07/14] arm64: head: Force little-endian early during boot
Date: Mon,  7 Sep 2026 17:37:18 +0100	[thread overview]
Message-ID: <20260907163726.17104-8-will@kernel.org> (raw)
In-Reply-To: <20260907163726.17104-1-will@kernel.org>

Commit 2ced0f30a426 ("arm64: head: Switch endianness before populating
the ID map") configured SCTLR_ELx.EE at boot according to the endianness
of the kernel in case the bootloader had entered the image in the wrong
endianness. Additionally, if the MMU was enabled in such a case, logic
was added to turn it back off to prevent the hardware walker from
misinterpreting the idmap page-table.

Given that the MMU is only expected to be enabled when booting EFI, EFI
only supports little-endian and arm64 kernels cannot be built as
big-endian images, we can rip out this handling and simply force
SCTLR_ELx.EE to 0 (little-endian).

Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
---
 arch/arm64/kernel/head.S | 20 +-------------------
 1 file changed, 1 insertion(+), 19 deletions(-)

diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index 8951ce693552..d5c1ea0c5b3c 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -138,29 +138,11 @@ SYM_CODE_START_LOCAL(record_mmu_state)
 	b.ne	0f
 	mrs	x19, sctlr_el2
 0:
-	tbnz	x19, #SCTLR_ELx_EE_SHIFT, 1f
+	bic	x19, x19, #SCTLR_ELx_EE		// Force little-endian
 	tst	x19, #SCTLR_ELx_C		// Z := (C == 0)
 	and	x19, x19, #SCTLR_ELx_M		// isolate M bit
 	csel	x19, xzr, x19, eq		// clear x19 if Z
 	ret
-
-	/*
-	 * Set the correct endianness early so all memory accesses issued
-	 * before init_kernel_el() occur in the correct byte order. Note that
-	 * this means the MMU must be disabled, or the active ID map will end
-	 * up getting interpreted with the wrong byte order.
-	 */
-1:	eor	x19, x19, #SCTLR_ELx_EE
-	bic	x19, x19, #SCTLR_ELx_M
-	b.ne	2f
-	pre_disable_mmu_workaround
-	msr	sctlr_el2, x19
-	b	3f
-2:	pre_disable_mmu_workaround
-	msr	sctlr_el1, x19
-3:	isb
-	mov	x19, xzr
-	ret
 SYM_CODE_END(record_mmu_state)
 
 /*
-- 
2.55.0.979.g7e5102b832-goog



  parent reply	other threads:[~2026-09-07 16:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-07 16:37 [PATCH v2 00/14] arm64: Remove unused big-endian support Will Deacon
2026-09-07 16:37 ` [PATCH v2 01/14] selftests/arm64: Remove " Will Deacon
2026-09-07 16:37 ` [PATCH v2 02/14] arm64: bpf: Remove big-endian support from the JIT compiler Will Deacon
2026-09-07 18:49   ` Alexei Starovoitov
2026-09-07 16:37 ` [PATCH v2 03/14] arm64: crypto: Assume a little-endian kernel Will Deacon
2026-09-07 16:37 ` [PATCH v2 04/14] arm64: lib: Assume a little-endian kernel in custom library routines Will Deacon
2026-09-07 16:37 ` [PATCH v2 05/14] arm64: lib: Assume a little-endian kernel in optimised string routines Will Deacon
2026-09-07 16:37 ` [PATCH v2 06/14] arm64: assembler: Remove endianness helper macros Will Deacon
2026-09-07 16:37 ` Will Deacon [this message]
2026-09-08 17:12   ` [PATCH v2 07/14] arm64: head: Force little-endian early during boot Ard Biesheuvel
2026-09-09 11:32     ` Will Deacon
2026-09-07 16:37 ` [PATCH v2 08/14] arm64: vdso32: Always build compat vDSO object as little-endian Will Deacon
2026-09-07 16:37 ` [PATCH v2 09/14] KVM: arm64: Remove support for a big-endian hypervisor object Will Deacon
2026-09-07 16:37 ` [PATCH v2 10/14] arm64: Remove all usage of CONFIG_CPU_BIG_ENDIAN Will Deacon
2026-09-07 16:37 ` [PATCH v2 11/14] arm64: Remove all usage of __AARCH64EB__ Will Deacon
2026-09-07 16:37 ` [PATCH v2 12/14] arm64: image: Remove endianness handling for generating image header Will Deacon
2026-09-09 12:28   ` Will Deacon
2026-09-07 16:37 ` [PATCH v2 13/14] arm64: Kbuild: Remove vestigial big-endian support Will Deacon
2026-09-07 16:37 ` [PATCH v2 14/14] drivers: Kconfig: Simplify dependencies on ARM64 && !CPU_BIG_ENDIAN Will Deacon
2026-09-07 17:04   ` Michael Kelley

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=20260907163726.17104-8-will@kernel.org \
    --to=will@kernel.org \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=ast@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=daniel@iogearbox.net \
    --cc=ebiggers@kernel.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=oupton@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 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.