On Thu, Jun 23, 2022 at 12:46 PM Huacai Chen <chenhuacai@xxxxxxxxxxx> wrote: > > On NUMA system, the performance of qspinlock is better than generic > spinlock. Below is the UnixBench test results on a 8 nodes (4 cores > per node, 32 cores in total) machine. > > A. With generic spinlock: > > System Benchmarks Index Values BASELINE RESULT INDEX > Dhrystone 2 using register variables 116700.0 449574022.5 38523.9 > Double-Precision Whetstone 55.0 85190.4 15489.2 > Execl Throughput 43.0 14696.2 3417.7 > File Copy 1024 bufsize 2000 maxblocks 3960.0 143157.8 361.5 > File Copy 256 bufsize 500 maxblocks 1655.0 37631.8 227.4 > File Copy 4096 bufsize 8000 maxblocks 5800.0 444814.2 766.9 > Pipe Throughput 12440.0 5047490.7 4057.5 > Pipe-based Context Switching 4000.0 2021545.7 5053.9 > Process Creation 126.0 23829.8 1891.3 > Shell Scripts (1 concurrent) 42.4 33756.7 7961.5 > Shell Scripts (8 concurrent) 6.0 4062.9 6771.5 > System Call Overhead 15000.0 2479748.6 1653.2 > ======== > System Benchmarks Index Score 2955.6 > > B. With qspinlock: > > System Benchmarks Index Values BASELINE RESULT INDEX > Dhrystone 2 using register variables 116700.0 449467876.9 38514.8 > Double-Precision Whetstone 55.0 85174.6 15486.3 > Execl Throughput 43.0 14769.1 3434.7 > File Copy 1024 bufsize 2000 maxblocks 3960.0 146150.5 369.1 > File Copy 256 bufsize 500 maxblocks 1655.0 37496.8 226.6 > File Copy 4096 bufsize 8000 maxblocks 5800.0 447527.0 771.6 > Pipe Throughput 12440.0 5175989.2 4160.8 > Pipe-based Context Switching 4000.0 2207747.8 5519.4 > Process Creation 126.0 25125.5 1994.1 > Shell Scripts (1 concurrent) 42.4 33461.2 7891.8 > Shell Scripts (8 concurrent) 6.0 4024.7 6707.8 > System Call Overhead 15000.0 2917278.6 1944.9 > ======== > System Benchmarks Index Score 3040.1 > > Signed-off-by: Rui Wang <wangrui@xxxxxxxxxxx> > Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx> > --- > arch/loongarch/Kconfig | 1 + > arch/loongarch/include/asm/Kbuild | 5 ++--- > arch/loongarch/include/asm/spinlock.h | 12 ++++++++++++ > arch/loongarch/include/asm/spinlock_types.h | 11 +++++++++++ > 4 files changed, 26 insertions(+), 3 deletions(-) > create mode 100644 arch/loongarch/include/asm/spinlock.h > create mode 100644 arch/loongarch/include/asm/spinlock_types.h > > diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig > index 1920d52653b4..1ec220df751d 100644 > --- a/arch/loongarch/Kconfig > +++ b/arch/loongarch/Kconfig > @@ -46,6 +46,7 @@ config LOONGARCH > select ARCH_USE_BUILTIN_BSWAP > select ARCH_USE_CMPXCHG_LOCKREF > select ARCH_USE_QUEUED_RWLOCKS > + select ARCH_USE_QUEUED_SPINLOCKS > select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT > select ARCH_WANTS_NO_INSTR > select BUILDTIME_TABLE_SORT > diff --git a/arch/loongarch/include/asm/Kbuild b/arch/loongarch/include/asm/Kbuild > index 83bc0681e72b..a0eed6076c79 100644 > --- a/arch/loongarch/include/asm/Kbuild > +++ b/arch/loongarch/include/asm/Kbuild > @@ -1,12 +1,11 @@ > # SPDX-License-Identifier: GPL-2.0 > generic-y += dma-contiguous.h > generic-y += export.h > +generic-y += mcs_spinlock.h > generic-y += parport.h > generic-y += early_ioremap.h > generic-y += qrwlock.h > -generic-y += qrwlock_types.h > -generic-y += spinlock.h > -generic-y += spinlock_types.h Could you base the patch on [1]? [1] https://lore.kernel.org/linux-riscv/20220621144920.2945595-2-guoren@xxxxxxxxxx/raw And keep the spinlock.h & spinlock_types.h in your Kconfig. > +generic-y += qspinlock.h > generic-y += rwsem.h > generic-y += segment.h > generic-y += user.h > diff --git a/arch/loongarch/include/asm/spinlock.h b/arch/loongarch/include/asm/spinlock.h > new file mode 100644 > index 000000000000..7cb3476999be > --- /dev/null > +++ b/arch/loongarch/include/asm/spinlock.h > @@ -0,0 +1,12 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (C) 2020-2022 Loongson Technology Corporation Limited > + */ > +#ifndef _ASM_SPINLOCK_H > +#define _ASM_SPINLOCK_H > + > +#include <asm/processor.h> > +#include <asm/qspinlock.h> > +#include <asm/qrwlock.h> > + > +#endif /* _ASM_SPINLOCK_H */ > diff --git a/arch/loongarch/include/asm/spinlock_types.h b/arch/loongarch/include/asm/spinlock_types.h > new file mode 100644 > index 000000000000..7458d036c161 > --- /dev/null > +++ b/arch/loongarch/include/asm/spinlock_types.h > @@ -0,0 +1,11 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (C) 2020-2022 Loongson Technology Corporation Limited > + */ > +#ifndef _ASM_SPINLOCK_TYPES_H > +#define _ASM_SPINLOCK_TYPES_H > + > +#include <asm-generic/qspinlock_types.h> > +#include <asm-generic/qrwlock_types.h> > + > +#endif > -- > 2.27.0 > -- Best Regards Guo Ren ML: https://lore.kernel.org/linux-csky/