# git rev-parse -q --verify c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3^{commit} c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 already have revision, skipping fetch # git checkout -q -f -B kisskb c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # git clean -qxdf # < git log -1 # commit c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # Author: Mateusz Guzik # Date: Sat Aug 12 18:15:54 2023 +0200 # # locking: remove spin_lock_prefetch # # The only remaining consumer is new_inode, where it showed up in 2001 as # commit c37fa164f793 ("v2.4.9.9 -> v2.4.9.10") in a historical repo [1] # with a changelog which does not mention it. # # Since then the line got only touched up to keep compiling. # # While it may have been of benefit back in the day, it is guaranteed to # at best not get in the way in the multicore setting -- as the code # performs *a lot* of work between the prefetch and actual lock acquire, # any contention means the cacheline is already invalid by the time the # routine calls spin_lock(). It adds spurious traffic, for short. # # On top of it prefetch is notoriously tricky to use for single-threaded # purposes, making it questionable from the get go. # # As such, remove it. # # I admit upfront I did not see value in benchmarking this change, but I # can do it if that is deemed appropriate. # # Removal from new_inode and of the entire thing are in the same patch as # requested by Linus, so whatever weird looks can be directed at that guy. # # Link: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/fs/inode.c?id=c37fa164f793735b32aa3f53154ff1a7659e6442 [1] # Signed-off-by: Mateusz Guzik # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # make -s -j 40 ARCH=x86 O=/kisskb/build/linus_x86_64_defconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- x86_64_defconfig # < make -s -j 40 ARCH=x86 O=/kisskb/build/linus_x86_64_defconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- help # make -s -j 40 ARCH=x86 O=/kisskb/build/linus_x86_64_defconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- olddefconfig # make -s -j 40 ARCH=x86 O=/kisskb/build/linus_x86_64_defconfig_x86_64-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.5.0-nolibc/x86_64-linux/bin/x86_64-linux- Completed OK # rm -rf /kisskb/build/linus_x86_64_defconfig_x86_64-gcc8 # Build took: 0:01:29.012668