summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2019-02-18 07:58:07 -0800
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2019-02-18 07:58:07 -0800
commit3a9b8702ecf4b0e11a42680766fa7a0e6b8f0fe8 (patch)
treec70ae9f522f3f484264789e840b4605ab66660d9
parentUpdated to 4.20.7.a (diff)
downloadlinux-hardened-ck-3a9b8702ecf4b0e11a42680766fa7a0e6b8f0fe8.tar.xz
Updated to 4.20.10.a
- Added raid6 preselected algorithm patch. Anyone that uses raid6 and has avx2 should change it to avx2x4.
-rw-r--r--PKGBUILD25
-rw-r--r--config.x86_642
-rw-r--r--raid6-default-algo.patch70
-rw-r--r--unscrew-ck1-for-kvm-intel-symbol.patch10
4 files changed, 101 insertions, 6 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 3477567..86bbbb0 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -7,7 +7,8 @@
# # I maintain this because:
# Arch version patch script does not apply consistently
-# Arch version lacks ck ath9k and greysky2 patches
+# Arch version lacks ath9k, greysky2, and raid6 patches
+# Arch version lacks ck patches
# Arch version allows SM3 and SM4
# Arch version is 300 Hz
# Arch version supports Intel ME
@@ -16,7 +17,7 @@
pkgbase=linux-hardened-ck
_majver=4.20
-_minver=7
+_minver=10
_pkgver=${_majver}.${_minver}
_hardenedver=a
_ckpatchversion=1
@@ -44,22 +45,26 @@ source=(https://www.kernel.org/pub/linux/kernel/v4.x/linux-${_pkgver}.tar.xz
#http://ck.kolivas.org/patches/4.0/${_majver}/${_majver}-ck${_ckpatchversion}/${_ckpatch}.xz
enable_additional_cpu_optimizations-$_gcc_more_v.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/$_gcc_more_v.tar.gz
ath9k-regdom-hack.patch
+ raid6-default-algo.patch
config.x86_64 # the main kernel config files
60-linux.hook # pacman hook for depmod
90-linux.hook # pacman hook for initramfs regeneration
linux.preset # standard config files for mkinitcpio ramdisk
+ unscrew-ck1-for-kvm-intel-symbol.patch
)
-sha256sums=('540d7d3afe5e0f1a8c5b6a1716dd9824c3ac49842d21d2b2413619d6e6f96d47'
+sha256sums=('53de6be9adfb8899f0a15855f1aef62b8b5a3c5c575196ec8a640a5b8c1c3cf8'
'SKIP'
- '453b05f141632791f758e3334cdc542fe70506fb740a4bedc0a6013a7f55c723'
+ '12ae9028543b25f77317cb85e20554b8cc9ca0df84440d8edd7a3241703a4889'
'SKIP'
'90ab0d864452726a7b43f49debeb32ab4dc5d0ec65cb8b3f64c940a2469ab650'
'226e30068ea0fecdb22f337391385701996bfbdba37cdcf0f1dbf55f1080542d'
'e7ebf050c22bcec0028c0b3c79fd6d3913b0370ecc6a23dfe78ce475630cf503'
- '6bb9ee6088e60e19cb6f2a1b6e592af1fdbe804170777ec6eebfea88321d87d1'
+ '0f81d6e4158b7beeb0eb514f1b9401f7e23699cb0f7b0d513e25dae1815daaeb'
+ '9474b157ba50e35496481ce242cec2dc288f1920ab6afc0ea513821279985857'
'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21'
'75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919'
- 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65')
+ 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65'
+ '3e8c7d3015bb593e8a861be0b2b9f1de74fcb25e00c6e3eacee3165c6bec6f64')
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
@@ -92,10 +97,18 @@ prepare() {
msg2 "Applying ath9k patch"
patch -p1 -i ../ath9k-regdom-hack.patch
+ # Set default raid6 algo patch
+ msg " Applying raid6 patch"
+ patch -p1 -i ../raid6-default-algo.patch
+
# ck patch
msg2 "Applying ck patch"
patch -p1 -i ../patch-${_majver}-ck${_ckpatchversion}-jcmod${_jcpatchversion}.patch
+ # Set unscrew patch
+ msg " Applying unscrew patch"
+ patch -p1 -i ../unscrew-ck1-for-kvm-intel-symbol.patch
+
msg2 "Setting version..."
sed -e "/^EXTRAVERSION =/s/=.*/= .${_hardenedver}/" -i Makefile
diff --git a/config.x86_64 b/config.x86_64
index fb83fc2..37d7869 100644
--- a/config.x86_64
+++ b/config.x86_64
@@ -9496,6 +9496,8 @@ CONFIG_BINARY_PRINTF=y
# Library routines
#
CONFIG_RAID6_PQ=m
+CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL=y
+CONFIG_RAID6_PQ_DEFAULT_ALG="sse2x4"
CONFIG_BITREVERSE=y
CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
diff --git a/raid6-default-algo.patch b/raid6-default-algo.patch
new file mode 100644
index 0000000..98bfd54
--- /dev/null
+++ b/raid6-default-algo.patch
@@ -0,0 +1,70 @@
+--- a/lib/Kconfig
++++ b/lib/Kconfig
+@@ -10,6 +10,23 @@ menu "Library routines"
+ config RAID6_PQ
+ tristate
+
++config RAID6_PQ_DEFAULT_ALG_BOOL
++ bool "Default RAID6 PQ algorithm"
++ default n
++ depends on RAID6_PQ
++ help
++ Allow for specifying a default algorithm via the kernel
++ parameter "raid6_pq_default_alg", which forces the performance
++ tests to be skipped. This can save between 500ms to 2s
++ during boot.
++
++config RAID6_PQ_DEFAULT_ALG
++ string "Default RAID6 PQ algorithm name"
++ default ""
++ depends on RAID6_PQ_DEFAULT_ALG_BOOL
++ help
++ The default algorithm name to be used by default.
++
+ config BITREVERSE
+ tristate
+
+diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
+index d3b16f43c39f..480cbfbe293f 100644
+--- a/lib/raid6/algos.c
++++ b/lib/raid6/algos.c
+@@ -30,6 +30,12 @@ EXPORT_SYMBOL(raid6_empty_zero_page);
+ #endif
+ #endif
+
++#ifdef CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL
++static char raid6_pq_default_alg[32] = CONFIG_RAID6_PQ_DEFAULT_ALG;
++module_param_string(raid6_pq_default_alg, raid6_pq_default_alg, sizeof(raid6_pq_default_alg), 0444);
++MODULE_PARM_DESC(raid6_pq_default_alg, "Default gen/xor() algorithm");
++#endif
++
+ struct raid6_calls raid6_call;
+ EXPORT_SYMBOL_GPL(raid6_call);
+
+@@ -157,6 +163,26 @@ static inline const struct raid6_calls *raid6_choose_gen(
+ const struct raid6_calls *const *algo;
+ const struct raid6_calls *best;
+
++#ifdef CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL
++ if (strlen(raid6_pq_default_alg)) {
++ for (algo = raid6_algos; *algo; algo++) {
++ if (!strncmp(raid6_pq_default_alg, (*algo)->name, sizeof(raid6_pq_default_alg))) {
++ if ((*algo)->valid && !(*algo)->valid()) {
++ pr_info("raid6: default alg \"%s\" is invalid.\n",
++ raid6_pq_default_alg);
++ continue;
++ }
++ pr_info("raid6: using default algorithm %s gen() without performace tests.\n",
++ (*algo)->name);
++ raid6_call = **algo;
++ return *algo;
++ }
++ }
++ pr_info("raid6: default alg \"%s\" not found. Choosing the best alg as fallback...\n",
++ raid6_pq_default_alg);
++ }
++#endif
++
+ for (bestgenperf = 0, bestxorperf = 0, best = NULL, algo = raid6_algos; *algo; algo++) {
+ if (!best || (*algo)->prefer >= best->prefer) {
+ /* 2 ^ (RAID6_TIME_JIFFIES_LG2 - 0.5) */
diff --git a/unscrew-ck1-for-kvm-intel-symbol.patch b/unscrew-ck1-for-kvm-intel-symbol.patch
new file mode 100644
index 0000000..fd8568a
--- /dev/null
+++ b/unscrew-ck1-for-kvm-intel-symbol.patch
@@ -0,0 +1,10 @@
+--- a/kernel/sched/MuQSS.c
++++ b/kernel/sched/MuQSS.c
+@@ -227,6 +227,7 @@
+
+ #ifdef CONFIG_SCHED_SMT
+ DEFINE_STATIC_KEY_FALSE(sched_smt_present);
++EXPORT_SYMBOL_GPL(sched_smt_present);
+ #endif
+
+ #else