commit: cb65e6066a41df243404a5fa57079315641c156c
Author: Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 29 17:43:25 2020 +0000
Commit: Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Mon Jun 29 17:43:25 2020 +0000
URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=cb65e606
Update gcc optimization patch for gcc v9.1+
Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>
5012_enable-cpu-optimizations-for-gcc91.patch | 49 ++++++++++++++++-----------
1 file changed, 29 insertions(+), 20 deletions(-)
diff --git a/5012_enable-cpu-optimizations-for-gcc91.patch
b/5012_enable-cpu-optimizations-for-gcc91.patch
index dffd36d..8f35520 100644
--- a/5012_enable-cpu-optimizations-for-gcc91.patch
+++ b/5012_enable-cpu-optimizations-for-gcc91.patch
@@ -42,14 +42,18 @@ It also offers to compile passing the 'native' option
which, "selects the CPU
to generate code for at compilation time by determining the processor type of
the compiling machine. Using -march=native enables all instruction subsets
supported by the local machine and will produce code optimized for the local
-machine under the constraints of the selected instruction set."[3]
+machine under the constraints of the selected instruction set."[2]
+
+Do NOT try using the 'native' option on AMD Piledriver, Steamroller, or
+Excavator CPUs (-march=bdver{2,3,4} flag). The build will error out due the
+kernel's objtool issue with these.[3a,b]
MINOR NOTES
This patch also changes 'atom' to 'bonnell' in accordance with the gcc v4.9
changes. Note that upstream is using the deprecated 'match=atom' flags when I
-believe it should use the newer 'march=bonnell' flag for atom processors.[2]
+believe it should use the newer 'march=bonnell' flag for atom processors.[4]
-It is not recommended to compile on Atom-CPUs with the 'native' option.[4] The
+It is not recommended to compile on Atom-CPUs with the 'native' option.[5] The
recommendation is to use the 'atom' option instead.
BENEFITS
@@ -61,20 +65,22 @@ https://github.com/graysky2/kernel_gcc_patch
REQUIREMENTS
linux version >=4.13
-gcc version >=9.1
+gcc version >=9.1 and <10
ACKNOWLEDGMENTS
-This patch builds on the seminal work by Jeroen.[5]
+This patch builds on the seminal work by Jeroen.[6]
REFERENCES
-1. https://gcc.gnu.org/gcc-4.9/changes.html
-2. https://bugzilla.kernel.org/show_bug.cgi?id=77461
-3. https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
-4. https://github.com/graysky2/kernel_gcc_patch/issues/15
-5. http://www.linuxforge.net/docs/linux/linux-gcc.php
+1. https://gcc.gnu.org/gcc-4.9/changes.html
+2. https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
+3a. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95671#c11
+3b. https://github.com/graysky2/kernel_gcc_patch/issues/55
+4. https://bugzilla.kernel.org/show_bug.cgi?id=77461
+5. https://github.com/graysky2/kernel_gcc_patch/issues/15
+6. http://www.linuxforge.net/docs/linux/linux-gcc.php
---- a/arch/x86/include/asm/module.h 2019-08-16 04:11:12.000000000 -0400
-+++ b/arch/x86/include/asm/module.h 2019-08-22 15:56:23.988050322 -0400
+--- a/arch/x86/include/asm/module.h 2020-06-10 15:35:02.000000000 -0400
++++ b/arch/x86/include/asm/module.h 2020-06-15 10:38:25.646459545 -0400
@@ -25,6 +25,36 @@ struct mod_arch_specific {
#define MODULE_PROC_FAMILY "586MMX "
#elif defined CONFIG_MCORE2
@@ -141,8 +147,8 @@ REFERENCES
#elif defined CONFIG_MELAN
#define MODULE_PROC_FAMILY "ELAN "
#elif defined CONFIG_MCRUSOE
---- a/arch/x86/Kconfig.cpu 2019-08-16 04:11:12.000000000 -0400
-+++ b/arch/x86/Kconfig.cpu 2019-08-22 15:59:31.596946943 -0400
+--- a/arch/x86/Kconfig.cpu 2020-06-10 15:35:02.000000000 -0400
++++ b/arch/x86/Kconfig.cpu 2020-06-15 10:38:25.646459545 -0400
@@ -116,6 +116,7 @@ config MPENTIUMM
config MPENTIUM4
bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
@@ -524,9 +530,9 @@ REFERENCES
config X86_MINIMUM_CPU_FAMILY
int
---- a/arch/x86/Makefile 2019-08-16 04:11:12.000000000 -0400
-+++ b/arch/x86/Makefile 2019-08-22 16:01:22.559789904 -0400
-@@ -118,13 +118,53 @@ else
+--- a/arch/x86/Makefile 2020-06-10 15:35:02.000000000 -0400
++++ b/arch/x86/Makefile 2020-06-15 10:38:54.653775572 -0400
+@@ -119,13 +119,56 @@ else
KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
# FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
@@ -539,8 +545,11 @@ REFERENCES
+ cflags-$(CONFIG_MJAGUAR) += $(call cc-option,-march=btver2)
+ cflags-$(CONFIG_MBULLDOZER) += $(call cc-option,-march=bdver1)
+ cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-march=bdver2)
++ cflags-$(CONFIG_MPILEDRIVER) += $(call cc-option,-mno-tbm)
+ cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-march=bdver3)
++ cflags-$(CONFIG_MSTEAMROLLER) += $(call cc-option,-mno-tbm)
+ cflags-$(CONFIG_MEXCAVATOR) += $(call cc-option,-march=bdver4)
++ cflags-$(CONFIG_MEXCAVATOR) += $(call cc-option,-mno-tbm)
+ cflags-$(CONFIG_MZEN) += $(call cc-option,-march=znver1)
+ cflags-$(CONFIG_MZEN2) += $(call cc-option,-march=znver2)
cflags-$(CONFIG_MPSC) += $(call cc-option,-march=nocona)
@@ -576,15 +585,15 @@ REFERENCES
+ $(call cc-option,-march=cannonlake,$(call
cc-option,-mtune=cannonlake))
+ cflags-$(CONFIG_MICELAKE) += \
+ $(call cc-option,-march=icelake-client,$(call
cc-option,-mtune=icelake-client))
-+ cflags-$(CONFIG_MCASCADE) += \
++ cflags-$(CONFIG_MCASCADELAKE) += \
+ $(call cc-option,-march=cascadelake,$(call
cc-option,-mtune=cascadelake))
+ cflags-$(CONFIG_MATOM) += $(call cc-option,-march=bonnell) \
+ $(call cc-option,-mtune=bonnell,$(call
cc-option,-mtune=generic))
cflags-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=generic)
KBUILD_CFLAGS += $(cflags-y)
---- a/arch/x86/Makefile_32.cpu 2019-08-16 04:11:12.000000000 -0400
-+++ b/arch/x86/Makefile_32.cpu 2019-08-22 16:02:14.687701216 -0400
+--- a/arch/x86/Makefile_32.cpu 2020-06-10 15:35:02.000000000 -0400
++++ b/arch/x86/Makefile_32.cpu 2020-06-15 10:38:25.646459545 -0400
@@ -23,7 +23,19 @@ cflags-$(CONFIG_MK6) += -march=k6
# Please note, that patches that add -march=athlon-xp and friends are
pointless.
# They make zero difference whatsosever to performance at this time.