]> www.infradead.org Git - users/hch/xfs.git/commit
Merge branch 'runtime-constants'
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 15 Jul 2024 15:36:13 +0000 (08:36 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 15 Jul 2024 15:36:13 +0000 (08:36 -0700)
commita5819099f601c1af5b86b1f5921a56859e45b19a
tree797e26cbdc5d45e97dd3cd92b27c754c8702d9ec
parent0c3836482481200ead7b416ca80c68a29cfdaabd
parent94a2bc0f611cd9fa4d26e4679bf7ea4b01b12d56
Merge branch 'runtime-constants'

Merge runtime constants infrastructure with implementations for x86 and
arm64.

This is one of four branches that came out of me looking at profiles of
my kernel build filesystem load on my 128-core Altra arm64 system, where
pathname walking and the user copies (particularly strncpy_from_user()
for fetching the pathname from user space) is very hot.

This is a very specialized "instruction alternatives" model where the
dentry hash pointer and hash count will be constants for the lifetime of
the kernel, but the allocation are not static but done early during the
kernel boot.  In order to avoid the pointer load and dynamic shift, we
just rewrite the constants in the instructions in place.

We can't use the "generic" alternative instructions infrastructure,
because different architectures do it very differently, and it's
actually simpler to just have very specific helpers, with a fallback to
the generic ("old") model of just using variables for architectures that
do not implement the runtime constant patching infrastructure.

Link: https://lore.kernel.org/all/CAHk-=widPe38fUNjUOmX11ByDckaeEo9tN4Eiyke9u1SAtu9sA@mail.gmail.com/
* runtime-constants:
  arm64: add 'runtime constant' support
  runtime constants: add x86 architecture support
  runtime constants: add default dummy infrastructure
  vfs: dcache: move hashlen_hash() from callers into d_hash()
fs/dcache.c