# 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-11.3.0-nolibc/sh4-linux/bin/sh4-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-11.3.0-nolibc/sh4-linux/bin/sh4-linux-ld --version # < git log --format=%s --max-count=1 c8afaa1b0f8bc93d013ab2ea6b9649958af3f1d3 # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/sh4-linux/bin/sh4-linux- allyesconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # < make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/sh4-linux/bin/sh4-linux- help # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/sh4-linux/bin/sh4-linux- olddefconfig # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/sh4-linux/bin/sh4-linux- Generating include/generated/machtypes.h :1519:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S: Assembler messages: /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:85: Warning: overflow in branch to __restore_all; converted into longer instruction sequence /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:357: Warning: overflow in branch to syscall_exit_work; converted into longer instruction sequence /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:360: Warning: overflow in branch to syscall_exit_work; converted into longer instruction sequence {standard input}: Assembler messages: {standard input}: Warning: end of file not at end of a line; newline inserted {standard input}:1097: Error: unknown pseudo-op: `.glo' sh4-linux-gcc: internal compiler error: Segmentation fault signal terminated program cc1 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make[6]: *** [/kisskb/src/scripts/Makefile.build:243: drivers/net/pcs/pcs-xpcs.o] Error 4 make[5]: *** [/kisskb/src/scripts/Makefile.build:480: drivers/net/pcs] Error 2 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:480: drivers/net] Error 2 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [/kisskb/src/scripts/Makefile.build:480: drivers] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/Makefile:2032: .] Error 2 make[1]: *** [/kisskb/src/Makefile:234: __sub-make] Error 2 make: *** [Makefile:234: __sub-make] Error 2 Command 'make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/sh4-linux/bin/sh4-linux- ' returned non-zero exit status 2. # rm -rf /kisskb/build/linus_allyesconfig_sh4-gcc11 # Build took: 0:06:21.589687