Messages in this thread | | | From | Mark Rutland <> | Subject | [PATCH 00/13] Preparatory work to kill off ACCESS_ONCE() | Date | Mon, 9 Oct 2017 19:28:37 +0100 |
| |
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
| |