From: Mark Rutland <mark.rutland@arm.com>
To: linux-kernel@vger.kernel.org, will@kernel.org,
boqun.feng@gmail.com, peterz@infradead.org
Cc: aou@eecs.berkeley.edu, arnd@arndb.de, bcain@codeaurora.org,
benh@kernel.crashing.org, chris@zankel.net, dalias@libc.org,
davem@davemloft.net, deanbo422@gmail.com, deller@gmx.de,
geert@linux-m68k.org, green.hu@gmail.com, guoren@kernel.org,
ink@jurassic.park.msu.ru, James.Bottomley@HansenPartnership.com,
jcmvbkbc@gmail.com, jonas@southpole.se, ley.foon.tan@intel.com,
linux@armlinux.org.uk, mark.rutland@arm.com, mattst88@gmail.com,
monstr@monstr.eu, mpe@ellerman.id.au, nickhu@andestech.com,
palmer@dabbelt.com, paulus@samba.org, paul.walmsley@sifive.com,
rth@twiddle.net, shorne@gmail.com,
stefan.kristiansson@saunalahti.fi, tsbogend@alpha.franken.de,
vgupta@synopsys.com, ysato@users.sourceforge.jp
Subject: [PATCH 00/33] locking/atomic: convert all architectures to ARCH_ATOMIC
Date: Mon, 10 May 2021 10:37:20 +0100 [thread overview]
Message-ID: <20210510093753.40683-1-mark.rutland@arm.com> (raw)
This series (based on v5.13-rc1) converts all architectures to
ARCH_ATOMIC. This will allow the use of instrumented atomics on all
architectures (e.g. for KASAN and similar), and simplifies the core
atomic code (which should allow for easier rework of the fallbacks and
other bits in future).
The series is split into three parts:
1) Some preparatory work is done to prepare architectures and common
code for the conversion. In this phase h8300 and microblaze are
converted to use the asm-generic atomics exclusively, and the
asm-generic implementations are made to function with or without
ARCH_ATOMIC.
2) Architectures are converted one-by-one to use the ARCH_ATOMIC
interface. I've converted each architecture with its own patch (even
where the conversion is trivial) to make review and bisection easier.
3) The code handling !ARCH_ATOMIC is removed.
Note: I've generated the patches with:
git format-patch -C -M -D
... so the preimage of include/linux/atomic-fallback.h is not included
in the diff when it is deleted.
The series can also be found in my atomics/arch-atomic branch on
kernel.org:
https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=atomics/arch-atomic
git://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git atomics/arch-atomic
Thanks,
Mark.
Mark Rutland (33):
locking/atomic: make ARCH_ATOMIC a Kconfig symbol
locking/atomic: net: use linux/atomic.h for xchg & cmpxchg
locking/atomic: h8300: use asm-generic exclusively
locking/atomic: microblaze: use asm-generic exclusively
locking/atomic: openrisc: avoid asm-generic/atomic.h
locking/atomic: atomic: remove stale comments
locking/atomic: atomic: remove redundant include
locking/atomic: atomic: simplify ifdeffery
locking/atomic: atomic: support ARCH_ATOMIC
locking/atomic: atomic64: support ARCH_ATOMIC
locking/atomic: cmpxchg: make `generic` a prefix
locking/atomic: cmpxchg: support ARCH_ATOMIC
locking/atomic: alpha: move to ARCH_ATOMIC
locking/atomic: arc: move to ARCH_ATOMIC
locking/atomic: arm: move to ARCH_ATOMIC
locking/atomic: csky: move to ARCH_ATOMIC
locking/atomic: h8300: move to ARCH_ATOMIC
locking/atomic: hexagon: move to ARCH_ATOMIC
locking/atomic: ia64: move to ARCH_ATOMIC
locking/atomic: m68k: move to ARCH_ATOMIC
locking/atomic: microblaze: move to ARCH_ATOMIC
locking/atomic: mips: move to ARCH_ATOMIC
locking/atomic: nds32: move to ARCH_ATOMIC
locking/atomic: nios2: move to ARCH_ATOMIC
locking/atomic: openrisc: move to ARCH_ATOMIC
locking/atomic: parisc: move to ARCH_ATOMIC
locking/atomic: powerpc: move to ARCH_ATOMIC
locking/atomic: riscv: move to ARCH_ATOMIC
locking/atomic: sh: move to ARCH_ATOMIC
locking/atomic: sparc: move to ARCH_ATOMIC
locking/atomic: xtensa: move to ARCH_ATOMIC
locking/atomic: delete !ARCH_ATOMIC remnants
locking/atomics: atomic-instrumented: simplify ifdeffery
arch/alpha/include/asm/atomic.h | 88 +-
arch/alpha/include/asm/cmpxchg.h | 12 +-
arch/arc/include/asm/atomic.h | 56 +-
arch/arc/include/asm/cmpxchg.h | 8 +-
arch/arm/include/asm/atomic.h | 96 +-
arch/arm/include/asm/cmpxchg.h | 20 +-
arch/arm64/include/asm/atomic.h | 2 -
arch/csky/include/asm/cmpxchg.h | 8 +-
arch/h8300/include/asm/Kbuild | 1 +
arch/h8300/include/asm/atomic.h | 97 --
arch/h8300/include/asm/cmpxchg.h | 66 -
arch/hexagon/include/asm/atomic.h | 28 +-
arch/hexagon/include/asm/cmpxchg.h | 4 +-
arch/ia64/include/asm/atomic.h | 74 +-
arch/ia64/include/asm/cmpxchg.h | 16 +
arch/ia64/include/uapi/asm/cmpxchg.h | 10 +-
arch/m68k/include/asm/atomic.h | 60 +-
arch/m68k/include/asm/cmpxchg.h | 10 +-
arch/microblaze/include/asm/Kbuild | 1 +
arch/microblaze/include/asm/atomic.h | 28 -
arch/microblaze/include/asm/cmpxchg.h | 9 -
arch/mips/include/asm/atomic.h | 55 +-
arch/mips/include/asm/cmpxchg.h | 22 +-
arch/mips/kernel/cmpxchg.c | 4 +-
arch/openrisc/include/asm/atomic.h | 42 +-
arch/openrisc/include/asm/cmpxchg.h | 4 +-
arch/parisc/include/asm/atomic.h | 34 +-
arch/parisc/include/asm/cmpxchg.h | 14 +-
arch/powerpc/include/asm/atomic.h | 140 +-
arch/powerpc/include/asm/cmpxchg.h | 30 +-
arch/riscv/include/asm/atomic.h | 128 +-
arch/riscv/include/asm/cmpxchg.h | 34 +-
arch/s390/include/asm/atomic.h | 2 -
arch/sh/include/asm/atomic-grb.h | 6 +-
arch/sh/include/asm/atomic-irq.h | 6 +-
arch/sh/include/asm/atomic-llsc.h | 6 +-
arch/sh/include/asm/atomic.h | 8 +-
arch/sh/include/asm/cmpxchg.h | 4 +-
arch/sparc/include/asm/atomic_32.h | 38 +-
arch/sparc/include/asm/atomic_64.h | 36 +-
arch/sparc/include/asm/cmpxchg_32.h | 12 +-
arch/sparc/include/asm/cmpxchg_64.h | 12 +-
arch/sparc/lib/atomic32.c | 24 +-
arch/sparc/lib/atomic_64.S | 42 +-
arch/x86/include/asm/atomic.h | 2 -
arch/xtensa/include/asm/atomic.h | 26 +-
arch/xtensa/include/asm/cmpxchg.h | 14 +-
include/asm-generic/atomic-instrumented.h | 498 +-----
include/asm-generic/atomic.h | 118 +-
include/asm-generic/atomic64.h | 45 +-
include/asm-generic/cmpxchg-local.h | 4 +-
include/asm-generic/cmpxchg.h | 42 +-
include/linux/atomic-fallback.h | 2595 -----------------------------
include/linux/atomic.h | 4 -
lib/atomic64.c | 36 +-
net/core/filter.c | 2 +-
net/sunrpc/xprtmultipath.c | 2 +-
scripts/atomic/check-atomics.sh | 1 -
scripts/atomic/gen-atomic-instrumented.sh | 51 +-
scripts/atomic/gen-atomics.sh | 1 -
60 files changed, 750 insertions(+), 4088 deletions(-)
delete mode 100644 arch/h8300/include/asm/atomic.h
delete mode 100644 arch/h8300/include/asm/cmpxchg.h
create mode 100644 arch/ia64/include/asm/cmpxchg.h
delete mode 100644 arch/microblaze/include/asm/atomic.h
delete mode 100644 arch/microblaze/include/asm/cmpxchg.h
delete mode 100644 include/linux/atomic-fallback.h
--
2.11.0
next reply other threads:[~2021-05-10 9:38 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-10 9:37 Mark Rutland [this message]
2021-05-10 9:37 ` [PATCH 01/33] locking/atomic: make ARCH_ATOMIC a Kconfig symbol Mark Rutland
2021-05-10 9:37 ` [PATCH 02/33] locking/atomic: net: use linux/atomic.h for xchg & cmpxchg Mark Rutland
2021-05-10 9:37 ` [PATCH 03/33] locking/atomic: h8300: use asm-generic exclusively Mark Rutland
2021-05-10 9:37 ` [PATCH 04/33] locking/atomic: microblaze: " Mark Rutland
2021-05-10 9:37 ` [PATCH 05/33] locking/atomic: openrisc: avoid asm-generic/atomic.h Mark Rutland
2021-05-13 21:44 ` Stafford Horne
2021-05-14 10:17 ` Mark Rutland
2021-05-10 9:37 ` [PATCH 06/33] locking/atomic: atomic: remove stale comments Mark Rutland
2021-05-10 9:37 ` [PATCH 07/33] locking/atomic: atomic: remove redundant include Mark Rutland
2021-05-10 9:37 ` [PATCH 08/33] locking/atomic: atomic: simplify ifdeffery Mark Rutland
2021-05-10 9:37 ` [PATCH 09/33] locking/atomic: atomic: support ARCH_ATOMIC Mark Rutland
2021-05-10 9:37 ` [PATCH 10/33] locking/atomic: atomic64: " Mark Rutland
2021-05-10 9:37 ` [PATCH 11/33] locking/atomic: cmpxchg: make `generic` a prefix Mark Rutland
2021-05-11 9:29 ` Geert Uytterhoeven
2021-05-10 9:37 ` [PATCH 12/33] locking/atomic: cmpxchg: support ARCH_ATOMIC Mark Rutland
2021-05-10 9:37 ` [PATCH 13/33] locking/atomic: alpha: move to ARCH_ATOMIC Mark Rutland
2021-05-10 9:37 ` [PATCH 14/33] locking/atomic: arc: " Mark Rutland
2021-05-10 14:57 ` Mark Rutland
2021-05-10 19:48 ` Vineet Gupta
2021-05-10 9:37 ` [PATCH 15/33] locking/atomic: arm: " Mark Rutland
2021-05-13 10:49 ` Mark Rutland
2021-05-10 9:37 ` [PATCH 16/33] locking/atomic: csky: " Mark Rutland
2021-05-10 13:27 ` Guo Ren
2021-05-10 9:37 ` [PATCH 17/33] locking/atomic: h8300: " Mark Rutland
2021-05-10 9:37 ` [PATCH 18/33] locking/atomic: hexagon: " Mark Rutland
2021-05-10 9:37 ` [PATCH 19/33] locking/atomic: ia64: " Mark Rutland
2021-05-10 9:37 ` [PATCH 20/33] locking/atomic: m68k: " Mark Rutland
2021-05-11 9:27 ` Geert Uytterhoeven
2021-05-11 10:00 ` Mark Rutland
2021-05-11 10:27 ` Geert Uytterhoeven
2021-05-12 14:15 ` Greg Ungerer
2021-05-12 16:33 ` Mark Rutland
2021-05-10 9:37 ` [PATCH 21/33] locking/atomic: microblaze: " Mark Rutland
2021-05-10 9:37 ` [PATCH 22/33] locking/atomic: mips: " Mark Rutland
2021-05-10 9:37 ` [PATCH 23/33] locking/atomic: nds32: " Mark Rutland
2021-05-10 9:37 ` [PATCH 24/33] locking/atomic: nios2: " Mark Rutland
2021-05-10 9:37 ` [PATCH 25/33] locking/atomic: openrisc: " Mark Rutland
2021-05-15 21:47 ` Stafford Horne
2021-05-10 9:37 ` [PATCH 26/33] locking/atomic: parisc: " Mark Rutland
2021-05-10 9:37 ` [PATCH 27/33] locking/atomic: powerpc: " Mark Rutland
2021-05-11 9:16 ` Mark Rutland
2021-05-11 9:57 ` Mark Rutland
2021-05-10 9:37 ` [PATCH 28/33] locking/atomic: riscv: " Mark Rutland
2021-05-22 19:02 ` Palmer Dabbelt
2021-05-24 12:10 ` Mark Rutland
2021-05-10 9:37 ` [PATCH 29/33] locking/atomic: sh: " Mark Rutland
2021-05-10 9:37 ` [PATCH 30/33] locking/atomic: sparc: " Mark Rutland
2021-05-10 9:37 ` [PATCH 31/33] locking/atomic: xtensa: " Mark Rutland
2021-05-10 14:19 ` Max Filippov
2021-05-10 9:37 ` [PATCH 32/33] locking/atomic: delete !ARCH_ATOMIC remnants Mark Rutland
2021-05-11 9:30 ` Geert Uytterhoeven
2021-05-10 9:37 ` [PATCH 33/33] locking/atomics: atomic-instrumented: simplify ifdeffery Mark Rutland
2021-05-10 14:56 ` [PATCH 00/33] locking/atomic: convert all architectures to ARCH_ATOMIC Arnd Bergmann
2021-05-11 9:27 ` Mark Rutland
2021-05-12 7:28 ` Peter Zijlstra
2021-05-12 7:49 ` Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210510093753.40683-1-mark.rutland@arm.com \
--to=mark.rutland@arm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=aou@eecs.berkeley.edu \
--cc=arnd@arndb.de \
--cc=bcain@codeaurora.org \
--cc=benh@kernel.crashing.org \
--cc=boqun.feng@gmail.com \
--cc=chris@zankel.net \
--cc=dalias@libc.org \
--cc=davem@davemloft.net \
--cc=deanbo422@gmail.com \
--cc=deller@gmx.de \
--cc=geert@linux-m68k.org \
--cc=green.hu@gmail.com \
--cc=guoren@kernel.org \
--cc=ink@jurassic.park.msu.ru \
--cc=jcmvbkbc@gmail.com \
--cc=jonas@southpole.se \
--cc=ley.foon.tan@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mattst88@gmail.com \
--cc=monstr@monstr.eu \
--cc=mpe@ellerman.id.au \
--cc=nickhu@andestech.com \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
--cc=rth@twiddle.net \
--cc=shorne@gmail.com \
--cc=stefan.kristiansson@saunalahti.fi \
--cc=tsbogend@alpha.franken.de \
--cc=vgupta@synopsys.com \
--cc=will@kernel.org \
--cc=ysato@users.sourceforge.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).