Introduce a new Kconfig option ARCH_HAS_HW_XCHG_SMALL, which means arch has hardware sub-word xchg/cmpxchg support. This option will be used as an indicator to select the bit-field definition in the qspinlock data structure. Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx> --- arch/Kconfig | 4 ++++ arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 + arch/ia64/Kconfig | 1 + arch/m68k/Kconfig | 1 + arch/x86/Kconfig | 1 + 6 files changed, 9 insertions(+) diff --git a/arch/Kconfig b/arch/Kconfig index 129df498a8e1..ba5ed867b813 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -228,6 +228,10 @@ config ARCH_HAS_FORTIFY_SOURCE An architecture should select this when it can successfully build and run with CONFIG_FORTIFY_SOURCE. +# Select if arch has hardware sub-word xchg/cmpxchg support +config ARCH_HAS_HW_XCHG_SMALL + bool + # # Select if the arch provides a historic keepinit alias for the retain_initrd # command line option diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 82f908fa5676..fc374ab3b5c7 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -8,6 +8,7 @@ config ARM select ARCH_HAS_DMA_WRITE_COMBINE if !ARM_DMA_MEM_BUFFERABLE select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_FORTIFY_SOURCE + select ARCH_HAS_HW_XCHG_SMALL select ARCH_HAS_KEEPINITRD select ARCH_HAS_KCOV select ARCH_HAS_MEMBARRIER_SYNC_CORE diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index b5b13a932561..393cbe1a6d85 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -25,6 +25,7 @@ config ARM64 select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL select ARCH_HAS_GIGANTIC_PAGE + select ARCH_HAS_HW_XCHG_SMALL select ARCH_HAS_KCOV select ARCH_HAS_KEEPINITRD select ARCH_HAS_MEMBARRIER_SYNC_CORE diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index cf425c2c63af..a0a31fd8d9be 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -9,6 +9,7 @@ menu "Processor type and features" config IA64 bool select ARCH_HAS_DMA_MARK_CLEAN + select ARCH_HAS_HW_XCHG_SMALL select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO select ACPI diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 96989ad46f66..324c2a42ec00 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig @@ -5,6 +5,7 @@ config M68K select ARCH_32BIT_OFF_T select ARCH_HAS_BINFMT_FLAT select ARCH_HAS_DMA_PREP_COHERENT if HAS_DMA && MMU && !COLDFIRE + select ARCH_HAS_HW_XCHG_SMALL select ARCH_HAS_SYNC_DMA_FOR_DEVICE if HAS_DMA select ARCH_HAVE_NMI_SAFE_CMPXCHG if RMW_INSNS select ARCH_MIGHT_HAVE_PC_PARPORT if ISA diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 49270655e827..0f3f24502c70 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -77,6 +77,7 @@ config X86 select ARCH_HAS_FILTER_PGPROT select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL + select ARCH_HAS_HW_XCHG_SMALL select ARCH_HAS_KCOV if X86_64 && STACK_VALIDATION select ARCH_HAS_MEM_ENCRYPT select ARCH_HAS_MEMBARRIER_SYNC_CORE -- 2.27.0