]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: kernel: fix architected PMU registers unconditional access
authorLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Wed, 13 Jan 2016 14:50:03 +0000 (14:50 +0000)
committerWill Deacon <will.deacon@arm.com>
Mon, 25 Jan 2016 11:09:06 +0000 (11:09 +0000)
commitf55f8a93b9a9b87f9f7d4cae34bd00c86d8fab08
treea0b7c5945966d064ccdded655b690be7daf0bb75
parentbb53bf230eef460b045dbdd496d047bc8eeb8f6a
arm64: kernel: fix architected PMU registers unconditional access

The Performance Monitors extension is an optional feature of the
AArch64 architecture, therefore, in order to access Performance
Monitors registers safely, the kernel should detect the architected
PMU unit presence through the ID_AA64DFR0_EL1 register PMUVer field
before accessing them.

This patch implements a guard by reading the ID_AA64DFR0_EL1 register
PMUVer field to detect the architected PMU presence and prevent accessing
PMU system registers if the Performance Monitors extension is not
implemented in the core.

Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: <stable@vger.kernel.org>
Fixes: af799ccbd608 ("arm64: kernel: enforce pmuserenr_el0 initialization and restore")
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reported-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/head.S
arch/arm64/mm/proc-macros.S
arch/arm64/mm/proc.S