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