Subject: [PATCH] KVM: arm64: Don't populate TPIDR_EL2 in finalise_el2()

From: Will Deacon <[email-masked]>
Date: Mon, 30 Mar 2026 16:29:26 +0100

When running with VHE, TPIDR_EL2 is only used for the percpu offset once
the ARM64_HAS_VIRT_HOST_EXTN capability has been detected, at which
point cpu_copy_el2regs() will populate its contents from TPIDR_EL1.

Remove the redundant initialisation of TPIDR_EL2 from finalise_el2().

Cc: Oliver Upton <[email-masked]>
Cc: Marc Zyngier <[email-masked]>
Cc: Catalin Marinas <[email-masked]>
Cc: Mark Rutland <[email-masked]>
Signed-off-by: Will Deacon <[email-masked]>
---

I spotted this by inspection as part of an ill-fated (abandoned) attempt
at repurposing tpidr_elx for something else.

 arch/arm64/kernel/hyp-stub.S | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
index 085bc9972f6b..8b8614c0b9a5 100644
--- a/arch/arm64/kernel/hyp-stub.S
+++ b/arch/arm64/kernel/hyp-stub.S
@@ -105,11 +105,9 @@ SYM_CODE_START_LOCAL(__finalise_el2)
 	msr_hcr_el2 x0
 	isb
 
-	// Use the EL1 allocated stack, per-cpu offset
+	// Use the EL1 allocated stack
 	mrs	x0, sp_el1
 	mov	sp, x0
-	mrs	x0, tpidr_el1
-	msr	tpidr_el2, x0
 
 	// FP configuration, vectors
 	mrs_s	x0, SYS_CPACR_EL12
-- 
2.53.0.1018.g2bb0e51243-goog