]> www.infradead.org Git - nvme.git/commitdiff
arm64: errata: Expand speculative SSBS workaround once more
authorMark Rutland <mark.rutland@arm.com>
Mon, 30 Sep 2024 11:17:05 +0000 (12:17 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 1 Oct 2024 11:46:55 +0000 (12:46 +0100)
A number of Arm Ltd CPUs suffer from errata whereby an MSR to the SSBS
special-purpose register does not affect subsequent speculative
instructions, permitting speculative store bypassing for a window of
time.

We worked around this for a number of CPUs in commits:

7187bb7d0b5c7dfa ("arm64: errata: Add workaround for Arm errata 3194386 and 3312417")
75b3c43eab594bfb ("arm64: errata: Expand speculative SSBS workaround")
145502cac7ea70b5 ("arm64: errata: Expand speculative SSBS workaround (again)")

Since then, a (hopefully final) batch of updates have been published,
with two more affected CPUs. For the affected CPUs the existing
mitigation is sufficient, as described in their respective Software
Developer Errata Notice (SDEN) documents:

* Cortex-A715 (MP148) SDEN v15.0, erratum 3456084
  https://developer.arm.com/documentation/SDEN-2148827/1500/

* Neoverse-N3 (MP195) SDEN v5.0, erratum 3456111
  https://developer.arm.com/documentation/SDEN-3050973/0500/

Enable the existing mitigation by adding the relevant MIDRs to
erratum_spec_ssbs_list, and update silicon-errata.rst and the
Kconfig text accordingly.

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/20240930111705.3352047-3-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Documentation/arch/arm64/silicon-errata.rst
arch/arm64/Kconfig
arch/arm64/kernel/cpu_errata.c

index 9eb5e70b488840ed570e786f5d530ff88ab98609..ae45a409f76fb91623c9e55fc628f20ebe0ed7ac 100644 (file)
@@ -146,6 +146,8 @@ stable kernels.
 +----------------+-----------------+-----------------+-----------------------------+
 | ARM            | Cortex-A715     | #2645198        | ARM64_ERRATUM_2645198       |
 +----------------+-----------------+-----------------+-----------------------------+
+| ARM            | Cortex-A715     | #3456084        | ARM64_ERRATUM_3194386       |
++----------------+-----------------+-----------------+-----------------------------+
 | ARM            | Cortex-A720     | #3456091        | ARM64_ERRATUM_3194386       |
 +----------------+-----------------+-----------------+-----------------------------+
 | ARM            | Cortex-A725     | #3456106        | ARM64_ERRATUM_3194386       |
@@ -186,6 +188,8 @@ stable kernels.
 +----------------+-----------------+-----------------+-----------------------------+
 | ARM            | Neoverse-N2     | #3324339        | ARM64_ERRATUM_3194386       |
 +----------------+-----------------+-----------------+-----------------------------+
+| ARM            | Neoverse-N3     | #3456111        | ARM64_ERRATUM_3194386       |
++----------------+-----------------+-----------------+-----------------------------+
 | ARM            | Neoverse-V1     | #1619801        | N/A                         |
 +----------------+-----------------+-----------------+-----------------------------+
 | ARM            | Neoverse-V1     | #3324341        | ARM64_ERRATUM_3194386       |
index 3e29b44d2d7bd693c6209383a67b8d0d14345406..ae495cc848c5725a2981591bbc5cd09a348972c8 100644 (file)
@@ -1097,6 +1097,7 @@ config ARM64_ERRATUM_3194386
          * ARM Cortex-A78C erratum 3324346
          * ARM Cortex-A78C erratum 3324347
          * ARM Cortex-A710 erratam 3324338
+         * ARM Cortex-A715 errartum 3456084
          * ARM Cortex-A720 erratum 3456091
          * ARM Cortex-A725 erratum 3456106
          * ARM Cortex-X1 erratum 3324344
@@ -1107,6 +1108,7 @@ config ARM64_ERRATUM_3194386
          * ARM Cortex-X925 erratum 3324334
          * ARM Neoverse-N1 erratum 3324349
          * ARM Neoverse N2 erratum 3324339
+         * ARM Neoverse-N3 erratum 3456111
          * ARM Neoverse-V1 erratum 3324341
          * ARM Neoverse V2 erratum 3324336
          * ARM Neoverse-V3 erratum 3312417
index dfefbdf4073a6a22ced7d89e5a10f56f1bc61b89..d9b9ec2bd6ff41d76613483a83dc67106cd584f9 100644 (file)
@@ -439,6 +439,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
        MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
        MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
        MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
+       MIDR_ALL_VERSIONS(MIDR_CORTEX_A715),
        MIDR_ALL_VERSIONS(MIDR_CORTEX_A720),
        MIDR_ALL_VERSIONS(MIDR_CORTEX_A725),
        MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
@@ -449,6 +450,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
        MIDR_ALL_VERSIONS(MIDR_CORTEX_X925),
        MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
        MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
+       MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N3),
        MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
        MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
        MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),