]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: cpufeature: ctr: Fix cpu capability check for late CPUs
authorSuzuki K Poulose <suzuki.poulose@arm.com>
Tue, 9 Oct 2018 13:47:05 +0000 (14:47 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 16 Oct 2018 10:53:28 +0000 (11:53 +0100)
commit0ee94cb420f2d10af46ea7e83ed47d65a213353a
tree5078ea405aa16954cd673667063c470378438967
parent08e5ea9d70cfb53b32dfea0f7322c118ceb3d380
arm64: cpufeature: ctr: Fix cpu capability check for late CPUs

The matches() routine for a capability must honor the "scope"
passed to it and return the proper results.
i.e, when passed with SCOPE_LOCAL_CPU, it should check the
status of the capability on the current CPU. This is used by
verify_local_cpu_capabilities() on a late secondary CPU to make
sure that it's compliant with the established system features.
However, ARM64_HAS_CACHE_{IDC/DIC} always checks the system wide
registers and this could mean that a late secondary CPU could return
"true" (since the CPU hasn't updated the system wide registers yet)
and thus lead the system in an inconsistent state, where
the system assumes it has IDC/DIC feature, while the new CPU
doesn't.

Fixes: commit efc3b5e95f734e5ae7 ("arm64: Add support for new control bits CTR_EL0.DIC and CTR_EL0.IDC")
Cc: Philip Elcan <pelcan@codeaurora.org>
Cc: Shanker Donthineni <shankerd@codeaurora.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/cpufeature.c