RISC-V: Move to generic spinlocks
authorPalmer Dabbelt <palmer@rivosinc.com>
Wed, 16 Mar 2022 23:07:34 +0000 (16:07 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 11 May 2022 18:50:05 +0000 (11:50 -0700)
commit4922a3ea0121fb6741bacaa7bd1b678f51f40461
treec3de1604f075b0b688ab392aec8ccdf115377d80
parent205bf39a3441fde4fcd3931a28f4720b20ca68f7
RISC-V: Move to generic spinlocks

Our existing spinlocks aren't fair and replacing them has been on the
TODO list for a long time.  This moves to the recently-introduced ticket
spinlocks, which are simple enough that they are likely to be correct
and fast on the vast majority of extant implementations.

This introduces a horrible hack that allows us to split out the spinlock
conversion from the rwlock conversion.  We have to do the spinlocks
first because qrwlock needs fair spinlocks, but we don't want to pollute
the asm-generic code to support the generic spinlocks without qrwlocks.
Thus we pollute the RISC-V code, but just until the next commit as it's
all going away.

Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Guo Ren <guoren@kernel.org>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/include/asm/Kbuild
arch/riscv/include/asm/spinlock.h
arch/riscv/include/asm/spinlock_types.h