Re: [PATCH v2 5/6] debugfs: add debugfs_create_atomic64_t for atomic64_t
From: Linus Torvalds
Date: Wed Apr 05 2023 - 11:26:48 EST
On Tue, Apr 4, 2023 at 7:27 PM Luis Chamberlain <mcgrof@xxxxxxxxxx> wrote:
>
> Sometimes you want to add debugfs entries for atomic counters which
> can be pretty large using atomic64_t. Add support for these.
So I realize why you use atomic64, but I really suspect you'd be
better off with just the regular "atomic_long".
This is not some debug stat that we care deeply about on 32-bit, and
"atomic64" is often really really nasty on 32-bit architectures.
For example, on x86, instead of being a single instruction, it ends up
being a cmpxchg loop. In fact, even a single atomic read is a cmpxchg
(admittedly without the need for looping).
And yeah, I realize that we don't have a "atomic_long" debugfs
interface either. But I think we could just use atomic_long for the
module code (avoiding all the horrors of 64-bit atomics on 32-bit
architectures), and then using just 'var->counter' for the value. It's
not like the debugfs stuff actually does any truly atomic updates.
So something like
debugfs_create_ulong(... &val->counter ..);
instead of
debugfs_create_atomic64(... &val ..);
Hmm?
I dunno. I just think this is not something that may be worth
introducing a new thing for, when it is *so* painful on 32-bit, and
doesn't seem worth it.
Linus