]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit - arch/arm64/mm/proc.S
arm64: trap to EL1 accesses to AMU counters from EL0
authorIonela Voinescu <ionela.voinescu@arm.com>
Thu, 5 Mar 2020 09:06:22 +0000 (09:06 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 6 Mar 2020 16:02:50 +0000 (16:02 +0000)
commit87a1f063464afd934f0f22aac710ca65bef77af3
tree07cfe5a0dea62503751cdc6638de385344bcc51a
parent2c9d45b43c39e26fd2a73f2203321cdaee98b58b
arm64: trap to EL1 accesses to AMU counters from EL0

The activity monitors extension is an optional extension introduced
by the ARMv8.4 CPU architecture. In order to access the activity
monitors counters safely, if desired, the kernel should detect the
presence of the extension through the feature register, and mediate
the access.

Therefore, disable direct accesses to activity monitors counters
from EL0 (userspace) and trap them to EL1 (kernel).

To be noted that the ARM64_AMU_EXTN kernel config does not have an
effect on this code. Given that the amuserenr_el0 resets to an
UNKNOWN value, setting the trap of EL0 accesses to EL1 is always
attempted for safety and security considerations. Therefore firmware
should still ensure accesses to AMU registers are not trapped in
EL2/EL3 as this code cannot be bypassed if the CPU implements the
Activity Monitors Unit.

Signed-off-by: Ionela Voinescu <ionela.voinescu@arm.com>
Reviewed-by: James Morse <james.morse@arm.com>
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Steve Capper <steve.capper@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/assembler.h
arch/arm64/mm/proc.S