Re: [PATCH 1/2] x86, Makefile: Move the CPU-specific 64-bit tuning settings to arch/x86/Makefile.cpu

From: Nick Desaulniers
Date: Tue Aug 17 2021 - 13:58:56 EST


Tor,
Thanks for the patches. One thing I always try to do is use
./scripts/get_maintainer.pl to get the appropriate maintainers and
reviewers cc'ed. I prefer to explicitly put the maintainers that I
expect to pick up a patch in the To: line.

$ ./scripts/get_maintainer.pl arch/x86/Makefile -norolestats
Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Ingo Molnar <mingo@xxxxxxxxxx>
Borislav Petkov <bp@xxxxxxxxx>
x86@xxxxxxxxxx
"H. Peter Anvin" <hpa@xxxxxxxxx>
Nathan Chancellor <nathan@xxxxxxxxxx>
Nick Desaulniers <ndesaulniers@xxxxxxxxxx>
linux-kernel@xxxxxxxxxxxxxxx
clang-built-linux@xxxxxxxxxxxxxxxx

added them to CC. Probably needs a refresh at this point, but
https://nickdesaulniers.github.io/blog/2017/05/16/submitting-your-first-patch-to-the-linux-kernel-and-responding-to-feedback/
is still mostly relevant.

On Tue, Aug 17, 2021 at 7:23 AM torvic9 via Clang Built Linux
<clang-built-linux@xxxxxxxxxxxxxxxx> wrote:
>
> In accordance with the FIXME comment in arch/x86/Makefile, move the
> CPU-specific 64-bit tuning settings to arch/x86/Makefile.cpu.
>
> Signed-off-by: Tor Vic <torvic9@xxxxxxxxxxx>
> ---
> arch/x86/Makefile | 11 ++---------
> arch/x86/Makefile.cpu | 12 ++++++++++++
> 2 files changed, 14 insertions(+), 9 deletions(-)
> create mode 100644 arch/x86/Makefile.cpu
>
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index 307fd0000a83..94105d7ad22c 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -119,15 +119,8 @@ else
> # Use -mskip-rax-setup if supported.
> KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
>
> - # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
> - cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
> - cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
> -
> - cflags-$(CONFIG_MCORE2) += \
> - $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
> - cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
> - $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
> - cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
> + # CPU-specific tuning (64-bit).
> + include arch/x86/Makefile.cpu

So we have arch/x86/Makefile_32.cpu, would it be more symmetrical to
have a new arch/x86/Makefile_64.cpu (rather than Makefile.cpu)?

> KBUILD_CFLAGS += $(cflags-y)
>
> KBUILD_CFLAGS += -mno-red-zone
> diff --git a/arch/x86/Makefile.cpu b/arch/x86/Makefile.cpu
> new file mode 100644
> index 000000000000..fb407ae94d90
> --- /dev/null
> +++ b/arch/x86/Makefile.cpu
> @@ -0,0 +1,12 @@
> +# SPDX-License-Identifier: GPL-2.0
> +# CPU tuning section (64-bit) - shared with UML.
> +# Must change only cflags-y (or [yn]), not CFLAGS! That makes a difference for UML.
> +
> +cflags-$(CONFIG_MK8) += $(call cc-option,-march=k8)
> +cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
> +
> +cflags-$(CONFIG_MCORE2) += \
> + $(call cc-option,-march=core2,$(call cc-option,-mtune=generic))
> +cflags-$(CONFIG_MATOM) += $(call cc-option,-march=atom) \
> + $(call cc-option,-mtune=atom,$(call cc-option,-mtune=generic))
> +cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)

I was going to say we probably don't want to limit -mtune=genric to
64b only, but it seems that arch/x86/Makefile_32.cpu has some
duplication here.

47 cflags-$(CONFIG_X86_GENERIC) += $(call tune,generic,$(call
tune,i686))

That probably could be hoisted back into arch/x86/Makefile before the
CONFIG_X86_32 check, but I'm not sure about the differences between
CONFIG_GENERIC_CPU vs CONFIG_X86_GENERIC?
--
Thanks,
~Nick Desaulniers