Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
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
5 years ago
by
John Tsichritzis
Committed by
TrustedFirmware Code Review
5 years ago
Browse files
Options
Download
Plain Diff
Merge "Neoverse N1: Introduce workaround for Neoverse N1 erratum 1315703" into integration
parents
74eaf266
5f5d0763
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
docs/design/cpu-specific-build-macros.rst
+3
-0
docs/design/cpu-specific-build-macros.rst
include/lib/cpus/aarch64/neoverse_n1.h
+2
-1
include/lib/cpus/aarch64/neoverse_n1.h
lib/cpus/aarch64/neoverse_n1.S
+36
-1
lib/cpus/aarch64/neoverse_n1.S
lib/cpus/cpu-ops.mk
+8
-0
lib/cpus/cpu-ops.mk
with
49 additions
and
2 deletions
+49
-2
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
----------------------
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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))
...
...
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help