x86: add modern Intel and AMD CPUs perf-wip.2
authorJens Axboe <axboe@kernel.dk>
Wed, 24 Nov 2021 15:41:13 +0000 (08:41 -0700)
committerJens Axboe <axboe@kernel.dk>
Sun, 18 Dec 2022 18:20:05 +0000 (11:20 -0700)
Add options for both CPUs and have -march set correctly for them, and
enable -O3 for x86_64 in general.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
Makefile
arch/x86/Kconfig.cpu
arch/x86/Makefile
init/Kconfig

index 6aa709df6bde63167d9f0dd507e2931b14991505..02890cf878a402cdc945aa448e7e5f54ddc98334 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -820,7 +820,10 @@ KBUILD_CFLAGS      += $(call cc-disable-warning, format-truncation)
 KBUILD_CFLAGS  += $(call cc-disable-warning, format-overflow)
 KBUILD_CFLAGS  += $(call cc-disable-warning, address-of-packed-member)
 
-ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
+ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3
+KBUILD_CFLAGS += -O3
+KBUILD_RUSTFLAGS += -Copt-level=3
+else ifdef CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
 KBUILD_CFLAGS += -O2
 KBUILD_RUSTFLAGS += -Copt-level=2
 else ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
index 542377cd419d788e470e2a90d306ee3212cf9024..82206acbdadd78d3482c2adbbf977949be187a58 100644 (file)
@@ -1,5 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0
 # Put here option for CPU selection and depending optimization
+config CPU_DEFAULTS
+       bool
+
 choice
        prompt "Processor family"
        default M686 if X86_32
@@ -294,6 +297,34 @@ config GENERIC_CPU
          Generic x86-64 CPU.
          Run equally well on all x86-64 CPUs.
 
+config AMD_RYZEN2
+       bool "AMD Ryzen zen2"
+       depends on X86_64
+       select CPU_DEFAULTS
+       help
+         For Ryzen zen2 / threadripper
+
+config AMD_RYZEN3
+       bool "AMD Ryzen zen3"
+       depends on X86_64
+       select CPU_DEFAULTS
+       help
+         For Ryzen zen3
+
+config TIGERLAKE
+       bool "Intel Tigerlake"
+       depends on X86_64
+       select CPU_DEFAULTS
+       help
+         For Intel Tigerlake, 11th gen Core-i9
+
+config ALDERLAKE
+       bool "Intel Alderlake"
+       depends on X86_64
+       select CPU_DEFAULTS
+       help
+         For Intel Alderlake, 12th gen Core-i9
+
 endchoice
 
 config X86_GENERIC
@@ -318,7 +349,7 @@ config X86_INTERNODE_CACHE_SHIFT
 config X86_L1_CACHE_SHIFT
        int
        default "7" if MPENTIUM4 || MPSC
-       default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
+       default "6" if MK7 || MK8 || MPENTIUMM || MCORE2 || MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU || CPU_DEFAULTS
        default "4" if MELAN || M486SX || M486 || MGEODEGX1
        default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || M586 || MVIAC3_2 || MGEODE_LX
 
@@ -336,11 +367,11 @@ config X86_ALIGNMENT_16
 
 config X86_INTEL_USERCOPY
        def_bool y
-       depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2
+       depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 || MEFFICEON || MCORE2 || CPU_DEFAULTS
 
 config X86_USE_PPRO_CHECKSUM
        def_bool y
-       depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM
+       depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MATOM || CPU_DEFAULTS
 
 #
 # P6_NOPs are a relatively minor optimization that require a family >=
@@ -360,11 +391,11 @@ config X86_P6_NOP
 
 config X86_TSC
        def_bool y
-       depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64
+       depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || MK8 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || MCORE2 || MATOM) || X86_64 || CPU_DEFAULTS
 
 config X86_CMPXCHG64
        def_bool y
-       depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586TSC || M586MMX || MATOM || MGEODE_LX || MGEODEGX1 || MK6 || MK7 || MK8
+       depends on X86_PAE || X86_64 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586TSC || M586MMX || MATOM || MGEODE_LX || MGEODEGX1 || MK6 || MK7 || MK8 || CPU_DEFAULTS
 
 # this should be set for all -march=.. options where the compiler
 # generates cmov.
index a3a07df8a6095a0193f40e36e6075291c361b31a..7113159b097a4e5d3e66b52c22af965ae2e91338 100644 (file)
@@ -154,6 +154,10 @@ else
         cflags-$(CONFIG_MCORE2)                += -march=core2
         cflags-$(CONFIG_MATOM)         += -march=atom
         cflags-$(CONFIG_GENERIC_CPU)   += -mtune=generic
+        cflags-$(CONFIG_AMD_RYZEN2)    += -march=znver2
+        cflags-$(CONFIG_AMD_RYZEN3)    += -march=znver3
+        cflags-$(CONFIG_TIGERLAKE)     += -march=tigerlake
+        cflags-$(CONFIG_ALDERLAKE)     += -march=alderlake
         KBUILD_CFLAGS += $(cflags-y)
 
         rustflags-$(CONFIG_MK8)                += -Ctarget-cpu=k8
index 7e5c3ddc341de319115e47399beb53e9b9960363..7ce97264c9f76dbf64e94d9b2df5aab944ae3bb7 100644 (file)
@@ -1416,6 +1416,13 @@ config CC_OPTIMIZE_FOR_PERFORMANCE
          with the "-O2" compiler flag for best performance and most
          helpful compile-time warnings.
 
+config CC_OPTIMIZE_FOR_PERFORMANCE_O3
+       bool "Optimize more for performance (-O3)"
+       depends on ARC || X86_64
+       help
+         Choosing this option will pass "-O3" to your compiler to optimize
+         the kernel yet more for performance.
+
 config CC_OPTIMIZE_FOR_SIZE
        bool "Optimize for size (-Os)"
        help