[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240610204821.230388-1-torvalds@linux-foundation.org>
Date: Mon, 10 Jun 2024 13:48:14 -0700
From: Linus Torvalds <torvalds@...ux-foundation.org>
To: Peter Anvin <hpa@...or.com>,
Ingo Molnar <mingo@...nel.org>,
Borislav Petkov <bp@...en8.de>,
Thomas Gleixner <tglx@...utronix.de>,
Rasmus Villemoes <linux@...musvillemoes.dk>,
Josh Poimboeuf <jpoimboe@...nel.org>,
Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
the arch/x86 maintainers <x86@...nel.org>,
linux-arm-kernel@...ts.infradead.org,
linux-arch <linux-arch@...r.kernel.org>,
Linus Torvalds <torvalds@...ux-foundation.org>
Subject: [PATCH 0/7] arm64 / x86-64: low-level code generation issues
So this is the result of me doing some profiling on my 128-core Altra
box. I've sent out versions of this before, but they've all been fairly
ugly partial series.
This is the full cleaned-up series with patches split up to be logical,
and with fixes from some of the commentary from previous patches.
The first four patches are for the 'runtime constant' code, where I did
the initial implementation on x86-64 just because I was more comfy with
that, and the arm64 version of it came once I had the x86-64 side
working.
The horror that is __d_lookup_rcu() shows up a lot more on my Altra box
because of the relatively pitiful caches, but it's something that I've
wanted on x86-64 before. The arm64 numbers just made me bite the
bullet on the whole runtime constant thing.
The last three patches are purely arm64-specific, and just fix up some
nasty code generation in the user access functions. I just noticed that
I will need to implement 'user_access_save()' for KCSAN now that I do
the unsafe user access functions.
Anyway, that 'user_access_save/restore()' issue only shows up with
KCSAN. And it would be a no-op thanks to arm64 doing SMAP the right way
(pet peeve: arm64 did what I told the x86 designers to do originally,
but they claimed was too hard, so we ended up with that CLAC/STAC
instead)...
Sadly that "no-op for KCSAN" would is except for the horrid
CONFIG_ARM64_SW_TTBR0_PAN case, which is why I'm not touching it. I'm
hoping some hapless^Whelpful arm64 person is willing to tackle this (or
maybe make KCSAN and ARM64_SW_TTBR0_PAN incompatible in the Kconfig).
Note: the final access_ok() change in 7/7 is a API relaxation and
cleanup, and as such much more worrisome than the other patches. It's
_simpler_ than the other patches, but the others aren't intended to
really change behavior. That one does.
Linus Torvalds (7):
vfs: dcache: move hashlen_hash() from callers into d_hash()
add default dummy 'runtime constant' infrastructure
x86: add 'runtime constant' support
arm64: add 'runtime constant' support
arm64: start using 'asm goto' for get_user() when available
arm64: start using 'asm goto' for put_user() when available
arm64: access_ok() optimization
arch/arm64/include/asm/runtime-const.h | 75 ++++++++++
arch/arm64/include/asm/uaccess.h | 191 +++++++++++++++++--------
arch/arm64/kernel/mte.c | 12 +-
arch/arm64/kernel/vmlinux.lds.S | 3 +
arch/x86/include/asm/runtime-const.h | 61 ++++++++
arch/x86/kernel/vmlinux.lds.S | 3 +
fs/dcache.c | 17 ++-
include/asm-generic/Kbuild | 1 +
include/asm-generic/runtime-const.h | 15 ++
include/asm-generic/vmlinux.lds.h | 8 ++
10 files changed, 319 insertions(+), 67 deletions(-)
create mode 100644 arch/arm64/include/asm/runtime-const.h
create mode 100644 arch/x86/include/asm/runtime-const.h
create mode 100644 include/asm-generic/runtime-const.h
--
2.45.1.209.gc6f12300df
Powered by blists - more mailing lists