locking/qspinlock: simplify code generation
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest12 patches 1 replyIn review
- v113 patches 24 repliesSuperseded
Changes in v2 from the cover letter
- 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).
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/12 | locking/qspinlock: remove pv_node abstractionkernel/ kernel/ | +15 | 0 replies | |
| 2/12 | locking/qspinlock: inline mcs_spinlock functions into qspinlockarch/ arch/ arch/ +19 more | +43 | 0 replies | |
| 3/12 | locking/qspinlock: split common mcs queueing code into its own functionkernel/ | +108 | 0 replies | |
| 4/12 | locking/qspinlock: move pv lock word helpers into qspinlock.ckernel/ kernel/ | +65 | 0 replies | |
| 5/12 | locking/qspinlock: be less clever with the preprocessorkernel/ kernel/ | +52 | 0 replies | |
| 6/12 | locking/qspinlock: merge qspinlock_paravirt.h into qspinlock.ckernel/ kernel/ | +487 | 1 reply | |
| 7/12 | locking/qspinlock: remove arch qspinlock_paravirt.h includesarch/ arch/ arch/ +2 more | +76 | 0 replies | |
| 8/12 | locking/qspinlock: stop renaming queued_spin_lock_slowpath to native_queued_spin_lock_slowpatharch/ arch/ arch/ +1 more | +26 | 0 replies | |
| 9/12 | locking/qspinlock: rename __pv_init_lock_hash to pv_spinlocks_initarch/ arch/ arch/ +5 more | +11 | 0 replies | |
| 10/12 | locking/qspinlock: paravirt use simple trylock in case idx overflowskernel/ | +2 | 0 replies | |
| 11/12 | locking/qspinlock: separate pv_wait_node from the non-paravirt pathkernel/ | +16 | 0 replies | |
| 12/12 | locking/qspinlock: simplify pv_wait_head_or_lock calling schemekernel/ | +15 | 0 replies |
Reviews trailers per patch
1 of 12 patches has a Reviewed-by or Acked-by.
| Patch | Boqun Feng |
|---|---|
| 1/12 | A-b |
| 2/12 | |
| 3/12 | |
| 4/12 | |
| 5/12 | |
| 6/12 | |
| 7/12 | |
| 8/12 | |
| 9/12 | |
| 10/12 | |
| 11/12 | |
| 12/12 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v2 00/12] locking/qspinlock: simplify code generation
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
Signature · 1 line
2.35.1