Re: [PATCH 00/13] Finish off [smp_]read_barrier_depends()
From: Paul E. McKenney
Date: Fri Nov 08 2019 - 13:51:02 EST
On Fri, Nov 08, 2019 at 05:01:07PM +0000, Will Deacon wrote:
> Hi all,
>
> Although [smp_]read_barrier_depends() became part of READ_ONCE() in
> commit 76ebbe78f739 ("locking/barriers: Add implicit
> smp_read_barrier_depends() to READ_ONCE()"), it still limps on in the
> Linux memory model with the sinister hope of attracting innocent new
> users so that it becomes impossible to remove altogether.
>
> Let's strike before it's too late: there's only one user outside of
> arch/alpha/ and that lives in the vhost code which I don't think you
> can actually compile for Alpha. Even if you could, it appears to be
> redundant. The rest of these patches remove any mention of the barrier
> from Documentation and comments, as well as removing its use from the
> Alpha backend and finally dropping it from the memory model completely.
>
> After this series, there are still two places where it is mentioned:
>
> 1. The Korean translation of memory-barriers.txt. I'd appreciate some
> help fixing this because it's not entirely a straightforward
> deletion.
>
> 2. The virtio vring tests under tools/. This is userspace code so I'm
> not too fussed about it.
>
> There's a chunk of header reshuffling at the start of the series so that
> READ_ONCE() can sensibly be overridden by arch code.
>
> Feedback welcome.
For the series:
Acked-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
> Cheers,
>
> Will
>
> Cc: Yunjae Lee <lyj7694@xxxxxxxxx>
> Cc: SeongJae Park <sj38.park@xxxxxxxxx>
> Cc: "Paul E. McKenney" <paulmck@xxxxxxxxxx>
> Cc: Josh Triplett <josh@xxxxxxxxxxxxxxxx>
> Cc: Matt Turner <mattst88@xxxxxxxxx>
> Cc: Ivan Kokshaysky <ink@xxxxxxxxxxxxxxxxxxxx>
> Cc: Richard Henderson <rth@xxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
> Cc: "Michael S. Tsirkin" <mst@xxxxxxxxxx>
> Cc: Jason Wang <jasowang@xxxxxxxxxx>
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> Cc: Joe Perches <joe@xxxxxxxxxxx>
> Cc: Boqun Feng <boqun.feng@xxxxxxxxx>
> Cc: linux-alpha@xxxxxxxxxxxxxxx
> Cc: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
>
> --->8
>
> Will Deacon (13):
> compiler.h: Split {READ,WRITE}_ONCE definitions out into rwonce.h
> READ_ONCE: Undefine internal __READ_ONCE_SIZE macro after use
> READ_ONCE: Allow __READ_ONCE_SIZE cases to be overridden by the
> architecture
> vhost: Remove redundant use of read_barrier_depends() barrier
> alpha: Override READ_ONCE() with barriered implementation
> READ_ONCE: Remove smp_read_barrier_depends() invocation
> alpha: Replace smp_read_barrier_depends() usage with smp_[r]mb()
> locking/barriers: Remove definitions for [smp_]read_barrier_depends()
> Documentation/barriers: Remove references to
> [smp_]read_barrier_depends()
> tools/memory-model: Remove smp_read_barrier_depends() from informal
> doc
> powerpc: Remove comment about read_barrier_depends()
> include/linux: Remove smp_read_barrier_depends() from comments
> checkpatch: Remove checks relating to [smp_]read_barrier_depends()
>
> .../RCU/Design/Requirements/Requirements.html | 11 +-
> Documentation/memory-barriers.txt | 156 +-----------------
> arch/alpha/include/asm/atomic.h | 16 +-
> arch/alpha/include/asm/barrier.h | 61 +------
> arch/alpha/include/asm/pgtable.h | 10 +-
> arch/alpha/include/asm/rwonce.h | 22 +++
> arch/powerpc/include/asm/barrier.h | 2 -
> drivers/vhost/vhost.c | 5 -
> include/asm-generic/Kbuild | 1 +
> include/asm-generic/barrier.h | 17 --
> include/asm-generic/rwonce.h | 131 +++++++++++++++
> include/linux/compiler.h | 114 +------------
> include/linux/compiler_attributes.h | 12 ++
> include/linux/percpu-refcount.h | 2 +-
> include/linux/ptr_ring.h | 2 +-
> mm/memory.c | 2 +-
> scripts/checkpatch.pl | 9 +-
> .../Documentation/explanation.txt | 26 ++-
> 18 files changed, 217 insertions(+), 382 deletions(-)
> create mode 100644 arch/alpha/include/asm/rwonce.h
> create mode 100644 include/asm-generic/rwonce.h
>
> --
> 2.24.0.rc1.363.gb1bccd3e3d-goog
>