diff options
| author | Xialin Liu <xialin.liu@arm.com> | 2025-12-31 10:23:22 -0600 |
|---|---|---|
| committer | Xialin Liu <xialin.liu@arm.com> | 2026-01-06 11:38:51 -0600 |
| commit | 420a05916d163999ef5271243535dd1e497850ad (patch) | |
| tree | 1ab33246b9de5fd1b7d5ec4ad91f57b6ffe5e414 | |
| parent | 35f001256250782a9ef6af0c7218053bd485995a (diff) | |
| download | arm-trusted-firmware-420a05916d163999ef5271243535dd1e497850ad.tar.gz arm-trusted-firmware-420a05916d163999ef5271243535dd1e497850ad.zip | |
fix(cpus): workaround for Neoverse-N2 erratum 4302970
Neoverse-N2 erratum 4302970 that applies to revisions
r0p0, r0p1, r0p2, r0p3, and is still open.
This erratum can be avoided by setting CPUACTLR5_EL1[50] to 1.
SDEN documentation:
https://developer.arm.com/documentation/SDEN-1982442/latest
Change-Id: I2436b11a36be204d549522f1176fcd49658c044c
Signed-off-by: Xialin Liu <xialin.liu@arm.com>
| -rw-r--r-- | docs/design/cpu-specific-build-macros.rst | 4 | ||||
| -rw-r--r-- | lib/cpus/aarch64/neoverse_n2.S | 6 | ||||
| -rw-r--r-- | lib/cpus/cpu-ops.mk | 4 |
3 files changed, 14 insertions, 0 deletions
diff --git a/docs/design/cpu-specific-build-macros.rst b/docs/design/cpu-specific-build-macros.rst index da2b596d1..d131754df 100644 --- a/docs/design/cpu-specific-build-macros.rst +++ b/docs/design/cpu-specific-build-macros.rst @@ -789,6 +789,10 @@ For Neoverse N2, the following errata build flags are defined : CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2, r0p3 and is still open. +- ``ERRATA_N2_4302970``: This applies errata 4302970 workaround to Neoverse-N2 + CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2, r0p3 and is + still open. + For Neoverse N3, the following errata build flags are defined : - ``ERRATA_N3_3456111``: This applies errata 3456111 workaround to Neoverse-N3 diff --git a/lib/cpus/aarch64/neoverse_n2.S b/lib/cpus/aarch64/neoverse_n2.S index a69223e19..57b39619a 100644 --- a/lib/cpus/aarch64/neoverse_n2.S +++ b/lib/cpus/aarch64/neoverse_n2.S @@ -235,6 +235,12 @@ workaround_reset_end neoverse_n2, ERRATUM(3888123) check_erratum_ls neoverse_n2, ERRATUM(3888123), CPU_REV(0, 3) +workaround_reset_start neoverse_n2, ERRATUM(4302970), ERRATA_N2_4302970 + sysreg_bit_set NEOVERSE_N2_CPUACTLR5_EL1, BIT(50) +workaround_reset_end neoverse_n2, ERRATUM(4302970) + +check_erratum_ls neoverse_n2, ERRATUM(4302970), CPU_REV(0, 3) + workaround_reset_start neoverse_n2, CVE(2022,23960), WORKAROUND_CVE_2022_23960 #if IMAGE_BL31 /* diff --git a/lib/cpus/cpu-ops.mk b/lib/cpus/cpu-ops.mk index e241c0d5b..a8e01fef5 100644 --- a/lib/cpus/cpu-ops.mk +++ b/lib/cpus/cpu-ops.mk @@ -790,6 +790,10 @@ CPU_FLAG_LIST += ERRATA_N2_3701773 # to r0p0, r0p1, r0p2 and r0p3 of the Neoverse N2 cpu and is still open. CPU_FLAG_LIST += ERRATA_N2_3888123 +# Flag to apply erratum 4302970 workaround during reset. This erratum applies +# to r0p0, r0p1, r0p2 and r0p3 of the Neoverse N2 cpu and is still open. +CPU_FLAG_LIST += ERRATA_N2_4302970 + # Flag to apply erratum 3456111 workaround during reset. This erratum applies # to revisions r0p0 and r0p1 of the Neoverse N3 cpu and is still open. CPU_FLAG_LIST += ERRATA_N3_3456111 |
