From: Jens Axboe Date: Wed, 24 Nov 2021 15:41:13 +0000 (-0700) Subject: x86: add modern Intel and AMD CPUs X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=refs%2Fheads%2Fperf-wip.2;p=linux-2.6-block.git x86: add modern Intel and AMD CPUs 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 --- diff --git a/Makefile b/Makefile index 6aa709df6bde..02890cf878a4 100644 --- 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 diff --git a/arch/x86/Kconfig.cpu b/arch/x86/Kconfig.cpu index 542377cd419d..82206acbdadd 100644 --- a/arch/x86/Kconfig.cpu +++ b/arch/x86/Kconfig.cpu @@ -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. diff --git a/arch/x86/Makefile b/arch/x86/Makefile index a3a07df8a609..7113159b097a 100644 --- a/arch/x86/Makefile +++ b/arch/x86/Makefile @@ -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 diff --git a/init/Kconfig b/init/Kconfig index 7e5c3ddc341d..7ce97264c9f7 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -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