lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 18 May 2017 18:36:10 -0600 From: Babu Moger <babu.moger@...cle.com> To: davem@...emloft.net, peterz@...radead.org, mingo@...hat.com, arnd@...db.de Cc: babu.moger@...cle.com, shannon.nelson@...cle.com, haakon.bugge@...cle.com, steven.sistare@...cle.com, vijay.ac.kumar@...cle.com, jane.chu@...cle.com, sparclinux@...r.kernel.org, linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org Subject: [PATCH 6/6] arch/sparc: Enable queued spinlock support for SPARC This patch makes the necessary changes in SPARC architecture to enable queued spinlock support. Here are some of the earlier discussions about this feature. https://lwn.net/Articles/561775/ https://lwn.net/Articles/590243/ Signed-off-by: Babu Moger <babu.moger@...cle.com> Reviewed-by: HÃ¥kon Bugge <haakon.bugge@...cle.com> Reviewed-by: Jane Chu <jane.chu@...cle.com> Reviewed-by: Shannon Nelson <shannon.nelson@...cle.com> Reviewed-by: Vijay Kumar <vijay.ac.kumar@...cle.com> --- arch/sparc/Kconfig | 1 + arch/sparc/include/asm/qspinlock.h | 7 +++++++ arch/sparc/include/asm/spinlock_64.h | 4 ++++ arch/sparc/include/asm/spinlock_types.h | 5 +++++ 4 files changed, 17 insertions(+), 0 deletions(-) create mode 100644 arch/sparc/include/asm/qspinlock.h diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index caeda1c..785bf3e 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -83,6 +83,7 @@ config SPARC64 select ARCH_SUPPORTS_ATOMIC_RMW select HAVE_NMI select ARCH_USE_QUEUED_RWLOCKS + select ARCH_USE_QUEUED_SPINLOCKS config ARCH_DEFCONFIG string diff --git a/arch/sparc/include/asm/qspinlock.h b/arch/sparc/include/asm/qspinlock.h new file mode 100644 index 0000000..5ae9a28 --- /dev/null +++ b/arch/sparc/include/asm/qspinlock.h @@ -0,0 +1,7 @@ +#ifndef _ASM_SPARC_QSPINLOCK_H +#define _ASM_SPARC_QSPINLOCK_H + +#include <asm-generic/qspinlock_types.h> +#include <asm-generic/qspinlock.h> + +#endif /* _ASM_SPARC_QSPINLOCK_H */ diff --git a/arch/sparc/include/asm/spinlock_64.h b/arch/sparc/include/asm/spinlock_64.h index 562dbd8..e2044e3 100644 --- a/arch/sparc/include/asm/spinlock_64.h +++ b/arch/sparc/include/asm/spinlock_64.h @@ -11,6 +11,9 @@ #include <asm/processor.h> #include <asm/barrier.h> +#ifdef CONFIG_QUEUED_SPINLOCKS +#include <asm/qspinlock.h> +#else /* To get debugging spinlocks which detect and catch * deadlock situations, set CONFIG_DEBUG_SPINLOCK * and rebuild your kernel. @@ -93,6 +96,7 @@ static inline void arch_spin_lock_flags(arch_spinlock_t *lock, unsigned long fla : "r"(lock), "r"(flags) : "memory"); } +#endif /*ifdef CONFIG_QUEUED_SPINLOCKS */ #ifndef CONFIG_QUEUED_RWLOCKS /* Multi-reader locks, these are much saner than the 32-bit Sparc ones... */ diff --git a/arch/sparc/include/asm/spinlock_types.h b/arch/sparc/include/asm/spinlock_types.h index e052d28..93c8c5a 100644 --- a/arch/sparc/include/asm/spinlock_types.h +++ b/arch/sparc/include/asm/spinlock_types.h @@ -5,11 +5,16 @@ # error "please don't include this file directly" #endif +#ifdef CONFIG_QUEUED_SPINLOCKS +#include <asm-generic/qspinlock_types.h> +#else + typedef struct { volatile unsigned char lock; } arch_spinlock_t; #define __ARCH_SPIN_LOCK_UNLOCKED { 0 } +#endif /* CONFIG_QUEUED_SPINLOCKS */ #ifdef CONFIG_QUEUED_RWLOCKS #include <asm-generic/qrwlock_types.h> -- 1.7.1
Powered by blists - more mailing lists