@@ -123,10 +123,13 @@ config ARM64
123123 select CPU_PM if (SUSPEND || CPU_IDLE)
124124 select CRC32
125125 select DCACHE_WORD_ACCESS
126+ select DYNAMIC_FTRACE if FUNCTION_TRACER
126127 select DMA_BOUNCE_UNALIGNED_KMALLOC
127128 select DMA_DIRECT_REMAP
128129 select EDAC_SUPPORT
129130 select FRAME_POINTER
131+ select FUNCTION_ALIGNMENT_4B
132+ select FUNCTION_ALIGNMENT_8B if DYNAMIC_FTRACE_WITH_CALL_OPS
130133 select GENERIC_ALLOCATOR
131134 select GENERIC_ARCH_TOPOLOGY
132135 select GENERIC_CLOCKEVENTS_BROADCAST
@@ -189,10 +192,17 @@ config ARM64
189192 select HAVE_DEBUG_KMEMLEAK
190193 select HAVE_DMA_CONTIGUOUS
191194 select HAVE_DYNAMIC_FTRACE
192- select HAVE_DYNAMIC_FTRACE_WITH_REGS \
193- if $(cc-option,-fpatchable-function-entry=2)
195+ select HAVE_DYNAMIC_FTRACE_WITH_ARGS \
196+ if (GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS || \
197+ CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS)
198+ select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS \
199+ if DYNAMIC_FTRACE_WITH_ARGS && DYNAMIC_FTRACE_WITH_CALL_OPS
200+ select HAVE_DYNAMIC_FTRACE_WITH_CALL_OPS \
201+ if (DYNAMIC_FTRACE_WITH_ARGS && !CFI_CLANG)
194202 select FTRACE_MCOUNT_USE_PATCHABLE_FUNCTION_ENTRY \
195- if DYNAMIC_FTRACE_WITH_REGS
203+ if DYNAMIC_FTRACE_WITH_ARGS
204+ select HAVE_SAMPLE_FTRACE_DIRECT
205+ select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
196206 select HAVE_EFFICIENT_UNALIGNED_ACCESS
197207 select HAVE_FAST_GUP
198208 select HAVE_FTRACE_MCOUNT_RECORD
@@ -247,6 +257,15 @@ config ARM64
247257 help
248258 ARM 64-bit (AArch64) Linux support.
249259
260+ config CLANG_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS
261+ def_bool CC_IS_CLANG
262+ # https://github.com/ClangBuiltLinux/linux/issues/1507
263+ depends on AS_IS_GNU || (AS_IS_LLVM && (LD_IS_LLD || LD_VERSION >= 23600))
264+
265+ config GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS
266+ def_bool CC_IS_GCC
267+ depends on $(cc-option,-fpatchable-function-entry=2)
268+
250269config 64BIT
251270 def_bool y
252271
@@ -1927,7 +1946,7 @@ config ARM64_PTR_AUTH_KERNEL
19271946 # which is only understood by binutils starting with version 2.33.1.
19281947 depends on LD_IS_LLD || LD_VERSION >= 23301 || (CC_IS_GCC && GCC_VERSION < 90100)
19291948 depends on !CC_IS_CLANG || AS_HAS_CFI_NEGATE_RA_STATE
1930- depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS )
1949+ depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_ARGS )
19311950 help
19321951 If the compiler supports the -mbranch-protection or
19331952 -msign-return-address flag (e.g. GCC 7 or later), then this option
@@ -1937,7 +1956,7 @@ config ARM64_PTR_AUTH_KERNEL
19371956 disabled with minimal loss of protection.
19381957
19391958 This feature works with FUNCTION_GRAPH_TRACER option only if
1940- DYNAMIC_FTRACE_WITH_REGS is enabled.
1959+ DYNAMIC_FTRACE_WITH_ARGS is enabled.
19411960
19421961config CC_HAS_BRANCH_PROT_PAC_RET
19431962 # GCC 9 or later, clang 8 or later
@@ -2038,7 +2057,7 @@ config ARM64_BTI_KERNEL
20382057 depends on !CC_IS_GCC
20392058 # https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9
20402059 depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
2041- depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS )
2060+ depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_ARGS )
20422061 help
20432062 Build the kernel with Branch Target Identification annotations
20442063 and enable enforcement of this for kernel code. When this option
0 commit comments