summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Stefani2020-08-04 18:03:44 +0200
committerLuca Stefani2020-08-04 18:22:30 +0200
commit40203a5e4d025aeb382097a7a5412b192efe2fc9 (patch)
tree531460cf1c0ff6f84f62954f694da74db75685fd
parent98f94925cdfb7515a89762c7656cb2e399c743ea (diff)
downloadaur-40203a5e4d025aeb382097a7a5412b192efe2fc9.tar.gz
Enable ThinLTO
-rw-r--r--.SRCINFO6
-rw-r--r--0001-RAS-CEC-Fix-cec_init-prototype.patch52
-rw-r--r--0002-kbuild-Rollback-required-CLANG-version-to-10-for-LTO.patch42
-rw-r--r--PKGBUILD7
-rw-r--r--config5
5 files changed, 109 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 3b6af012e67d..f3e8ce8d533d 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -53,9 +53,11 @@ pkgbase = linux-llvm
source = 0022-x86-ftrace-disable-recordmcount-for-ftrace_make_nop.patch
source = 0023-x86-relocs-Ignore-L4_PAGE_OFFSET-relocations.patch
source = 0024-x86-build-allow-LTO_CLANG-and-THINLTO-to-be-selected.patch
+ source = 0001-RAS-CEC-Fix-cec_init-prototype.patch
+ source = 0002-kbuild-Rollback-required-CLANG-version-to-10-for-LTO.patch
source = enable_additional_cpu_optimizations_for_gcc_v10.1+_kernel_v5.8+.patch
sha256sums = SKIP
- sha256sums = 526c3f2d88be415c16015ce4b36518a60540ed4aedaf2d93b98785733eb822f7
+ sha256sums = 2742a1348f1d7685671480ee24661a4d439f66c335a7e908b51290774e85a0dd
sha256sums = 8cb21e0b3411327b627a9dd15b8eb773295a0d2782b1a41b2a8839d1b2f5778c
sha256sums = 2f0090ec0c9a72e6241bbea05faaef979405119ce8ef669d84dead36c8e2246e
sha256sums = 5f21c12f002e71ec5b5db96832b415ce291a7e230fa07b328c21760274e72e9d
@@ -88,6 +90,8 @@ pkgbase = linux-llvm
sha256sums = bd3f17cbb1da5293bb54a5bdeaa613098d41fe676ee327ba35867c18732ee80c
sha256sums = 539794c1dc9b8e35a73e2e165040f363d0c7f32bc5da415ae6b27a9ffe57dde2
sha256sums = 3b956c3768e59f2d5fb0546a855138319eff60e077822667befed734c7ac84af
+ sha256sums = d89d15358b42c56bbb83a9f9d38bd25666d44a6f91be1029e5297bf79f8fbdc6
+ sha256sums = 575e1c1353d4dca1773ac6e4b60f8d32e1611381596389c8b06a73aed0fe010a
sha256sums = 5ab29eb64e57df83b395a29a6a4f89030d142feffbfbf73b3afc6d97a2a7fd12
pkgname = linux-llvm
diff --git a/0001-RAS-CEC-Fix-cec_init-prototype.patch b/0001-RAS-CEC-Fix-cec_init-prototype.patch
new file mode 100644
index 000000000000..8afd553bca42
--- /dev/null
+++ b/0001-RAS-CEC-Fix-cec_init-prototype.patch
@@ -0,0 +1,52 @@
+From 7162bca477126a8e095b10998c4b00653b97a6ed Mon Sep 17 00:00:00 2001
+From: Luca Stefani <luca.stefani.ge1@gmail.com>
+Date: Tue, 4 Aug 2020 18:16:54 +0200
+Subject: [PATCH 1/2] RAS/CEC: Fix cec_init prototype
+
+* late_initcall expects a function to return an integer
+
+Signed-off-by: Luca Stefani <luca.stefani.ge1@gmail.com>
+---
+ drivers/ras/cec.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/ras/cec.c b/drivers/ras/cec.c
+index 569d9ad2c594..e048e0e3949a 100644
+--- a/drivers/ras/cec.c
++++ b/drivers/ras/cec.c
+@@ -553,20 +553,20 @@ static struct notifier_block cec_nb = {
+ .priority = MCE_PRIO_CEC,
+ };
+
+-static void __init cec_init(void)
++static int __init cec_init(void)
+ {
+ if (ce_arr.disabled)
+- return;
++ return 0;
+
+ ce_arr.array = (void *)get_zeroed_page(GFP_KERNEL);
+ if (!ce_arr.array) {
+ pr_err("Error allocating CE array page!\n");
+- return;
++ return 1;
+ }
+
+ if (create_debugfs_nodes()) {
+ free_page((unsigned long)ce_arr.array);
+- return;
++ return 1;
+ }
+
+ INIT_DELAYED_WORK(&cec_work, cec_work_fn);
+@@ -575,6 +575,7 @@ static void __init cec_init(void)
+ mce_register_decode_chain(&cec_nb);
+
+ pr_info("Correctable Errors collector initialized.\n");
++ return 0;
+ }
+ late_initcall(cec_init);
+
+--
+2.28.0
+
diff --git a/0002-kbuild-Rollback-required-CLANG-version-to-10-for-LTO.patch b/0002-kbuild-Rollback-required-CLANG-version-to-10-for-LTO.patch
new file mode 100644
index 000000000000..ac45406c710c
--- /dev/null
+++ b/0002-kbuild-Rollback-required-CLANG-version-to-10-for-LTO.patch
@@ -0,0 +1,42 @@
+From 846915b6d07f53349de1e097b7143856619f34e0 Mon Sep 17 00:00:00 2001
+From: Luca Stefani <luca.stefani.ge1@gmail.com>
+Date: Tue, 4 Aug 2020 18:01:47 +0200
+Subject: [PATCH 2/2] kbuild: Rollback required CLANG version to 10 for LTO
+
+* ARM64 still requires CLANG 11 to fix https://github.com/ClangBuiltLinux/linux/issues/510
+
+Signed-off-by: Luca Stefani <luca.stefani.ge1@gmail.com>
+---
+ arch/Kconfig | 2 +-
+ arch/arm64/Kconfig | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/Kconfig b/arch/Kconfig
+index 694bfdc2073f..54f6a55180ca 100644
+--- a/arch/Kconfig
++++ b/arch/Kconfig
+@@ -595,7 +595,7 @@ config LTO_NONE
+ config LTO_CLANG
+ bool "Clang's Link Time Optimization (EXPERIMENTAL)"
+ # https://github.com/ClangBuiltLinux/linux/issues/510
+- depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD
++ depends on CC_IS_CLANG && CLANG_VERSION >= 100000 && LD_IS_LLD
+ depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
+ depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
+ depends on ARCH_SUPPORTS_LTO_CLANG
+diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
+index c9fb665b62b5..1883f42e341c 100644
+--- a/arch/arm64/Kconfig
++++ b/arch/arm64/Kconfig
+@@ -73,7 +73,7 @@ config ARM64
+ select ARCH_SUPPORTS_MEMORY_FAILURE
+ select ARCH_SUPPORTS_SHADOW_CALL_STACK if CC_HAVE_SHADOW_CALL_STACK
+ select ARCH_SUPPORTS_LTO_CLANG
+- select ARCH_SUPPORTS_THINLTO
++ select ARCH_SUPPORTS_THINLTO if CLANG_VERSION >= 110000
+ select ARCH_SUPPORTS_ATOMIC_RMW
+ select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && (GCC_VERSION >= 50000 || CC_IS_CLANG)
+ select ARCH_SUPPORTS_NUMA_BALANCING
+--
+2.28.0
+
diff --git a/PKGBUILD b/PKGBUILD
index d899850fe617..047e91f2f8c3 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -53,11 +53,14 @@ source=(
0022-x86-ftrace-disable-recordmcount-for-ftrace_make_nop.patch
0023-x86-relocs-Ignore-L4_PAGE_OFFSET-relocations.patch
0024-x86-build-allow-LTO_CLANG-and-THINLTO-to-be-selected.patch
+ # LTO custom
+ 0001-RAS-CEC-Fix-cec_init-prototype.patch
+ 0002-kbuild-Rollback-required-CLANG-version-to-10-for-LTO.patch
# CPU
enable_additional_cpu_optimizations_for_gcc_v10.1+_kernel_v5.8+.patch
)
sha256sums=('SKIP'
- '526c3f2d88be415c16015ce4b36518a60540ed4aedaf2d93b98785733eb822f7'
+ '2742a1348f1d7685671480ee24661a4d439f66c335a7e908b51290774e85a0dd'
'8cb21e0b3411327b627a9dd15b8eb773295a0d2782b1a41b2a8839d1b2f5778c'
'2f0090ec0c9a72e6241bbea05faaef979405119ce8ef669d84dead36c8e2246e'
'5f21c12f002e71ec5b5db96832b415ce291a7e230fa07b328c21760274e72e9d'
@@ -90,6 +93,8 @@ sha256sums=('SKIP'
'bd3f17cbb1da5293bb54a5bdeaa613098d41fe676ee327ba35867c18732ee80c'
'539794c1dc9b8e35a73e2e165040f363d0c7f32bc5da415ae6b27a9ffe57dde2'
'3b956c3768e59f2d5fb0546a855138319eff60e077822667befed734c7ac84af'
+ 'd89d15358b42c56bbb83a9f9d38bd25666d44a6f91be1029e5297bf79f8fbdc6'
+ '575e1c1353d4dca1773ac6e4b60f8d32e1611381596389c8b06a73aed0fe010a'
'5ab29eb64e57df83b395a29a6a4f89030d142feffbfbf73b3afc6d97a2a7fd12')
export KBUILD_BUILD_HOST=archlinux
diff --git a/config b/config
index 522aaf41736c..bcdd6f403f11 100644
--- a/config
+++ b/config
@@ -854,9 +854,12 @@ CONFIG_HAVE_STACKPROTECTOR=y
CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
CONFIG_STACKPROTECTOR=y
CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_LTO=y
CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
CONFIG_ARCH_SUPPORTS_THINLTO=y
-CONFIG_LTO_NONE=y
+CONFIG_THINLTO=y
+# CONFIG_LTO_NONE is not set
+CONFIG_LTO_CLANG=y
CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y