Skip to content

Commit ac30860

Browse files
committed
Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
Pull arm64 fixes from Catalin Marinas: "A couple of build/config issues and expanding the speculative SSBS workaround to more CPUs: - Expand the speculative SSBS workaround to cover Cortex-A715, Neoverse-N3 and Microsoft Azure Cobalt 100 - Force position-independent veneers - in some kernel configurations, the LLD linker generates position-dependent veneers for otherwise position-independent code, resulting in early boot-time failures - Fix Kconfig selection of HAVE_DYNAMIC_FTRACE_WITH_ARGS so that it is not enabled when not supported by the combination of clang and GNU ld" * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: arm64: Subscribe Microsoft Azure Cobalt 100 to erratum 3194386 arm64: fix selection of HAVE_DYNAMIC_FTRACE_WITH_ARGS arm64: errata: Expand speculative SSBS workaround once more arm64: cputype: Add Neoverse-N3 definitions arm64: Force position-independent veneers
2 parents 7943f06 + 3eddb10 commit ac30860

File tree

5 files changed

+16
-4
lines changed

5 files changed

+16
-4
lines changed

Documentation/arch/arm64/silicon-errata.rst

+6
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ stable kernels.
146146
+----------------+-----------------+-----------------+-----------------------------+
147147
| ARM | Cortex-A715 | #2645198 | ARM64_ERRATUM_2645198 |
148148
+----------------+-----------------+-----------------+-----------------------------+
149+
| ARM | Cortex-A715 | #3456084 | ARM64_ERRATUM_3194386 |
150+
+----------------+-----------------+-----------------+-----------------------------+
149151
| ARM | Cortex-A720 | #3456091 | ARM64_ERRATUM_3194386 |
150152
+----------------+-----------------+-----------------+-----------------------------+
151153
| ARM | Cortex-A725 | #3456106 | ARM64_ERRATUM_3194386 |
@@ -186,6 +188,8 @@ stable kernels.
186188
+----------------+-----------------+-----------------+-----------------------------+
187189
| ARM | Neoverse-N2 | #3324339 | ARM64_ERRATUM_3194386 |
188190
+----------------+-----------------+-----------------+-----------------------------+
191+
| ARM | Neoverse-N3 | #3456111 | ARM64_ERRATUM_3194386 |
192+
+----------------+-----------------+-----------------+-----------------------------+
189193
| ARM | Neoverse-V1 | #1619801 | N/A |
190194
+----------------+-----------------+-----------------+-----------------------------+
191195
| ARM | Neoverse-V1 | #3324341 | ARM64_ERRATUM_3194386 |
@@ -289,3 +293,5 @@ stable kernels.
289293
+----------------+-----------------+-----------------+-----------------------------+
290294
| Microsoft | Azure Cobalt 100| #2253138 | ARM64_ERRATUM_2253138 |
291295
+----------------+-----------------+-----------------+-----------------------------+
296+
| Microsoft | Azure Cobalt 100| #3324339 | ARM64_ERRATUM_3194386 |
297+
+----------------+-----------------+-----------------+-----------------------------+

arch/arm64/Kconfig

+4-3
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,8 @@ config ARM64
200200
select HAVE_DMA_CONTIGUOUS
201201
select HAVE_DYNAMIC_FTRACE
202202
select HAVE_DYNAMIC_FTRACE_WITH_ARGS \
203-
if $(cc-option,-fpatchable-function-entry=2)
203+
if (GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS || \
204+
CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS)
204205
select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS \
205206
if DYNAMIC_FTRACE_WITH_ARGS && DYNAMIC_FTRACE_WITH_CALL_OPS
206207
select HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS \
@@ -286,12 +287,10 @@ config CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS
286287
def_bool CC_IS_CLANG
287288
# https://github.com/ClangBuiltLinux/linux/issues/1507
288289
depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600))
289-
select HAVE_DYNAMIC_FTRACE_WITH_ARGS
290290

291291
config GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS
292292
def_bool CC_IS_GCC
293293
depends on $(cc-option,-fpatchable-function-entry=2)
294-
select HAVE_DYNAMIC_FTRACE_WITH_ARGS
295294

296295
config 64BIT
297296
def_bool y
@@ -1097,6 +1096,7 @@ config ARM64_ERRATUM_3194386
10971096
* ARM Cortex-A78C erratum 3324346
10981097
* ARM Cortex-A78C erratum 3324347
10991098
* ARM Cortex-A710 erratam 3324338
1099+
* ARM Cortex-A715 errartum 3456084
11001100
* ARM Cortex-A720 erratum 3456091
11011101
* ARM Cortex-A725 erratum 3456106
11021102
* ARM Cortex-X1 erratum 3324344
@@ -1107,6 +1107,7 @@ config ARM64_ERRATUM_3194386
11071107
* ARM Cortex-X925 erratum 3324334
11081108
* ARM Neoverse-N1 erratum 3324349
11091109
* ARM Neoverse N2 erratum 3324339
1110+
* ARM Neoverse-N3 erratum 3456111
11101111
* ARM Neoverse-V1 erratum 3324341
11111112
* ARM Neoverse V2 erratum 3324336
11121113
* ARM Neoverse-V3 erratum 3312417

arch/arm64/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#
1111
# Copyright (C) 1995-2001 by Russell King
1212

13-
LDFLAGS_vmlinux :=--no-undefined -X
13+
LDFLAGS_vmlinux :=--no-undefined -X --pic-veneer
1414

1515
ifeq ($(CONFIG_RELOCATABLE), y)
1616
# Pass --no-apply-dynamic-relocs to restore pre-binutils-2.27 behaviour

arch/arm64/include/asm/cputype.h

+2
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
#define ARM_CPU_PART_NEOVERSE_V3 0xD84
9595
#define ARM_CPU_PART_CORTEX_X925 0xD85
9696
#define ARM_CPU_PART_CORTEX_A725 0xD87
97+
#define ARM_CPU_PART_NEOVERSE_N3 0xD8E
9798

9899
#define APM_CPU_PART_XGENE 0x000
99100
#define APM_CPU_VAR_POTENZA 0x00
@@ -176,6 +177,7 @@
176177
#define MIDR_NEOVERSE_V3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V3)
177178
#define MIDR_CORTEX_X925 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X925)
178179
#define MIDR_CORTEX_A725 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A725)
180+
#define MIDR_NEOVERSE_N3 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N3)
179181
#define MIDR_THUNDERX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX)
180182
#define MIDR_THUNDERX_81XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_81XX)
181183
#define MIDR_THUNDERX_83XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_83XX)

arch/arm64/kernel/cpu_errata.c

+3
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
439439
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78),
440440
MIDR_ALL_VERSIONS(MIDR_CORTEX_A78C),
441441
MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
442+
MIDR_ALL_VERSIONS(MIDR_CORTEX_A715),
442443
MIDR_ALL_VERSIONS(MIDR_CORTEX_A720),
443444
MIDR_ALL_VERSIONS(MIDR_CORTEX_A725),
444445
MIDR_ALL_VERSIONS(MIDR_CORTEX_X1),
@@ -447,8 +448,10 @@ static const struct midr_range erratum_spec_ssbs_list[] = {
447448
MIDR_ALL_VERSIONS(MIDR_CORTEX_X3),
448449
MIDR_ALL_VERSIONS(MIDR_CORTEX_X4),
449450
MIDR_ALL_VERSIONS(MIDR_CORTEX_X925),
451+
MIDR_ALL_VERSIONS(MIDR_MICROSOFT_AZURE_COBALT_100),
450452
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1),
451453
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N2),
454+
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N3),
452455
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V1),
453456
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V2),
454457
MIDR_ALL_VERSIONS(MIDR_NEOVERSE_V3),

0 commit comments

Comments
 (0)