OpenCloudOS-Kernel/arch
Madhavan T. Venkataraman ed876d35a1 arm64: Make perf_callchain_kernel() use arch_stack_walk()
To enable RELIABLE_STACKTRACE and LIVEPATCH on arm64, we need to
substantially rework arm64's unwinding code. As part of this, we want to
minimize the set of unwind interfaces we expose, and avoid open-coding
of unwind logic outside of stacktrace.c.

Currently perf_callchain_kernel() walks the stack of an interrupted
context by calling start_backtrace() with the context's PC and FP, and
iterating unwind steps using walk_stackframe(). This is functionally
equivalent to calling arch_stack_walk() with the interrupted context's
pt_regs, which will start with the PC and FP from the regs.

Make perf_callchain_kernel() use arch_stack_walk(). This simplifies
perf_callchain_kernel(), and in future will alow us to make
walk_stackframe() private to stacktrace.c.

At the same time, we update the callchain_trace() callback to check the
return value of perf_callchain_store(), which indicates whether there is
space for any further entries. When a non-zero value is returned,
further calls will be ignored, and are redundant, so we can stop the
unwind at this point.

We also remove the stale and confusing comment for callchain_trace.

There should be no functional change as a result of this patch.

Signed-off-by: Madhavan T. Venkataraman <madvenka@linux.microsoft.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
[Mark: elaborate commit message, remove comment, fix includes]
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20211129142849.3056714-5-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-12-10 14:06:03 +00:00
..
alpha futex: Wireup futex_waitv syscall 2021-11-25 14:26:12 +01:00
arc Add linux/cacheflush.h 2021-11-17 10:36:15 -05:00
arm ARM: SoC fixes for v5.16, part 2 2021-11-25 10:31:37 -08:00
arm64 arm64: Make perf_callchain_kernel() use arch_stack_walk() 2021-12-10 14:06:03 +00:00
csky asm-generic: asm/syscall.h cleanup 2021-11-10 11:22:03 -08:00
h8300 Kbuild updates for v5.16 2021-11-08 09:15:45 -08:00
hexagon hexagon: ignore vmlinux.lds 2021-11-20 10:35:54 -08:00
ia64 futex: Wireup futex_waitv syscall 2021-11-25 14:26:12 +01:00
m68k asm-generic: syscall table updates 2021-11-25 10:41:28 -08:00
microblaze futex: Wireup futex_waitv syscall 2021-11-25 14:26:12 +01:00
mips - build fix for ZSTD enabled configs 2021-11-27 09:50:31 -08:00
nds32 Add linux/cacheflush.h 2021-11-17 10:36:15 -05:00
nios2 Add linux/cacheflush.h 2021-11-17 10:36:15 -05:00
openrisc Merge branch 'exit-cleanups-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2021-11-10 16:15:54 -08:00
parisc Fixes for 5.16 folios: 2021-11-25 10:13:56 -08:00
powerpc arch: Make ARCH_STACKWALK independent of STACKTRACE 2021-12-10 14:06:03 +00:00
riscv arch: Make ARCH_STACKWALK independent of STACKTRACE 2021-12-10 14:06:03 +00:00
s390 arch: Make ARCH_STACKWALK independent of STACKTRACE 2021-12-10 14:06:03 +00:00
sh asm-generic: syscall table updates 2021-11-25 10:41:28 -08:00
sparc asm-generic: syscall table updates 2021-11-25 10:41:28 -08:00
um Merge branch 'exit-cleanups-for-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2021-11-10 16:15:54 -08:00
x86 arch: Make ARCH_STACKWALK independent of STACKTRACE 2021-12-10 14:06:03 +00:00
xtensa asm-generic: syscall table updates 2021-11-25 10:41:28 -08:00
.gitignore
Kconfig arch: Add generic Kconfig option indicating page size smaller than 64k 2021-11-27 14:34:41 -08:00