--- v5
+++ v6
@@ -13,10 +13,23 @@
- A good discussion at Platform HSC.2021-03-08:
https://drive.google.com/drive/folders/1ooqdnIsYx7XKor5O1XTtM6D1CHp4hc0p
+ - A good discussion on V4 in mailling list:
+ https://lore.kernel.org/linux-riscv/1616868399-82848-1-git-send-email-guoren@kernel.org/T/#t
+
+ - Openrisc's maintainer want to implement arch_cmpxchg infrastructure.
+ https://lore.kernel.org/linux-riscv/1616868399-82848-1-git-send-email-guoren@kernel.org/T/#m11b712fb6a4fda043811b1f4c3d61446951ed65a
+
Hope your comments and Tested-by or Co-developed-by or Reviewed-by ...
Let's kick the qspinlock into riscv right now (Also for the
architecture which hasn't xchg16 atomic instruction.)
+
+Change V6:
+ - Add ticket-lock for riscv, default is qspinlock
+ - Keep ticket-lock for csky, default is ticketlock
+ - Using smp_cond_load for riscv ticket-lock
+ - Optimize csky ticketlock with smp_cond_load, store_release
+ - Add PPC_LBARX_LWARX for powerpc
Change V5:
- Fixup #endif comment typo by Waiman
@@ -36,32 +49,34 @@
- Re-implement short xchg
- Remove char & cmpxchg implementations
-Guo Ren (6):
+Guo Ren (8):
locking/qspinlock: Add ARCH_USE_QUEUED_SPINLOCKS_XCHG32
+ riscv: locks: Introduce ticket-based spinlock implementation
+ csky: locks: Optimize coding convention
csky: Convert custom spinlock/rwlock to generic qspinlock/qrwlock
- powerpc/qspinlock: Add ARCH_USE_QUEUED_SPINLOCKS_XCHG32
openrisc: qspinlock: Add ARCH_USE_QUEUED_SPINLOCKS_XCHG32
sparc: qspinlock: Add ARCH_USE_QUEUED_SPINLOCKS_XCHG32
xtensa: qspinlock: Add ARCH_USE_QUEUED_SPINLOCKS_XCHG32
+ powerpc/qspinlock: Add ARCH_USE_QUEUED_SPINLOCKS_XCHG32
Michael Clark (1):
riscv: Convert custom spinlock/rwlock to generic qspinlock/qrwlock
- arch/csky/Kconfig | 2 +
+ arch/csky/Kconfig | 8 ++
arch/csky/include/asm/Kbuild | 2 +
- arch/csky/include/asm/spinlock.h | 82 +--------------
- arch/csky/include/asm/spinlock_types.h | 16 +--
+ arch/csky/include/asm/spinlock.h | 15 +--
+ arch/csky/include/asm/spinlock_types.h | 4 +
arch/openrisc/Kconfig | 1 +
arch/powerpc/Kconfig | 1 +
- arch/riscv/Kconfig | 3 +
+ arch/riscv/Kconfig | 8 ++
arch/riscv/include/asm/Kbuild | 3 +
- arch/riscv/include/asm/spinlock.h | 126 +-----------------------
- arch/riscv/include/asm/spinlock_types.h | 15 +--
+ arch/riscv/include/asm/spinlock.h | 158 +++++++++---------------
+ arch/riscv/include/asm/spinlock_types.h | 26 ++--
arch/sparc/Kconfig | 1 +
arch/xtensa/Kconfig | 1 +
kernel/Kconfig.locks | 3 +
- kernel/locking/qspinlock.c | 46 +++++----
- 14 files changed, 49 insertions(+), 253 deletions(-)
+ kernel/locking/qspinlock.c | 46 +++----
+ 14 files changed, 142 insertions(+), 135 deletions(-)
--
2.17.1