From: Al Viro <viro@zeniv.linux.org.uk>
To: "Vlastimil Babka (SUSE)" <vbabka@kernel.org>
Cc: linux-mm@kvack.org, Vlastimil Babka <vbabka@suse.cz>,
Harry Yoo <harry.yoo@oracle.com>,
linux-fsdevel@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Mateusz Guzik <mjguzik@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH v3 00/10] kmem_cache instances with static storage duration
Date: Wed, 24 Jun 2026 01:48:28 +0100 [thread overview]
Message-ID: <20260624004828.GI2636677@ZenIV> (raw)
In-Reply-To: <151b1c96-0ed5-44ce-b9d5-86a48d8ad592@kernel.org>
On Tue, Jun 23, 2026 at 10:09:41AM +0200, Vlastimil Babka (SUSE) wrote:
> But the argument for doing the static duration support is that it should be
> faster, not just "not slower"? So is runtime_const equivalent or for some
> fundamental reason it's slower than plain &?
Yes, on any 64bit RISC. And if nothing else, arm64 has enough users to care
about. runtime_const for _shifts_ tends to be nice and easy; for pointers...
not really.
Compiler does *not* build the address of global variable in a sequence of
shifts and bitwise operations when it needs to pass it to a function.
runtime_const_ptr() must be able to handle an arbitrary address; it can't
avoid doing the general "build a 64bit value in register", which tends to
be nasty on RISC.
If you want real ugliness, take a look at riscv - AFAICS, they wanted to
avoid a long dependency chain, so they load chunks of constant into 4 registers,
then shift and combine those. arm64 doesn't bother; IIRC, the hardware does
recognize this sequence, but I wouldn't swear on that.
> Or is the advantage that static caches can support modules and runtime_const
> can't?
Probably, but I'm not ready to give examples at the moment. There definitely
used to be __getname() users in modules, but that stopped using names_cache.
next prev parent reply other threads:[~2026-06-24 0:48 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-10 4:02 [RFC PATCH 00/15] kmem_cache instances with static storage duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 01/15] static kmem_cache instances for core caches Al Viro
2026-01-10 5:40 ` Matthew Wilcox
2026-01-10 6:23 ` Al Viro
2026-01-14 7:30 ` Harry Yoo
2026-01-14 7:38 ` Al Viro
2026-01-15 16:59 ` Vlastimil Babka
2026-06-11 17:13 ` Al Viro
2026-06-11 17:14 ` [PATCH v2 0/9] kmem_cache instances with static storage duration Al Viro
2026-06-11 17:14 ` [PATCH v2 1/9] static kmem_cache instances for core caches Al Viro
2026-06-11 17:14 ` [PATCH v2 2/9] allow static-duration kmem_cache in modules Al Viro
2026-06-11 17:14 ` [PATCH v2 3/9] VFS caches: switch from runtime_const() machinery to slab-static.h Al Viro
2026-06-11 17:14 ` [PATCH v2 4/9] make inode_cache statically allocated Al Viro
2026-06-11 17:14 ` [PATCH v2 5/9] make mnt_cache " Al Viro
2026-06-11 17:14 ` [PATCH v2 6/9] make bh_cachep " Al Viro
2026-06-11 17:14 ` [PATCH v2 7/9] make seq_file_cache " Al Viro
2026-06-11 17:14 ` [PATCH v2 8/9] make thread component caches (fs_cachep, files_cachep, etc.) " Al Viro
2026-06-11 17:14 ` [PATCH v2 9/9] make ufs_inode_cache " Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 00/10] kmem_cache instances with static storage duration Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 01/10] static kmem_cache instances for core caches: infrastructure Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 02/10] static kmem_cache instances for core caches: setup primitives Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 03/10] allow preallocated kmem_cache instances in modules Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 04/10] VFS caches: switch from runtime_const() machinery to slab-static.h Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 05/10] make inode_cache statically allocated Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 06/10] make mnt_cache " Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 07/10] make bh_cachep " Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 08/10] make seq_file_cache " Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 09/10] make thread component caches (fs_cachep, files_cachep, etc.) " Al Viro
2026-06-13 5:09 ` [RFC PATCH v3 10/10] make ufs_inode_cache " Al Viro
2026-06-23 8:09 ` [RFC PATCH v3 00/10] kmem_cache instances with static storage duration Vlastimil Babka (SUSE)
2026-06-24 0:48 ` Al Viro [this message]
2026-01-10 4:02 ` [RFC PATCH 02/15] allow static-duration kmem_cache in modules Al Viro
2026-01-10 4:02 ` [RFC PATCH 03/15] make mnt_cache static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 04/15] turn thread_cache static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 05/15] turn signal_cache static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 06/15] turn bh_cachep static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 07/15] turn dentry_cache static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 08/15] turn files_cachep static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 09/15] make filp and bfilp caches static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 10/15] turn sighand_cache static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 11/15] turn mm_cachep static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 12/15] turn task_struct_cachep static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 13/15] turn fs_cachep static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 14/15] turn inode_cachep static-duration Al Viro
2026-01-10 4:02 ` [RFC PATCH 15/15] turn ufs_inode_cache static-duration Al Viro
2026-01-10 5:33 ` [RFC PATCH 00/15] kmem_cache instances with static storage duration Linus Torvalds
2026-01-10 6:16 ` Al Viro
2026-01-14 7:12 ` Harry Yoo
2026-01-15 0:46 ` Christoph Lameter (Ampere)
2026-01-15 2:08 ` Al Viro
2026-01-15 19:10 ` Christoph Lameter (Ampere)
2026-01-15 19:44 ` Al Viro
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=20260624004828.GI2636677@ZenIV \
--to=viro@zeniv.linux.org.uk \
--cc=brauner@kernel.org \
--cc=harry.yoo@oracle.com \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mjguzik@gmail.com \
--cc=torvalds@linux-foundation.org \
--cc=vbabka@kernel.org \
--cc=vbabka@suse.cz \
/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