Module Name: src Committed By: riastradh Date: Sat Feb 12 17:17:54 UTC 2022
Modified Files: src/sys/arch/alpha/include: lock.h src/sys/arch/hppa/include: lock.h src/sys/arch/ia64/include: lock.h src/sys/arch/powerpc/include: lock.h src/sys/arch/vax/include: lock.h src/sys/arch/x86/include: lock.h Log Message: __cpu_simple_lock(9): Omit needless barriers in init. It is, and always has been, the caller's responsibility to ensure the lock is initialized before it can be used -- otherwise the memory could hold garbage; it is nonsensical to even attempt locking operations on it before initialization. So there's no need to issue explicit barriers here. The barrier seems to have been introduced in sys/arch/alpha/alpha/lock_machdep.c rev. 1.1 (since moved to inline asm in alpha/include/lock.h) and then copied & pasted into several other architectures. To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/arch/alpha/include/lock.h cvs rdiff -u -r1.22 -r1.23 src/sys/arch/hppa/include/lock.h cvs rdiff -u -r1.8 -r1.9 src/sys/arch/ia64/include/lock.h cvs rdiff -u -r1.16 -r1.17 src/sys/arch/powerpc/include/lock.h cvs rdiff -u -r1.32 -r1.33 src/sys/arch/vax/include/lock.h cvs rdiff -u -r1.28 -r1.29 src/sys/arch/x86/include/lock.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/alpha/include/lock.h diff -u src/sys/arch/alpha/include/lock.h:1.31 src/sys/arch/alpha/include/lock.h:1.32 --- src/sys/arch/alpha/include/lock.h:1.31 Sat Apr 3 14:56:13 2021 +++ src/sys/arch/alpha/include/lock.h Sat Feb 12 17:17:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lock.h,v 1.31 2021/04/03 14:56:13 thorpej Exp $ */ +/* $NetBSD: lock.h,v 1.32 2022/02/12 17:17:53 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc. @@ -69,12 +69,7 @@ static __inline void __cpu_simple_lock_init(__cpu_simple_lock_t *alp) { - __asm volatile( - "# BEGIN __cpu_simple_lock_init\n" - " stl $31, %0 \n" - " mb \n" - " # END __cpu_simple_lock_init" - : "=m" (*alp)); + *alp = __SIMPLELOCK_UNLOCKED; } static __inline void Index: src/sys/arch/hppa/include/lock.h diff -u src/sys/arch/hppa/include/lock.h:1.22 src/sys/arch/hppa/include/lock.h:1.23 --- src/sys/arch/hppa/include/lock.h:1.22 Fri Nov 29 20:05:29 2019 +++ src/sys/arch/hppa/include/lock.h Sat Feb 12 17:17:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lock.h,v 1.22 2019/11/29 20:05:29 riastradh Exp $ */ +/* $NetBSD: lock.h,v 1.23 2022/02/12 17:17:53 riastradh Exp $ */ /*- * Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc. @@ -85,10 +85,10 @@ __sync(void) static __inline void __cpu_simple_lock_init(__cpu_simple_lock_t *alp) { + alp->csl_lock[0] = alp->csl_lock[1] = alp->csl_lock[2] = alp->csl_lock[3] = __SIMPLELOCK_RAW_UNLOCKED; - __sync(); } static __inline void Index: src/sys/arch/ia64/include/lock.h diff -u src/sys/arch/ia64/include/lock.h:1.8 src/sys/arch/ia64/include/lock.h:1.9 --- src/sys/arch/ia64/include/lock.h:1.8 Fri Nov 29 20:05:38 2019 +++ src/sys/arch/ia64/include/lock.h Sat Feb 12 17:17:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lock.h,v 1.8 2019/11/29 20:05:38 riastradh Exp $ */ +/* $NetBSD: lock.h,v 1.9 2022/02/12 17:17:53 riastradh Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -83,7 +83,6 @@ __cpu_simple_lock_init(__cpu_simple_lock { *lockp = __SIMPLELOCK_UNLOCKED; - __insn_barrier(); } static __inline int Index: src/sys/arch/powerpc/include/lock.h diff -u src/sys/arch/powerpc/include/lock.h:1.16 src/sys/arch/powerpc/include/lock.h:1.17 --- src/sys/arch/powerpc/include/lock.h:1.16 Mon Sep 13 11:54:42 2021 +++ src/sys/arch/powerpc/include/lock.h Sat Feb 12 17:17:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lock.h,v 1.16 2021/09/13 11:54:42 rin Exp $ */ +/* $NetBSD: lock.h,v 1.17 2022/02/12 17:17:53 riastradh Exp $ */ /*- * Copyright (c) 2000, 2007 The NetBSD Foundation, Inc. @@ -64,7 +64,6 @@ static __inline void __cpu_simple_lock_init(__cpu_simple_lock_t *alp) { *alp = __SIMPLELOCK_UNLOCKED; - __asm volatile ("sync"); } static __inline void Index: src/sys/arch/vax/include/lock.h diff -u src/sys/arch/vax/include/lock.h:1.32 src/sys/arch/vax/include/lock.h:1.33 --- src/sys/arch/vax/include/lock.h:1.32 Fri Nov 29 20:06:44 2019 +++ src/sys/arch/vax/include/lock.h Sat Feb 12 17:17:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lock.h,v 1.32 2019/11/29 20:06:44 riastradh Exp $ */ +/* $NetBSD: lock.h,v 1.33 2022/02/12 17:17:53 riastradh Exp $ */ /* * Copyright (c) 2000 Ludd, University of Lule}, Sweden. @@ -66,17 +66,7 @@ static __inline void __cpu_simple_lock_i static __inline void __cpu_simple_lock_init(__cpu_simple_lock_t *__alp) { -#ifdef _HARDKERNEL - __asm __volatile ("movl %0,%%r1;jsb Sunlock" - : /* No output */ - : "g"(__alp) - : "r1","cc","memory"); -#else - __asm __volatile ("bbcci $0,%0,1f;1:" - : /* No output */ - : "m"(*__alp) - : "cc"); -#endif + *__alp = __SIMPLELOCK_UNLOCKED; } static __inline int __cpu_simple_lock_try(__cpu_simple_lock_t *); Index: src/sys/arch/x86/include/lock.h diff -u src/sys/arch/x86/include/lock.h:1.28 src/sys/arch/x86/include/lock.h:1.29 --- src/sys/arch/x86/include/lock.h:1.28 Sat Sep 16 23:55:45 2017 +++ src/sys/arch/x86/include/lock.h Sat Feb 12 17:17:54 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lock.h,v 1.28 2017/09/16 23:55:45 christos Exp $ */ +/* $NetBSD: lock.h,v 1.29 2022/02/12 17:17:54 riastradh Exp $ */ /*- * Copyright (c) 2000, 2006 The NetBSD Foundation, Inc. @@ -88,7 +88,6 @@ __cpu_simple_lock_init(__cpu_simple_lock { *lockp = __SIMPLELOCK_UNLOCKED; - __insn_barrier(); } SPINLOCK_INLINE int