From: Ludwig Rydberg <ludwig.rydberg@gaisler.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-trace-kernel@vger.kernel.org, mhiramat@kernel.org,
mathieu.desnoyers@efficios.com,
Andreas Larsson <andreas@gaisler.com>
Subject: Re: [BUG] spinlock recursion when enabling function tracer on 32-bit
Date: Wed, 18 Dec 2024 22:05:20 +0100 [thread overview]
Message-ID: <bb8485bf-d720-4803-aa3c-037ea1169f8a@gaisler.com> (raw)
In-Reply-To: <20241218110115.29d4cc77@gandalf.local.home>
On 2024-12-18 17:01, Steven Rostedt wrote:
> Hmm, we do have recursion protection, but it allows one loop to handle
> transitions between normal and interrupt context. If we stop that
> transition for archs that use the generic atomic64, I wonder if that would
> fix things.
>
> Can you try this patch?
Thanks!
I applied the patch and did some testing and the initial issue I reported
seems to have been fixed but unfortunately I'm still able to trigger
a spinlock recursion.
The following sequence works fine with the patch applied:
# echo function > current_tracer
# echo 1 > tracing_on
# usleep 1
# echo 0 > tracing_on
# cat trace
# ...
But this triggers a spinlock recursion:
# echo 1 > tracing_on
# find /
[ 61.276675] BUG: spinlock recursion on CPU#0, find/119
[ 61.277571] lock: 0xc1c076c0, .magic: dead4ead, .owner: find/119, .owner_cpu: 0
[ 61.278365] CPU: 0 UID: 0 PID: 119 Comm: find Not tainted 6.13.0-rc3 #5
[ 61.278724] Hardware name: riscv-virtio,qemu (DT)
[ 61.278994] Call Trace:
[ 61.279351] dump_backtrace (arch/riscv/kernel/stacktrace.c:131)
[ 61.279848] show_stack (arch/riscv/kernel/stacktrace.c:137)
[ 61.280022] dump_stack_lvl (lib/dump_stack.c:122)
[ 61.280202] dump_stack (lib/dump_stack.c:130)
[ 61.280372] spin_dump (kernel/locking/spinlock_debug.c:71)
[ 61.280534] do_raw_spin_lock (kernel/locking/spinlock_debug.c:78 kernel/locking/spinlock_debug.c:87 kernel/locking/spinlock_debug.c:115)
[ 61.280714] _raw_spin_lock_irqsave (kernel/locking/spinlock.c:163)
[ 61.280905] generic_atomic64_read (lib/atomic64.c:51)
[ 61.281091] __rb_reserve_next.constprop.0 (kernel/trace/ring_buffer.c:608 kernel/trace/ring_buffer.c:4265)
[ 61.281299] ring_buffer_lock_reserve (kernel/trace/ring_buffer.c:4457 (discriminator 2) kernel/trace/ring_buffer.c:4514 (discriminator 2))
[ 61.281496] trace_function (kernel/trace/trace.c:1021 kernel/trace/trace.c:2906)
[ 61.281672] function_trace_call (kernel/trace/trace_functions.c:222)
[ 61.281859] ftrace_call (arch/riscv/kernel/mcount-dyn.S:178)
[ 61.282030] inode_query_iversion (fs/libfs.c:2050)
[ 61.282217] ext4_readdir (fs/ext4/dir.c:597 fs/ext4/dir.c:143)
[ 61.282393] iterate_dir (fs/readdir.c:109)
[ 61.282562] __se_sys_getdents64 (fs/readdir.c:403 fs/readdir.c:389)
[ 61.282758] __riscv_sys_getdents64 (fs/readdir.c:389)
[ 61.282945] do_trap_ecall_u (./arch/riscv/include/asm/syscall.h:90 (discriminator 1) arch/riscv/kernel/traps.c:331 (discriminator 1))
[ 61.283121] handle_exception (arch/riscv/kernel/entry.S:198)
// Ludwig
next prev parent reply other threads:[~2024-12-18 21:05 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-18 14:57 [BUG] spinlock recursion when enabling function tracer on 32-bit Ludwig Rydberg
2024-12-18 16:01 ` Steven Rostedt
2024-12-18 21:05 ` Ludwig Rydberg [this message]
2024-12-18 21:35 ` Steven Rostedt
2024-12-20 13:55 ` Ludwig Rydberg
2024-12-20 15:05 ` Steven Rostedt
2024-12-21 0:06 ` Ludwig Rydberg
2025-01-20 14:41 ` Ludwig Rydberg
2025-01-20 22:37 ` Steven Rostedt
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=bb8485bf-d720-4803-aa3c-037ea1169f8a@gaisler.com \
--to=ludwig.rydberg@gaisler.com \
--cc=andreas@gaisler.com \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=rostedt@goodmis.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.