mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 01:24:27 +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, 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 :
|
||||
|
||||
- ``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
|
||||
*/
|
||||
|
@ -31,4 +31,11 @@
|
|||
#define CORTEX_X3_CPUACTLR2_EL1 S3_0_C15_C1_1
|
||||
#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 */
|
||||
|
|
|
@ -42,6 +42,14 @@ workaround_reset_end cortex_x3, ERRATUM(2615812)
|
|||
|
||||
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
|
||||
#if IMAGE_BL31
|
||||
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.
|
||||
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
|
||||
# to revision r0p0 of the Cortex-A510 cpu and is fixed in r0p1.
|
||||
CPU_FLAG_LIST += ERRATA_A510_1922240
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <cortex_a715.h>
|
||||
#include <cortex_x1.h>
|
||||
#include <cortex_x2.h>
|
||||
#include <cortex_x3.h>
|
||||
#include <neoverse_n1.h>
|
||||
#include <neoverse_n2.h>
|
||||
#include <neoverse_v1.h>
|
||||
|
|
|
@ -418,6 +418,18 @@ struct em_cpu_list cpu_list[] = {
|
|||
}
|
||||
},
|
||||
#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