Merge "fix(cpus): workaround for Neoverse V1 errata 2743233" into integration

This commit is contained in:
Bipin Ravi 2023-03-14 19:53:19 +01:00 committed by TrustedFirmware Code Review
commit 4c985e8674
4 changed files with 52 additions and 0 deletions

View file

@ -484,6 +484,10 @@ For Neoverse V1, the following errata build flags are defined :
CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1 and r1p2 of the CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1 and r1p2 of the
CPU. It is still open. CPU. It is still open.
- ``ERRATA_V1_2743233``: This applies erratum 2743233 workaround to Neoverse-V1
CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, and r1p2 of the
CPU. It is still open.
- ``ERRATA_V1_2779461``: This applies erratum 2779461 workaround to Neoverse-V1 - ``ERRATA_V1_2779461``: This applies erratum 2779461 workaround to Neoverse-V1
CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, r1p2 of the CPU. This needs to be enabled for revisions r0p0, r1p0, r1p1, r1p2 of the
CPU. It is still open. CPU. It is still open.

View file

@ -43,4 +43,6 @@
#define NEOVERSE_V1_ACTLR3_EL1 S3_0_C15_C1_2 #define NEOVERSE_V1_ACTLR3_EL1 S3_0_C15_C1_2
#define NEOVERSE_V1_ACTLR5_EL1 S3_0_C15_C9_0
#endif /* NEOVERSE_V1_H */ #endif /* NEOVERSE_V1_H */

View file

@ -486,6 +486,37 @@ func check_errata_2743093
b cpu_rev_var_ls b cpu_rev_var_ls
endfunc check_errata_2743093 endfunc check_errata_2743093
/* ---------------------------------------------------
* Errata Workaround for Neoverse V1 Errata #2743233.
* This applies to revisions r0p0, r1p0, r1p1 and r1p2.
* It is still open.
* x0: variant[4:7] and revisions[0:3] of current cpu.
* Shall clobber: x0-x1, x17
* ---------------------------------------------------
*/
func errata_neoverse_v1_2743233_wa
/* Check revision. */
mov x17, x30
bl check_errata_2743233
cbz x0, 1f
/* Apply the workaround */
mrs x1, NEOVERSE_V1_ACTLR5_EL1
bic x1, x1, #BIT(56)
orr x1, x1, #BIT(55)
msr NEOVERSE_V1_ACTLR5_EL1, x1
1:
ret x17
endfunc errata_neoverse_v1_2743233_wa
func check_errata_2743233
/* Applies to r0p0, r1p0, r1p1 and r1p2 */
mov x1, #CPU_REV(1,2)
b cpu_rev_var_ls
endfunc check_errata_2743233
/* ---------------------------------------------------- /* ----------------------------------------------------
* Errata Workaround for Neoverse V1 Errata #2779461. * Errata Workaround for Neoverse V1 Errata #2779461.
* This applies to revisions r0p0, r1p0, r1p1, and r1p2. * This applies to revisions r0p0, r1p0, r1p1, and r1p2.
@ -573,6 +604,7 @@ func neoverse_v1_errata_report
report_errata ERRATA_V1_2294912, neoverse_v1, 2294912 report_errata ERRATA_V1_2294912, neoverse_v1, 2294912
report_errata ERRATA_V1_2372203, neoverse_v1, 2372203 report_errata ERRATA_V1_2372203, neoverse_v1, 2372203
report_errata ERRATA_V1_2743093, neoverse_v1, 2743093 report_errata ERRATA_V1_2743093, neoverse_v1, 2743093
report_errata ERRATA_V1_2743233, neoverse_v1, 2743233
report_errata ERRATA_V1_2779461, neoverse_v1, 2779461 report_errata ERRATA_V1_2779461, neoverse_v1, 2779461
report_errata WORKAROUND_CVE_2022_23960, neoverse_v1, cve_2022_23960 report_errata WORKAROUND_CVE_2022_23960, neoverse_v1, cve_2022_23960
@ -652,6 +684,11 @@ func neoverse_v1_reset_func
bl errata_neoverse_v1_2372203_wa bl errata_neoverse_v1_2372203_wa
#endif #endif
#if ERRATA_V1_2743233
mov x0, x18
bl errata_neoverse_v1_2743233_wa
#endif
#if ERRATA_V1_2779461 #if ERRATA_V1_2779461
mov x0, x18 mov x0, x18
bl errata_neoverse_v1_2779461_wa bl errata_neoverse_v1_2779461_wa

View file

@ -539,6 +539,11 @@ ERRATA_V1_2372203 ?=0
# still open. # still open.
ERRATA_V1_2743093 ?=0 ERRATA_V1_2743093 ?=0
# Flag to apply erratum 2743233 workaround during powerdown. This erratum
# applies to revisions r0p0, r1p0, r1p1 and r1p2 of the Neoverse V1 cpu and is
# still open.
ERRATA_V1_2743233 ?=0
# Flag to apply erratum 2779461 workaround during powerdown. This erratum # Flag to apply erratum 2779461 workaround during powerdown. This erratum
# applies to revisions r0p0, r1p0, r1p1 and r1p2 of the Neoverse V1 cpu and is # applies to revisions r0p0, r1p0, r1p1 and r1p2 of the Neoverse V1 cpu and is
# still open. # still open.
@ -1229,6 +1234,10 @@ $(eval $(call add_define,ERRATA_V1_2372203))
$(eval $(call assert_boolean,ERRATA_V1_2743093)) $(eval $(call assert_boolean,ERRATA_V1_2743093))
$(eval $(call add_define,ERRATA_V1_2743093)) $(eval $(call add_define,ERRATA_V1_2743093))
# Process ERRATA_V1_2743233 flag
$(eval $(call assert_boolean,ERRATA_V1_2743233))
$(eval $(call add_define,ERRATA_V1_2743233))
# Process ERRATA_V1_2779461 flag # Process ERRATA_V1_2779461 flag
$(eval $(call assert_boolean,ERRATA_V1_2779461)) $(eval $(call assert_boolean,ERRATA_V1_2779461))
$(eval $(call add_define,ERRATA_V1_2779461)) $(eval $(call add_define,ERRATA_V1_2779461))