Merge patch series "riscv: enable lockless lockref implementation"
authorPalmer Dabbelt <palmer@rivosinc.com>
Wed, 24 Apr 2024 19:57:51 +0000 (12:57 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 30 Apr 2024 17:35:46 +0000 (10:35 -0700)
commit7845f52256e7b8bc97d17b629ea03c87775f2b48
tree7a3939079c6c155159b9b64892c7b0d74ec4f568
parentdcb2743d1e701fc1a986c187adc11f6148316d21
parent79d6e4eae9662b9103fecf94d52b44deca56743c
Merge patch series "riscv: enable lockless lockref implementation"

Jisheng Zhang <jszhang@kernel.org> says:

This series selects ARCH_USE_CMPXCHG_LOCKREF to enable the
cmpxchg-based lockless lockref implementation for riscv. Then,
implement arch_cmpxchg64_{relaxed|acquire|release}.

After patch1:
Using Linus' test case[1] on TH1520 platform, I see a 11.2% improvement.
On JH7110 platform, I see 12.0% improvement.

After patch2:
on both TH1520 and JH7110 platforms, I didn't see obvious
performance improvement with Linus' test case [1]. IMHO, this may
be related with the fence and lr.d/sc.d hw implementations. In theory,
lr/sc without fence could give performance improvement over lr/sc plus
fence, so add the code here to leave performance improvement room on
newer HW platforms.

* b4-shazam-merge:
  riscv: cmpxchg: implement arch_cmpxchg64_{relaxed|acquire|release}
  riscv: select ARCH_USE_CMPXCHG_LOCKREF

Link: http://marc.info/?l=linux-fsdevel&m=137782380714721&w=4
Link: https://lore.kernel.org/r/20240325111038.1700-1-jszhang@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/Kconfig
arch/riscv/include/asm/cmpxchg.h