mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-21 03:54:34 +00:00
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:
commit
e99df5c295
6 changed files with 37 additions and 1 deletions
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue