Mark Rutland
745eec68a3
arm64: errata: Expand speculative SSBS workaround (again)
...
[ Upstream commit adeec61a47 ]
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:
* 7187bb7d0b ("arm64: errata: Add workaround for Arm errata 3194386 and 3312417")
* 75b3c43eab ("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-14 13:58:49 +02:00
..
2022-11-09 18:06:35 +00:00
2023-02-07 18:25:10 +00:00
2024-06-12 11:12:32 +02:00
2024-06-12 11:12:32 +02:00
2022-07-19 19:10:28 +01:00
2022-09-26 10:13:14 -07:00
2023-02-24 14:21:49 +00:00
Merge branches 'for-next/kpti', 'for-next/missing-proto-warn', 'for-next/iss2-decode', 'for-next/kselftest', 'for-next/misc', 'for-next/feat_mops', 'for-next/module-alloc', 'for-next/sysreg', 'for-next/cpucap', 'for-next/acpi', 'for-next/kdump', 'for-next/acpi-doc', 'for-next/doc' and 'for-next/tpidr2-fix', remote-tracking branch 'arm64/for-next/perf' into for-next/core
2023-06-23 18:32:20 +01:00
2024-07-25 09:50:43 +02:00
2023-07-05 09:46:19 -04:00
2023-04-13 09:32:33 +01:00
2023-04-05 17:51:47 +01:00
2024-08-14 13:58:49 +02:00
2023-05-02 12:42:22 +01:00
2024-08-14 13:58:48 +02:00
2023-07-31 14:45:38 +01:00
2023-08-04 17:32:13 +01:00
2023-04-13 12:27:11 +01:00
2022-04-29 14:37:59 -07:00
2023-04-14 13:39:47 +01:00
2023-04-20 15:43:45 +02:00
2023-01-16 15:27:31 +01:00
2023-08-30 13:34:34 -07:00
2023-01-05 15:12:12 +00:00
2023-08-11 12:23:48 +01:00
2023-01-20 12:23:06 +00:00
2023-06-20 18:38:37 -04:00
2024-01-31 16:18:55 -08:00
2024-03-01 13:35:08 +01:00
2023-06-06 17:39:05 +01:00
2024-04-27 17:11:41 +02:00
2021-10-01 13:31:00 +01:00
2023-06-21 13:33:49 +01:00
2023-08-18 17:04:09 +01:00
2023-07-03 15:32:22 -07:00
2023-01-13 11:48:15 +01:00
2023-09-06 19:22:54 +01:00
2023-04-26 18:01:41 +02:00
2024-02-05 20:14:38 +00:00
2024-08-11 12:47:24 +02:00
2023-06-15 13:04:15 +00:00
2023-06-21 08:53:31 -06:00
2023-04-14 13:39:47 +01:00
2023-06-12 06:33:48 -06:00
2022-09-01 11:50:00 +01:00
2023-04-20 11:22:09 +01:00
2023-06-28 10:59:38 -07:00
2023-11-28 17:20:00 +00:00
2023-06-06 17:39:06 +01:00
2023-08-18 10:12:02 -07:00
2022-11-09 18:11:56 +00:00
2023-01-26 17:54:15 +00:00
2023-01-24 11:49:43 +00:00
2023-07-31 14:45:38 +01:00
2023-04-13 12:27:11 +01:00
2022-09-22 15:06:02 +01:00
2021-07-28 18:33:49 +01:00
2023-04-28 14:02:54 -07:00
2024-08-14 13:58:49 +02:00
2022-09-26 10:13:14 -07:00
2024-04-10 16:36:03 +02:00
2022-09-29 18:04:25 +01:00
2022-05-17 14:25:35 +01:00
2021-12-10 14:06:04 +00:00
2023-08-04 17:35:33 +01:00
2023-06-06 17:39:05 +01:00
2023-08-02 15:01:50 -07:00
2024-02-23 09:25:13 +01:00
2022-07-01 12:05:45 +01:00
2023-05-02 12:42:22 +01:00
2021-07-21 11:23:25 +01:00
2022-09-26 10:13:14 -07:00
2023-08-04 17:35:33 +01:00
2023-04-13 12:27:11 +01:00
2024-03-01 13:35:08 +01:00
2022-04-29 19:26:27 +01:00
2024-07-05 09:33:54 +02:00
2021-12-10 14:06:04 +00:00
2022-10-09 13:24:01 -07:00
2023-06-28 10:28:11 -07:00
2021-01-20 12:18:46 +00:00
2021-01-20 12:18:46 +00:00
2023-05-16 14:53:36 +01:00
2023-05-02 13:12:45 +01:00
2023-06-09 17:44:22 -07:00