diff --git a/docs/design/cpu-specific-build-macros.rst b/docs/design/cpu-specific-build-macros.rst index f253cd326..7af2eaeba 100644 --- a/docs/design/cpu-specific-build-macros.rst +++ b/docs/design/cpu-specific-build-macros.rst @@ -932,6 +932,10 @@ For Cortex-A715, the following errata build flags are defined : For Cortex-A720, the following errata build flags are defined : +- ``ERRATA_A720_2844092``: This applies errata 2844092 workaround to + Cortex-A720 CPU. This needs to be enabled for revisions r0p0 and r0p1. + It is fixed in r0p2. + - ``ERRATA_A720_2926083``: This applies errata 2926083 workaround to Cortex-A720 CPU. This needs to be enabled for revisions r0p0 and r0p1. It is fixed in r0p2. diff --git a/include/lib/cpus/aarch64/cortex_a720.h b/include/lib/cpus/aarch64/cortex_a720.h index fb27f7912..129c1ee33 100644 --- a/include/lib/cpus/aarch64/cortex_a720.h +++ b/include/lib/cpus/aarch64/cortex_a720.h @@ -22,6 +22,11 @@ ******************************************************************************/ #define CORTEX_A720_CPUACTLR2_EL1 S3_0_C15_C1_1 +/******************************************************************************* + * CPU Auxiliary Control register 4 specific definitions. + ******************************************************************************/ +#define CORTEX_A720_CPUACTLR4_EL1 S3_0_C15_C1_3 + /******************************************************************************* * CPU Extended Control register specific definitions ******************************************************************************/ diff --git a/lib/cpus/aarch64/cortex_a720.S b/lib/cpus/aarch64/cortex_a720.S index 53a1b7897..3e2927bb8 100644 --- a/lib/cpus/aarch64/cortex_a720.S +++ b/lib/cpus/aarch64/cortex_a720.S @@ -26,6 +26,12 @@ wa_cve_2022_23960_bhb_vector_table CORTEX_A720_BHB_LOOP_COUNT, cortex_a720 #endif /* WORKAROUND_CVE_2022_23960 */ +workaround_reset_start cortex_a720, ERRATUM(2844092), ERRATA_A720_2844092 + sysreg_bit_set CORTEX_A720_CPUACTLR4_EL1, BIT(11) +workaround_reset_end cortex_a720, ERRATUM(2844092) + +check_erratum_ls cortex_a720, ERRATUM(2844092), CPU_REV(0, 1) + workaround_reset_start cortex_a720, ERRATUM(2926083), ERRATA_A720_2926083 /* Erratum 2926083 workaround is required only if SPE is enabled */ #if ENABLE_SPE_FOR_NS != 0 diff --git a/lib/cpus/cpu-ops.mk b/lib/cpus/cpu-ops.mk index c06bf9e74..c9ff110c5 100644 --- a/lib/cpus/cpu-ops.mk +++ b/lib/cpus/cpu-ops.mk @@ -956,6 +956,10 @@ CPU_FLAG_LIST += ERRATA_A715_2561034 # only to revision r0p0, r1p0 and r1p1. It is fixed in r1p2. CPU_FLAG_LIST += ERRATA_A715_2728106 +# Flag to apply erratum 2844092 workaround during reset. This erratum applies +# to revisions r0p0 and r0p1. It is fixed in r0p2. +CPU_FLAG_LIST += ERRATA_A720_2844092 + # Flag to apply erratum 2926083 workaround during reset. This erratum applies # to revisions r0p0 and r0p1. It is fixed in r0p2. CPU_FLAG_LIST += ERRATA_A720_2926083