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

Reply via email to