]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
arm64: Fix cleared E0POE bit after cpu_suspend()/resume()
authorYeoreum Yun <yeoreum.yun@arm.com>
Wed, 7 Jan 2026 16:21:15 +0000 (16:21 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Jan 2026 15:31:15 +0000 (16:31 +0100)
commit8b402146e3a8efc866ba1e9a4b4679f7629aa994
tree83f5c99ea3f4dfdafaf28cc632f9d3eb73134d4b
parent2f05f7737e16d9a40038cc1c38a96a3f7964898b
arm64: Fix cleared E0POE bit after cpu_suspend()/resume()

commit bdf3f4176092df5281877cacf42f843063b4784d upstream.

TCR2_ELx.E0POE is set during smp_init().
However, this bit is not reprogrammed when the CPU enters suspension and
later resumes via cpu_resume(), as __cpu_setup() does not re-enable E0POE
and there is no save/restore logic for the TCR2_ELx system register.

As a result, the E0POE feature no longer works after cpu_resume().

To address this, save and restore TCR2_EL1 in the cpu_suspend()/cpu_resume()
path, rather than adding related logic to __cpu_setup(), taking into account
possible future extensions of the TCR2_ELx feature.

Fixes: bf83dae90fbc ("arm64: enable the Permission Overlay Extension for EL0")
Cc: <stable@vger.kernel.org> # 6.12.x
Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: Kevin Brodsky <kevin.brodsky@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm64/include/asm/suspend.h
arch/arm64/mm/proc.S