Module Name:    src
Committed By:   riastradh
Date:           Sat Apr  9 23:43:31 UTC 2022

Modified Files:
        src/sys/external/bsd/common/include/asm: barrier.h
        src/sys/external/bsd/common/include/linux: compiler.h
        src/sys/external/bsd/common/linux: linux_tasklet.c linux_work.c

Log Message:
linux: Convert various API shims to use membar_release/acquire.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/common/include/asm/barrier.h
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/common/include/linux/compiler.h
cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/common/linux/linux_tasklet.c
cvs rdiff -u -r1.60 -r1.61 src/sys/external/bsd/common/linux/linux_work.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/common/include/asm/barrier.h
diff -u src/sys/external/bsd/common/include/asm/barrier.h:1.12 src/sys/external/bsd/common/include/asm/barrier.h:1.13
--- src/sys/external/bsd/common/include/asm/barrier.h:1.12	Mon Dec 27 10:41:57 2021
+++ src/sys/external/bsd/common/include/asm/barrier.h	Sat Apr  9 23:43:30 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: barrier.h,v 1.12 2021/12/27 10:41:57 riastradh Exp $	*/
+/*	$NetBSD: barrier.h,v 1.13 2022/04/09 23:43:30 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -68,8 +68,8 @@
 #endif
 
 #if defined(MULTIPROCESSOR) && !defined(__HAVE_ATOMIC_AS_MEMBAR)
-#  define	smp_mb__before_atomic()		membar_exit()
-#  define	smp_mb__after_atomic()		membar_sync() /* XXX acquire */
+#  define	smp_mb__before_atomic()		membar_release()
+#  define	smp_mb__after_atomic()		membar_acquire()
 #else
 #  define	smp_mb__before_atomic()		__insn_barrier()
 #  define	smp_mb__after_atomic()		__insn_barrier()

Index: src/sys/external/bsd/common/include/linux/compiler.h
diff -u src/sys/external/bsd/common/include/linux/compiler.h:1.7 src/sys/external/bsd/common/include/linux/compiler.h:1.8
--- src/sys/external/bsd/common/include/linux/compiler.h:1.7	Thu Feb 17 01:21:02 2022
+++ src/sys/external/bsd/common/include/linux/compiler.h	Sat Apr  9 23:43:31 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: compiler.h,v 1.7 2022/02/17 01:21:02 riastradh Exp $	*/
+/*	$NetBSD: compiler.h,v 1.8 2022/04/09 23:43:31 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -80,7 +80,7 @@
 
 #define	smp_store_release(X, V)	do {					      \
 	typeof(X) __smp_store_release_tmp = (V);			      \
-	membar_exit();							      \
+	membar_release();						      \
 	(X) = __write_once_tmp;						      \
 } while (0)
 

Index: src/sys/external/bsd/common/linux/linux_tasklet.c
diff -u src/sys/external/bsd/common/linux/linux_tasklet.c:1.10 src/sys/external/bsd/common/linux/linux_tasklet.c:1.11
--- src/sys/external/bsd/common/linux/linux_tasklet.c:1.10	Mon Dec 27 14:57:30 2021
+++ src/sys/external/bsd/common/linux/linux_tasklet.c	Sat Apr  9 23:43:31 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_tasklet.c,v 1.10 2021/12/27 14:57:30 riastradh Exp $	*/
+/*	$NetBSD: linux_tasklet.c,v 1.11 2022/04/09 23:43:31 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018, 2020, 2021 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_tasklet.c,v 1.10 2021/12/27 14:57:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_tasklet.c,v 1.11 2022/04/09 23:43:31 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -245,7 +245,7 @@ tasklet_softintr(void *cookie)
 		/*
 		 * Check whether it's currently disabled.
 		 *
-		 * Pairs with membar_exit in __tasklet_enable.
+		 * Pairs with membar_release in __tasklet_enable.
 		 */
 		if (atomic_load_acquire(&tasklet->tl_disablecount)) {
 			/*
@@ -394,9 +394,9 @@ tasklet_disable_nosync(struct tasklet_st
 	KASSERT(disablecount < UINT_MAX);
 	KASSERT(disablecount != 0);
 
-	/* Pairs with membar_exit in __tasklet_enable.  */
+	/* Pairs with membar_release in __tasklet_enable.  */
 #ifndef __HAVE_ATOMIC_AS_MEMBAR
-	membar_enter();
+	membar_acquire();
 #endif
 }
 
@@ -514,9 +514,9 @@ tasklet_trylock(struct tasklet_struct *t
 	} while (atomic_cas_uint(&tasklet->tl_state, state,
 		state | TASKLET_RUNNING) != state);
 
-	/* Pairs with membar_exit in tasklet_unlock.  */
+	/* Pairs with membar_release in tasklet_unlock.  */
 #ifndef __HAVE_ATOMIC_AS_MEMBAR
-	membar_enter();
+	membar_acquire();
 #endif
 
 	return true;
@@ -536,11 +536,11 @@ tasklet_unlock(struct tasklet_struct *ta
 	KASSERT(atomic_load_relaxed(&tasklet->tl_state) & TASKLET_RUNNING);
 
 	/*
-	 * Pairs with membar_enter in tasklet_trylock and with
+	 * Pairs with membar_acquire in tasklet_trylock and with
 	 * atomic_load_acquire in tasklet_unlock_wait.
 	 */
 #ifndef __HAVE_ATOMIC_AS_MEMBAR
-	membar_exit();
+	membar_release();
 #endif
 	atomic_and_uint(&tasklet->tl_state, ~TASKLET_RUNNING);
 }
@@ -556,7 +556,7 @@ void
 tasklet_unlock_wait(const struct tasklet_struct *tasklet)
 {
 
-	/* Pairs with membar_exit in tasklet_unlock.  */
+	/* Pairs with membar_release in tasklet_unlock.  */
 	while (atomic_load_acquire(&tasklet->tl_state) & TASKLET_RUNNING)
 		SPINLOCK_BACKOFF_HOOK;
 }
@@ -589,9 +589,9 @@ __tasklet_disable_sync_once(struct taskl
 	KASSERT(disablecount < UINT_MAX);
 	KASSERT(disablecount != 0);
 
-	/* Pairs with membar_exit in __tasklet_enable_sync_once.  */
+	/* Pairs with membar_release in __tasklet_enable_sync_once.  */
 #ifndef __HAVE_ATOMIC_AS_MEMBAR
-	membar_enter();
+	membar_acquire();
 #endif
 
 	/*
@@ -613,9 +613,9 @@ __tasklet_enable_sync_once(struct taskle
 {
 	unsigned int disablecount;
 
-	/* Pairs with membar_enter in __tasklet_disable_sync_once.  */
+	/* Pairs with membar_acquire in __tasklet_disable_sync_once.  */
 #ifndef __HAVE_ATOMIC_AS_MEMBAR
-	membar_exit();
+	membar_release();
 #endif
 
 	/* Decrement the disable count.  */
@@ -681,10 +681,10 @@ __tasklet_enable(struct tasklet_struct *
 	 * decrementing the disable count.
 	 *
 	 * Pairs with atomic_load_acquire in tasklet_softintr and with
-	 * membar_enter in tasklet_disable.
+	 * membar_acquire in tasklet_disable.
 	 */
 #ifndef __HAVE_ATOMIC_AS_MEMBAR
-	membar_exit();
+	membar_release();
 #endif
 
 	/* Decrement the disable count.  */

Index: src/sys/external/bsd/common/linux/linux_work.c
diff -u src/sys/external/bsd/common/linux/linux_work.c:1.60 src/sys/external/bsd/common/linux/linux_work.c:1.61
--- src/sys/external/bsd/common/linux/linux_work.c:1.60	Fri Dec 31 14:30:20 2021
+++ src/sys/external/bsd/common/linux/linux_work.c	Sat Apr  9 23:43:31 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_work.c,v 1.60 2021/12/31 14:30:20 riastradh Exp $	*/
+/*	$NetBSD: linux_work.c,v 1.61 2022/04/09 23:43:31 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.60 2021/12/31 14:30:20 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.61 2022/04/09 23:43:31 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/atomic.h>
@@ -639,7 +639,7 @@ acquire_work(struct work_struct *work, s
 	    owner0);
 
 	KASSERT(work_queue(work) == wq);
-	membar_enter();
+	membar_acquire();
 	SDT_PROBE2(sdt, linux, work, acquire,  work, wq);
 	return true;
 }
@@ -660,7 +660,7 @@ release_work(struct work_struct *work, s
 	KASSERT(mutex_owned(&wq->wq_lock));
 
 	SDT_PROBE2(sdt, linux, work, release,  work, wq);
-	membar_exit();
+	membar_release();
 
 	/*
 	 * Non-interlocked r/m/w is safe here because nobody else can

Reply via email to