* [PATCH v2 0/2] arm64: Simplify gas LSE support detection @ 2020-01-15 11:30 Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 1/2] kbuild: Add support for 'as-instr' to be used in Kconfig files Catalin Marinas ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Catalin Marinas @ 2020-01-15 11:30 UTC (permalink / raw) To: linux-arm-kernel; +Cc: Vladimir Murzin, Will Deacon Version two of the patch series moving the LSE assembler support detection from Makefile to Kconfig. Changes since v1 [1]: - Re-introduce the Makefile warning if the .config contains CONFIG_ARM64_USE_LSE_ATOMICS but the assembler does not support the feature, disabling CONFIG_ARM64_LSE_ATOMICS. [1] http://lkml.kernel.org/r/20200109174948.48211-1-catalin.marinas@arm.com Catalin Marinas (2): kbuild: Add support for 'as-instr' to be used in Kconfig files arm64: Move the LSE gas support detection to Kconfig arch/arm64/Kconfig | 5 +++++ arch/arm64/Makefile | 11 ++++------- arch/arm64/include/asm/atomic_ll_sc.h | 2 +- arch/arm64/include/asm/lse.h | 6 +++--- arch/arm64/kernel/cpufeature.c | 4 ++-- scripts/Kconfig.include | 4 ++++ 6 files changed, 19 insertions(+), 13 deletions(-) _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] kbuild: Add support for 'as-instr' to be used in Kconfig files 2020-01-15 11:30 [PATCH v2 0/2] arm64: Simplify gas LSE support detection Catalin Marinas @ 2020-01-15 11:30 ` Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 2/2] arm64: Move the LSE gas support detection to Kconfig Catalin Marinas 2020-01-15 12:49 ` [PATCH v2 0/2] arm64: Simplify gas LSE support detection Vladimir Murzin 2 siblings, 0 replies; 7+ messages in thread From: Catalin Marinas @ 2020-01-15 11:30 UTC (permalink / raw) To: linux-arm-kernel; +Cc: Vladimir Murzin, Will Deacon Similar to 'cc-option' or 'ld-option', it is occasionally necessary to check whether the assembler supports certain ISA extensions. In the arm64 code we currently do this in Makefile with an additional define: lseinstr := $(call as-instr,.arch_extension lse,-DCONFIG_AS_LSE=1) Add the 'as-instr' option so that it can be used in Kconfig directly: def_bool $(as-instr,.arch_extension lse) Acked-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> --- scripts/Kconfig.include | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/Kconfig.include b/scripts/Kconfig.include index d4adfbe42690..9d07e59cbdf7 100644 --- a/scripts/Kconfig.include +++ b/scripts/Kconfig.include @@ -31,6 +31,10 @@ cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -E -x c /dev/null -o /de # Return y if the linker supports <flag>, n otherwise ld-option = $(success,$(LD) -v $(1)) +# $(as-instr,<instr>) +# Return y if the assembler supports <instr>, n otherwise +as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -c -x assembler -o /dev/null -) + # check if $(CC) and $(LD) exist $(error-if,$(failure,command -v $(CC)),compiler '$(CC)' not found) $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found) _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] arm64: Move the LSE gas support detection to Kconfig 2020-01-15 11:30 [PATCH v2 0/2] arm64: Simplify gas LSE support detection Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 1/2] kbuild: Add support for 'as-instr' to be used in Kconfig files Catalin Marinas @ 2020-01-15 11:30 ` Catalin Marinas 2020-01-15 12:49 ` [PATCH v2 0/2] arm64: Simplify gas LSE support detection Vladimir Murzin 2 siblings, 0 replies; 7+ messages in thread From: Catalin Marinas @ 2020-01-15 11:30 UTC (permalink / raw) To: linux-arm-kernel; +Cc: Vladimir Murzin, Will Deacon As the Kconfig syntax gained support for $(as-instr) tests, move the LSE gas support detection from Makefile to the main arm64 Kconfig and remove the additional CONFIG_AS_LSE definition and check. Cc: Will Deacon <will@kernel.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> --- Notes: v2: - Re-introduce build-time warning if .config wants LSE atomics but gas does not support it - Given that the patch was modified, I have not added Vladimir's reviewed-by tag on v1 arch/arm64/Kconfig | 5 +++++ arch/arm64/Makefile | 11 ++++------- arch/arm64/include/asm/atomic_ll_sc.h | 2 +- arch/arm64/include/asm/lse.h | 6 +++--- arch/arm64/kernel/cpufeature.c | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index b1b4476ddb83..cf3b6d2a67cf 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1363,6 +1363,11 @@ config ARM64_PAN instruction if the cpu does not implement the feature. config ARM64_LSE_ATOMICS + bool + default ARM64_USE_LSE_ATOMICS + depends on $(as-instr,.arch_extension lse) + +config ARM64_USE_LSE_ATOMICS bool "Atomic instructions" depends on JUMP_LABEL default y diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 1fbe24d4fdb6..6dd8ecacc428 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -30,11 +30,8 @@ LDFLAGS_vmlinux += --fix-cortex-a53-843419 endif endif -# Check for binutils support for specific extensions -lseinstr := $(call as-instr,.arch_extension lse,-DCONFIG_AS_LSE=1) - -ifeq ($(CONFIG_ARM64_LSE_ATOMICS), y) - ifeq ($(lseinstr),) +ifeq ($(CONFIG_ARM64_USE_LSE_ATOMICS), y) + ifneq ($(CONFIG_ARM64_LSE_ATOMICS), y) $(warning LSE atomics not supported by binutils) endif endif @@ -53,11 +50,11 @@ $(warning Detected assembler with broken .inst; disassembly will be unreliable) endif endif -KBUILD_CFLAGS += -mgeneral-regs-only $(lseinstr) $(brokengasinst) \ +KBUILD_CFLAGS += -mgeneral-regs-only $(brokengasinst) \ $(compat_vdso) $(cc_has_k_constraint) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables KBUILD_CFLAGS += $(call cc-disable-warning, psabi) -KBUILD_AFLAGS += $(lseinstr) $(brokengasinst) $(compat_vdso) +KBUILD_AFLAGS += $(brokengasinst) $(compat_vdso) KBUILD_CFLAGS += $(call cc-option,-mabi=lp64) KBUILD_AFLAGS += $(call cc-option,-mabi=lp64) diff --git a/arch/arm64/include/asm/atomic_ll_sc.h b/arch/arm64/include/asm/atomic_ll_sc.h index 7b012148bfd6..13869b76b58c 100644 --- a/arch/arm64/include/asm/atomic_ll_sc.h +++ b/arch/arm64/include/asm/atomic_ll_sc.h @@ -12,7 +12,7 @@ #include <linux/stringify.h> -#if IS_ENABLED(CONFIG_ARM64_LSE_ATOMICS) && IS_ENABLED(CONFIG_AS_LSE) +#ifdef CONFIG_ARM64_LSE_ATOMICS #define __LL_SC_FALLBACK(asm_ops) \ " b 3f\n" \ " .subsection 1\n" \ diff --git a/arch/arm64/include/asm/lse.h b/arch/arm64/include/asm/lse.h index 80b388278149..4e1009fff686 100644 --- a/arch/arm64/include/asm/lse.h +++ b/arch/arm64/include/asm/lse.h @@ -4,7 +4,7 @@ #include <asm/atomic_ll_sc.h> -#if defined(CONFIG_AS_LSE) && defined(CONFIG_ARM64_LSE_ATOMICS) +#ifdef CONFIG_ARM64_LSE_ATOMICS #include <linux/compiler_types.h> #include <linux/export.h> @@ -36,7 +36,7 @@ static inline bool system_uses_lse_atomics(void) #define ARM64_LSE_ATOMIC_INSN(llsc, lse) \ ALTERNATIVE(llsc, lse, ARM64_HAS_LSE_ATOMICS) -#else /* CONFIG_AS_LSE && CONFIG_ARM64_LSE_ATOMICS */ +#else /* CONFIG_ARM64_LSE_ATOMICS */ static inline bool system_uses_lse_atomics(void) { return false; } @@ -44,5 +44,5 @@ static inline bool system_uses_lse_atomics(void) { return false; } #define ARM64_LSE_ATOMIC_INSN(llsc, lse) llsc -#endif /* CONFIG_AS_LSE && CONFIG_ARM64_LSE_ATOMICS */ +#endif /* CONFIG_ARM64_LSE_ATOMICS */ #endif /* __ASM_LSE_H */ diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c index 04cf64e9f0c9..2595c2886d3f 100644 --- a/arch/arm64/kernel/cpufeature.c +++ b/arch/arm64/kernel/cpufeature.c @@ -1291,7 +1291,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = { .cpu_enable = cpu_enable_pan, }, #endif /* CONFIG_ARM64_PAN */ -#if defined(CONFIG_AS_LSE) && defined(CONFIG_ARM64_LSE_ATOMICS) +#ifdef CONFIG_ARM64_LSE_ATOMICS { .desc = "LSE atomic instructions", .capability = ARM64_HAS_LSE_ATOMICS, @@ -1302,7 +1302,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = { .sign = FTR_UNSIGNED, .min_field_value = 2, }, -#endif /* CONFIG_AS_LSE && CONFIG_ARM64_LSE_ATOMICS */ +#endif /* CONFIG_ARM64_LSE_ATOMICS */ { .desc = "Software prefetching using PRFM", .capability = ARM64_HAS_NO_HW_PREFETCH, _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] arm64: Simplify gas LSE support detection 2020-01-15 11:30 [PATCH v2 0/2] arm64: Simplify gas LSE support detection Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 1/2] kbuild: Add support for 'as-instr' to be used in Kconfig files Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 2/2] arm64: Move the LSE gas support detection to Kconfig Catalin Marinas @ 2020-01-15 12:49 ` Vladimir Murzin 2020-01-15 12:51 ` Will Deacon 2 siblings, 1 reply; 7+ messages in thread From: Vladimir Murzin @ 2020-01-15 12:49 UTC (permalink / raw) To: Catalin Marinas, linux-arm-kernel; +Cc: Will Deacon On 1/15/20 11:30 AM, Catalin Marinas wrote: > Version two of the patch series moving the LSE assembler support > detection from Makefile to Kconfig. > > Changes since v1 [1]: > > - Re-introduce the Makefile warning if the .config contains > CONFIG_ARM64_USE_LSE_ATOMICS but the assembler does not support the > feature, disabling CONFIG_ARM64_LSE_ATOMICS. > > [1] http://lkml.kernel.org/r/20200109174948.48211-1-catalin.marinas@arm.com > > Catalin Marinas (2): > kbuild: Add support for 'as-instr' to be used in Kconfig files > arm64: Move the LSE gas support detection to Kconfig > > arch/arm64/Kconfig | 5 +++++ > arch/arm64/Makefile | 11 ++++------- > arch/arm64/include/asm/atomic_ll_sc.h | 2 +- > arch/arm64/include/asm/lse.h | 6 +++--- > arch/arm64/kernel/cpufeature.c | 4 ++-- > scripts/Kconfig.include | 4 ++++ > 6 files changed, 19 insertions(+), 13 deletions(-) > > with aarch64-linux-gnu-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease) I see (among other warnings) arch/arm64/Makefile:35: LSE atomics not supported by binutils while with aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025 warning disappears. FWIW: Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> Thanks Vladimir _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] arm64: Simplify gas LSE support detection 2020-01-15 12:49 ` [PATCH v2 0/2] arm64: Simplify gas LSE support detection Vladimir Murzin @ 2020-01-15 12:51 ` Will Deacon 2020-01-15 12:59 ` Vladimir Murzin 0 siblings, 1 reply; 7+ messages in thread From: Will Deacon @ 2020-01-15 12:51 UTC (permalink / raw) To: Vladimir Murzin; +Cc: Catalin Marinas, linux-arm-kernel On Wed, Jan 15, 2020 at 12:49:17PM +0000, Vladimir Murzin wrote: > On 1/15/20 11:30 AM, Catalin Marinas wrote: > > Version two of the patch series moving the LSE assembler support > > detection from Makefile to Kconfig. > > > > Changes since v1 [1]: > > > > - Re-introduce the Makefile warning if the .config contains > > CONFIG_ARM64_USE_LSE_ATOMICS but the assembler does not support the > > feature, disabling CONFIG_ARM64_LSE_ATOMICS. > > > > [1] http://lkml.kernel.org/r/20200109174948.48211-1-catalin.marinas@arm.com > > > > Catalin Marinas (2): > > kbuild: Add support for 'as-instr' to be used in Kconfig files > > arm64: Move the LSE gas support detection to Kconfig > > > > arch/arm64/Kconfig | 5 +++++ > > arch/arm64/Makefile | 11 ++++------- > > arch/arm64/include/asm/atomic_ll_sc.h | 2 +- > > arch/arm64/include/asm/lse.h | 6 +++--- > > arch/arm64/kernel/cpufeature.c | 4 ++-- > > scripts/Kconfig.include | 4 ++++ > > 6 files changed, 19 insertions(+), 13 deletions(-) > > > > > > with > > aarch64-linux-gnu-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease) > > I see (among other warnings) > > arch/arm64/Makefile:35: LSE atomics not supported by binutils > > while with > > aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025 > > warning disappears. > > > FWIW: > > Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> > Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> Cheers, I've queued the patches with your tags. Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] arm64: Simplify gas LSE support detection 2020-01-15 12:51 ` Will Deacon @ 2020-01-15 12:59 ` Vladimir Murzin 2020-01-15 13:24 ` Will Deacon 0 siblings, 1 reply; 7+ messages in thread From: Vladimir Murzin @ 2020-01-15 12:59 UTC (permalink / raw) To: Will Deacon; +Cc: Catalin Marinas, linux-arm-kernel On 1/15/20 12:51 PM, Will Deacon wrote: > On Wed, Jan 15, 2020 at 12:49:17PM +0000, Vladimir Murzin wrote: >> On 1/15/20 11:30 AM, Catalin Marinas wrote: >>> Version two of the patch series moving the LSE assembler support >>> detection from Makefile to Kconfig. >>> >>> Changes since v1 [1]: >>> >>> - Re-introduce the Makefile warning if the .config contains >>> CONFIG_ARM64_USE_LSE_ATOMICS but the assembler does not support the >>> feature, disabling CONFIG_ARM64_LSE_ATOMICS. >>> >>> [1] http://lkml.kernel.org/r/20200109174948.48211-1-catalin.marinas@arm.com >>> >>> Catalin Marinas (2): >>> kbuild: Add support for 'as-instr' to be used in Kconfig files >>> arm64: Move the LSE gas support detection to Kconfig >>> >>> arch/arm64/Kconfig | 5 +++++ >>> arch/arm64/Makefile | 11 ++++------- >>> arch/arm64/include/asm/atomic_ll_sc.h | 2 +- >>> arch/arm64/include/asm/lse.h | 6 +++--- >>> arch/arm64/kernel/cpufeature.c | 4 ++-- >>> scripts/Kconfig.include | 4 ++++ >>> 6 files changed, 19 insertions(+), 13 deletions(-) >>> >>> >> >> with >> >> aarch64-linux-gnu-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease) >> >> I see (among other warnings) >> >> arch/arm64/Makefile:35: LSE atomics not supported by binutils >> >> while with >> >> aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025 >> >> warning disappears. >> >> >> FWIW: >> >> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> >> Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> > > Cheers, I've queued the patches with your tags. Would you mind if I send follow-up patch for BROKEN_GAS_INST conversion (it depends on as-inst)? Vladimir > > Will > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/2] arm64: Simplify gas LSE support detection 2020-01-15 12:59 ` Vladimir Murzin @ 2020-01-15 13:24 ` Will Deacon 0 siblings, 0 replies; 7+ messages in thread From: Will Deacon @ 2020-01-15 13:24 UTC (permalink / raw) To: Vladimir Murzin; +Cc: Catalin Marinas, linux-arm-kernel On Wed, Jan 15, 2020 at 12:59:00PM +0000, Vladimir Murzin wrote: > On 1/15/20 12:51 PM, Will Deacon wrote: > > On Wed, Jan 15, 2020 at 12:49:17PM +0000, Vladimir Murzin wrote: > >> On 1/15/20 11:30 AM, Catalin Marinas wrote: > >>> Version two of the patch series moving the LSE assembler support > >>> detection from Makefile to Kconfig. > >>> > >>> Changes since v1 [1]: > >>> > >>> - Re-introduce the Makefile warning if the .config contains > >>> CONFIG_ARM64_USE_LSE_ATOMICS but the assembler does not support the > >>> feature, disabling CONFIG_ARM64_LSE_ATOMICS. > >>> > >>> [1] http://lkml.kernel.org/r/20200109174948.48211-1-catalin.marinas@arm.com > >>> > >>> Catalin Marinas (2): > >>> kbuild: Add support for 'as-instr' to be used in Kconfig files > >>> arm64: Move the LSE gas support detection to Kconfig > >>> > >>> arch/arm64/Kconfig | 5 +++++ > >>> arch/arm64/Makefile | 11 ++++------- > >>> arch/arm64/include/asm/atomic_ll_sc.h | 2 +- > >>> arch/arm64/include/asm/lse.h | 6 +++--- > >>> arch/arm64/kernel/cpufeature.c | 4 ++-- > >>> scripts/Kconfig.include | 4 ++++ > >>> 6 files changed, 19 insertions(+), 13 deletions(-) > >>> > >>> > >> > >> with > >> > >> aarch64-linux-gnu-gcc (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 4.9.2 20140904 (prerelease) > >> > >> I see (among other warnings) > >> > >> arch/arm64/Makefile:35: LSE atomics not supported by binutils > >> > >> while with > >> > >> aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025 > >> > >> warning disappears. > >> > >> > >> FWIW: > >> > >> Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com> > >> Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> > > > > Cheers, I've queued the patches with your tags. > > Would you mind if I send follow-up patch for BROKEN_GAS_INST conversion > (it depends on as-inst)? Sure, you can send whatever you like! Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-01-15 13:24 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-15 11:30 [PATCH v2 0/2] arm64: Simplify gas LSE support detection Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 1/2] kbuild: Add support for 'as-instr' to be used in Kconfig files Catalin Marinas 2020-01-15 11:30 ` [PATCH v2 2/2] arm64: Move the LSE gas support detection to Kconfig Catalin Marinas 2020-01-15 12:49 ` [PATCH v2 0/2] arm64: Simplify gas LSE support detection Vladimir Murzin 2020-01-15 12:51 ` Will Deacon 2020-01-15 12:59 ` Vladimir Murzin 2020-01-15 13:24 ` Will Deacon
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).