This series of cleanups was prompted by Linus: https://lkml.org/lkml/2020/3/12/726
First, this series drop always-on CONFIG_AS_* options. Some of those options were introduced in old days. For example, the check for CONFIG_AS_CFI dates back to 2006.
We raise the minimal tool versions from time to time. Currently, we require binutils 2.21 (and we even plan to bump it to 2.23).
After cleaning away the old checks, as-instr calls are moved to Kconfig from Makefiles, then more Kconfig / Makefile code is cleaned up.
I folded all relevanet patches into this series, as suggested by Jason A. Donenfeld.
The update for v2 is quite small. I just swapped the patch order of patch 8 and 11 instead of moving comments around files, which was addressed by Nick Desaulniers.
Borislav Petkov (1): Documentation/changes: Raise minimum supported binutils version to 2.23
Jason A. Donenfeld (4): x86: probe assembler capabilities via kconfig instead of makefile crypto: x86 - rework configuration based on Kconfig crypto: curve25519 - do not pollute dispatcher based on assembler x86: update AS_* macros to binutils >=2.23, supporting ADX and AVX2
Masahiro Yamada (11): lib/raid6/test: fix build on distros whose /bin/sh is not bash x86: remove unneeded defined(__ASSEMBLY__) check from asm/dwarf2.h x86: remove always-defined CONFIG_AS_CFI x86: remove unneeded (CONFIG_AS_)CFI_SIGNAL_FRAME x86: remove always-defined CONFIG_AS_CFI_SECTIONS x86: remove always-defined CONFIG_AS_SSSE3 x86: remove always-defined CONFIG_AS_AVX x86: replace arch macros from compiler with CONFIG_X86_{32,64} drm/i915: remove always-defined CONFIG_AS_MOVNTDQA x86: add comments about the binutils version to support code in as-instr crypto: x86 - clean up poly1305-x86_64-cryptogams.S by 'make clean'
Documentation/process/changes.rst | 4 +- arch/x86/Kconfig | 2 + arch/x86/Kconfig.assembler | 17 ++ arch/x86/Makefile | 22 --- arch/x86/crypto/Makefile | 162 +++++++----------- arch/x86/crypto/aesni-intel_avx-x86_64.S | 6 - arch/x86/crypto/aesni-intel_glue.c | 21 +-- arch/x86/crypto/blake2s-core.S | 2 - arch/x86/crypto/chacha_glue.c | 6 +- arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 16 -- arch/x86/crypto/poly1305_glue.c | 11 +- arch/x86/crypto/sha1_ssse3_asm.S | 4 - arch/x86/crypto/sha1_ssse3_glue.c | 13 -- arch/x86/crypto/sha256-avx-asm.S | 3 - arch/x86/crypto/sha256-avx2-asm.S | 3 - arch/x86/crypto/sha256_ssse3_glue.c | 12 -- arch/x86/crypto/sha512-avx-asm.S | 2 - arch/x86/crypto/sha512-avx2-asm.S | 3 - arch/x86/crypto/sha512_ssse3_glue.c | 10 -- arch/x86/include/asm/dwarf2.h | 44 ----- arch/x86/include/asm/xor_avx.h | 9 - drivers/gpu/drm/i915/Makefile | 3 - drivers/gpu/drm/i915/i915_memcpy.c | 5 - include/crypto/curve25519.h | 6 +- kernel/signal.c | 2 +- lib/raid6/algos.c | 12 +- lib/raid6/avx2.c | 4 - lib/raid6/recov_avx2.c | 6 - lib/raid6/recov_ssse3.c | 6 - lib/raid6/test/Makefile | 9 +- 30 files changed, 101 insertions(+), 324 deletions(-) create mode 100644 arch/x86/Kconfig.assembler
CONFIG_AS_MOVNTDQA was introduced by commit 0b1de5d58e19 ("drm/i915: Use SSE4.1 movntdqa to accelerate reads from WC memory").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_MOVNTDQA, which is always defined.
Signed-off-by: Masahiro Yamada masahiroy@kernel.org Reviewed-by: Nick Desaulniers ndesaulniers@google.com ---
Changes in v2: None
drivers/gpu/drm/i915/Makefile | 3 --- drivers/gpu/drm/i915/i915_memcpy.c | 5 ----- 2 files changed, 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index a1f2411aa21b..e559e53fc634 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -28,9 +28,6 @@ subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init) CFLAGS_display/intel_fbdev.o = $(call cc-disable-warning, override-init)
-subdir-ccflags-y += \ - $(call as-instr,movntdqa (%eax)$(comma)%xmm0,-DCONFIG_AS_MOVNTDQA) - subdir-ccflags-y += -I$(srctree)/$(src)
# Please keep these build lists sorted! diff --git a/drivers/gpu/drm/i915/i915_memcpy.c b/drivers/gpu/drm/i915/i915_memcpy.c index fdd550405fd3..7b3b83bd5ab8 100644 --- a/drivers/gpu/drm/i915/i915_memcpy.c +++ b/drivers/gpu/drm/i915/i915_memcpy.c @@ -35,7 +35,6 @@
static DEFINE_STATIC_KEY_FALSE(has_movntdqa);
-#ifdef CONFIG_AS_MOVNTDQA static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) { kernel_fpu_begin(); @@ -93,10 +92,6 @@ static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len)
kernel_fpu_end(); } -#else -static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) {} -static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len) {} -#endif
/** * i915_memcpy_from_wc: perform an accelerated *aligned* read from WC
On Thu, 26 Mar 2020, Masahiro Yamada masahiroy@kernel.org wrote:
CONFIG_AS_MOVNTDQA was introduced by commit 0b1de5d58e19 ("drm/i915: Use SSE4.1 movntdqa to accelerate reads from WC memory").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_MOVNTDQA, which is always defined.
Signed-off-by: Masahiro Yamada masahiroy@kernel.org Reviewed-by: Nick Desaulniers ndesaulniers@google.com
Ack for merging this via whichever tree you see fit; please let me know if you want me to pick this up via drm-intel.
BR, Jani.
Changes in v2: None
drivers/gpu/drm/i915/Makefile | 3 --- drivers/gpu/drm/i915/i915_memcpy.c | 5 ----- 2 files changed, 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index a1f2411aa21b..e559e53fc634 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -28,9 +28,6 @@ subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init) CFLAGS_display/intel_fbdev.o = $(call cc-disable-warning, override-init)
-subdir-ccflags-y += \
- $(call as-instr,movntdqa (%eax)$(comma)%xmm0,-DCONFIG_AS_MOVNTDQA)
subdir-ccflags-y += -I$(srctree)/$(src)
# Please keep these build lists sorted! diff --git a/drivers/gpu/drm/i915/i915_memcpy.c b/drivers/gpu/drm/i915/i915_memcpy.c index fdd550405fd3..7b3b83bd5ab8 100644 --- a/drivers/gpu/drm/i915/i915_memcpy.c +++ b/drivers/gpu/drm/i915/i915_memcpy.c @@ -35,7 +35,6 @@
static DEFINE_STATIC_KEY_FALSE(has_movntdqa);
-#ifdef CONFIG_AS_MOVNTDQA static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) { kernel_fpu_begin(); @@ -93,10 +92,6 @@ static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len)
kernel_fpu_end(); } -#else -static void __memcpy_ntdqa(void *dst, const void *src, unsigned long len) {} -static void __memcpy_ntdqu(void *dst, const void *src, unsigned long len) {} -#endif
/**
- i915_memcpy_from_wc: perform an accelerated *aligned* read from WC
dri-devel@lists.freedesktop.org