lkml.org 
[lkml]   [2017]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH 00/13] Preparatory work to kill off ACCESS_ONCE()
Date
Hi all,

There's a general want to kill off ACCESS_ONCE(), which is required to kill off
smp_read_barrier_depends(), and to support debug features which require
instrumenting reads and writes separately.

Thanks to preparatory work by a number of people, it's largely possible to
script this with the Coccinelle patch below. However, this breaks a handful of
cases, and renders some comments stale.

This series fixes up said cases, and comments. Where fixups have been made,
I've converted the entire file for consistency. The remaining code can be
converted by Coccinelle script, allowing for the subsequent removal of
ACCESS_ONCE().

I've pushed this series, complete with an example treewide conversion of
v4.14-rc4 to my core/access-once branch [1,2].

Thanks,
Mark.

[1] git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git core/access-once
[2] https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/commit/?h=core/access-once

----
// Convert trivial ACCESS_ONCE() uses to equivalent READ_ONCE() and
// WRITE_ONCE()

virtual patch

@ depends on patch @
expression E1, E2;
@@

- ACCESS_ONCE(E1) = E2
+ WRITE_ONCE(E1, E2)

@ depends on patch @
expression E;
@@

- ACCESS_ONCE(E)
+ READ_ONCE(E)
*** BLURB HERE ***
----

Mark Rutland (13):
dm integrity: kill off ACCESS_ONCE()
EDAC, altera: kill off ACCESS_ONCE()
firmware/ivc: kill off ACCESS_ONCE()
fs: dcache: kill off ACCESS_ONCE()
fs: ncpfs: kill off ACCESS_ONCE()
media: dvb_ringbuffer: kill off ACCESS_ONCE()
net: netlink/netfilter: kill off ACCESS_ONCE()
net/ipv4/tcp_input.c: kill off ACCESS_ONCE()
net: average: kill off ACCESS_ONCE()
samples: mic/mpssd/mpssd.c: kill off ACCESS_ONCE()
selftests/powerpc: kill off ACCESS_ONCE()
workqueue: kill off ACCESS_ONCE()
rcutorture: formal: prepare for ACCESS_ONCE() removal

drivers/edac/altera_edac.c | 10 ++++-----
drivers/firmware/tegra/ivc.c | 24 +++++++++++-----------
drivers/md/dm-integrity.c | 15 +++++++-------
drivers/media/dvb-core/dvb_ringbuffer.c | 8 ++++----
fs/dcache.c | 18 ++++++++--------
fs/ncpfs/dir.c | 9 --------
include/linux/average.h | 10 ++++++---
include/linux/dcache.h | 4 ++--
include/linux/genetlink.h | 2 +-
include/linux/netfilter/nfnetlink.h | 2 +-
include/linux/rtnetlink.h | 2 +-
include/net/netfilter/nf_tables.h | 4 ++--
kernel/workqueue.c | 4 ++--
net/ipv4/tcp_input.c | 6 +++---
net/netfilter/ipvs/ip_vs_sync.c | 2 +-
net/netfilter/nfnetlink_queue.c | 4 ++--
samples/mic/mpssd/mpssd.c | 6 +++---
tools/testing/selftests/powerpc/dscr/dscr.h | 2 +-
.../selftests/powerpc/dscr/dscr_default_test.c | 2 +-
.../rcutorture/formal/srcu-cbmc/src/barriers.h | 7 ++++---
20 files changed, 69 insertions(+), 72 deletions(-)

--
1.9.1

\
 
 \ /
  Last update: 2017-10-09 20:31    [W:0.187 / U:0.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site