• Mateusz Guzik's avatar
    locking: remove spin_lock_prefetch · c8afaa1b
    Mateusz Guzik authored
    The only remaining consumer is new_inode, where it showed up in 2001 as
    commit c37fa164 ("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: default avatarMateusz Guzik <mjguzik@gmail.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c8afaa1b
processor.h 18.7 KB