Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
5441ed24
Commit
5441ed24
authored
Jun 07, 2019
by
John Tsichritzis
Committed by
TrustedFirmware Code Review
Jun 07, 2019
Browse files
Merge "Neoverse N1: Introduce workaround for Neoverse N1 erratum 1315703" into integration
parents
74eaf266
5f5d0763
Changes
4
Hide whitespace changes
Inline
Side-by-side
docs/design/cpu-specific-build-macros.rst
View file @
5441ed24
...
...
@@ -226,6 +226,9 @@ For Cortex-A76, the following errata build flags are defined :
- ``ERRATA_A76_1275112``: This applies errata 1275112 workaround to Cortex-A76
CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
- ``ERRATA_N1_1315703``: This applies errata 1315703 workaround to Neoverse-N1
CPU. This needs to be enabled only for revision <= r3p0 of the CPU.
DSU Errata Workarounds
----------------------
...
...
include/lib/cpus/aarch64/neoverse_n1.h
View file @
5441ed24
...
...
@@ -35,7 +35,8 @@
******************************************************************************/
#define NEOVERSE_N1_CPUACTLR2_EL1 S3_0_C15_C1_1
#define NEOVERSE_N1_CPUACTLR2_EL1_BIT_2 (ULL(1) << 2)
#define NEOVERSE_N1_CPUACTLR2_EL1_BIT_2 (ULL(1) << 2)
#define NEOVERSE_N1_CPUACTLR2_EL1_BIT_16 (ULL(1) << 16)
/* Instruction patching registers */
#define CPUPSELR_EL3 S3_6_C15_C8_0
...
...
lib/cpus/aarch64/neoverse_n1.S
View file @
5441ed24
...
...
@@ -21,7 +21,7 @@
#endif
/*
--------------------------------------------------
*
Errata
Workaround
for
Neoverse
N1
Errat
a
*
Errata
Workaround
for
Neoverse
N1
Errat
um
1043202
.
*
This
applies
to
revision
r0p0
and
r1p0
of
Neoverse
N1
.
*
Inputs
:
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
...
...
@@ -75,6 +75,35 @@ func neoverse_n1_disable_speculative_loads
ret
endfunc
neoverse_n1_disable_speculative_loads
/*
--------------------------------------------------
*
Errata
Workaround
for
Neoverse
N1
Erratum
1315703
.
*
This
applies
to
revision
<=
r3p0
of
Neoverse
N1
.
*
Inputs
:
*
x0
:
variant
[
4
:
7
]
and
revision
[
0
:
3
]
of
current
cpu
.
*
Shall
clobber
:
x0
-
x17
*
--------------------------------------------------
*/
func
errata_n1_1315703_wa
/
*
Compare
x0
against
revision
r3p1
*/
mov
x17
,
x30
bl
check_errata_1315703
cbz
x0
,
1
f
mrs
x0
,
NEOVERSE_N1_CPUACTLR2_EL1
orr
x0
,
x0
,
#
NEOVERSE_N1_CPUACTLR2_EL1_BIT_16
msr
NEOVERSE_N1_CPUACTLR2_EL1
,
x0
isb
1
:
ret
x17
endfunc
errata_n1_1315703_wa
func
check_errata_1315703
/
*
Applies
to
everything
<=
r3p0
.
*/
mov
x1
,
#
0x30
b
cpu_rev_var_ls
endfunc
check_errata_1315703
func
neoverse_n1_reset_func
mov
x19
,
x30
...
...
@@ -94,6 +123,11 @@ func neoverse_n1_reset_func
bl
errata_n1_1043202_wa
#endif
#if ERRATA_N1_1315703
mov
x0
,
x18
bl
errata_n1_1315703_wa
#endif
#if ENABLE_AMU
/
*
Make
sure
accesses
from
EL0
/
EL1
and
EL2
are
not
trapped
to
EL3
*/
mrs
x0
,
actlr_el3
...
...
@@ -146,6 +180,7 @@ func neoverse_n1_errata_report
*
checking
functions
of
each
errata
.
*/
report_errata
ERRATA_N1_1043202
,
neoverse_n1
,
1043202
report_errata
ERRATA_N1_1315703
,
neoverse_n1
,
1315703
ldp
x8
,
x30
,
[
sp
],
#
16
ret
...
...
lib/cpus/cpu-ops.mk
View file @
5441ed24
...
...
@@ -238,6 +238,10 @@ ERRATA_A76_1286807 ?=0
# only to r0p0 and r1p0 of the Neoverse N1 cpu.
ERRATA_N1_1043202
?=
1
# Flag to apply erratum 1315703 workaround during reset. This erratum applies
# to revisions before r3p1 of the Neoverse N1 cpu.
ERRATA_N1_1315703
?=
1
# Flag to apply DSU erratum 798953. This erratum applies to DSUs revision r0p0.
# Applying the workaround results in higher DSU power consumption on idle.
ERRATA_DSU_798953
?=
0
...
...
@@ -427,6 +431,10 @@ $(eval $(call add_define,ERRATA_A76_1286807))
$(eval
$(call
assert_boolean,ERRATA_N1_1043202))
$(eval
$(call
add_define,ERRATA_N1_1043202))
# Process ERRATA_N1_1315703 flag
$(eval
$(call
assert_boolean,ERRATA_N1_1315703))
$(eval
$(call
add_define,ERRATA_N1_1315703))
# Process ERRATA_DSU_798953 flag
$(eval
$(call
assert_boolean,ERRATA_DSU_798953))
$(eval
$(call
add_define,ERRATA_DSU_798953))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment