Re: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3

From: Masahiro Yamada
Date: Mon Mar 23 2020 - 16:45:23 EST


On Tue, Mar 24, 2020 at 3:06 AM Jason A. Donenfeld <Jason@xxxxxxxxx> wrote:
>
> On Sun, Mar 22, 2020 at 8:10 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote:
> > diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
> > index bf1b4765c8f6..77457ea5a239 100644
> > --- a/lib/raid6/algos.c
> > +++ b/lib/raid6/algos.c
> > @@ -103,9 +103,7 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {
> > #ifdef CONFIG_AS_AVX2
> > &raid6_recov_avx2,
> > #endif
> > -#ifdef CONFIG_AS_SSSE3
> > &raid6_recov_ssse3,
> > -#endif
> > #ifdef CONFIG_S390
> > &raid6_recov_s390xc,
> > #endif
>
> algos.c is compiled on all platforms, so you'll need to ifdef that x86
> section where SSSE3 is no longer guarding it. The pattern in the rest
> of the file, if you want to follow it, is "#if defined(__x86_64__) &&
> !defined(__arch_um__)". That seems ugly and like there are better
> ways, but in the interest of uniformity and a lack of desire to
> rewrite all the raid6 code, I went with that in this cleanup:
>
> https://git.zx2c4.com/linux-dev/commit/?h=jd/kconfig-assembler-support&id=512a00ddebbe5294a88487dcf1dc845cf56703d9


Thanks for the pointer,
but I think guarding with CONFIG_X86 makes more sense.

raid6_recov_ssse3 is defined in lib/raid6/recov_ssse3.c,
which is guarded by like this:

raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o
sse2.o avx2.o avx512.o recov_avx512.o


Indeed,

#if defined(__x86_64__) && !defined(__arch_um__)

is ugly.


I wonder why the code was written like that.

I rather want to check a single CONFIG option.
Please see the attached patch.




> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@xxxxxxxxxxxxxxxxx
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/CAHmME9p3LAnrUMmcGPEUFqY5vOASe8MVk4%3DpzqFRj3E9C-bM%2BQ%40mail.gmail.com.



--
Best Regards
Masahiro Yamada
From 5b32698b09c156479e16f554d1ad027149a6ed05 Mon Sep 17 00:00:00 2001
From: Masahiro Yamada <masahiroy@xxxxxxxxxx>
Date: Tue, 24 Mar 2020 05:25:20 +0900
Subject: [PATCH] x86: replace arch macros from compiler with
CONFIG_X86_{32,64}

If the intention is to check i386/x86_64 excluding UML,
checking CONFIG_X86_{32,64} is simpler.

Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
---
kernel/signal.c | 2 +-
lib/raid6/algos.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/signal.c b/kernel/signal.c
index 5b2396350dd1..db557e1629e5 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1246,7 +1246,7 @@ static void print_fatal_signal(int signr)
struct pt_regs *regs = signal_pt_regs();
pr_info("potentially unexpected fatal signal %d.\n", signr);

-#if defined(__i386__) && !defined(__arch_um__)
+#ifdef CONFIG_X86_32
pr_info("code at %08lx: ", regs->ip);
{
int i;
diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
index df08664d3432..b5a02326cfb7 100644
--- a/lib/raid6/algos.c
+++ b/lib/raid6/algos.c
@@ -29,7 +29,7 @@ struct raid6_calls raid6_call;
EXPORT_SYMBOL_GPL(raid6_call);

const struct raid6_calls * const raid6_algos[] = {
-#if defined(__i386__) && !defined(__arch_um__)
+#ifdef CONFIG_X86_32
#ifdef CONFIG_AS_AVX512
&raid6_avx512x2,
&raid6_avx512x1,
@@ -45,7 +45,7 @@ const struct raid6_calls * const raid6_algos[] = {
&raid6_mmxx2,
&raid6_mmxx1,
#endif
-#if defined(__x86_64__) && !defined(__arch_um__)
+#ifdef CONFIG_X86_64
#ifdef CONFIG_AS_AVX512
&raid6_avx512x4,
&raid6_avx512x2,
--
2.17.1