s390: implement perf_arch_fetch_caller_regs
authorIlya Leoshkevich <iii@linux.ibm.com>
Thu, 4 Jul 2019 14:18:15 +0000 (16:18 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Sat, 30 Nov 2019 09:52:44 +0000 (10:52 +0100)
commit914d52e46490b6599b7f03fad233f4f19bf23cf7
treefc4a50362037e203cfacff290f77f8db02df8fb6
parentea1f56fa16ae5f6e67f6ea03836b36c6053d33d1
s390: implement perf_arch_fetch_caller_regs

On s390 bpf_get_stack_raw_tp() returns 0 entries for both kernel and
user stacks. While there is no practical unwinding solution for userspace
on s390 at this moment, there certainly is a kernel unwinder. However,
it is not properly integrated with BPF.

In order to start unwinding, bpf_get_stack_raw_tp() obtains the current
kernel register values using perf_fetch_caller_regs(), which is not
implemented for s390. The actual unwinding then happens by passing those
registers to perf_callchain_kernel().

Implement perf_arch_fetch_caller_regs() for s390, where
__builtin_frame_address(0) points to back_chain.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/perf_event.h