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: Mark 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: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20210525140232.53872-2-mark.rutland@arm.com
This commit is contained in:
Родитель
a82adc7650
Коммит
9be85de977
|
@ -11,6 +11,9 @@ source "arch/$(SRCARCH)/Kconfig"
|
|||
|
||||
menu "General architecture-dependent options"
|
||||
|
||||
config ARCH_ATOMIC
|
||||
bool
|
||||
|
||||
config CRASH_CORE
|
||||
bool
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ config ARM64
|
|||
select ACPI_MCFG if (ACPI && PCI)
|
||||
select ACPI_SPCR_TABLE if ACPI
|
||||
select ACPI_PPTT if ACPI
|
||||
select ARCH_ATOMIC
|
||||
select ARCH_HAS_DEBUG_WX
|
||||
select ARCH_BINFMT_ELF_STATE
|
||||
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)
|
|||
|
||||
#define arch_atomic64_dec_if_positive arch_atomic64_dec_if_positive
|
||||
|
||||
#define ARCH_ATOMIC
|
||||
|
||||
#endif /* __ASM_ATOMIC_H */
|
||||
|
|
|
@ -58,6 +58,7 @@ config S390
|
|||
# Note: keep this list sorted alphabetically
|
||||
#
|
||||
imply IMA_SECURE_AND_OR_TRUSTED_BOOT
|
||||
select ARCH_ATOMIC
|
||||
select ARCH_32BIT_USTAT_F_TINODE
|
||||
select ARCH_BINFMT_ELF_STATE
|
||||
select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM
|
||||
|
|
|
@ -147,6 +147,4 @@ ATOMIC64_OPS(xor)
|
|||
#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_ATOMIC
|
||||
|
||||
#endif /* __ARCH_S390_ATOMIC__ */
|
||||
|
|
|
@ -5,6 +5,7 @@ menu "UML-specific options"
|
|||
config UML
|
||||
bool
|
||||
default y
|
||||
select ARCH_ATOMIC
|
||||
select ARCH_EPHEMERAL_INODES
|
||||
select ARCH_HAS_KCOV
|
||||
select ARCH_NO_PREEMPT
|
||||
|
|
|
@ -58,6 +58,7 @@ config X86
|
|||
#
|
||||
select ACPI_LEGACY_TABLES_LOOKUP if ACPI
|
||||
select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI
|
||||
select ARCH_ATOMIC
|
||||
select ARCH_32BIT_OFF_T if X86_32
|
||||
select ARCH_CLOCKSOURCE_INIT
|
||||
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)
|
|||
# include <asm/atomic64_64.h>
|
||||
#endif
|
||||
|
||||
#define ARCH_ATOMIC
|
||||
|
||||
#endif /* _ASM_X86_ATOMIC_H */
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
__ret; \
|
||||
})
|
||||
|
||||
#ifdef ARCH_ATOMIC
|
||||
#ifdef CONFIG_ARCH_ATOMIC
|
||||
#include <linux/atomic-arch-fallback.h>
|
||||
#include <asm-generic/atomic-instrumented.h>
|
||||
#else
|
||||
|
|
Загрузка…
Ссылка в новой задаче