Hello, Ingo, This series is a first step towards making the core kernel no longer need to consider DEC Alpha as a special case. This is accomplished by two sets of patches, followed by a Coccinelle script: 1. Patches 1/19 through 15/19 in the following patches, which change non-Coccinelle-susceptible instances of ACCESS_ONCE() to either READ_ONCE() or WRITE_ONCE(), as appropriate. Most of these patches are courtesy of Mark Rutland. 2. Patches 16/19 through 18/19 in the following patches, which add smp_read_barrier_depends() to READ_ONCE() and to Alpha's value-returning _release and _relaxed atomic read-modify-write operations, while also removing lockless_dereference() in favor of the modified READ_ONCE(). 3. A patch generated by Coccinelle (script in commit log) that converts ACCESS_ONCE() to either READ_ONCE() or WRITE_ONCE(), as appropriate. Of course, this patch should not be applied as-is to mainline, instead, the Coccinelle script should be re-run in order to account for any changes between now and the time of merging into mainline. A later series (most likely targeted to v4.16) will remove instances of smp_read_barrier_depends() that are made redundant by this series, that is to say, almost all of them. These changes are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/alpha-cocci for you to fetch changes up to d19fa5187a69bd7685e9c7452ce9e339b1b079fc: COCCINELLE: treewide: kill off ACCESS_ONCE() (2017-10-21 12:52:09 -0700) ---------------------------------------------------------------- Mark Rutland (14): 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 COCCINELLE: treewide: kill off ACCESS_ONCE() Paul E. McKenney (3): doc: filesystems: Kill off ACCESS_ONCE() mm: Kill off ACCESS_ONCE() Merge commit 'c78bcafd0d3b3835f23369aea7ed3686f25750c2'; commit '88f35a0d24b00b80538ae7083cfcab8eb00db3cb' into HEAD Will Deacon (3): linux/compiler.h: Split into compiler.h and compiler-types.h locking/barriers: Kill lockless_dereference alpha: atomics: Add smp_read_barrier_depends() to release/relaxed atomics Documentation/filesystems/path-lookup.md | 6 +- Documentation/memory-barriers.txt | 12 - .../translations/ko_KR/memory-barriers.txt | 12 - arch/alpha/include/asm/atomic.h | 13 + arch/arc/kernel/smp.c | 2 +- arch/arm/include/asm/ptrace.h | 3 +- arch/arm/include/asm/spinlock.h | 6 +- arch/arm/mach-tegra/cpuidle-tegra20.c | 2 +- arch/arm/vdso/vgettimeofday.c | 2 +- arch/ia64/include/asm/spinlock.h | 8 +- arch/mips/include/asm/vdso.h | 2 +- arch/mips/kernel/pm-cps.c | 2 +- arch/mn10300/kernel/mn10300-serial.c | 4 +- arch/parisc/include/asm/atomic.h | 2 +- arch/powerpc/platforms/powernv/opal-msglog.c | 2 +- arch/s390/include/asm/spinlock.h | 6 +- arch/s390/lib/spinlock.c | 16 +- arch/sparc/include/asm/atomic_32.h | 2 +- arch/sparc/include/asm/ptrace.h | 1 + arch/tile/gxio/dma_queue.c | 4 +- arch/tile/include/gxio/dma_queue.h | 2 +- arch/tile/kernel/ptrace.c | 2 +- arch/um/include/shared/init.h | 2 +- arch/x86/entry/common.c | 2 +- arch/x86/entry/vdso/vclock_gettime.c | 2 +- arch/x86/events/core.c | 4 +- arch/x86/include/asm/mmu_context.h | 4 +- arch/x86/include/asm/vgtod.h | 2 +- arch/x86/kernel/espfix_64.c | 6 +- arch/x86/kernel/ldt.c | 2 +- arch/x86/kernel/nmi.c | 2 +- arch/x86/kvm/mmu.c | 4 +- arch/x86/kvm/page_track.c | 2 +- arch/x86/xen/p2m.c | 2 +- arch/xtensa/platforms/xtfpga/lcd.c | 14 +- block/blk-wbt.c | 2 +- drivers/base/core.c | 2 +- drivers/base/power/runtime.c | 4 +- drivers/char/random.c | 4 +- drivers/clocksource/bcm2835_timer.c | 2 +- drivers/crypto/caam/jr.c | 4 +- drivers/crypto/nx/nx-842-powernv.c | 2 +- drivers/edac/altera_edac.c | 10 +- drivers/firewire/ohci.c | 10 +- drivers/firmware/tegra/ivc.c | 24 +- drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 4 +- drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 2 +- drivers/gpu/drm/radeon/radeon_gem.c | 4 +- drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 2 +- drivers/infiniband/hw/hfi1/file_ops.c | 2 +- drivers/infiniband/hw/hfi1/pio.c | 6 +- drivers/infiniband/hw/hfi1/ruc.c | 2 +- drivers/infiniband/hw/hfi1/sdma.c | 8 +- drivers/infiniband/hw/hfi1/sdma.h | 2 +- drivers/infiniband/hw/hfi1/uc.c | 4 +- drivers/infiniband/hw/hfi1/ud.c | 4 +- drivers/infiniband/hw/hfi1/user_sdma.c | 8 +- drivers/infiniband/hw/qib/qib_ruc.c | 2 +- drivers/infiniband/hw/qib/qib_uc.c | 4 +- drivers/infiniband/hw/qib/qib_ud.c | 4 +- drivers/infiniband/sw/rdmavt/qp.c | 6 +- drivers/input/misc/regulator-haptic.c | 2 +- drivers/md/dm-bufio.c | 10 +- drivers/md/dm-integrity.c | 15 +- drivers/md/dm-kcopyd.c | 4 +- drivers/md/dm-mpath.c | 20 +- drivers/md/dm-stats.c | 36 +-- drivers/md/dm-switch.c | 2 +- drivers/md/dm-thin.c | 2 +- drivers/md/dm-verity-target.c | 2 +- drivers/md/dm.c | 4 +- drivers/md/md.c | 2 +- drivers/md/raid5.c | 2 +- drivers/media/dvb-core/dvb_ringbuffer.c | 8 +- drivers/misc/mic/scif/scif_rb.c | 8 +- drivers/misc/mic/scif/scif_rma_list.c | 2 +- drivers/net/bonding/bond_alb.c | 2 +- drivers/net/bonding/bond_main.c | 6 +- drivers/net/ethernet/chelsio/cxgb4/sge.c | 4 +- drivers/net/ethernet/emulex/benet/be_main.c | 2 +- drivers/net/ethernet/hisilicon/hip04_eth.c | 4 +- drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 4 +- drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_main.c | 4 +- drivers/net/ethernet/intel/i40e/i40e_ptp.c | 4 +- drivers/net/ethernet/intel/igb/e1000_regs.h | 2 +- drivers/net/ethernet/intel/igb/igb_main.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_common.h | 4 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 8 +- drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 4 +- drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 2 +- drivers/net/ethernet/intel/ixgbevf/vf.h | 2 +- drivers/net/ethernet/mellanox/mlx4/en_tx.c | 12 +- drivers/net/ethernet/neterion/vxge/vxge-main.c | 2 +- drivers/net/ethernet/sfc/ef10.c | 10 +- drivers/net/ethernet/sfc/efx.c | 4 +- drivers/net/ethernet/sfc/falcon/efx.c | 4 +- drivers/net/ethernet/sfc/falcon/falcon.c | 4 +- drivers/net/ethernet/sfc/falcon/farch.c | 8 +- drivers/net/ethernet/sfc/falcon/nic.h | 6 +- drivers/net/ethernet/sfc/falcon/tx.c | 6 +- drivers/net/ethernet/sfc/farch.c | 8 +- drivers/net/ethernet/sfc/nic.h | 6 +- drivers/net/ethernet/sfc/ptp.c | 10 +- drivers/net/ethernet/sfc/tx.c | 6 +- drivers/net/ethernet/sun/niu.c | 4 +- drivers/net/tap.c | 2 +- drivers/net/tun.c | 4 +- drivers/net/wireless/ath/ath5k/desc.c | 8 +- .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 4 +- drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 2 +- drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 10 +- drivers/net/wireless/mac80211_hwsim.c | 4 +- drivers/scsi/qla2xxx/qla_target.c | 2 +- drivers/target/target_core_user.c | 2 +- drivers/usb/class/cdc-wdm.c | 2 +- drivers/usb/core/devio.c | 2 +- drivers/usb/core/sysfs.c | 4 +- drivers/usb/gadget/udc/gr_udc.c | 4 +- drivers/usb/host/ohci-hcd.c | 2 +- drivers/usb/host/uhci-hcd.h | 4 +- drivers/vfio/vfio.c | 2 +- drivers/vhost/scsi.c | 2 +- fs/aio.c | 2 +- fs/buffer.c | 3 +- fs/crypto/keyinfo.c | 2 +- fs/dcache.c | 22 +- fs/direct-io.c | 2 +- fs/exec.c | 2 +- fs/fcntl.c | 2 +- fs/fs_pin.c | 4 +- fs/fuse/dev.c | 2 +- fs/inode.c | 2 +- fs/namei.c | 4 +- fs/namespace.c | 2 +- fs/ncpfs/dir.c | 9 - fs/nfs/dir.c | 8 +- fs/overlayfs/ovl_entry.h | 2 +- fs/overlayfs/readdir.c | 2 +- fs/proc/array.c | 2 +- fs/proc_namespace.c | 2 +- fs/splice.c | 2 +- fs/userfaultfd.c | 8 +- fs/xfs/xfs_log_priv.h | 4 +- include/linux/average.h | 10 +- include/linux/bitops.h | 4 +- include/linux/compiler-clang.h | 2 +- include/linux/compiler-gcc.h | 2 +- include/linux/compiler-intel.h | 2 +- include/linux/compiler-types.h | 274 ++++++++++++++++++++ include/linux/compiler.h | 286 +-------------------- include/linux/dcache.h | 4 +- include/linux/dynamic_queue_limits.h | 2 +- include/linux/genetlink.h | 2 +- include/linux/huge_mm.h | 2 +- include/linux/if_team.h | 2 +- include/linux/linkage.h | 2 +- include/linux/llist.h | 2 +- include/linux/netfilter/nfnetlink.h | 2 +- include/linux/pm_runtime.h | 2 +- include/linux/rculist.h | 4 +- include/linux/rcupdate.h | 4 +- include/linux/rtnetlink.h | 2 +- include/net/ip_vs.h | 6 +- include/net/netfilter/nf_tables.h | 4 +- include/uapi/linux/stddef.h | 2 +- kernel/acct.c | 4 +- kernel/events/core.c | 10 +- kernel/events/ring_buffer.c | 2 +- kernel/exit.c | 2 +- kernel/seccomp.c | 2 +- kernel/task_work.c | 2 +- kernel/trace/ring_buffer.c | 2 +- kernel/trace/trace.h | 2 +- kernel/trace/trace_stack.c | 2 +- kernel/user_namespace.c | 2 +- kernel/workqueue.c | 4 +- lib/assoc_array.c | 20 +- lib/dynamic_queue_limits.c | 2 +- lib/llist.c | 2 +- lib/vsprintf.c | 4 +- mm/huge_memory.c | 2 +- mm/memory.c | 6 +- mm/slab.h | 2 +- net/core/dev.c | 2 +- net/core/pktgen.c | 2 +- net/ipv4/inet_fragment.c | 2 +- net/ipv4/route.c | 2 +- net/ipv4/tcp_input.c | 6 +- net/ipv4/tcp_output.c | 2 +- net/ipv4/udp.c | 4 +- net/ipv6/ip6_tunnel.c | 8 +- net/ipv6/udp.c | 4 +- net/llc/llc_input.c | 4 +- net/mac80211/sta_info.c | 2 +- net/netfilter/ipvs/ip_vs_sync.c | 2 +- net/netfilter/nfnetlink_queue.c | 4 +- net/netlabel/netlabel_calipso.c | 2 +- net/wireless/nl80211.c | 2 +- samples/mic/mpssd/mpssd.c | 6 +- scripts/headers_install.sh | 2 +- sound/firewire/amdtp-am824.c | 6 +- sound/firewire/amdtp-stream.c | 23 +- sound/firewire/amdtp-stream.h | 2 +- sound/firewire/digi00x/amdtp-dot.c | 6 +- sound/firewire/fireface/amdtp-ff.c | 4 +- sound/firewire/fireface/ff-midi.c | 10 +- sound/firewire/fireface/ff-transaction.c | 8 +- sound/firewire/isight.c | 18 +- sound/firewire/motu/amdtp-motu.c | 4 +- sound/firewire/oxfw/oxfw-scs1x.c | 12 +- sound/firewire/tascam/amdtp-tascam.c | 4 +- sound/firewire/tascam/tascam-transaction.c | 6 +- sound/soc/xtensa/xtfpga-i2s.c | 6 +- sound/usb/bcd2000/bcd2000.c | 4 +- tools/arch/x86/include/asm/atomic.h | 2 +- tools/include/asm-generic/atomic-gcc.h | 2 +- tools/perf/util/auxtrace.h | 4 +- tools/perf/util/evlist.h | 2 +- tools/perf/util/session.h | 2 +- tools/testing/selftests/powerpc/dscr/dscr.h | 2 +- .../selftests/powerpc/dscr/dscr_default_test.c | 2 +- .../rcutorture/formal/srcu-cbmc/src/barriers.h | 5 +- virt/kvm/kvm_main.c | 2 +- 227 files changed, 786 insertions(+), 808 deletions(-) create mode 100644 include/linux/compiler-types.h