Mark Rutland
236f749edb
arm64: errata: Expand speculative SSBS workaround (again)
[ Upstream commit adeec61a4723fd3e39da68db4cc4d924e6d7f641 ]
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")
Since then, similar errata have been published for a number of other Arm
Ltd CPUs, for which the same mitigation is sufficient. This is described
in their respective Software Developer Errata Notice (SDEN) documents:
* Cortex-A76 (MP052) SDEN v31.0, erratum 3324349
https://developer.arm.com/documentation/SDEN-885749/3100/
* Cortex-A77 (MP074) SDEN v19.0, erratum 3324348
https://developer.arm.com/documentation/SDEN-1152370/1900/
* Cortex-A78 (MP102) SDEN v21.0, erratum 3324344
https://developer.arm.com/documentation/SDEN-1401784/2100/
* Cortex-A78C (MP138) SDEN v16.0, erratum 3324346
https://developer.arm.com/documentation/SDEN-1707916/1600/
* Cortex-A78C (MP154) SDEN v10.0, erratum 3324347
https://developer.arm.com/documentation/SDEN-2004089/1000/
* Cortex-A725 (MP190) SDEN v5.0, erratum 3456106
https://developer.arm.com/documentation/SDEN-2832921/0500/
* Cortex-X1 (MP077) SDEN v21.0, erratum 3324344
https://developer.arm.com/documentation/SDEN-1401782/2100/
* Cortex-X1C (MP136) SDEN v16.0, erratum 3324346
https://developer.arm.com/documentation/SDEN-1707914/1600/
* Neoverse-N1 (MP050) SDEN v32.0, erratum 3324349
https://developer.arm.com/documentation/SDEN-885747/3200/
* Neoverse-V1 (MP076) SDEN v19.0, erratum 3324341
https://developer.arm.com/documentation/SDEN-1401781/1900/
Note that due to the manner in which Arm develops IP and tracks errata,
some CPUs share a common erratum number and some CPUs have multiple
erratum numbers for the same HW issue.
On parts without SB, it is necessary to use ISB for the workaround. The
spec_bar() macro used in the mitigation will expand to a "DSB SY; ISB"
sequence in this case, which is sufficient on all affected parts.
Enable the existing mitigation by adding the relevant MIDRs to
erratum_spec_ssbs_list. The list is sorted alphanumerically (involving
moving Neoverse-V3 after Neoverse-V2) so that this is easy to audit and
potentially extend again in future. The Kconfig text is also updated to
clarify the set of affected parts and the mitigation.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: James Morse <james.morse@arm.com>
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20240801101803.1982459-4-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
[ Mark: fix conflicts in silicon-errata.rst ]
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-19 05:32:13 +02:00
..
2024-03-26 18:22:38 -04:00
2024-04-13 12:50:11 +02:00
2019-04-05 22:33:08 +02:00
2024-08-19 05:32:13 +02:00
2018-10-15 16:31:29 -04:00
2023-03-11 16:31:47 +01:00
2021-01-30 13:32:13 +01:00
2024-06-16 13:23:23 +02:00
2023-01-18 11:30:10 +01:00
2018-08-22 23:21:44 +09:00
2023-01-18 11:30:06 +01:00
2018-09-26 18:11:23 +02:00
2024-03-26 18:22:34 -04:00
2019-12-05 09:20:36 +01:00
2024-08-19 05:31:56 +02:00
2019-05-04 09:20:15 +02:00
2022-09-20 12:26:48 +02:00
2023-06-21 15:39:57 +02:00
2020-09-26 18:01:32 +02:00
2023-05-17 11:13:09 +02:00
2023-06-21 15:39:57 +02:00
2018-08-18 12:30:42 -07:00
2022-11-25 17:40:28 +01:00
2019-11-12 19:20:50 +01:00
2018-08-27 12:26:10 -04:00
2024-02-23 08:12:48 +01:00
2024-05-25 16:16:20 +02:00
2023-06-21 15:39:57 +02:00
2021-05-22 10:59:50 +02:00
2022-11-10 17:46:55 +01:00
2019-10-17 13:44:47 -07:00
2019-07-14 08:11:17 +02:00
2021-08-15 13:05:04 +02:00
2021-06-30 08:48:26 -04:00
2019-11-12 19:21:34 +01:00
2022-08-25 11:15:42 +02:00
2019-07-26 09:14:08 +02:00
2022-06-14 16:59:30 +02:00
2022-05-25 09:10:41 +02:00
2019-05-14 19:17:54 +02:00
2019-07-03 13:14:49 +02:00