commit:     9f9ebec7eee0d85f359a44fe3dd2f484b01172ad
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Fri Jun  8 23:11:01 2018 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Fri Jun  8 23:11:01 2018 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=9f9ebec7

Update cpu optimization patch

 0000_README                                        |  2 +-
 ...able-additional-cpu-optimizations-for-gcc.patch | 67 +++++++++++++---------
 2 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/0000_README b/0000_README
index 94eb66a..86e4a15 100644
--- a/0000_README
+++ b/0000_README
@@ -77,4 +77,4 @@ Desc:   Add Gentoo Linux support config settings and defaults.
 
 Patch:  5010_enable-additional-cpu-optimizations-for-gcc.patch
 From:   https://github.com/graysky2/kernel_gcc_patch/
-Desc:   Kernel patch enables gcc >= v4.9 optimizations for additional CPUs.
+Desc:   Kernel patch enables gcc >= v4.13 optimizations for additional CPUs.

diff --git a/5010_enable-additional-cpu-optimizations-for-gcc.patch 
b/5010_enable-additional-cpu-optimizations-for-gcc.patch
index 1aba143..a8aa759 100644
--- a/5010_enable-additional-cpu-optimizations-for-gcc.patch
+++ b/5010_enable-additional-cpu-optimizations-for-gcc.patch
@@ -1,5 +1,5 @@
 WARNING
-This patch works with gcc versions 4.9+ and with kernel version 3.15+ and 
should
+This patch works with gcc versions 4.9+ and with kernel version 4.13+ and 
should
 NOT be applied when compiling on older versions of gcc due to key name changes
 of the march flags introduced with the version 4.9 release of gcc.[1]
 
@@ -29,7 +29,8 @@ The expanded microarchitectures include:
 * Intel 3rd Gen Core i3/i5/i7 (Ivybridge)
 * Intel 4th Gen Core i3/i5/i7 (Haswell)
 * Intel 5th Gen Core i3/i5/i7 (Broadwell)
-* Intel 6th Gen Core i3/i5.i7 (Skylake)
+* Intel 6th Gen Core i3/i5/i7 (Skylake)
+* Intel 6th Gen Core i7/i9 (Skylake X)
 
 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
@@ -53,7 +54,7 @@ See the following experimental evidence supporting this 
statement:
 https://github.com/graysky2/kernel_gcc_patch
 
 REQUIREMENTS
-linux version >=3.15
+linux version >=4.13
 gcc version >=4.9
 
 ACKNOWLEDGMENTS
@@ -66,9 +67,9 @@ REFERENCES
 4. https://github.com/graysky2/kernel_gcc_patch/issues/15
 5. http://www.linuxforge.net/docs/linux/linux-gcc.php
 
---- a/arch/x86/include/asm/module.h    2018-02-25 21:50:41.000000000 -0500
-+++ b/arch/x86/include/asm/module.h    2018-02-26 15:37:52.684596240 -0500
-@@ -25,6 +25,24 @@ struct mod_arch_specific {
+--- a/arch/x86/include/asm/module.h    2018-01-28 16:20:33.000000000 -0500
++++ b/arch/x86/include/asm/module.h    2018-03-10 06:42:38.688317317 -0500
+@@ -25,6 +25,26 @@ struct mod_arch_specific {
  #define MODULE_PROC_FAMILY "586MMX "
  #elif defined CONFIG_MCORE2
  #define MODULE_PROC_FAMILY "CORE2 "
@@ -90,10 +91,12 @@ REFERENCES
 +#define MODULE_PROC_FAMILY "BROADWELL "
 +#elif defined CONFIG_MSKYLAKE
 +#define MODULE_PROC_FAMILY "SKYLAKE "
++#elif defined CONFIG_MSKYLAKEX
++#define MODULE_PROC_FAMILY "SKYLAKEX "
  #elif defined CONFIG_MATOM
  #define MODULE_PROC_FAMILY "ATOM "
  #elif defined CONFIG_M686
-@@ -43,6 +61,26 @@ struct mod_arch_specific {
+@@ -43,6 +63,26 @@ struct mod_arch_specific {
  #define MODULE_PROC_FAMILY "K7 "
  #elif defined CONFIG_MK8
  #define MODULE_PROC_FAMILY "K8 "
@@ -120,8 +123,8 @@ REFERENCES
  #elif defined CONFIG_MELAN
  #define MODULE_PROC_FAMILY "ELAN "
  #elif defined CONFIG_MCRUSOE
---- a/arch/x86/Kconfig.cpu     2018-02-25 21:50:41.000000000 -0500
-+++ b/arch/x86/Kconfig.cpu     2018-02-26 15:46:09.886742109 -0500
+--- a/arch/x86/Kconfig.cpu     2018-01-28 16:20:33.000000000 -0500
++++ b/arch/x86/Kconfig.cpu     2018-03-10 06:45:50.244371799 -0500
 @@ -116,6 +116,7 @@ config MPENTIUMM
  config MPENTIUM4
        bool "Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon"
@@ -264,7 +267,7 @@ REFERENCES
        ---help---
  
          Select this for Intel Core 2 and newer Core 2 Xeons (Xeon 51xx and
-@@ -271,14 +354,79 @@ config MCORE2
+@@ -271,14 +354,88 @@ config MCORE2
          family in /proc/cpuinfo. Newer ones have 6 and older ones 15
          (not a typo)
  
@@ -347,10 +350,19 @@ REFERENCES
 +        Select this for 6th Gen Core processors in the Skylake family.
 +
 +        Enables -march=skylake
++
++config MSKYLAKEX
++      bool "Intel Skylake X"
++      select X86_P6_NOP
++      ---help---
++
++        Select this for 6th Gen Core processors in the Skylake X family.
++
++        Enables -march=skylake-avx512
  
  config GENERIC_CPU
        bool "Generic-x86-64"
-@@ -287,6 +435,19 @@ config GENERIC_CPU
+@@ -287,6 +444,19 @@ config GENERIC_CPU
          Generic x86-64 CPU.
          Run equally well on all x86-64 CPUs.
  
@@ -370,26 +382,26 @@ REFERENCES
  endchoice
  
  config X86_GENERIC
-@@ -311,7 +472,7 @@ config X86_INTERNODE_CACHE_SHIFT
+@@ -311,7 +481,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 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT 
|| MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR 
|| MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE 
|| MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MNATIVE || MATOM || 
MVIAC7 || X86_GENERIC || GENERIC_CPU
++      default "6" if MK7 || MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT 
|| MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR 
|| MPENTIUMM || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE 
|| MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE || 
MATOM || MVIAC7 || X86_GENERIC || GENERIC_CPU
        default "4" if MELAN || M486 || MGEODEGX1
        default "5" if MWINCHIP3D || MWINCHIPC6 || MCRUSOE || MEFFICEON || 
MCYRIXIII || MK6 || MPENTIUMIII || MPENTIUMII || M686 || M586MMX || M586TSC || 
M586 || MVIAC3_2 || MGEODE_LX
  
-@@ -342,35 +503,36 @@ config X86_ALIGNMENT_16
+@@ -342,35 +512,36 @@ 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 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 
|| MBARCELONA || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || 
MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MNATIVE
++      depends on MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || 
M586MMX || X86_GENERIC || MK8 || MK8SSE3 || MK7 || MEFFICEON || MCORE2 || MK10 
|| MBARCELONA || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || 
MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE
  
  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 || MK10 
|| MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || 
MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM 
|| MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || 
MBROADWELL || MSKYLAKE || MATOM || MNATIVE
++      depends on MWINCHIP3D || MWINCHIPC6 || MCYRIXIII || MK7 || MK6 || MK10 
|| MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MK8 || 
MK8SSE3 || MVIAC3_2 || MVIAC7 || MEFFICEON || MGEODE_LX || MCORE2 || MNEHALEM 
|| MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || 
MBROADWELL || MSKYLAKE || MSKYLAKEX || MATOM || MNATIVE
  
  config X86_USE_3DNOW
        def_bool y
@@ -412,7 +424,7 @@ REFERENCES
 -      depends on (MCORE2 || MPENTIUM4 || MPSC)
 +      default n
 +      bool "Support for P6_NOPs on Intel chips"
-+      depends on (MCORE2 || MPENTIUM4 || MPSC || MATOM || MNEHALEM || 
MWESTMERE || MSILVERMONT  || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || 
MBROADWELL || MSKYLAKE || MNATIVE)
++      depends on (MCORE2 || MPENTIUM4 || MPSC || MATOM || MNEHALEM || 
MWESTMERE || MSILVERMONT  || MSANDYBRIDGE || MIVYBRIDGE || MHASWELL || 
MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE)
 +      ---help---
 +      P6_NOPs are a relatively minor optimization that require a family >=
 +      6 processor, except that it is broken on certain VIA chips.
@@ -429,22 +441,22 @@ REFERENCES
  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 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || 
MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || 
MHASWELL || MBROADWELL || MSKYLAKE || MNATIVE || MATOM) || X86_64
++      depends on (MWINCHIP3D || MCRUSOE || MEFFICEON || MCYRIXIII || MK7 || 
MK6 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || M586MMX 
|| M586TSC || MK8 || MK8SSE3 || MVIAC3_2 || MVIAC7 || MGEODEGX1 || MGEODE_LX || 
MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || MIVYBRIDGE || 
MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MNATIVE || MATOM) || X86_64
  
  config X86_CMPXCHG64
        def_bool y
-@@ -380,7 +542,7 @@ config X86_CMPXCHG64
+@@ -380,7 +551,7 @@ config X86_CMPXCHG64
  # generates cmov.
  config X86_CMOV
        def_bool y
 -      depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || 
MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON 
|| X86_64 || MATOM || MGEODE_LX)
-+      depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || 
MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || 
MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || 
MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MPENTIUM4 || MPENTIUMM || 
MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON 
|| X86_64 || MNATIVE || MATOM || MGEODE_LX)
++      depends on (MK8 || MK8SSE3 || MK10 || MBARCELONA || MBOBCAT || 
MBULLDOZER || MPILEDRIVER || MSTEAMROLLER || MEXCAVATOR || MZEN || MJAGUAR || 
MK7 || MCORE2 || MNEHALEM || MWESTMERE || MSILVERMONT || MSANDYBRIDGE || 
MIVYBRIDGE || MHASWELL || MBROADWELL || MSKYLAKE || MSKYLAKEX || MPENTIUM4 || 
MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE 
|| MEFFICEON || X86_64 || MNATIVE || MATOM || MGEODE_LX)
  
  config X86_MINIMUM_CPU_FAMILY
        int
---- a/arch/x86/Makefile        2018-02-25 21:50:41.000000000 -0500
-+++ b/arch/x86/Makefile        2018-02-26 15:37:52.685596255 -0500
-@@ -124,13 +124,40 @@ else
+--- a/arch/x86/Makefile        2018-01-28 16:20:33.000000000 -0500
++++ b/arch/x86/Makefile        2018-03-10 06:47:00.284240139 -0500
+@@ -124,13 +124,42 @@ else
        KBUILD_CFLAGS += $(call cc-option,-mskip-rax-setup)
  
          # FIXME - should be integrated in Makefile.cpu (Makefile_32.cpu)
@@ -483,13 +495,15 @@ REFERENCES
 +                $(call cc-option,-march=broadwell,$(call 
cc-option,-mtune=broadwell))
 +        cflags-$(CONFIG_MSKYLAKE) += \
 +                $(call cc-option,-march=skylake,$(call 
cc-option,-mtune=skylake))
++        cflags-$(CONFIG_MSKYLAKEX) += \
++                $(call cc-option,-march=skylake-avx512,$(call 
cc-option,-mtune=skylake-avx512))
 +        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 2018-02-25 21:50:41.000000000 -0500
-+++ b/arch/x86/Makefile_32.cpu 2018-02-26 15:37:52.686596269 -0500
+--- a/arch/x86/Makefile_32.cpu 2018-01-28 16:20:33.000000000 -0500
++++ b/arch/x86/Makefile_32.cpu 2018-03-10 06:47:46.025992644 -0500
 @@ -23,7 +23,18 @@ 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.
@@ -509,7 +523,7 @@ REFERENCES
  cflags-$(CONFIG_MCRUSOE)      += -march=i686 -falign-functions=0 
-falign-jumps=0 -falign-loops=0
  cflags-$(CONFIG_MEFFICEON)    += -march=i686 $(call tune,pentium3) 
-falign-functions=0 -falign-jumps=0 -falign-loops=0
  cflags-$(CONFIG_MWINCHIPC6)   += $(call 
cc-option,-march=winchip-c6,-march=i586)
-@@ -32,8 +43,16 @@ cflags-$(CONFIG_MCYRIXIII)  += $(call cc-
+@@ -32,8 +43,17 @@ cflags-$(CONFIG_MCYRIXIII)  += $(call cc-
  cflags-$(CONFIG_MVIAC3_2)     += $(call cc-option,-march=c3-2,-march=i686)
  cflags-$(CONFIG_MVIAC7)               += -march=i686
  cflags-$(CONFIG_MCORE2)               += -march=i686 $(call tune,core2)
@@ -523,6 +537,7 @@ REFERENCES
 +cflags-$(CONFIG_MHASWELL)     += -march=i686 $(call tune,haswell)
 +cflags-$(CONFIG_MBROADWELL)   += -march=i686 $(call tune,broadwell)
 +cflags-$(CONFIG_MSKYLAKE)     += -march=i686 $(call tune,skylake)
++cflags-$(CONFIG_MSKYLAKEX)    += -march=i686 $(call tune,skylake-avx512)
 +cflags-$(CONFIG_MATOM)                += $(call 
cc-option,-march=bonnell,$(call cc-option,-march=core2,-march=i686)) \
 +      $(call cc-option,-mtune=bonnell,$(call cc-option,-mtune=generic))
  

Reply via email to