Merge changes from topic "sm/errata_X3" into integration

* changes:
  fix(cpus): workaround for Cortex-X3 erratum 2742421
  feat(errata_abi): add support for Cortex-X3
This commit is contained in:
Bipin Ravi 2023-09-08 22:18:32 +02:00 committed by TrustedFirmware Code Review
commit e99df5c295
6 changed files with 37 additions and 1 deletions

View file

@ -718,6 +718,10 @@ For Cortex-X3, the following errata build flags are defined :
CPU. This needs to be enabled only for revisions r0p0, r1p0 and r1p1 of the CPU. This needs to be enabled only for revisions r0p0, r1p0 and r1p1 of the
CPU, it is still open. CPU, it is still open.
- ``ERRATA_X3_2742421``: This applies errata 2742421 workaround to
Cortex-X3 CPU. This needs to be enabled only for revisions r0p0, r1p0 and
r1p1. It is fixed in r1p2.
For Cortex-A510, the following errata build flags are defined : For Cortex-A510, the following errata build flags are defined :
- ``ERRATA_A510_1922240``: This applies errata 1922240 workaround to - ``ERRATA_A510_1922240``: This applies errata 1922240 workaround to

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2021-2022, Arm Limited. All rights reserved. * Copyright (c) 2021-2023, Arm Limited. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
@ -31,4 +31,11 @@
#define CORTEX_X3_CPUACTLR2_EL1 S3_0_C15_C1_1 #define CORTEX_X3_CPUACTLR2_EL1 S3_0_C15_C1_1
#define CORTEX_X3_CPUACTLR2_EL1_BIT_36 (ULL(1) << 36) #define CORTEX_X3_CPUACTLR2_EL1_BIT_36 (ULL(1) << 36)
/*******************************************************************************
* CPU Auxiliary Control register 5 specific definitions.
******************************************************************************/
#define CORTEX_X3_CPUACTLR5_EL1 S3_0_C15_C8_0
#define CORTEX_X3_CPUACTLR5_EL1_BIT_55 (ULL(1) << 55)
#define CORTEX_X3_CPUACTLR5_EL1_BIT_56 (ULL(1) << 56)
#endif /* CORTEX_X3_H */ #endif /* CORTEX_X3_H */

View file

@ -42,6 +42,14 @@ workaround_reset_end cortex_x3, ERRATUM(2615812)
check_erratum_ls cortex_x3, ERRATUM(2615812), CPU_REV(1, 1) check_erratum_ls cortex_x3, ERRATUM(2615812), CPU_REV(1, 1)
workaround_reset_start cortex_x3, ERRATUM(2742421), ERRATA_X3_2742421
/* Set CPUACTLR5_EL1[56:55] to 2'b01 */
sysreg_bit_set CORTEX_X3_CPUACTLR5_EL1, CORTEX_X3_CPUACTLR5_EL1_BIT_55
sysreg_bit_clear CORTEX_X3_CPUACTLR5_EL1, CORTEX_X3_CPUACTLR5_EL1_BIT_56
workaround_reset_end cortex_x3, ERRATUM(2742421)
check_erratum_ls cortex_x3, ERRATUM(2742421), CPU_REV(1, 1)
workaround_reset_start cortex_x3, CVE(2022, 23960), WORKAROUND_CVE_2022_23960 workaround_reset_start cortex_x3, CVE(2022, 23960), WORKAROUND_CVE_2022_23960
#if IMAGE_BL31 #if IMAGE_BL31
override_vector_table wa_cve_vbar_cortex_x3 override_vector_table wa_cve_vbar_cortex_x3

View file

@ -742,6 +742,10 @@ CPU_FLAG_LIST += ERRATA_X3_2313909
# to revisions r0p0, r1p0, r1p1 of the Cortex-X3 cpu, it is still open. # to revisions r0p0, r1p0, r1p1 of the Cortex-X3 cpu, it is still open.
CPU_FLAG_LIST += ERRATA_X3_2615812 CPU_FLAG_LIST += ERRATA_X3_2615812
# Flag to apply erratum 2742421 workaround on reset. This erratum applies
# to revisions r0p0, r1p0 and r1p1 of the Cortex-X3 cpu, it is fixed in r1p2.
CPU_FLAG_LIST += ERRATA_X3_2742421
# Flag to apply erratum 1922240 workaround during reset. This erratum applies # Flag to apply erratum 1922240 workaround during reset. This erratum applies
# to revision r0p0 of the Cortex-A510 cpu and is fixed in r0p1. # to revision r0p0 of the Cortex-A510 cpu and is fixed in r0p1.
CPU_FLAG_LIST += ERRATA_A510_1922240 CPU_FLAG_LIST += ERRATA_A510_1922240

View file

@ -28,6 +28,7 @@
#include <cortex_a715.h> #include <cortex_a715.h>
#include <cortex_x1.h> #include <cortex_x1.h>
#include <cortex_x2.h> #include <cortex_x2.h>
#include <cortex_x3.h>
#include <neoverse_n1.h> #include <neoverse_n1.h>
#include <neoverse_n2.h> #include <neoverse_n2.h>
#include <neoverse_v1.h> #include <neoverse_v1.h>

View file

@ -418,6 +418,18 @@ struct em_cpu_list cpu_list[] = {
} }
}, },
#endif /* CORTEX_A715_H_INC */ #endif /* CORTEX_A715_H_INC */
#if CORTEX_X3_H_INC
{
.cpu_partnumber = CORTEX_X3_MIDR,
.cpu_errata_list = {
[0] = {2313909, 0x00, 0x10, ERRATA_X3_2313909},
[1] = {2615812, 0x00, 0x11, ERRATA_X3_2615812},
[2] = {2742421, 0x00, 0x11, ERRATA_X3_2742421},
[3 ... ERRATA_LIST_END] = UNDEF_ERRATA,
}
},
#endif /* CORTEX_X3_H_INC */
}; };
/* /*