Commit 9be85de9 authored by Mark Rutland's avatar Mark Rutland Committed by Peter Zijlstra

locking/atomic: make ARCH_ATOMIC a Kconfig symbol

Subsequent patches will move architectures over to the ARCH_ATOMIC API,
after preparing the asm-generic atomic implementations to function with
or without ARCH_ATOMIC.

As some architectures use the asm-generic implementations exclusively
(and don't have a local atomic.h), and to avoid the risk that
ARCH_ATOMIC isn't defined in some cases we expect, let's make the
ARCH_ATOMIC macro a Kconfig symbol instead, so that we can guarantee it
is consistently available where needed.

There should be no functional change as a result of this patch.
Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210525140232.53872-2-mark.rutland@arm.com
parent a82adc76
...@@ -11,6 +11,9 @@ source "arch/$(SRCARCH)/Kconfig" ...@@ -11,6 +11,9 @@ source "arch/$(SRCARCH)/Kconfig"
menu "General architecture-dependent options" menu "General architecture-dependent options"
config ARCH_ATOMIC
bool
config CRASH_CORE config CRASH_CORE
bool bool
......
...@@ -9,6 +9,7 @@ config ARM64 ...@@ -9,6 +9,7 @@ config ARM64
select ACPI_MCFG if (ACPI && PCI) select ACPI_MCFG if (ACPI && PCI)
select ACPI_SPCR_TABLE if ACPI select ACPI_SPCR_TABLE if ACPI
select ACPI_PPTT if ACPI select ACPI_PPTT if ACPI
select ARCH_ATOMIC
select ARCH_HAS_DEBUG_WX select ARCH_HAS_DEBUG_WX
select ARCH_BINFMT_ELF_STATE select ARCH_BINFMT_ELF_STATE
select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION select ARCH_ENABLE_HUGEPAGE_MIGRATION if HUGETLB_PAGE && MIGRATION
......
...@@ -223,6 +223,4 @@ static __always_inline long arch_atomic64_dec_if_positive(atomic64_t *v) ...@@ -223,6 +223,4 @@ static __always_inline long arch_atomic64_dec_if_positive(atomic64_t *v)
#define arch_atomic64_dec_if_positive arch_atomic64_dec_if_positive #define arch_atomic64_dec_if_positive arch_atomic64_dec_if_positive
#define ARCH_ATOMIC
#endif /* __ASM_ATOMIC_H */ #endif /* __ASM_ATOMIC_H */
...@@ -58,6 +58,7 @@ config S390 ...@@ -58,6 +58,7 @@ config S390
# Note: keep this list sorted alphabetically # Note: keep this list sorted alphabetically
# #
imply IMA_SECURE_AND_OR_TRUSTED_BOOT imply IMA_SECURE_AND_OR_TRUSTED_BOOT
select ARCH_ATOMIC
select ARCH_32BIT_USTAT_F_TINODE select ARCH_32BIT_USTAT_F_TINODE
select ARCH_BINFMT_ELF_STATE select ARCH_BINFMT_ELF_STATE
select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM
......
...@@ -147,6 +147,4 @@ ATOMIC64_OPS(xor) ...@@ -147,6 +147,4 @@ ATOMIC64_OPS(xor)
#define arch_atomic64_fetch_sub(_i, _v) arch_atomic64_fetch_add(-(s64)(_i), _v) #define arch_atomic64_fetch_sub(_i, _v) arch_atomic64_fetch_add(-(s64)(_i), _v)
#define arch_atomic64_sub(_i, _v) arch_atomic64_add(-(s64)(_i), _v) #define arch_atomic64_sub(_i, _v) arch_atomic64_add(-(s64)(_i), _v)
#define ARCH_ATOMIC
#endif /* __ARCH_S390_ATOMIC__ */ #endif /* __ARCH_S390_ATOMIC__ */
...@@ -5,6 +5,7 @@ menu "UML-specific options" ...@@ -5,6 +5,7 @@ menu "UML-specific options"
config UML config UML
bool bool
default y default y
select ARCH_ATOMIC
select ARCH_EPHEMERAL_INODES select ARCH_EPHEMERAL_INODES
select ARCH_HAS_KCOV select ARCH_HAS_KCOV
select ARCH_NO_PREEMPT select ARCH_NO_PREEMPT
......
...@@ -58,6 +58,7 @@ config X86 ...@@ -58,6 +58,7 @@ config X86
# #
select ACPI_LEGACY_TABLES_LOOKUP if ACPI select ACPI_LEGACY_TABLES_LOOKUP if ACPI
select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
select ARCH_ATOMIC
select ARCH_32BIT_OFF_T if X86_32 select ARCH_32BIT_OFF_T if X86_32
select ARCH_CLOCKSOURCE_INIT select ARCH_CLOCKSOURCE_INIT
select ARCH_ENABLE_HUGEPAGE_MIGRATION if X86_64 && HUGETLB_PAGE && MIGRATION select ARCH_ENABLE_HUGEPAGE_MIGRATION if X86_64 && HUGETLB_PAGE && MIGRATION
......
...@@ -269,6 +269,4 @@ static __always_inline int arch_atomic_fetch_xor(int i, atomic_t *v) ...@@ -269,6 +269,4 @@ static __always_inline int arch_atomic_fetch_xor(int i, atomic_t *v)
# include <asm/atomic64_64.h> # include <asm/atomic64_64.h>
#endif #endif
#define ARCH_ATOMIC
#endif /* _ASM_X86_ATOMIC_H */ #endif /* _ASM_X86_ATOMIC_H */
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
__ret; \ __ret; \
}) })
#ifdef ARCH_ATOMIC #ifdef CONFIG_ARCH_ATOMIC
#include <linux/atomic-arch-fallback.h> #include <linux/atomic-arch-fallback.h>
#include <asm-generic/atomic-instrumented.h> #include <asm-generic/atomic-instrumented.h>
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment