[PATCH v2 00/12] locking/qspinlock: simplify code generation

Nicholas Piggin posted 12 patches 3 years, 9 months ago
arch/alpha/include/asm/Kbuild                 |   1 -
arch/arc/include/asm/Kbuild                   |   1 -
arch/arm/include/asm/mcs_spinlock.h           |  24 -
arch/arm64/include/asm/Kbuild                 |   1 -
arch/hexagon/include/asm/Kbuild               |   1 -
arch/ia64/include/asm/Kbuild                  |   1 -
arch/m68k/include/asm/Kbuild                  |   1 -
arch/microblaze/include/asm/Kbuild            |   1 -
arch/mips/include/asm/Kbuild                  |   1 -
arch/nios2/include/asm/Kbuild                 |   1 -
arch/parisc/include/asm/Kbuild                |   1 -
arch/powerpc/include/asm/Kbuild               |   1 -
arch/powerpc/include/asm/qspinlock.h          |  45 +-
arch/powerpc/include/asm/qspinlock_paravirt.h |   7 -
arch/powerpc/include/asm/spinlock.h           |   2 +-
arch/s390/include/asm/Kbuild                  |   1 -
arch/sh/include/asm/Kbuild                    |   1 -
arch/sparc/include/asm/Kbuild                 |   1 -
arch/um/include/asm/Kbuild                    |   1 -
arch/x86/hyperv/hv_spinlock.c                 |   2 +-
arch/x86/include/asm/Kbuild                   |   1 -
arch/x86/include/asm/qspinlock.h              |  19 +-
arch/x86/include/asm/qspinlock_paravirt.h     |  72 --
arch/x86/kernel/kvm.c                         |   2 +-
arch/x86/kernel/paravirt-spinlocks.c          |  71 ++
arch/x86/kernel/paravirt.c                    |   2 +-
arch/x86/xen/spinlock.c                       |   2 +-
arch/xtensa/include/asm/Kbuild                |   1 -
include/asm-generic/mcs_spinlock.h            |  13 -
include/asm-generic/qspinlock.h               |   6 +
kernel/locking/mcs_spinlock.h                 | 121 ---
kernel/locking/qspinlock.c                    | 835 ++++++++++++++----
kernel/locking/qspinlock_paravirt.h           | 562 ------------
33 files changed, 764 insertions(+), 1038 deletions(-)
delete mode 100644 arch/arm/include/asm/mcs_spinlock.h
delete mode 100644 arch/powerpc/include/asm/qspinlock_paravirt.h
delete mode 100644 arch/x86/include/asm/qspinlock_paravirt.h
delete mode 100644 include/asm-generic/mcs_spinlock.h
delete mode 100644 kernel/locking/mcs_spinlock.h
delete mode 100644 kernel/locking/qspinlock_paravirt.h
[PATCH v2 00/12] locking/qspinlock: simplify code generation
Posted by Nicholas Piggin 3 years, 9 months ago
This accounts for comments from last post. Thanks for the feedback.

Thanks,
Nick

v2:
- Remove BUILD_BUG_ON contradiction
- Add Longman's for pending bit for !paravirt case
- Make queued_spin_lock_mcs_queue __always_inline
- Drop cmpxchg_acquire->trylock patch that changed generated
  code slightly (and had wild indenting).
- Fix dropped acquire memory ordering in pv_wait_node cleanup
  (and renamed it to pv_wait_node_acquire).


Nicholas Piggin (12):
  locking/qspinlock: remove pv_node abstraction
  locking/qspinlock: inline mcs_spinlock functions into qspinlock
  locking/qspinlock: split common mcs queueing code into its own
    function
  locking/qspinlock: move pv lock word helpers into qspinlock.c
  locking/qspinlock: be less clever with the preprocessor
  locking/qspinlock: merge qspinlock_paravirt.h into qspinlock.c
  locking/qspinlock: remove arch qspinlock_paravirt.h includes
  locking/qspinlock: stop renaming queued_spin_lock_slowpath to
    native_queued_spin_lock_slowpath
  locking/qspinlock: rename __pv_init_lock_hash to pv_spinlocks_init
  locking/qspinlock: paravirt use simple trylock in case idx overflows
  locking/qspinlock: separate pv_wait_node from the non-paravirt path
  locking/qspinlock: simplify pv_wait_head_or_lock calling scheme

 arch/alpha/include/asm/Kbuild                 |   1 -
 arch/arc/include/asm/Kbuild                   |   1 -
 arch/arm/include/asm/mcs_spinlock.h           |  24 -
 arch/arm64/include/asm/Kbuild                 |   1 -
 arch/hexagon/include/asm/Kbuild               |   1 -
 arch/ia64/include/asm/Kbuild                  |   1 -
 arch/m68k/include/asm/Kbuild                  |   1 -
 arch/microblaze/include/asm/Kbuild            |   1 -
 arch/mips/include/asm/Kbuild                  |   1 -
 arch/nios2/include/asm/Kbuild                 |   1 -
 arch/parisc/include/asm/Kbuild                |   1 -
 arch/powerpc/include/asm/Kbuild               |   1 -
 arch/powerpc/include/asm/qspinlock.h          |  45 +-
 arch/powerpc/include/asm/qspinlock_paravirt.h |   7 -
 arch/powerpc/include/asm/spinlock.h           |   2 +-
 arch/s390/include/asm/Kbuild                  |   1 -
 arch/sh/include/asm/Kbuild                    |   1 -
 arch/sparc/include/asm/Kbuild                 |   1 -
 arch/um/include/asm/Kbuild                    |   1 -
 arch/x86/hyperv/hv_spinlock.c                 |   2 +-
 arch/x86/include/asm/Kbuild                   |   1 -
 arch/x86/include/asm/qspinlock.h              |  19 +-
 arch/x86/include/asm/qspinlock_paravirt.h     |  72 --
 arch/x86/kernel/kvm.c                         |   2 +-
 arch/x86/kernel/paravirt-spinlocks.c          |  71 ++
 arch/x86/kernel/paravirt.c                    |   2 +-
 arch/x86/xen/spinlock.c                       |   2 +-
 arch/xtensa/include/asm/Kbuild                |   1 -
 include/asm-generic/mcs_spinlock.h            |  13 -
 include/asm-generic/qspinlock.h               |   6 +
 kernel/locking/mcs_spinlock.h                 | 121 ---
 kernel/locking/qspinlock.c                    | 835 ++++++++++++++----
 kernel/locking/qspinlock_paravirt.h           | 562 ------------
 33 files changed, 764 insertions(+), 1038 deletions(-)
 delete mode 100644 arch/arm/include/asm/mcs_spinlock.h
 delete mode 100644 arch/powerpc/include/asm/qspinlock_paravirt.h
 delete mode 100644 arch/x86/include/asm/qspinlock_paravirt.h
 delete mode 100644 include/asm-generic/mcs_spinlock.h
 delete mode 100644 kernel/locking/mcs_spinlock.h
 delete mode 100644 kernel/locking/qspinlock_paravirt.h

-- 
2.35.1