|
|
@ -267,6 +267,34 @@ func check_errata_2147715 |
|
|
|
b cpu_rev_var_range |
|
|
|
endfunc check_errata_2147715 |
|
|
|
|
|
|
|
/* ------------------------------------------------------- |
|
|
|
* Errata Workaround for Cortex-X2 Erratum 2371105. |
|
|
|
* This applies to revisions <= r2p0 and is fixed in r2p1. |
|
|
|
* x0: variant[4:7] and revision[0:3] of current cpu. |
|
|
|
* Shall clobber: x0-x17 |
|
|
|
* ------------------------------------------------------- |
|
|
|
*/ |
|
|
|
func errata_x2_2371105_wa |
|
|
|
/* Check workaround compatibility. */ |
|
|
|
mov x17, x30 |
|
|
|
bl check_errata_2371105 |
|
|
|
cbz x0, 1f |
|
|
|
|
|
|
|
/* Set bit 40 in CPUACTLR2_EL1 */ |
|
|
|
mrs x1, CORTEX_X2_CPUACTLR2_EL1 |
|
|
|
orr x1, x1, #CORTEX_X2_CPUACTLR2_EL1_BIT_40 |
|
|
|
msr CORTEX_X2_CPUACTLR2_EL1, x1 |
|
|
|
isb |
|
|
|
1: |
|
|
|
ret x17 |
|
|
|
endfunc errata_x2_2371105_wa |
|
|
|
|
|
|
|
func check_errata_2371105 |
|
|
|
/* Applies to <= r2p0. */ |
|
|
|
mov x1, #0x20 |
|
|
|
b cpu_rev_var_ls |
|
|
|
endfunc check_errata_2371105 |
|
|
|
|
|
|
|
/* ---------------------------------------------------- |
|
|
|
* HW will do the cache maintenance while powering down |
|
|
|
* ---------------------------------------------------- |
|
|
@ -304,6 +332,7 @@ func cortex_x2_errata_report |
|
|
|
report_errata ERRATA_X2_2083908, cortex_x2, 2083908 |
|
|
|
report_errata ERRATA_X2_2147715, cortex_x2, 2147715 |
|
|
|
report_errata ERRATA_X2_2216384, cortex_x2, 2216384 |
|
|
|
report_errata ERRATA_X2_2371105, cortex_x2, 2371105 |
|
|
|
report_errata WORKAROUND_CVE_2022_23960, cortex_x2, cve_2022_23960 |
|
|
|
report_errata ERRATA_DSU_2313941, cortex_x2, dsu_2313941 |
|
|
|
|
|
|
@ -361,6 +390,11 @@ func cortex_x2_reset_func |
|
|
|
bl errata_x2_2147715_wa |
|
|
|
#endif |
|
|
|
|
|
|
|
#if ERRATA_X2_2371105 |
|
|
|
mov x0, x18 |
|
|
|
bl errata_x2_2371105_wa |
|
|
|
#endif |
|
|
|
|
|
|
|
#if IMAGE_BL31 && WORKAROUND_CVE_2022_23960 |
|
|
|
/* |
|
|
|
* The Cortex-X2 generic vectors are overridden to apply errata |
|
|
|