Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 01:46:01 UTC 2021

Modified Files:
        src/sys/external/bsd/common/include/linux: rcupdate.h
        src/sys/external/bsd/common/linux: linux_srcu.c linux_tasklet.c
        src/sys/external/bsd/drm2/include/linux: atomic.h kref.h

Log Message:
Omit __insn_barrier where implied or subsumed by volatile.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/common/include/linux/rcupdate.h
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/common/linux/linux_srcu.c
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/common/linux/linux_tasklet.c
cvs rdiff -u -r1.28 -r1.29 src/sys/external/bsd/drm2/include/linux/atomic.h
cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/include/linux/kref.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/external/bsd/common/include/linux/rcupdate.h
diff -u src/sys/external/bsd/common/include/linux/rcupdate.h:1.1 src/sys/external/bsd/common/include/linux/rcupdate.h:1.2
--- src/sys/external/bsd/common/include/linux/rcupdate.h:1.1	Sun Dec 19 01:33:17 2021
+++ src/sys/external/bsd/common/include/linux/rcupdate.h	Sun Dec 19 01:46:01 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: rcupdate.h,v 1.1 2021/12/19 01:33:17 riastradh Exp $	*/
+/*	$NetBSD: rcupdate.h,v 1.2 2021/12/19 01:46:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -94,16 +94,14 @@ static inline void
 rcu_read_lock(void)
 {
 
-	kpreempt_disable();
-	__insn_barrier();
+	kpreempt_disable();	/* implies __insn_barrier */
 }
 
 static inline void
 rcu_read_unlock(void)
 {
 
-	__insn_barrier();
-	kpreempt_enable();
+	kpreempt_enable();	/* implies __insn_barrier */
 }
 
 #define	kfree_rcu(P, F)							      \

Index: src/sys/external/bsd/common/linux/linux_srcu.c
diff -u src/sys/external/bsd/common/linux/linux_srcu.c:1.1 src/sys/external/bsd/common/linux/linux_srcu.c:1.2
--- src/sys/external/bsd/common/linux/linux_srcu.c:1.1	Sun Dec 19 01:37:27 2021
+++ src/sys/external/bsd/common/linux/linux_srcu.c	Sun Dec 19 01:46:01 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_srcu.c,v 1.1 2021/12/19 01:37:27 riastradh Exp $	*/
+/*	$NetBSD: linux_srcu.c,v 1.2 2021/12/19 01:46:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_srcu.c,v 1.1 2021/12/19 01:37:27 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_srcu.c,v 1.2 2021/12/19 01:46:01 riastradh Exp $");
 
 /*
  * SRCU: Sleepable RCU
@@ -159,20 +159,14 @@ srcu_read_lock(struct srcu *srcu)
 	 */
 	kpreempt_disable();
 	gen = srcu->srcu_gen;
-	/* Fetch the generation once before incrementing the count.  */
-	__insn_barrier();
 	srcu_adjust(srcu, gen, +1);
 	kpreempt_enable();
 
 	/*
-	 * Increment the count in our generation before doing anything
-	 * else on this CPU.
-	 *
 	 * No stronger, inter-CPU memory barrier is needed: if there is
 	 * a concurrent synchronize_srcu, it will issue an xcall that
 	 * functions as a stronger memory barrier.
 	 */
-	__insn_barrier();
 
 	return gen;
 }
@@ -192,14 +186,13 @@ srcu_read_unlock(struct srcu *srcu, int 
 	unsigned gen = ticket;
 
 	/*
-	 * Make sure all side effects have completed on this CPU before
-	 * decrementing the count.
+	 * All side effects have completed on this CPU before we
+	 * disable kpreemption.
 	 *
 	 * No stronger, inter-CPU memory barrier is needed: if there is
 	 * a concurrent synchronize_srcu, it will issue an xcall that
 	 * functions as a stronger memory barrier.
 	 */
-	__insn_barrier();
 
 	/*
 	 * Prevent xcall while we determine whether we need to notify a

Index: src/sys/external/bsd/common/linux/linux_tasklet.c
diff -u src/sys/external/bsd/common/linux/linux_tasklet.c:1.3 src/sys/external/bsd/common/linux/linux_tasklet.c:1.4
--- src/sys/external/bsd/common/linux/linux_tasklet.c:1.3	Sun Dec 19 01:17:46 2021
+++ src/sys/external/bsd/common/linux/linux_tasklet.c	Sun Dec 19 01:46:01 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_tasklet.c,v 1.3 2021/12/19 01:17:46 riastradh Exp $	*/
+/*	$NetBSD: linux_tasklet.c,v 1.4 2021/12/19 01:46:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: linux_tasklet.c,v 1.3 2021/12/19 01:17:46 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_tasklet.c,v 1.4 2021/12/19 01:46:01 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/atomic.h>
@@ -208,7 +208,6 @@ tasklet_softintr(void *cookie)
 		 */
 		do {
 			state = tasklet->tl_state;
-			__insn_barrier();
 			/* It had better be scheduled.  */
 			KASSERT(state & TASKLET_SCHEDULED);
 			if (state & TASKLET_RUNNING)
@@ -539,7 +538,6 @@ tasklet_is_enabled(const struct tasklet_
 	unsigned int disablecount;
 
 	disablecount = tasklet->tl_disablecount;
-	__insn_barrier();
 
 	return (disablecount == 0);
 }

Index: src/sys/external/bsd/drm2/include/linux/atomic.h
diff -u src/sys/external/bsd/drm2/include/linux/atomic.h:1.28 src/sys/external/bsd/drm2/include/linux/atomic.h:1.29
--- src/sys/external/bsd/drm2/include/linux/atomic.h:1.28	Sun Dec 19 01:45:53 2021
+++ src/sys/external/bsd/drm2/include/linux/atomic.h	Sun Dec 19 01:46:01 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.h,v 1.28 2021/12/19 01:45:53 riastradh Exp $	*/
+/*	$NetBSD: atomic.h,v 1.29 2021/12/19 01:46:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -163,7 +163,6 @@ atomic_dec_if_positive(atomic_t *atomic)
 	smp_mb__before_atomic();
 	do {
 		v = atomic->a_u.au_uint;
-		__insn_barrier();
 		if (v <= 0)
 			break;
 	} while (atomic_cas_uint(&atomic->a_u.au_uint, v, v - 1) != v);
@@ -194,7 +193,6 @@ atomic_fetch_xor(int value, atomic_t *at
 	smp_mb__before_atomic();
 	do {
 		old = atomic->a_u.au_uint;
-		__insn_barrier();
 		new = old ^ value;
 	} while (atomic_cas_uint(&atomic->a_u.au_uint, old, new) != old);
 	smp_mb__after_atomic();
@@ -224,7 +222,6 @@ atomic_add_unless(atomic_t *atomic, int 
 	smp_mb__before_atomic();
 	do {
 		value = atomic->a_u.au_int;
-		__insn_barrier();
 		if (value == zero)
 			break;
 	} while (atomic_cas_uint(&atomic->a_u.au_uint, value, (value + addend))
@@ -407,7 +404,6 @@ atomic_long_add_unless(struct atomic_lon
 	smp_mb__before_atomic();
 	do {
 		value = (long)a->al_v;
-		__insn_barrier();
 		if (value == zero)
 			break;
 	} while (atomic_cas_ulong(&a->al_v, (unsigned long)value,

Index: src/sys/external/bsd/drm2/include/linux/kref.h
diff -u src/sys/external/bsd/drm2/include/linux/kref.h:1.8 src/sys/external/bsd/drm2/include/linux/kref.h:1.9
--- src/sys/external/bsd/drm2/include/linux/kref.h:1.8	Sun Dec 19 00:46:50 2021
+++ src/sys/external/bsd/drm2/include/linux/kref.h	Sun Dec 19 01:46:01 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: kref.h,v 1.8 2021/12/19 00:46:50 riastradh Exp $	*/
+/*	$NetBSD: kref.h,v 1.9 2021/12/19 01:46:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -146,7 +146,6 @@ kref_read(const struct kref *kref)
 	unsigned v;
 
 	v = kref->kr_count;
-	__insn_barrier();
 
 	return v;
 }

Reply via email to