diff options
| author | Lauren Wehrmeister <lauren.wehrmeister@arm.com> | 2026-01-06 21:42:47 +0000 |
|---|---|---|
| committer | TrustedFirmware Code Review <review@review.trustedfirmware.org> | 2026-01-06 21:42:47 +0000 |
| commit | 0eaf5de8e0a0678ab57602f8e804bd35245fcc2b (patch) | |
| tree | 53cf548b2a2d0abb821a875533050a96251f56ca | |
| parent | ea5a7ab16ccdceac1229b1d61d44b8d79bf7a2c7 (diff) | |
| parent | 925661ad87d677f505a5f1b3742e47d9515d2585 (diff) | |
| download | arm-trusted-firmware-0eaf5de8e0a0678ab57602f8e804bd35245fcc2b.tar.gz arm-trusted-firmware-0eaf5de8e0a0678ab57602f8e804bd35245fcc2b.zip | |
Merge changes from topic "xl/n2-errata" into integration
* changes:
fix(cpus): workaround for Neoverse-N2 erratum 2138953
fix(cpus): workaround for Neoverse-N2 erratum 4302970
fix(cpus): workaround for Neoverse-N2 erratum 3888123
refactor(cpus): reorder the errratum build flag for Neoverse-N2
| -rw-r--r-- | docs/design/cpu-specific-build-macros.rst | 20 | ||||
| -rw-r--r-- | lib/cpus/aarch64/neoverse_n2.S | 22 | ||||
| -rw-r--r-- | lib/cpus/cpu-ops.mk | 26 |
3 files changed, 55 insertions, 13 deletions
diff --git a/docs/design/cpu-specific-build-macros.rst b/docs/design/cpu-specific-build-macros.rst index 8c65b171c..334f3f60e 100644 --- a/docs/design/cpu-specific-build-macros.rst +++ b/docs/design/cpu-specific-build-macros.rst @@ -759,21 +759,25 @@ For Neoverse N2, the following errata build flags are defined : - ``ERRATA_N2_2025414``: This applies errata 2025414 workaround to Neoverse-N2 CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. -- ``ERRATA_N2_2189731``: This applies errata 2189731 workaround to Neoverse-N2 - CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. +- ``ERRATA_N2_2138953``: This applies errata 2138953 workaround to Neoverse-N2 + CPU. This needs to be enabled for revisions r0p0, r0p1, r0p2 and r0p3 of the + Neoverse N2 cpu and is still open. - ``ERRATA_N2_2138956``: This applies errata 2138956 workaround to Neoverse-N2 CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. -- ``ERRATA_N2_2242415``: This applies errata 2242415 workaround to Neoverse-N2 +- ``ERRATA_N2_2138958``: This applies errata 2138958 workaround to Neoverse-N2 CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. -- ``ERRATA_N2_2138958``: This applies errata 2138958 workaround to Neoverse-N2 +- ``ERRATA_N2_2189731``: This applies errata 2189731 workaround to Neoverse-N2 CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. - ``ERRATA_N2_2242400``: This applies errata 2242400 workaround to Neoverse-N2 CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. +- ``ERRATA_N2_2242415``: This applies errata 2242415 workaround to Neoverse-N2 + CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. + - ``ERRATA_N2_2280757``: This applies errata 2280757 workaround to Neoverse-N2 CPU. This needs to be enabled for revision r0p0 of the CPU and is fixed in r0p1. @@ -821,6 +825,14 @@ 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_3888123``: This applies errata 3888123 workaround to Neoverse-N2 + 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 df088c426..26fc419ab 100644 --- a/lib/cpus/aarch64/neoverse_n2.S +++ b/lib/cpus/aarch64/neoverse_n2.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2025, Arm Limited. All rights reserved. + * Copyright (c) 2020-2026, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -79,6 +79,12 @@ workaround_reset_end neoverse_n2, ERRATUM(2067956) check_erratum_ls neoverse_n2, ERRATUM(2067956), CPU_REV(0, 0) +workaround_runtime_start neoverse_n2, ERRATUM(2138953), ERRATA_N2_2138953 + sysreg_bit_set NEOVERSE_N2_CPUACTLR2_EL1, BIT(29) +workaround_runtime_end neoverse_n2, ERRATUM(2138953) + +check_erratum_ls neoverse_n2, ERRATUM(2138953), CPU_REV(0, 3) + workaround_reset_start neoverse_n2, ERRATUM(2138956), ERRATA_N2_2138956 /* Apply instruction patching sequence */ ldr x0,=0x3 @@ -101,7 +107,6 @@ workaround_reset_end neoverse_n2, ERRATUM(2138956) check_erratum_ls neoverse_n2, ERRATUM(2138956), CPU_REV(0, 0) - workaround_reset_start neoverse_n2, ERRATUM(2138958), ERRATA_N2_2138958 /* Apply instruction patching sequence */ sysreg_bit_set NEOVERSE_N2_CPUACTLR5_EL1, NEOVERSE_N2_CPUACTLR5_EL1_BIT_13 @@ -229,6 +234,18 @@ add_erratum_entry neoverse_n2, ERRATUM(3701773), ERRATA_N2_3701773 check_erratum_ls neoverse_n2, ERRATUM(3701773), CPU_REV(0, 3) +workaround_reset_start neoverse_n2, ERRATUM(3888123), ERRATA_N2_3888123 + sysreg_bit_set NEOVERSE_N2_CPUACTLR2_EL1, BIT(22) +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 /* @@ -281,6 +298,7 @@ cpu_reset_func_start neoverse_n2 #endif #if NEOVERSE_N2_PREFETCHER_DISABLE /* Disable region prefetcher for L2 cache perf measurement */ + apply_erratum neoverse_n2, ERRATUM(2138953), ERRATA_N2_2138953 sysreg_bit_set NEOVERSE_N2_CPUECTLR_EL1, NEOVERSE_N2_CPUECTLR_EL1_PFDIS_BIT #endif cpu_reset_func_end neoverse_n2 diff --git a/lib/cpus/cpu-ops.mk b/lib/cpus/cpu-ops.mk index b5ed8f6cc..095dfd496 100644 --- a/lib/cpus/cpu-ops.mk +++ b/lib/cpus/cpu-ops.mk @@ -744,26 +744,30 @@ CPU_FLAG_LIST += ERRATA_N2_2067956 # to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. CPU_FLAG_LIST += ERRATA_N2_2025414 -# Flag to apply erratum 2189731 workaround during reset. This erratum applies -# to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. -CPU_FLAG_LIST += ERRATA_N2_2189731 +# Flag to apply erratum 2138953 workaround during runtime. This erratum applies +# to r0p0, r0p1, r0p2 and r0p3 of the Neoverse N2 cpu and is still open. +CPU_FLAG_LIST += ERRATA_N2_2138953 # Flag to apply erratum 2138956 workaround during reset. This erratum applies # to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. CPU_FLAG_LIST += ERRATA_N2_2138956 -# Flag to apply erratum 2242415 workaround during reset. This erratum applies -# to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. -CPU_FLAG_LIST += ERRATA_N2_2242415 - # Flag to apply erratum 2138958 workaround during reset. This erratum applies # to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. CPU_FLAG_LIST += ERRATA_N2_2138958 +# Flag to apply erratum 2189731 workaround during reset. This erratum applies +# to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. +CPU_FLAG_LIST += ERRATA_N2_2189731 + # Flag to apply erratum 2242400 workaround during reset. This erratum applies # to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. CPU_FLAG_LIST += ERRATA_N2_2242400 +# Flag to apply erratum 2242415 workaround during reset. This erratum applies +# to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. +CPU_FLAG_LIST += ERRATA_N2_2242415 + # Flag to apply erratum 2280757 workaround during reset. This erratum applies # to revision r0p0 of the Neoverse N2 cpu and is fixed in r0p1. CPU_FLAG_LIST += ERRATA_N2_2280757 @@ -814,6 +818,14 @@ CPU_FLAG_LIST += ERRATA_N2_3324339 # of the Neoverse N2 cpu and is still open. CPU_FLAG_LIST += ERRATA_N2_3701773 +# Flag to apply erratum 3888123 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_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 |
