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;
}