From: Jens Remus <jremus@linux.ibm.com>
To: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, x86@kernel.org,
Steven Rostedt <rostedt@kernel.org>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Ilya Leoshkevich <iii@linux.ibm.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andrii Nakryiko <andrii@kernel.org>,
Indu Bhagat <indu.bhagat@oracle.com>,
"Jose E. Marchesi" <jemarch@gnu.org>,
Beau Belgrave <beaub@linux.microsoft.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jens Axboe <axboe@kernel.dk>, Florian Weimer <fweimer@redhat.com>,
Sam James <sam@gentoo.org>
Subject: Re: [RFC PATCH v1 12/16] unwind_user/backchain: Introduce back chain user space unwinding
Date: Thu, 17 Jul 2025 14:20:12 +0200 [thread overview]
Message-ID: <63665c54-db44-452f-b321-1162ff6c3fe4@linux.ibm.com> (raw)
In-Reply-To: <a4dd5okskro2h45zmqgg3etj6uwici2hoop2uaf6iqrlaej7yh@xlduwjqke4ec>
On 17.07.2025 04:06, Josh Poimboeuf wrote:
> On Thu, Jul 10, 2025 at 06:35:18PM +0200, Jens Remus wrote:
>> @@ -66,12 +73,20 @@ static int unwind_user_next(struct unwind_user_state *state)
>> /* sframe expects the frame to be local storage */
>> frame = &_frame;
>> if (sframe_find(state->ip, frame, topmost)) {
>> - if (!IS_ENABLED(CONFIG_HAVE_UNWIND_USER_FP))
>> - goto done;
>> - frame = &fp_frame;
>> + if (IS_ENABLED(CONFIG_HAVE_UNWIND_USER_FP)) {
>> + frame = &fp_frame;
>> + } else if (IS_ENABLED(CONFIG_HAVE_UNWIND_USER_BACKCHAIN)) {
>> + if (unwind_user_backchain_next(state))
>> + goto done;
>> + goto done_backchain;
>> + }
>> }
>> } else if (fp_state(state)) {
>> frame = &fp_frame;
>> + } else if (backchain_state(state)) {
>> + if (unwind_user_backchain_next(state))
>> + goto done;
>> + goto done_backchain;
>> } else {
>> goto done;
>> }
>> @@ -153,6 +168,7 @@ static int unwind_user_next(struct unwind_user_state *state)
>>
>> arch_unwind_user_next(state);
>>
>> +done_backchain:
>> state->topmost = false;
>> return 0;
>
> This feels very grafted on, is there not some way to make it more
> generic, i.e., to just work with CONFIG_HAVE_UNWIND_USER_FP?
I agree. It could probably be made to compute the cfa_off and ra.offset
or ra.regnum. Let me explore that, provided there would be any acceptance
for unwind user backchain at all. Note that Power is using backchain as
well, so they may want to build on that as well.
> Also, if distros aren't even compiling with -mbackchain, I wonder if we
> can just not do this altogether :-)
My original intent was to use unwind user's for_each_user_frame() to
replace the exiting stack tracing logic in arch_stack_walk_user_common()
in arch/s390/kernel/stacktrace.c, which currently supports backchain.
Given that for_each_user_frame() was made private in the latest unwind
user series version hinders me. The use was also low, because the
currentl arch_stack_walk_user_common() implementation does not support
page faults, so that the attempt to use unwind user sframe would always
fail and fallback to unwind user backchain. My hope was that somebody
with more Kernel skills could give me a few hints at how it could be
made to support deferred unwind. :-)
Regards,
Jens
--
Jens Remus
Linux on Z Development (D3303)
+49-7031-16-1128 Office
jremus@de.ibm.com
IBM
IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats: Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft: Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM Data Privacy Statement: https://www.ibm.com/privacy/
next prev parent reply other threads:[~2025-07-17 12:20 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-10 16:35 [RFC PATCH v1 00/16] s390: SFrame " Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 01/16] fixup! unwind_user: Add frame pointer support Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 02/16] s390: asm/dwarf.h should only be included in assembly files Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 03/16] s390/vdso: Avoid emitting DWARF CFI for non-vDSO Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 04/16] s390/vdso: Enable SFrame generation in vDSO Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 05/16] s390/vdso: Keep function symbols " Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 06/16] unwind_user: Enable archs that define CFA = SP_callsite + offset Jens Remus
2025-07-16 21:32 ` Josh Poimboeuf
2025-07-17 9:27 ` Jens Remus
2025-07-18 4:51 ` Josh Poimboeuf
2025-07-10 16:35 ` [RFC PATCH v1 07/16] unwind_user: Enable archs that do not necessarily save RA Jens Remus
2025-07-16 23:01 ` Josh Poimboeuf
2025-07-17 11:09 ` Jens Remus
2025-07-18 8:28 ` Jens Remus
2025-07-18 16:59 ` Josh Poimboeuf
2025-07-21 14:25 ` Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 08/16] unwind_user: Enable archs that save RA/FP in other registers Jens Remus
2025-07-17 2:01 ` Josh Poimboeuf
2025-07-17 2:50 ` Josh Poimboeuf
2025-07-17 12:07 ` Jens Remus
2025-07-18 4:52 ` Josh Poimboeuf
2025-07-17 3:57 ` Steven Rostedt
2025-07-17 7:24 ` Josh Poimboeuf
2025-07-17 12:05 ` Steven Rostedt
2025-07-17 11:28 ` Jens Remus
2025-07-17 12:10 ` Steven Rostedt
2025-07-18 4:51 ` Josh Poimboeuf
2025-07-10 16:35 ` [RFC PATCH v1 09/16] unwind_user/sframe: Enable archs with encoded SFrame CFA offsets Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 10/16] s390/ptrace: Enable HAVE_USER_RA_REG Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 11/16] s390/unwind_user/sframe: Enable HAVE_UNWIND_USER_SFRAME Jens Remus
2025-08-01 12:53 ` Heiko Carstens
2025-08-01 15:46 ` Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 12/16] unwind_user/backchain: Introduce back chain user space unwinding Jens Remus
2025-07-17 2:06 ` Josh Poimboeuf
2025-07-17 12:20 ` Jens Remus [this message]
2025-07-18 5:19 ` Josh Poimboeuf
2025-08-01 12:36 ` Heiko Carstens
2025-08-01 15:49 ` Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 13/16] s390/unwind_user/backchain: Enable HAVE_UNWIND_USER_BACKCHAIN Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 14/16] PREREQ: x86/asm: Avoid emitting DWARF CFI for non-VDSO Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 15/16] PREREQ: x86/vdso: Enable sframe generation in VDSO Jens Remus
2025-07-10 16:35 ` [RFC PATCH v1 16/16] WIP: fixup! s390/unwind_user/sframe: Enable HAVE_UNWIND_USER_SFRAME Jens Remus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=63665c54-db44-452f-b321-1162ff6c3fe4@linux.ibm.com \
--to=jremus@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=axboe@kernel.dk \
--cc=beaub@linux.microsoft.com \
--cc=bpf@vger.kernel.org \
--cc=fweimer@redhat.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=indu.bhagat@oracle.com \
--cc=jemarch@gnu.org \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@kernel.org \
--cc=sam@gentoo.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®