arm64: errata: Unify speculative SSBS errata logic
authorMark Rutland <mark.rutland@arm.com>
Mon, 3 Jun 2024 11:18:11 +0000 (12:18 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Wed, 12 Jun 2024 15:07:21 +0000 (16:07 +0100)
commitec768766608092087dfb5c1fc45a16a6f524dee2
tree0db33e7a9bc2c137b9547c6d36032495f1ec3898
parentfd2ff5f0b320f418288e7a1f919f648fbc8a0dfc
arm64: errata: Unify speculative SSBS errata logic

Cortex-X4 erratum 3194386 and Neoverse-V3 erratum 3312417 are identical,
with duplicate Kconfig text and some unsightly ifdeffery. While we try
to share code behind CONFIG_ARM64_WORKAROUND_SPECULATIVE_SSBS, having
separate options results in a fair amount of boilerplate code, and this
will only get worse as we expand the set of affected CPUs.

To reduce this boilerplate, unify the two behind a common Kconfig
option. This removes the duplicate text and Kconfig logic, and removes
the need for the intermediate ARM64_WORKAROUND_SPECULATIVE_SSBS option.
The set of affected CPUs is described as a list so that this can easily
be extended.

I've used ARM64_ERRATUM_3194386 (matching the Neoverse-V3 erratum ID) as
the common option, matching the way we use ARM64_ERRATUM_1319367 to
cover Cortex-A57 erratum 1319537 and Cortex-A72 erratum 1319367.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: James Morse <james.morse@arm.com>
Cc: Will Deacon <wilL@kernel.org>
Link: https://lore.kernel.org/r/20240603111812.1514101-5-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Documentation/arch/arm64/silicon-errata.rst
arch/arm64/Kconfig
arch/arm64/include/asm/cpucaps.h
arch/arm64/kernel/cpu_errata.c
arch/arm64/kernel/proton-pack.c