summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Borg <martin.borg@enea.com>2018-03-23 14:01:03 +0100
committerAdrian Dudau <adrian.dudau@enea.com>2018-03-26 09:57:31 +0200
commitc4bd5f6e084a6ced2c7a2f76798d0a34947ffeb7 (patch)
treee46d5f9bceca1947817b7739d366aa44faea9be1
parentdfc8946f58bbf4aa3a345c4fb5d5895502936edd (diff)
downloadenea-kernel-cache-c4bd5f6e084a6ced2c7a2f76798d0a34947ffeb7.tar.gz
boot_time_opt: update host boot time optimization patches for 4.14
The new patches are based on: https://github.com/clearlinux-pkgs/linux-lts commit 5595fe425a52af6734235a1a953b6b03210060ec Signed-off-by: Martin Borg <martin.borg@enea.com> Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
-rw-r--r--patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch25
-rw-r--r--patches/boot_time_opt/0101-i8042-decrease-debug-message-level-to-info.patch (renamed from patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch)18
-rw-r--r--patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch29
-rw-r--r--patches/boot_time_opt/0103-Increase-the-ext4-default-commit-age.patch (renamed from patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch)8
-rw-r--r--patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch42
-rw-r--r--patches/boot_time_opt/0104-silence-rapl.patch (renamed from patches/boot_time_opt/0105-silence-rapl.patch)10
-rw-r--r--patches/boot_time_opt/0105-pci-pme-wakeups.patch41
-rw-r--r--patches/boot_time_opt/0106-ksm-wakeups.patch (renamed from patches/boot_time_opt/0107-ksm-wakeups.patch)21
-rw-r--r--patches/boot_time_opt/0106-pci-pme-wakeups.patch27
-rw-r--r--patches/boot_time_opt/0107-intel_idle-tweak-cpuidle-cstates.patch (renamed from patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch)172
-rw-r--r--patches/boot_time_opt/0109-init_task-faster-timerslack.patch (renamed from patches/boot_time_opt/0110-init_task-faster-timerslack.patch)18
-rw-r--r--patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch56
-rw-r--r--patches/boot_time_opt/0110-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch (renamed from patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch)68
-rw-r--r--patches/boot_time_opt/0111-overload-on-wakeup.patch57
-rw-r--r--patches/boot_time_opt/0112-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch (renamed from patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch)24
-rw-r--r--patches/boot_time_opt/0113-fix-initcall-timestamps.patch (renamed from patches/boot_time_opt/0115-fix-initcall-timestamps.patch)10
-rw-r--r--patches/boot_time_opt/0113-overload-on-wakeup.patch43
-rw-r--r--patches/boot_time_opt/0114-smpboot-reuse-timer-calibration.patch (renamed from patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch)18
-rw-r--r--patches/boot_time_opt/0115-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch (renamed from patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch)14
-rw-r--r--patches/boot_time_opt/0116-Initialize-ata-before-graphics.patch (renamed from patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch)12
-rw-r--r--patches/boot_time_opt/0117-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch (renamed from patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch)58
-rw-r--r--patches/boot_time_opt/0118-give-rdrand-some-credit.patch (renamed from patches/boot_time_opt/0120-give-rdrand-some-credit.patch)10
-rw-r--r--patches/boot_time_opt/0119-e1000e-change-default-policy.patch (renamed from patches/boot_time_opt/0121-e1000e-change-default-policy.patch)6
-rw-r--r--patches/boot_time_opt/0120-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch (renamed from patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch)10
-rw-r--r--patches/boot_time_opt/0121-igb-no-runtime-pm-to-fix-reboot-oops.patch64
-rw-r--r--patches/boot_time_opt/0122-tweak-perfbias.patch (renamed from patches/boot_time_opt/0124-tweak-perfbias.patch)10
-rw-r--r--patches/boot_time_opt/0123-e1000e-increase-pause-and-refresh-time.patch (renamed from patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch)12
-rw-r--r--patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch27
-rw-r--r--patches/boot_time_opt/0151-mm-Export-do_madvise.patch16
-rw-r--r--patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch60
-rw-r--r--patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch24
-rw-r--r--patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch24
-rw-r--r--patches/boot_time_opt/host_boot_time_opt.scc41
-rw-r--r--patches/boot_time_opt/raid_alg.scc2
34 files changed, 504 insertions, 573 deletions
diff --git a/patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch b/patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch
deleted file mode 100644
index 33debcd..0000000
--- a/patches/boot_time_opt/0011-drm-i915-fbc-sanitize-fbc-GEN-greater-than-9.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From 07639791f247ae7a807444106b9b7611f070d02b Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 6 Jan 2017 13:28:29 +0000
4Subject: [PATCH] drm/i915/fbc: sanitize fbc GEN greater than 9
5
6---
7 drivers/gpu/drm/i915/intel_fbc.c | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-)
9
10diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
11index c43dd9abce79..f5a2560840f3 100644
12--- a/drivers/gpu/drm/i915/intel_fbc.c
13+++ b/drivers/gpu/drm/i915/intel_fbc.c
14@@ -1262,7 +1262,7 @@ static int intel_sanitize_fbc_option(struct drm_i915_private *dev_priv)
15 if (!HAS_FBC(dev_priv))
16 return 0;
17
18- if (IS_BROADWELL(dev_priv))
19+ if (IS_BROADWELL(dev_priv) || INTEL_GEN(dev_priv) >= 9)
20 return 1;
21
22 return 0;
23--
242.11.1
25
diff --git a/patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch b/patches/boot_time_opt/0101-i8042-decrease-debug-message-level-to-info.patch
index 96fd92b..4c1eb69 100644
--- a/patches/boot_time_opt/0102-i8042-decrease-debug-message-level-to-info.patch
+++ b/patches/boot_time_opt/0101-i8042-decrease-debug-message-level-to-info.patch
@@ -1,7 +1,7 @@
1From 7e847b13b753ec632fef2f1ffa0d8f5b444c967b Mon Sep 17 00:00:00 2001 1From 4139c54430520b0afbcedf5306d62ae49e285688 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Tue, 23 Jun 2015 01:26:52 -0500 3Date: Tue, 23 Jun 2015 01:26:52 -0500
4Subject: [PATCH 102/124] i8042: decrease debug message level to info 4Subject: [PATCH 101/126] i8042: decrease debug message level to info
5 5
6Author: Arjan van de Ven <arjan@linux.intel.com> 6Author: Arjan van de Ven <arjan@linux.intel.com>
7 7
@@ -12,10 +12,10 @@ Signed-off-by: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
12 1 file changed, 5 insertions(+), 5 deletions(-) 12 1 file changed, 5 insertions(+), 5 deletions(-)
13 13
14diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c 14diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
15index 89abfdb539ac..5317c41b049e 100644 15index 824f4c1c1f31..a8cd9072481c 100644
16--- a/drivers/input/serio/i8042.c 16--- a/drivers/input/serio/i8042.c
17+++ b/drivers/input/serio/i8042.c 17+++ b/drivers/input/serio/i8042.c
18@@ -593,7 +593,7 @@ static int i8042_enable_kbd_port(void) 18@@ -601,7 +601,7 @@ static int i8042_enable_kbd_port(void)
19 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { 19 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
20 i8042_ctr &= ~I8042_CTR_KBDINT; 20 i8042_ctr &= ~I8042_CTR_KBDINT;
21 i8042_ctr |= I8042_CTR_KBDDIS; 21 i8042_ctr |= I8042_CTR_KBDDIS;
@@ -24,7 +24,7 @@ index 89abfdb539ac..5317c41b049e 100644
24 return -EIO; 24 return -EIO;
25 } 25 }
26 26
27@@ -612,7 +612,7 @@ static int i8042_enable_aux_port(void) 27@@ -620,7 +620,7 @@ static int i8042_enable_aux_port(void)
28 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { 28 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
29 i8042_ctr &= ~I8042_CTR_AUXINT; 29 i8042_ctr &= ~I8042_CTR_AUXINT;
30 i8042_ctr |= I8042_CTR_AUXDIS; 30 i8042_ctr |= I8042_CTR_AUXDIS;
@@ -33,7 +33,7 @@ index 89abfdb539ac..5317c41b049e 100644
33 return -EIO; 33 return -EIO;
34 } 34 }
35 35
36@@ -704,7 +704,7 @@ static int __init i8042_check_mux(void) 36@@ -712,7 +712,7 @@ static int __init i8042_check_mux(void)
37 i8042_ctr &= ~I8042_CTR_AUXINT; 37 i8042_ctr &= ~I8042_CTR_AUXINT;
38 38
39 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) { 39 if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
@@ -42,7 +42,7 @@ index 89abfdb539ac..5317c41b049e 100644
42 return -EIO; 42 return -EIO;
43 } 43 }
44 44
45@@ -927,7 +927,7 @@ static int i8042_controller_selftest(void) 45@@ -935,7 +935,7 @@ static int i8042_controller_selftest(void)
46 do { 46 do {
47 47
48 if (i8042_command(&param, I8042_CMD_CTL_TEST)) { 48 if (i8042_command(&param, I8042_CMD_CTL_TEST)) {
@@ -51,7 +51,7 @@ index 89abfdb539ac..5317c41b049e 100644
51 return -ENODEV; 51 return -ENODEV;
52 } 52 }
53 53
54@@ -949,7 +949,7 @@ static int i8042_controller_selftest(void) 54@@ -957,7 +957,7 @@ static int i8042_controller_selftest(void)
55 pr_info("giving up on controller selftest, continuing anyway...\n"); 55 pr_info("giving up on controller selftest, continuing anyway...\n");
56 return 0; 56 return 0;
57 #else 57 #else
@@ -61,5 +61,5 @@ index 89abfdb539ac..5317c41b049e 100644
61 #endif 61 #endif
62 } 62 }
63-- 63--
642.11.1 642.15.0
65 65
diff --git a/patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch b/patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch
deleted file mode 100644
index aeb3abf..0000000
--- a/patches/boot_time_opt/0101-kvm-silence-kvm-unhandled-rdmsr.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From f45c353859fc0ceb75fef3a2f4a2c179dfa378d7 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Tue, 23 Jun 2015 01:16:45 -0500
4Subject: [PATCH 101/124] kvm: silence kvm unhandled rdmsr
5
6Author: Arjan van de Ven <arjan@linux.intel.com>
7
8Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
9Signed-off-by: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
10---
11 arch/x86/kvm/x86.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
15index 731044efb195..582c75311f95 100644
16--- a/arch/x86/kvm/x86.c
17+++ b/arch/x86/kvm/x86.c
18@@ -2506,7 +2506,7 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
19 if (kvm_pmu_is_valid_msr(vcpu, msr_info->index))
20 return kvm_pmu_get_msr(vcpu, msr_info->index, &msr_info->data);
21 if (!ignore_msrs) {
22- vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr_info->index);
23+// vcpu_unimpl(vcpu, "unhandled rdmsr: 0x%x\n", msr_info->index);
24 return 1;
25 } else {
26 vcpu_unimpl(vcpu, "ignored rdmsr: 0x%x\n", msr_info->index);
27--
282.11.1
29
diff --git a/patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch b/patches/boot_time_opt/0103-Increase-the-ext4-default-commit-age.patch
index fb709b4..bcfddee 100644
--- a/patches/boot_time_opt/0104-Increase-the-ext4-default-commit-age.patch
+++ b/patches/boot_time_opt/0103-Increase-the-ext4-default-commit-age.patch
@@ -1,7 +1,7 @@
1From b6970d43f97325c9acc7bd942dcd192586d8d407 Mon Sep 17 00:00:00 2001 1From d098532daf5eead493d71f9756f8905a18f01e04 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 11 Jan 2016 10:01:44 -0600 3Date: Mon, 11 Jan 2016 10:01:44 -0600
4Subject: [PATCH 104/124] Increase the ext4 default commit age 4Subject: [PATCH 103/126] Increase the ext4 default commit age
5 5
6Both the VM and EXT4 have a "commit to disk after X seconds" time. 6Both the VM and EXT4 have a "commit to disk after X seconds" time.
7Currently the EXT4 time is shorter than our VM time, which is a bit 7Currently the EXT4 time is shorter than our VM time, which is a bit
@@ -18,7 +18,7 @@ Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
18 1 file changed, 1 insertion(+), 1 deletion(-) 18 1 file changed, 1 insertion(+), 1 deletion(-)
19 19
20diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h 20diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
21index dfaa1f4dcb0c..9955fd6c6159 100644 21index 606b6bce3a5b..5dd7d54c40c2 100644
22--- a/include/linux/jbd2.h 22--- a/include/linux/jbd2.h
23+++ b/include/linux/jbd2.h 23+++ b/include/linux/jbd2.h
24@@ -47,7 +47,7 @@ 24@@ -47,7 +47,7 @@
@@ -31,5 +31,5 @@ index dfaa1f4dcb0c..9955fd6c6159 100644
31 #ifdef CONFIG_JBD2_DEBUG 31 #ifdef CONFIG_JBD2_DEBUG
32 /* 32 /*
33-- 33--
342.11.1 342.15.0
35 35
diff --git a/patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch b/patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch
deleted file mode 100644
index bb7bb9f..0000000
--- a/patches/boot_time_opt/0103-init-do_mounts-recreate-dev-root.patch
+++ /dev/null
@@ -1,42 +0,0 @@
1From 838abc7e5f43ea40a2cc05ebd6c7321b6d84b057 Mon Sep 17 00:00:00 2001
2From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
3Date: Fri, 20 Nov 2015 14:01:26 -0600
4Subject: [PATCH 103/124] init: do_mounts: recreate /dev/root
5
6Rootfs shows as is mounted in /dev/root, but this devices is not present in
7/dev directory.
8
9Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
10---
11 init/do_mounts.c | 8 ++++++++
12 1 file changed, 8 insertions(+)
13
14diff --git a/init/do_mounts.c b/init/do_mounts.c
15index dea5de95c2dd..d74a346b2dfa 100644
16--- a/init/do_mounts.c
17+++ b/init/do_mounts.c
18@@ -549,6 +549,7 @@ void __init mount_root(void)
19 void __init prepare_namespace(void)
20 {
21 int is_floppy;
22+ int err;
23
24 if (root_delay) {
25 printk(KERN_INFO "Waiting %d sec before mounting root device...\n",
26@@ -602,6 +603,13 @@ void __init prepare_namespace(void)
27 devtmpfs_mount("dev");
28 sys_mount(".", "/", NULL, MS_MOVE, NULL);
29 sys_chroot(".");
30+#ifdef CONFIG_BLOCK
31+ /* recreate the /dev/root */
32+ err = create_dev("/dev/root", ROOT_DEV);
33+
34+ if (err < 0)
35+ pr_emerg("Failed to create /dev/root: %d\n", err);
36+#endif
37 }
38
39 static bool is_tmpfs;
40--
412.11.1
42
diff --git a/patches/boot_time_opt/0105-silence-rapl.patch b/patches/boot_time_opt/0104-silence-rapl.patch
index 4dd78fc..f29851c 100644
--- a/patches/boot_time_opt/0105-silence-rapl.patch
+++ b/patches/boot_time_opt/0104-silence-rapl.patch
@@ -1,17 +1,17 @@
1From 558d32869c8d8e302dd3810610d62e1c69a8ebce Mon Sep 17 00:00:00 2001 1From be0a2929159c1b588f2a038df612a5d1437d94a8 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:22:09 -0600 3Date: Mon, 14 Mar 2016 11:22:09 -0600
4Subject: [PATCH 105/124] silence rapl 4Subject: [PATCH 104/126] silence rapl
5 5
6--- 6---
7 drivers/powercap/intel_rapl.c | 2 +- 7 drivers/powercap/intel_rapl.c | 2 +-
8 1 file changed, 1 insertion(+), 1 deletion(-) 8 1 file changed, 1 insertion(+), 1 deletion(-)
9 9
10diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c 10diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c
11index 3c71f608b444..450aff027d42 100644 11index d1694f1def72..6be610452765 100644
12--- a/drivers/powercap/intel_rapl.c 12--- a/drivers/powercap/intel_rapl.c
13+++ b/drivers/powercap/intel_rapl.c 13+++ b/drivers/powercap/intel_rapl.c
14@@ -1684,7 +1684,7 @@ static int __init rapl_init(void) 14@@ -1540,7 +1540,7 @@ static int __init rapl_init(void)
15 15
16 id = x86_match_cpu(rapl_ids); 16 id = x86_match_cpu(rapl_ids);
17 if (!id) { 17 if (!id) {
@@ -21,5 +21,5 @@ index 3c71f608b444..450aff027d42 100644
21 21
22 return -ENODEV; 22 return -ENODEV;
23-- 23--
242.11.1 242.15.0
25 25
diff --git a/patches/boot_time_opt/0105-pci-pme-wakeups.patch b/patches/boot_time_opt/0105-pci-pme-wakeups.patch
new file mode 100644
index 0000000..5bb76ad
--- /dev/null
+++ b/patches/boot_time_opt/0105-pci-pme-wakeups.patch
@@ -0,0 +1,41 @@
1From 1dc7a20946596b24f669fe038a1ae31a28cf59a5 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:10:58 -0600
4Subject: [PATCH 105/126] pci pme wakeups
5
6Reduce wakeups for PME checks, which are a workaround for miswired
7boards (sadly, too many of them) in laptops.
8---
9 drivers/misc/vmw_balloon.c | 2 +-
10 drivers/pci/pci.c | 2 +-
11 2 files changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c
14index 1e688bfec567..e0a4f3eb0d8e 100644
15--- a/drivers/misc/vmw_balloon.c
16+++ b/drivers/misc/vmw_balloon.c
17@@ -1142,7 +1142,7 @@ static void vmballoon_work(struct work_struct *work)
18 * stopped while the system transitions to/from sleep/hibernation.
19 */
20 queue_delayed_work(system_freezable_wq,
21- dwork, round_jiffies_relative(HZ));
22+ dwork, round_jiffies_relative(10*HZ));
23 }
24
25 /*
26diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
27index 6078dfc11b11..44f61288d508 100644
28--- a/drivers/pci/pci.c
29+++ b/drivers/pci/pci.c
30@@ -58,7 +58,7 @@ struct pci_pme_device {
31 struct pci_dev *dev;
32 };
33
34-#define PME_TIMEOUT 1000 /* How long between PME checks */
35+#define PME_TIMEOUT 4000 /* How long between PME checks */
36
37 static void pci_dev_d3_sleep(struct pci_dev *dev)
38 {
39--
402.15.0
41
diff --git a/patches/boot_time_opt/0107-ksm-wakeups.patch b/patches/boot_time_opt/0106-ksm-wakeups.patch
index 2b25625..ad82b93 100644
--- a/patches/boot_time_opt/0107-ksm-wakeups.patch
+++ b/patches/boot_time_opt/0106-ksm-wakeups.patch
@@ -1,7 +1,7 @@
1From a5de04044d428bf54472365e7dc07958aa184daf Mon Sep 17 00:00:00 2001 1From 8350ca263ae0f06ae6a40b5e9ba280fb09aff895 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:06:46 -0600 3Date: Mon, 14 Mar 2016 11:06:46 -0600
4Subject: [PATCH 107/124] ksm-wakeups 4Subject: [PATCH 106/126] ksm-wakeups
5 5
6reduce wakeups in ksm by adding rounding (aligning) when the sleep times are 1 second or longer 6reduce wakeups in ksm by adding rounding (aligning) when the sleep times are 1 second or longer
7 7
@@ -11,10 +11,10 @@ Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
11 1 file changed, 6 insertions(+), 2 deletions(-) 11 1 file changed, 6 insertions(+), 2 deletions(-)
12 12
13diff --git a/mm/ksm.c b/mm/ksm.c 13diff --git a/mm/ksm.c b/mm/ksm.c
14index 9ae6011a41f8..eecd3ff669e2 100644 14index 6cb60f46cce5..883a9441e055 100644
15--- a/mm/ksm.c 15--- a/mm/ksm.c
16+++ b/mm/ksm.c 16+++ b/mm/ksm.c
17@@ -1725,8 +1725,12 @@ static int ksm_scan_thread(void *nothing) 17@@ -2335,8 +2335,12 @@ static int ksm_scan_thread(void *nothing)
18 try_to_freeze(); 18 try_to_freeze();
19 19
20 if (ksmd_should_run()) { 20 if (ksmd_should_run()) {
@@ -30,5 +30,16 @@ index 9ae6011a41f8..eecd3ff669e2 100644
30 wait_event_freezable(ksm_thread_wait, 30 wait_event_freezable(ksm_thread_wait,
31 ksmd_should_run() || kthread_should_stop()); 31 ksmd_should_run() || kthread_should_stop());
32-- 32--
332.11.1 332.15.0
34 34
35--- linux-4.14/kernel/watchdog.c~ 2017-11-12 18:46:13.000000000 +0000
36+++ linux-4.14/kernel/watchdog.c 2017-11-19 17:34:20.740254694 +0000
37@@ -44,7 +44,7 @@
38 int __read_mostly watchdog_user_enabled = 1;
39 int __read_mostly nmi_watchdog_user_enabled = NMI_WATCHDOG_DEFAULT;
40 int __read_mostly soft_watchdog_user_enabled = 1;
41-int __read_mostly watchdog_thresh = 10;
42+int __read_mostly watchdog_thresh = 40;
43 int __read_mostly nmi_watchdog_available;
44
45 struct cpumask watchdog_allowed_mask __read_mostly;
diff --git a/patches/boot_time_opt/0106-pci-pme-wakeups.patch b/patches/boot_time_opt/0106-pci-pme-wakeups.patch
deleted file mode 100644
index f0a4799..0000000
--- a/patches/boot_time_opt/0106-pci-pme-wakeups.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From 1f44219cd74f5c3b97e2c85af87141e1bddf0555 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 14 Mar 2016 11:10:58 -0600
4Subject: [PATCH 106/124] pci pme wakeups
5
6Reduce wakeups for PME checks, which are a workaround for miswired
7boards (sadly, too many of them) in laptops.
8---
9 drivers/pci/pci.c | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
13index eda6a7cf0e54..82a623255059 100644
14--- a/drivers/pci/pci.c
15+++ b/drivers/pci/pci.c
16@@ -57,7 +57,7 @@ struct pci_pme_device {
17 struct pci_dev *dev;
18 };
19
20-#define PME_TIMEOUT 1000 /* How long between PME checks */
21+#define PME_TIMEOUT 4000 /* How long between PME checks */
22
23 static void pci_dev_d3_sleep(struct pci_dev *dev)
24 {
25--
262.11.1
27
diff --git a/patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch b/patches/boot_time_opt/0107-intel_idle-tweak-cpuidle-cstates.patch
index da5396c..43c40cd 100644
--- a/patches/boot_time_opt/0108-intel_idle-tweak-cpuidle-cstates.patch
+++ b/patches/boot_time_opt/0107-intel_idle-tweak-cpuidle-cstates.patch
@@ -1,7 +1,7 @@
1From bf7e0cebaafe790f62cbc5815648d556847b7d27 Mon Sep 17 00:00:00 2001 1From 790db86f51a23533d457b361bb61e2845b6de6b8 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 19 Mar 2016 21:32:19 -0400 3Date: Sat, 19 Mar 2016 21:32:19 -0400
4Subject: [PATCH 108/124] intel_idle: tweak cpuidle cstates 4Subject: [PATCH 107/126] intel_idle: tweak cpuidle cstates
5 5
6Increase target_residency in cpuidle cstate 6Increase target_residency in cpuidle cstate
7 7
@@ -10,218 +10,220 @@ Clear linux is cleaner in hygiene (wakupes) than the average linux,
10so we can afford changing these in a way that increases 10so we can afford changing these in a way that increases
11performance while keeping power efficiency 11performance while keeping power efficiency
12--- 12---
13 drivers/idle/intel_idle.c | 74 +++++++++++------------------------------------ 13 drivers/idle/intel_idle.c | 46 +++++++++++++++++++++++-----------------------
14 1 file changed, 17 insertions(+), 57 deletions(-) 14 1 file changed, 23 insertions(+), 23 deletions(-)
15 15
16diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c 16diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
17index 4466a2f969d7..cbab050b83f0 100644 17index f0b06b14e782..24609fbb1010 100644
18--- a/drivers/idle/intel_idle.c 18--- a/drivers/idle/intel_idle.c
19+++ b/drivers/idle/intel_idle.c 19+++ b/drivers/idle/intel_idle.c
20@@ -475,7 +475,7 @@ static struct cpuidle_state hsw_cstates[] = { 20@@ -466,7 +466,7 @@ static struct cpuidle_state hsw_cstates[] = {
21 .desc = "MWAIT 0x01",
22 .flags = MWAIT2flg(0x01),
23 .exit_latency = 10,
24- .target_residency = 20,
25+ .target_residency = 120,
26 .enter = &intel_idle,
27 .enter_s2idle = intel_idle_s2idle, },
28 {
29@@ -474,7 +474,7 @@ static struct cpuidle_state hsw_cstates[] = {
21 .desc = "MWAIT 0x10", 30 .desc = "MWAIT 0x10",
22 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED, 31 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
23 .exit_latency = 33, 32 .exit_latency = 33,
24- .target_residency = 100, 33- .target_residency = 100,
25+ .target_residency = 1000, 34+ .target_residency = 1000,
26 .enter = &intel_idle, 35 .enter = &intel_idle,
27 .enter_freeze = intel_idle_freeze, }, 36 .enter_s2idle = intel_idle_s2idle, },
28 { 37 {
29@@ -483,7 +483,7 @@ static struct cpuidle_state hsw_cstates[] = { 38@@ -482,7 +482,7 @@ static struct cpuidle_state hsw_cstates[] = {
30 .desc = "MWAIT 0x20", 39 .desc = "MWAIT 0x20",
31 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, 40 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
32 .exit_latency = 133, 41 .exit_latency = 133,
33- .target_residency = 400, 42- .target_residency = 400,
34+ .target_residency = 4000, 43+ .target_residency = 4000,
35 .enter = &intel_idle, 44 .enter = &intel_idle,
36 .enter_freeze = intel_idle_freeze, }, 45 .enter_s2idle = intel_idle_s2idle, },
37 { 46 {
38@@ -491,7 +491,7 @@ static struct cpuidle_state hsw_cstates[] = { 47@@ -490,7 +490,7 @@ static struct cpuidle_state hsw_cstates[] = {
39 .desc = "MWAIT 0x32", 48 .desc = "MWAIT 0x32",
40 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED, 49 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
41 .exit_latency = 166, 50 .exit_latency = 166,
42- .target_residency = 500, 51- .target_residency = 500,
43+ .target_residency = 5000, 52+ .target_residency = 5000,
44 .enter = &intel_idle, 53 .enter = &intel_idle,
45 .enter_freeze = intel_idle_freeze, }, 54 .enter_s2idle = intel_idle_s2idle, },
46 { 55 {
47@@ -499,7 +499,7 @@ static struct cpuidle_state hsw_cstates[] = { 56@@ -498,7 +498,7 @@ static struct cpuidle_state hsw_cstates[] = {
48 .desc = "MWAIT 0x40", 57 .desc = "MWAIT 0x40",
49 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED, 58 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
50 .exit_latency = 300, 59 .exit_latency = 300,
51- .target_residency = 900, 60- .target_residency = 900,
52+ .target_residency = 9000, 61+ .target_residency = 9000,
53 .enter = &intel_idle, 62 .enter = &intel_idle,
54 .enter_freeze = intel_idle_freeze, }, 63 .enter_s2idle = intel_idle_s2idle, },
55 { 64 {
56@@ -507,7 +507,7 @@ static struct cpuidle_state hsw_cstates[] = { 65@@ -506,7 +506,7 @@ static struct cpuidle_state hsw_cstates[] = {
57 .desc = "MWAIT 0x50", 66 .desc = "MWAIT 0x50",
58 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED, 67 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
59 .exit_latency = 600, 68 .exit_latency = 600,
60- .target_residency = 1800, 69- .target_residency = 1800,
61+ .target_residency = 18000, 70+ .target_residency = 18000,
62 .enter = &intel_idle, 71 .enter = &intel_idle,
63 .enter_freeze = intel_idle_freeze, }, 72 .enter_s2idle = intel_idle_s2idle, },
64 { 73 {
65@@ -515,7 +515,7 @@ static struct cpuidle_state hsw_cstates[] = { 74@@ -514,7 +514,7 @@ static struct cpuidle_state hsw_cstates[] = {
66 .desc = "MWAIT 0x60", 75 .desc = "MWAIT 0x60",
67 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, 76 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
68 .exit_latency = 2600, 77 .exit_latency = 2600,
69- .target_residency = 7700, 78- .target_residency = 7700,
70+ .target_residency = 77000, 79+ .target_residency = 77000,
71 .enter = &intel_idle, 80 .enter = &intel_idle,
72 .enter_freeze = intel_idle_freeze, }, 81 .enter_s2idle = intel_idle_s2idle, },
73 { 82 {
74@@ -531,27 +531,11 @@ static struct cpuidle_state bdw_cstates[] = { 83@@ -534,7 +534,7 @@ static struct cpuidle_state bdw_cstates[] = {
84 .desc = "MWAIT 0x01",
85 .flags = MWAIT2flg(0x01),
86 .exit_latency = 10,
87- .target_residency = 20,
88+ .target_residency = 120,
75 .enter = &intel_idle, 89 .enter = &intel_idle,
76 .enter_freeze = intel_idle_freeze, }, 90 .enter_s2idle = intel_idle_s2idle, },
77 { 91 {
78- .name = "C1E-BDW", 92@@ -542,7 +542,7 @@ static struct cpuidle_state bdw_cstates[] = {
79- .desc = "MWAIT 0x01", 93 .desc = "MWAIT 0x10",
80- .flags = MWAIT2flg(0x01), 94 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
81- .exit_latency = 10, 95 .exit_latency = 40,
82- .target_residency = 20,
83- .enter = &intel_idle,
84- .enter_freeze = intel_idle_freeze, },
85- {
86- .name = "C3-BDW",
87- .desc = "MWAIT 0x10",
88- .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
89- .exit_latency = 40,
90- .target_residency = 100, 96- .target_residency = 100,
91- .enter = &intel_idle, 97+ .target_residency = 1000,
92- .enter_freeze = intel_idle_freeze, }, 98 .enter = &intel_idle,
93- { 99 .enter_s2idle = intel_idle_s2idle, },
94 .name = "C6-BDW", 100 {
101@@ -550,7 +550,7 @@ static struct cpuidle_state bdw_cstates[] = {
95 .desc = "MWAIT 0x20", 102 .desc = "MWAIT 0x20",
96 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, 103 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
97 .exit_latency = 133, 104 .exit_latency = 133,
98- .target_residency = 400, 105- .target_residency = 400,
99+ .target_residency = 4000, 106+ .target_residency = 4000,
100 .enter = &intel_idle, 107 .enter = &intel_idle,
101 .enter_freeze = intel_idle_freeze, }, 108 .enter_s2idle = intel_idle_s2idle, },
102 { 109 {
103@@ -559,7 +543,7 @@ static struct cpuidle_state bdw_cstates[] = { 110@@ -558,7 +558,7 @@ static struct cpuidle_state bdw_cstates[] = {
104 .desc = "MWAIT 0x32", 111 .desc = "MWAIT 0x32",
105 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED, 112 .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
106 .exit_latency = 166, 113 .exit_latency = 166,
107- .target_residency = 500, 114- .target_residency = 500,
108+ .target_residency = 5000, 115+ .target_residency = 5000,
109 .enter = &intel_idle, 116 .enter = &intel_idle,
110 .enter_freeze = intel_idle_freeze, }, 117 .enter_s2idle = intel_idle_s2idle, },
111 { 118 {
112@@ -567,7 +551,7 @@ static struct cpuidle_state bdw_cstates[] = { 119@@ -566,7 +566,7 @@ static struct cpuidle_state bdw_cstates[] = {
113 .desc = "MWAIT 0x40", 120 .desc = "MWAIT 0x40",
114 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED, 121 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
115 .exit_latency = 300, 122 .exit_latency = 300,
116- .target_residency = 900, 123- .target_residency = 900,
117+ .target_residency = 9000, 124+ .target_residency = 9000,
118 .enter = &intel_idle, 125 .enter = &intel_idle,
119 .enter_freeze = intel_idle_freeze, }, 126 .enter_s2idle = intel_idle_s2idle, },
120 { 127 {
121@@ -575,7 +559,7 @@ static struct cpuidle_state bdw_cstates[] = { 128@@ -574,7 +574,7 @@ static struct cpuidle_state bdw_cstates[] = {
122 .desc = "MWAIT 0x50", 129 .desc = "MWAIT 0x50",
123 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED, 130 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
124 .exit_latency = 600, 131 .exit_latency = 600,
125- .target_residency = 1800, 132- .target_residency = 1800,
126+ .target_residency = 18000, 133+ .target_residency = 18000,
127 .enter = &intel_idle, 134 .enter = &intel_idle,
128 .enter_freeze = intel_idle_freeze, }, 135 .enter_s2idle = intel_idle_s2idle, },
129 { 136 {
130@@ -583,7 +567,7 @@ static struct cpuidle_state bdw_cstates[] = { 137@@ -582,7 +582,7 @@ static struct cpuidle_state bdw_cstates[] = {
131 .desc = "MWAIT 0x60", 138 .desc = "MWAIT 0x60",
132 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, 139 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
133 .exit_latency = 2600, 140 .exit_latency = 2600,
134- .target_residency = 7700, 141- .target_residency = 7700,
135+ .target_residency = 77000, 142+ .target_residency = 77000,
136 .enter = &intel_idle, 143 .enter = &intel_idle,
137 .enter_freeze = intel_idle_freeze, }, 144 .enter_s2idle = intel_idle_s2idle, },
138 { 145 {
139@@ -600,27 +584,11 @@ static struct cpuidle_state skl_cstates[] = { 146@@ -603,7 +603,7 @@ static struct cpuidle_state skl_cstates[] = {
147 .desc = "MWAIT 0x01",
148 .flags = MWAIT2flg(0x01),
149 .exit_latency = 10,
150- .target_residency = 20,
151+ .target_residency = 120,
140 .enter = &intel_idle, 152 .enter = &intel_idle,
141 .enter_freeze = intel_idle_freeze, }, 153 .enter_s2idle = intel_idle_s2idle, },
142 { 154 {
143- .name = "C1E-SKL", 155@@ -611,7 +611,7 @@ static struct cpuidle_state skl_cstates[] = {
144- .desc = "MWAIT 0x01", 156 .desc = "MWAIT 0x10",
145- .flags = MWAIT2flg(0x01), 157 .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
146- .exit_latency = 10, 158 .exit_latency = 70,
147- .target_residency = 20,
148- .enter = &intel_idle,
149- .enter_freeze = intel_idle_freeze, },
150- {
151- .name = "C3-SKL",
152- .desc = "MWAIT 0x10",
153- .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
154- .exit_latency = 70,
155- .target_residency = 100, 159- .target_residency = 100,
156- .enter = &intel_idle, 160+ .target_residency = 1000,
157- .enter_freeze = intel_idle_freeze, }, 161 .enter = &intel_idle,
158- { 162 .enter_s2idle = intel_idle_s2idle, },
159 .name = "C6-SKL", 163 {
164@@ -619,7 +619,7 @@ static struct cpuidle_state skl_cstates[] = {
160 .desc = "MWAIT 0x20", 165 .desc = "MWAIT 0x20",
161 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, 166 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
162 .exit_latency = 85, 167 .exit_latency = 85,
163- .target_residency = 200, 168- .target_residency = 200,
164+ .target_residency = 2000, 169+ .target_residency = 2000,
165 .enter = &intel_idle, 170 .enter = &intel_idle,
166 .enter_freeze = intel_idle_freeze, }, 171 .enter_s2idle = intel_idle_s2idle, },
167 { 172 {
168@@ -628,7 +596,7 @@ static struct cpuidle_state skl_cstates[] = { 173@@ -627,7 +627,7 @@ static struct cpuidle_state skl_cstates[] = {
169 .desc = "MWAIT 0x33", 174 .desc = "MWAIT 0x33",
170 .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED, 175 .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED,
171 .exit_latency = 124, 176 .exit_latency = 124,
172- .target_residency = 800, 177- .target_residency = 800,
173+ .target_residency = 8000, 178+ .target_residency = 8000,
174 .enter = &intel_idle, 179 .enter = &intel_idle,
175 .enter_freeze = intel_idle_freeze, }, 180 .enter_s2idle = intel_idle_s2idle, },
176 { 181 {
177@@ -636,7 +604,7 @@ static struct cpuidle_state skl_cstates[] = { 182@@ -635,7 +635,7 @@ static struct cpuidle_state skl_cstates[] = {
178 .desc = "MWAIT 0x40", 183 .desc = "MWAIT 0x40",
179 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED, 184 .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
180 .exit_latency = 200, 185 .exit_latency = 200,
181- .target_residency = 800, 186- .target_residency = 800,
182+ .target_residency = 8000, 187+ .target_residency = 8000,
183 .enter = &intel_idle, 188 .enter = &intel_idle,
184 .enter_freeze = intel_idle_freeze, }, 189 .enter_s2idle = intel_idle_s2idle, },
185 { 190 {
186@@ -644,7 +612,7 @@ static struct cpuidle_state skl_cstates[] = { 191@@ -643,7 +643,7 @@ static struct cpuidle_state skl_cstates[] = {
187 .desc = "MWAIT 0x50", 192 .desc = "MWAIT 0x50",
188 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED, 193 .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
189 .exit_latency = 480, 194 .exit_latency = 480,
190- .target_residency = 5000, 195- .target_residency = 5000,
191+ .target_residency = 50000, 196+ .target_residency = 50000,
192 .enter = &intel_idle, 197 .enter = &intel_idle,
193 .enter_freeze = intel_idle_freeze, }, 198 .enter_s2idle = intel_idle_s2idle, },
194 { 199 {
195@@ -652,7 +620,7 @@ static struct cpuidle_state skl_cstates[] = { 200@@ -651,7 +651,7 @@ static struct cpuidle_state skl_cstates[] = {
196 .desc = "MWAIT 0x60", 201 .desc = "MWAIT 0x60",
197 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, 202 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
198 .exit_latency = 890, 203 .exit_latency = 890,
199- .target_residency = 5000, 204- .target_residency = 5000,
200+ .target_residency = 50000, 205+ .target_residency = 50000,
201 .enter = &intel_idle, 206 .enter = &intel_idle,
202 .enter_freeze = intel_idle_freeze, }, 207 .enter_s2idle = intel_idle_s2idle, },
203 { 208 {
204@@ -669,19 +637,11 @@ static struct cpuidle_state skx_cstates[] = { 209@@ -672,7 +672,7 @@ static struct cpuidle_state skx_cstates[] = {
210 .desc = "MWAIT 0x01",
211 .flags = MWAIT2flg(0x01),
212 .exit_latency = 10,
213- .target_residency = 20,
214+ .target_residency = 1000,
205 .enter = &intel_idle, 215 .enter = &intel_idle,
206 .enter_freeze = intel_idle_freeze, }, 216 .enter_s2idle = intel_idle_s2idle, },
207 { 217 {
208- .name = "C1E-SKX", 218@@ -680,7 +680,7 @@ static struct cpuidle_state skx_cstates[] = {
209- .desc = "MWAIT 0x01",
210- .flags = MWAIT2flg(0x01),
211- .exit_latency = 10,
212- .target_residency = 20,
213- .enter = &intel_idle,
214- .enter_freeze = intel_idle_freeze, },
215- {
216 .name = "C6-SKX",
217 .desc = "MWAIT 0x20", 219 .desc = "MWAIT 0x20",
218 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED, 220 .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
219 .exit_latency = 133, 221 .exit_latency = 133,
220- .target_residency = 600, 222- .target_residency = 600,
221+ .target_residency = 1600, 223+ .target_residency = 20000,
222 .enter = &intel_idle, 224 .enter = &intel_idle,
223 .enter_freeze = intel_idle_freeze, }, 225 .enter_s2idle = intel_idle_s2idle, },
224 { 226 {
225-- 227--
2262.11.1 2282.15.0
227 229
diff --git a/patches/boot_time_opt/0110-init_task-faster-timerslack.patch b/patches/boot_time_opt/0109-init_task-faster-timerslack.patch
index b0075ff..9687012 100644
--- a/patches/boot_time_opt/0110-init_task-faster-timerslack.patch
+++ b/patches/boot_time_opt/0109-init_task-faster-timerslack.patch
@@ -1,13 +1,15 @@
1From 42c2cb32259b76fb1f6713d99c4f0922e97bcc8d Mon Sep 17 00:00:00 2001 1From 4c35ad2b763bca4e0eaf449d42a0e4c49197da2c Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 23 Mar 2016 14:52:41 +0000 3Date: Wed, 23 Mar 2016 14:52:41 +0000
4Subject: [PATCH 110/124] init_task: faster timerslack 4Subject: [PATCH 109/126] init_task: faster timerslack
5 5
6the default tuning is a compromise between client power and server performance; 6the default tuning is a compromise between client power and server
7performance;
7for a server distro like Clear Linux, we don't need to compromise. 8for a server distro like Clear Linux, we don't need to compromise.
8(for non-server usages we have different kernel binaries) 9(for non-server usages we have different kernel binaries)
9 10
10in principle this can be done as a patch to systemd as well, but we have a shared 11in principle this can be done as a patch to systemd as well, but we have
12a shared
11systemd between usages while we have different kernels, so the logistics 13systemd between usages while we have different kernels, so the logistics
12for where the patch goes work out better here 14for where the patch goes work out better here
13--- 15---
@@ -15,12 +17,12 @@ for where the patch goes work out better here
15 1 file changed, 1 insertion(+), 1 deletion(-) 17 1 file changed, 1 insertion(+), 1 deletion(-)
16 18
17diff --git a/include/linux/init_task.h b/include/linux/init_task.h 19diff --git a/include/linux/init_task.h b/include/linux/init_task.h
18index 325f649d77ff..e0eb261e17cb 100644 20index 8062e6cc607c..2903519e2462 100644
19--- a/include/linux/init_task.h 21--- a/include/linux/init_task.h
20+++ b/include/linux/init_task.h 22+++ b/include/linux/init_task.h
21@@ -249,7 +249,7 @@ extern struct task_group root_task_group; 23@@ -275,7 +275,7 @@ extern struct cred init_cred;
22 .journal_info = NULL, \ 24 .journal_info = NULL, \
23 .cpu_timers = INIT_CPU_TIMERS(tsk.cpu_timers), \ 25 INIT_CPU_TIMERS(tsk) \
24 .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \ 26 .pi_lock = __RAW_SPIN_LOCK_UNLOCKED(tsk.pi_lock), \
25- .timer_slack_ns = 50000, /* 50 usec default slack */ \ 27- .timer_slack_ns = 50000, /* 50 usec default slack */ \
26+ .timer_slack_ns = 1000, /* 1 usec default slack */ \ 28+ .timer_slack_ns = 1000, /* 1 usec default slack */ \
@@ -28,5 +30,5 @@ index 325f649d77ff..e0eb261e17cb 100644
28 [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \ 30 [PIDTYPE_PID] = INIT_PID_LINK(PIDTYPE_PID), \
29 [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \ 31 [PIDTYPE_PGID] = INIT_PID_LINK(PIDTYPE_PGID), \
30-- 32--
312.11.1 332.15.0
32 34
diff --git a/patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch b/patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
deleted file mode 100644
index 70247a0..0000000
--- a/patches/boot_time_opt/0109-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
+++ /dev/null
@@ -1,56 +0,0 @@
1From 4170571f7bb0897c90e13b2fcf3ee06990a9e774 Mon Sep 17 00:00:00 2001
2From: Alan Cox <alan@linux.intel.com>
3Date: Thu, 10 Mar 2016 15:11:28 +0000
4Subject: [PATCH 109/124] xattr: allow setting user.* attributes on symlinks by
5 owner
6
7Kvmtool and clear containers supports using user attributes to label host
8files with the virtual uid/guid of the file in the container. This allows an
9end user to manage their files and a complete uid space without all the ugly
10namespace stuff.
11
12The one gap in the support is symlinks because an end user can change the
13ownership of a symbolic link. We support attributes on these files as you
14can already (as root) set security attributes on them.
15
16The current rules seem slightly over-paranoid and as we have a use case this
17patch enables updating the attributes on a symbolic link IFF you are the
18owner of the synlink (as permissions are not usually meaningful on the link
19itself).
20
21Signed-off-by: Alan Cox <alan@linux.intel.com>
22---
23 fs/xattr.c | 14 ++++++++------
24 1 file changed, 8 insertions(+), 6 deletions(-)
25
26diff --git a/fs/xattr.c b/fs/xattr.c
27index 2d13b4e62fae..580a5aeddfd2 100644
28--- a/fs/xattr.c
29+++ b/fs/xattr.c
30@@ -118,15 +118,17 @@ xattr_permission(struct inode *inode, const char *name, int mask)
31 }
32
33 /*
34- * In the user.* namespace, only regular files and directories can have
35- * extended attributes. For sticky directories, only the owner and
36- * privileged users can write attributes.
37+ * In the user.* namespace, only regular files, symbolic links, and
38+ * directories can have extended attributes. For symbolic links and
39+ * sticky directories, only the owner and privileged users can write
40+ * attributes.
41 */
42 if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
43- if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
44+ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode) && !S_ISLNK(inode->i_mode))
45 return (mask & MAY_WRITE) ? -EPERM : -ENODATA;
46- if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) &&
47- (mask & MAY_WRITE) && !inode_owner_or_capable(inode))
48+ if (((S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX))
49+ || S_ISLNK(inode->i_mode)) && (mask & MAY_WRITE)
50+ && !inode_owner_or_capable(inode))
51 return -EPERM;
52 }
53
54--
552.11.1
56
diff --git a/patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch b/patches/boot_time_opt/0110-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
index 7d0def8..b115a5b 100644
--- a/patches/boot_time_opt/0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
+++ b/patches/boot_time_opt/0110-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
@@ -1,28 +1,30 @@
1From 3152053ea1ea3aa77bcc7e990d48ef84621ff6c9 Mon Sep 17 00:00:00 2001 1From 5e6c814b3ab74e9abbdd836a224c5ceb7246b44e Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 9 Apr 2016 22:41:37 +0000 3Date: Sat, 9 Apr 2016 22:41:37 +0000
4Subject: [PATCH 112/124] fs: ext4: fsync: optimize double-fsync() a bunch 4Subject: [PATCH 110/126] fs: ext4: fsync: optimize double-fsync() a bunch
5 5
6There are cases where EXT4 is a bit too conservative sending barriers down to the disk; 6There are cases where EXT4 is a bit too conservative sending barriers down to
7there are cases where the transaction in progress is not the one that sent the barrier 7the disk; there are cases where the transaction in progress is not the one
8(in other words: the fsync is for a file for which the IO happened more time ago 8that sent the barrier (in other words: the fsync is for a file for which the
9and all data was already sent to the disk). For that case, a more performing tradeoff 9IO happened more time ago and all data was already sent to the disk).
10can be made on SSD devices (which have the ability to flush their dram caches in a hurry 10
11on a power fail event) where the barrier gets sent to the disk, but we don't need to wait 11For that case, a more performing tradeoff can be made on SSD devices (which
12for the barrier to complete. Any consecutive IO will block on the barrier correctly. 12have the ability to flush their dram caches in a hurry on a power fail event)
13where the barrier gets sent to the disk, but we don't need to wait for the
14barrier to complete. Any consecutive IO will block on the barrier correctly.
13--- 15---
14 block/bio.c | 20 ++++++++++++++++++++ 16 block/bio.c | 19 +++++++++++++++++++
15 block/blk-flush.c | 41 +++++++++++++++++++++++++++++++++++++++++ 17 block/blk-flush.c | 40 ++++++++++++++++++++++++++++++++++++++++
16 fs/ext4/fsync.c | 6 +++++- 18 fs/ext4/fsync.c | 6 +++++-
17 include/linux/bio.h | 1 + 19 include/linux/bio.h | 1 +
18 include/linux/blkdev.h | 5 +++++ 20 include/linux/blkdev.h | 5 +++++
19 5 files changed, 72 insertions(+), 1 deletion(-) 21 5 files changed, 70 insertions(+), 1 deletion(-)
20 22
21diff --git a/block/bio.c b/block/bio.c 23diff --git a/block/bio.c b/block/bio.c
22index db85c5753a76..80f5ab6b536a 100644 24index 101c2a9b5481..8f9f6e9febe0 100644
23--- a/block/bio.c 25--- a/block/bio.c
24+++ b/block/bio.c 26+++ b/block/bio.c
25@@ -882,6 +882,26 @@ int submit_bio_wait(struct bio *bio) 27@@ -956,6 +956,25 @@ int submit_bio_wait(struct bio *bio)
26 } 28 }
27 EXPORT_SYMBOL(submit_bio_wait); 29 EXPORT_SYMBOL(submit_bio_wait);
28 30
@@ -32,8 +34,7 @@ index db85c5753a76..80f5ab6b536a 100644
32+} 34+}
33+ 35+
34+/** 36+/**
35+ * submit_bio_nowait - submit a bio for fire-and-forget 37+ * submit_bio_nowait - submit a bio for fire-and-forge for fire-and-forget
36+ * @rw: whether to %READ or %WRITE, or maybe to %READA (read ahead)
37+ * @bio: The &struct bio which describes the I/O 38+ * @bio: The &struct bio which describes the I/O
38+ * 39+ *
39+ * Simple wrapper around submit_bio() that takes care of bio_put() on completion 40+ * Simple wrapper around submit_bio() that takes care of bio_put() on completion
@@ -50,10 +51,10 @@ index db85c5753a76..80f5ab6b536a 100644
50 * bio_advance - increment/complete a bio by some number of bytes 51 * bio_advance - increment/complete a bio by some number of bytes
51 * @bio: bio to advance 52 * @bio: bio to advance
52diff --git a/block/blk-flush.c b/block/blk-flush.c 53diff --git a/block/blk-flush.c b/block/blk-flush.c
53index 3c882cbc7541..b2dfcfe01ed7 100644 54index 4938bec8cfef..020f2c75343a 100644
54--- a/block/blk-flush.c 55--- a/block/blk-flush.c
55+++ b/block/blk-flush.c 56+++ b/block/blk-flush.c
56@@ -530,6 +530,47 @@ int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask, 57@@ -543,6 +543,46 @@ int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
57 } 58 }
58 EXPORT_SYMBOL(blkdev_issue_flush); 59 EXPORT_SYMBOL(blkdev_issue_flush);
59 60
@@ -61,7 +62,6 @@ index 3c882cbc7541..b2dfcfe01ed7 100644
61+ * blkdev_issue_flush_nowait - queue a flush 62+ * blkdev_issue_flush_nowait - queue a flush
62+ * @bdev: blockdev to issue flush for 63+ * @bdev: blockdev to issue flush for
63+ * @gfp_mask: memory allocation flags (for bio_alloc) 64+ * @gfp_mask: memory allocation flags (for bio_alloc)
64+ * @error_sector: error sector
65+ * 65+ *
66+ * Description: 66+ * Description:
67+ * Issue a flush for the block device in question. Caller can supply 67+ * Issue a flush for the block device in question. Caller can supply
@@ -91,8 +91,8 @@ index 3c882cbc7541..b2dfcfe01ed7 100644
91+ return; 91+ return;
92+ 92+
93+ bio = bio_alloc(gfp_mask, 0); 93+ bio = bio_alloc(gfp_mask, 0);
94+ bio->bi_bdev = bdev; 94+ bio_set_dev(bio, bdev);
95+ bio_set_op_attrs(bio, REQ_OP_WRITE, WRITE_FLUSH); 95+ bio->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH;
96+ 96+
97+ submit_bio_nowait(bio); 97+ submit_bio_nowait(bio);
98+} 98+}
@@ -102,10 +102,10 @@ index 3c882cbc7541..b2dfcfe01ed7 100644
102 int node, int cmd_size) 102 int node, int cmd_size)
103 { 103 {
104diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c 104diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
105index 88effb1053c7..a58966c18172 100644 105index 26a7fe5c4fd3..2708b292ddca 100644
106--- a/fs/ext4/fsync.c 106--- a/fs/ext4/fsync.c
107+++ b/fs/ext4/fsync.c 107+++ b/fs/ext4/fsync.c
108@@ -150,7 +150,11 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync) 108@@ -154,7 +154,11 @@ int ext4_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
109 ret = jbd2_complete_transaction(journal, commit_tid); 109 ret = jbd2_complete_transaction(journal, commit_tid);
110 if (needs_barrier) { 110 if (needs_barrier) {
111 issue_flush: 111 issue_flush:
@@ -119,30 +119,30 @@ index 88effb1053c7..a58966c18172 100644
119 ret = err; 119 ret = err;
120 } 120 }
121diff --git a/include/linux/bio.h b/include/linux/bio.h 121diff --git a/include/linux/bio.h b/include/linux/bio.h
122index 97cb48f03dc7..3f055e6541e0 100644 122index 275c91c99516..4ddfa9e10301 100644
123--- a/include/linux/bio.h 123--- a/include/linux/bio.h
124+++ b/include/linux/bio.h 124+++ b/include/linux/bio.h
125@@ -421,6 +421,7 @@ struct request_queue; 125@@ -448,6 +448,7 @@ struct request_queue;
126 extern int bio_phys_segments(struct request_queue *, struct bio *); 126 extern int bio_phys_segments(struct request_queue *, struct bio *);
127 127
128 extern int submit_bio_wait(struct bio *bio); 128 extern int submit_bio_wait(struct bio *bio);
129+extern void submit_bio_nowait(struct bio *bio); 129+extern void submit_bio_nowait(struct bio *bio);
130 extern void bio_advance(struct bio *, unsigned); 130 extern void bio_advance(struct bio *, unsigned);
131 131
132 extern void bio_init(struct bio *); 132 extern void bio_init(struct bio *bio, struct bio_vec *table,
133diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h 133diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
134index f6a816129856..727684abf21e 100644 134index 8da66379f7ea..c48565cc84fb 100644
135--- a/include/linux/blkdev.h 135--- a/include/linux/blkdev.h
136+++ b/include/linux/blkdev.h 136+++ b/include/linux/blkdev.h
137@@ -1144,6 +1144,7 @@ static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt, 137@@ -1336,6 +1336,7 @@ static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt,
138 #define BLKDEV_DISCARD_ZERO (1 << 1) /* must reliably zero data */ 138 }
139 139
140 extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *); 140 extern int blkdev_issue_flush(struct block_device *, gfp_t, sector_t *);
141+extern void blkdev_issue_flush_nowait(struct block_device *, gfp_t); 141+extern void blkdev_issue_flush_nowait(struct block_device *, gfp_t);
142 extern int blkdev_issue_discard(struct block_device *bdev, sector_t sector, 142 extern int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
143 sector_t nr_sects, gfp_t gfp_mask, unsigned long flags); 143 sector_t nr_sects, gfp_t gfp_mask, struct page *page);
144 extern int __blkdev_issue_discard(struct block_device *bdev, sector_t sector, 144
145@@ -1745,6 +1746,10 @@ static inline int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask, 145@@ -2001,6 +2002,10 @@ static inline int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
146 return 0; 146 return 0;
147 } 147 }
148 148
@@ -154,5 +154,5 @@ index f6a816129856..727684abf21e 100644
154 154
155 #endif 155 #endif
156-- 156--
1572.11.1 1572.15.0
158 158
diff --git a/patches/boot_time_opt/0111-overload-on-wakeup.patch b/patches/boot_time_opt/0111-overload-on-wakeup.patch
new file mode 100644
index 0000000..d5125be
--- /dev/null
+++ b/patches/boot_time_opt/0111-overload-on-wakeup.patch
@@ -0,0 +1,57 @@
1From cc7c761946c6b9fa820acc90d7514795af3f42f5 Mon Sep 17 00:00:00 2001
2From: jplozi <jplozi@unice.fr>
3Date: Fri, 11 Mar 2016 15:18:06 +0100
4Subject: [PATCH 111/126] overload on wakeup
5
6source https://github.com/jplozi/wastedcores
7
8as an experiment, apply the learnings from the wasted-cores paper
9and see how the performance works out. With the data from this we should
10be able to work with Peter and the rest of the scheduler folks on
11a more permanent/elegant solution.
12---
13 kernel/sched/fair.c | 14 ++++++++++++++
14 1 file changed, 14 insertions(+)
15
16--- linux-4.14/kernel/sched/fair.c.org 2017-11-18 23:01:57.353611850 +0000
17+++ linux-4.14/kernel/sched/fair.c 2017-11-19 15:24:38.093637926 +0000
18@@ -5925,6 +5925,8 @@
19 return min_cap * 1024 < task_util(p) * capacity_margin;
20 }
21
22+
23+static unsigned int once_in_a_while;
24 /*
25 * select_task_rq_fair: Select target runqueue for the waking task in domains
26 * that have the 'sd_flag' flag set. In practice, this is SD_BALANCE_WAKE,
27@@ -5953,6 +5955,30 @@
28 }
29
30 rcu_read_lock();
31+
32+ once_in_a_while++;
33+
34+ if (cpu_rq(prev_cpu)->nr_running || (once_in_a_while & 15) == 0) {
35+ int _cpu;
36+ int bestprio = -5000;
37+ int bestcpu = -1;
38+
39+ for_each_online_cpu(_cpu) {
40+ if (!cpumask_test_cpu(_cpu, &p->cpus_allowed) ||
41+ cpu_rq(_cpu)->nr_running)
42+ continue;
43+ if (arch_asym_cpu_priority(_cpu) > bestprio || (prev_cpu == _cpu && bestprio == arch_asym_cpu_priority(_cpu))) {
44+ bestcpu = _cpu;
45+ bestprio = arch_asym_cpu_priority(_cpu);
46+ }
47+ }
48+
49+ if (bestcpu > 0) {
50+ rcu_read_unlock();
51+ return bestcpu;
52+ }
53+ }
54+
55 for_each_domain(cpu, tmp) {
56 if (!(tmp->flags & SD_LOAD_BALANCE))
57 break;
diff --git a/patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch b/patches/boot_time_opt/0112-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
index c6bf036..aad29b1 100644
--- a/patches/boot_time_opt/0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
+++ b/patches/boot_time_opt/0112-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
@@ -1,7 +1,7 @@
1From 3a1512b4ed3922f88936b95731aaff706e7286a9 Mon Sep 17 00:00:00 2001 1From eb6aacfb561485ef9419ff734b2d66059f5fc63d Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 16:05:23 -0600 3Date: Wed, 11 Feb 2015 16:05:23 -0600
4Subject: [PATCH 114/124] bootstats: add printk's to measure boot time in more 4Subject: [PATCH 112/126] bootstats: add printk's to measure boot time in more
5 detail 5 detail
6 6
7Few distro-tweaks to add printk's to visualize boot time better 7Few distro-tweaks to add printk's to visualize boot time better
@@ -17,10 +17,10 @@ Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
17 4 files changed, 9 insertions(+), 1 deletion(-) 17 4 files changed, 9 insertions(+), 1 deletion(-)
18 18
19diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c 19diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
20index 5cb272a7a5a3..d28fb7aae4ce 100644 20index 3344d3382e91..a3515ddca77c 100644
21--- a/arch/x86/kernel/alternative.c 21--- a/arch/x86/kernel/alternative.c
22+++ b/arch/x86/kernel/alternative.c 22+++ b/arch/x86/kernel/alternative.c
23@@ -626,7 +626,9 @@ void __init alternative_instructions(void) 23@@ -637,7 +637,9 @@ void __init alternative_instructions(void)
24 * patching. 24 * patching.
25 */ 25 */
26 26
@@ -30,7 +30,7 @@ index 5cb272a7a5a3..d28fb7aae4ce 100644
30 30
31 #ifdef CONFIG_SMP 31 #ifdef CONFIG_SMP
32 /* Patch to UP if other cpus not imminent. */ 32 /* Patch to UP if other cpus not imminent. */
33@@ -637,6 +639,8 @@ void __init alternative_instructions(void) 33@@ -648,6 +650,8 @@ void __init alternative_instructions(void)
34 _text, _etext); 34 _text, _etext);
35 } 35 }
36 36
@@ -40,10 +40,10 @@ index 5cb272a7a5a3..d28fb7aae4ce 100644
40 free_init_pages("SMP alternatives", 40 free_init_pages("SMP alternatives",
41 (unsigned long)__smp_locks, 41 (unsigned long)__smp_locks,
42diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c 42diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
43index a95e1e572697..b29467031be6 100644 43index 4b57cf5bc81d..218031ac9269 100644
44--- a/drivers/base/firmware_class.c 44--- a/drivers/base/firmware_class.c
45+++ b/drivers/base/firmware_class.c 45+++ b/drivers/base/firmware_class.c
46@@ -1224,6 +1224,8 @@ request_firmware(const struct firmware **firmware_p, const char *name, 46@@ -1265,6 +1265,8 @@ request_firmware(const struct firmware **firmware_p, const char *name,
47 { 47 {
48 int ret; 48 int ret;
49 49
@@ -53,10 +53,10 @@ index a95e1e572697..b29467031be6 100644
53 __module_get(THIS_MODULE); 53 __module_get(THIS_MODULE);
54 ret = _request_firmware(firmware_p, name, device, NULL, 0, 54 ret = _request_firmware(firmware_p, name, device, NULL, 0,
55diff --git a/init/main.c b/init/main.c 55diff --git a/init/main.c b/init/main.c
56index 2858be732f6d..f1d8c3fdbf05 100644 56index 0ee9c6866ada..7da935ad2d12 100644
57--- a/init/main.c 57--- a/init/main.c
58+++ b/init/main.c 58+++ b/init/main.c
59@@ -751,7 +751,7 @@ static int __init_or_module do_one_initcall_debug(initcall_t fn) 59@@ -799,7 +799,7 @@ static int __init_or_module do_one_initcall_debug(initcall_t fn)
60 unsigned long long duration; 60 unsigned long long duration;
61 int ret; 61 int ret;
62 62
@@ -66,10 +66,10 @@ index 2858be732f6d..f1d8c3fdbf05 100644
66 ret = fn(); 66 ret = fn();
67 rettime = ktime_get(); 67 rettime = ktime_get();
68diff --git a/kernel/kmod.c b/kernel/kmod.c 68diff --git a/kernel/kmod.c b/kernel/kmod.c
69index 0277d1216f80..dc5a6edd3895 100644 69index bc6addd9152b..9241a16ca4fd 100644
70--- a/kernel/kmod.c 70--- a/kernel/kmod.c
71+++ b/kernel/kmod.c 71+++ b/kernel/kmod.c
72@@ -76,6 +76,8 @@ static int call_modprobe(char *module_name, int wait) 72@@ -77,6 +77,8 @@ static int call_modprobe(char *module_name, int wait)
73 NULL 73 NULL
74 }; 74 };
75 75
@@ -79,5 +79,5 @@ index 0277d1216f80..dc5a6edd3895 100644
79 if (!argv) 79 if (!argv)
80 goto out; 80 goto out;
81-- 81--
822.11.1 822.15.0
83 83
diff --git a/patches/boot_time_opt/0115-fix-initcall-timestamps.patch b/patches/boot_time_opt/0113-fix-initcall-timestamps.patch
index cdf2af1..724129a 100644
--- a/patches/boot_time_opt/0115-fix-initcall-timestamps.patch
+++ b/patches/boot_time_opt/0113-fix-initcall-timestamps.patch
@@ -1,7 +1,7 @@
1From 5b5ad2c9b9b555d20aeba1f895d0c9d1c2a77776 Mon Sep 17 00:00:00 2001 1From 2d08a233a1dd6eef3979f6d09b03cfcb66db7b0e Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 2 Jun 2016 23:36:32 -0500 3Date: Thu, 2 Jun 2016 23:36:32 -0500
4Subject: [PATCH 115/124] fix initcall timestamps 4Subject: [PATCH 113/126] fix initcall timestamps
5 5
6Print more finegrained initcall timings 6Print more finegrained initcall timings
7 7
@@ -11,10 +11,10 @@ use the tsc instead of the jiffies clock for initcall_debug
11 1 file changed, 6 insertions(+), 6 deletions(-) 11 1 file changed, 6 insertions(+), 6 deletions(-)
12 12
13diff --git a/init/main.c b/init/main.c 13diff --git a/init/main.c b/init/main.c
14index f1d8c3fdbf05..8358cbe6ab13 100644 14index 7da935ad2d12..d1ba883d3382 100644
15--- a/init/main.c 15--- a/init/main.c
16+++ b/init/main.c 16+++ b/init/main.c
17@@ -747,16 +747,16 @@ __setup("initcall_blacklist=", initcall_blacklist); 17@@ -795,16 +795,16 @@ __setup("initcall_blacklist=", initcall_blacklist);
18 18
19 static int __init_or_module do_one_initcall_debug(initcall_t fn) 19 static int __init_or_module do_one_initcall_debug(initcall_t fn)
20 { 20 {
@@ -38,5 +38,5 @@ index f1d8c3fdbf05..8358cbe6ab13 100644
38 fn, ret, duration); 38 fn, ret, duration);
39 39
40-- 40--
412.11.1 412.15.0
42 42
diff --git a/patches/boot_time_opt/0113-overload-on-wakeup.patch b/patches/boot_time_opt/0113-overload-on-wakeup.patch
deleted file mode 100644
index a3a6bce..0000000
--- a/patches/boot_time_opt/0113-overload-on-wakeup.patch
+++ /dev/null
@@ -1,43 +0,0 @@
1From 9f25d18f45a8391488feb9783404f2f79b7090f4 Mon Sep 17 00:00:00 2001
2From: jplozi <jplozi@unice.fr>
3Date: Fri, 11 Mar 2016 15:18:06 +0100
4Subject: [PATCH 113/124] overload on wakeup
5
6source https://github.com/jplozi/wastedcores
7
8as an experiment, apply the learnings from the wasted-cores paper
9and see how the performance works out. With the data from this we should
10be able to work with Peter and the rest of the scheduler folks on
11a more permanent/elegant solution.
12---
13 kernel/sched/fair.c | 14 ++++++++++++++
14 1 file changed, 14 insertions(+)
15
16diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
17index c242944f5cbd..5132c828161e 100644
18--- a/kernel/sched/fair.c
19+++ b/kernel/sched/fair.c
20@@ -5638,6 +5638,20 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int sd_flag, int wake_f
21 }
22
23 rcu_read_lock();
24+
25+ if (cpu_rq(prev_cpu)->nr_running) {
26+ int _cpu;
27+
28+ for_each_online_cpu(_cpu) {
29+ if (!cpumask_test_cpu(_cpu, tsk_cpus_allowed(p)) ||
30+ cpu_rq(_cpu)->nr_running)
31+ continue;
32+
33+ rcu_read_unlock();
34+ return _cpu;
35+ }
36+ }
37+
38 for_each_domain(cpu, tmp) {
39 if (!(tmp->flags & SD_LOAD_BALANCE))
40 break;
41--
422.11.1
43
diff --git a/patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch b/patches/boot_time_opt/0114-smpboot-reuse-timer-calibration.patch
index d1f71b5..5fe8cdf 100644
--- a/patches/boot_time_opt/0116-smpboot-reuse-timer-calibration.patch
+++ b/patches/boot_time_opt/0114-smpboot-reuse-timer-calibration.patch
@@ -1,7 +1,7 @@
1From 16104411cc5a7b20f310e3ecede85343ee6ce6b9 Mon Sep 17 00:00:00 2001 1From 283fcb879f66da9659f1983bcf173476bae9292b Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Wed, 11 Feb 2015 17:28:14 -0600 3Date: Wed, 11 Feb 2015 17:28:14 -0600
4Subject: [PATCH 116/124] smpboot: reuse timer calibration 4Subject: [PATCH 114/126] smpboot: reuse timer calibration
5 5
6NO point recalibrating for known-constant tsc... saves 200ms+ of boot time. 6NO point recalibrating for known-constant tsc... saves 200ms+ of boot time.
7 7
@@ -13,19 +13,19 @@ Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
13 1 file changed, 3 insertions(+) 13 1 file changed, 3 insertions(+)
14 14
15diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c 15diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
16index 46b2f41f8b05..88553c1f21f1 100644 16index ad2b925a808e..6aed4e79f290 100644
17--- a/arch/x86/kernel/tsc.c 17--- a/arch/x86/kernel/tsc.c
18+++ b/arch/x86/kernel/tsc.c 18+++ b/arch/x86/kernel/tsc.c
19@@ -1384,6 +1384,9 @@ unsigned long calibrate_delay_is_known(void) 19@@ -1352,6 +1352,9 @@ unsigned long calibrate_delay_is_known(void)
20 if (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC)) 20 if (tsc_disabled || !constant_tsc || !mask)
21 return 0; 21 return 0;
22 22
23+ if (cpu != 0) 23+ if (cpu != 0)
24+ return cpu_data(0).loops_per_jiffy; 24+ return cpu_data(0).loops_per_jiffy;
25+ 25+
26 if (!mask) 26 sibling = cpumask_any_but(mask, cpu);
27 return 0; 27 if (sibling < nr_cpu_ids)
28 28 return cpu_data(sibling).loops_per_jiffy;
29-- 29--
302.11.1 302.15.0
31 31
diff --git a/patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch b/patches/boot_time_opt/0115-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
index 978e09f..cc21f98 100644
--- a/patches/boot_time_opt/0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
+++ b/patches/boot_time_opt/0115-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
@@ -1,7 +1,7 @@
1From fd1f55138c242bd9aeec374ff611064bdc89b359 Mon Sep 17 00:00:00 2001 1From ee1cb812123c8db20af6d73f7d4ab4f2fb537055 Mon Sep 17 00:00:00 2001
2From: Jim Kukunas <james.t.kukunas@linux.intel.com> 2From: Jim Kukunas <james.t.kukunas@linux.intel.com>
3Date: Fri, 27 May 2016 09:26:51 -0400 3Date: Fri, 27 May 2016 09:26:51 -0400
4Subject: [PATCH 117/124] raid6: add Kconfig option to skip raid6 benchmarking 4Subject: [PATCH 115/126] raid6: add Kconfig option to skip raid6 benchmarking
5 5
6Adds CONFIG_RAID6_FORCE_ALGO, which causes the kernel to not benchmark 6Adds CONFIG_RAID6_FORCE_ALGO, which causes the kernel to not benchmark
7each raid recovery and syndrome generation algorithm, and instead use 7each raid recovery and syndrome generation algorithm, and instead use
@@ -18,7 +18,7 @@ Signed-off-by: Jim Kukunas <james.t.kukunas@linux.intel.com>
18 create mode 100644 lib/raid6/Kconfig 18 create mode 100644 lib/raid6/Kconfig
19 19
20diff --git a/lib/Kconfig b/lib/Kconfig 20diff --git a/lib/Kconfig b/lib/Kconfig
21index 260a80e313b9..b3efd21db2fd 100644 21index b1445b22a6de..3b4baea5d74b 100644
22--- a/lib/Kconfig 22--- a/lib/Kconfig
23+++ b/lib/Kconfig 23+++ b/lib/Kconfig
24@@ -7,8 +7,7 @@ config BINARY_PRINTF 24@@ -7,8 +7,7 @@ config BINARY_PRINTF
@@ -76,10 +76,10 @@ index 000000000000..d881d6be89bb
76+ 76+
77+endmenu 77+endmenu
78diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c 78diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
79index 7857049fd7d3..29332d2a04a5 100644 79index 476994723258..756f6f2600a6 100644
80--- a/lib/raid6/algos.c 80--- a/lib/raid6/algos.c
81+++ b/lib/raid6/algos.c 81+++ b/lib/raid6/algos.c
82@@ -125,6 +125,63 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = { 82@@ -128,6 +128,63 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {
83 #define time_before(x, y) ((x) < (y)) 83 #define time_before(x, y) ((x) < (y))
84 #endif 84 #endif
85 85
@@ -143,7 +143,7 @@ index 7857049fd7d3..29332d2a04a5 100644
143 static inline const struct raid6_recov_calls *raid6_choose_recov(void) 143 static inline const struct raid6_recov_calls *raid6_choose_recov(void)
144 { 144 {
145 const struct raid6_recov_calls *const *algo; 145 const struct raid6_recov_calls *const *algo;
146@@ -256,6 +313,7 @@ int __init raid6_select_algo(void) 146@@ -259,6 +316,7 @@ int __init raid6_select_algo(void)
147 147
148 return gen_best && rec_best ? 0 : -EINVAL; 148 return gen_best && rec_best ? 0 : -EINVAL;
149 } 149 }
@@ -152,5 +152,5 @@ index 7857049fd7d3..29332d2a04a5 100644
152 static void raid6_exit(void) 152 static void raid6_exit(void)
153 { 153 {
154-- 154--
1552.11.1 1552.15.0
156 156
diff --git a/patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch b/patches/boot_time_opt/0116-Initialize-ata-before-graphics.patch
index 70e07c8..9bc70d6 100644
--- a/patches/boot_time_opt/0118-Initialize-ata-before-graphics.patch
+++ b/patches/boot_time_opt/0116-Initialize-ata-before-graphics.patch
@@ -1,7 +1,7 @@
1From fbc1ab7c18a9c960a0bff293a93620d581658f8d Mon Sep 17 00:00:00 2001 1From a8f79e6e347a5d884ea8d351631a6f6e899060cc Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 2 Jun 2016 23:36:32 -0500 3Date: Thu, 2 Jun 2016 23:36:32 -0500
4Subject: [PATCH 118/124] Initialize ata before graphics 4Subject: [PATCH 116/126] Initialize ata before graphics
5 5
6ATA init is the long pole in the boot process, and its asynchronous. 6ATA init is the long pole in the boot process, and its asynchronous.
7move the graphics init after it so that ata and graphics initialize 7move the graphics init after it so that ata and graphics initialize
@@ -11,10 +11,10 @@ in parallel
11 1 file changed, 6 insertions(+), 5 deletions(-) 11 1 file changed, 6 insertions(+), 5 deletions(-)
12 12
13diff --git a/drivers/Makefile b/drivers/Makefile 13diff --git a/drivers/Makefile b/drivers/Makefile
14index 194d20bee7dc..2785e4c6b30f 100644 14index d242d3514d30..b73656e2caa0 100644
15--- a/drivers/Makefile 15--- a/drivers/Makefile
16+++ b/drivers/Makefile 16+++ b/drivers/Makefile
17@@ -55,14 +55,9 @@ obj-y += char/ 17@@ -61,14 +61,9 @@ obj-y += char/
18 # iommu/ comes before gpu as gpu are using iommu controllers 18 # iommu/ comes before gpu as gpu are using iommu controllers
19 obj-$(CONFIG_IOMMU_SUPPORT) += iommu/ 19 obj-$(CONFIG_IOMMU_SUPPORT) += iommu/
20 20
@@ -29,7 +29,7 @@ index 194d20bee7dc..2785e4c6b30f 100644
29 29
30 obj-$(CONFIG_PARPORT) += parport/ 30 obj-$(CONFIG_PARPORT) += parport/
31 obj-$(CONFIG_NVM) += lightnvm/ 31 obj-$(CONFIG_NVM) += lightnvm/
32@@ -76,6 +71,12 @@ obj-$(CONFIG_IDE) += ide/ 32@@ -82,6 +77,12 @@ obj-$(CONFIG_IDE) += ide/
33 obj-$(CONFIG_SCSI) += scsi/ 33 obj-$(CONFIG_SCSI) += scsi/
34 obj-y += nvme/ 34 obj-y += nvme/
35 obj-$(CONFIG_ATA) += ata/ 35 obj-$(CONFIG_ATA) += ata/
@@ -43,5 +43,5 @@ index 194d20bee7dc..2785e4c6b30f 100644
43 obj-$(CONFIG_MTD) += mtd/ 43 obj-$(CONFIG_MTD) += mtd/
44 obj-$(CONFIG_SPI) += spi/ 44 obj-$(CONFIG_SPI) += spi/
45-- 45--
462.11.1 462.15.0
47 47
diff --git a/patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch b/patches/boot_time_opt/0117-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
index a068afb..6e208f5 100644
--- a/patches/boot_time_opt/0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
+++ b/patches/boot_time_opt/0117-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
@@ -1,7 +1,7 @@
1From d9390cb702de5cbef64f893efd2344c4f58dae82 Mon Sep 17 00:00:00 2001 1From 978b64d2b68efe40d73f69897292e796db46585a Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Mon, 25 Jul 2016 06:44:34 -0500 3Date: Mon, 25 Jul 2016 06:44:34 -0500
4Subject: [PATCH 119/124] reduce e1000e boot time by tightening sleep ranges 4Subject: [PATCH 117/126] reduce e1000e boot time by tightening sleep ranges
5 5
6The e1000e driver is a great user of the usleep_range() API, 6The e1000e driver is a great user of the usleep_range() API,
7and has any nice ranges that in principle help power management. 7and has any nice ranges that in principle help power management.
@@ -53,10 +53,10 @@ index 6b03c8553e59..d31145269dd9 100644
53 /* Must acquire the MDIO ownership before MAC reset. 53 /* Must acquire the MDIO ownership before MAC reset.
54 * Ownership defaults to firmware after a reset. 54 * Ownership defaults to firmware after a reset.
55diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c 55diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c
56index 7aff68a4a4df..7cb689bd41f8 100644 56index 003cbd605799..6295b607c555 100644
57--- a/drivers/net/ethernet/intel/e1000e/ethtool.c 57--- a/drivers/net/ethernet/intel/e1000e/ethtool.c
58+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c 58+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c
59@@ -1023,7 +1023,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data) 59@@ -1032,7 +1032,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
60 /* Disable all the interrupts */ 60 /* Disable all the interrupts */
61 ew32(IMC, 0xFFFFFFFF); 61 ew32(IMC, 0xFFFFFFFF);
62 e1e_flush(); 62 e1e_flush();
@@ -65,7 +65,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
65 65
66 /* Test each interrupt */ 66 /* Test each interrupt */
67 for (i = 0; i < 10; i++) { 67 for (i = 0; i < 10; i++) {
68@@ -1055,7 +1055,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data) 68@@ -1064,7 +1064,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
69 ew32(IMC, mask); 69 ew32(IMC, mask);
70 ew32(ICS, mask); 70 ew32(ICS, mask);
71 e1e_flush(); 71 e1e_flush();
@@ -74,7 +74,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
74 74
75 if (adapter->test_icr & mask) { 75 if (adapter->test_icr & mask) {
76 *data = 3; 76 *data = 3;
77@@ -1073,7 +1073,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data) 77@@ -1082,7 +1082,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
78 ew32(IMS, mask); 78 ew32(IMS, mask);
79 ew32(ICS, mask); 79 ew32(ICS, mask);
80 e1e_flush(); 80 e1e_flush();
@@ -83,7 +83,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
83 83
84 if (!(adapter->test_icr & mask)) { 84 if (!(adapter->test_icr & mask)) {
85 *data = 4; 85 *data = 4;
86@@ -1091,7 +1091,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data) 86@@ -1100,7 +1100,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
87 ew32(IMC, ~mask & 0x00007FFF); 87 ew32(IMC, ~mask & 0x00007FFF);
88 ew32(ICS, ~mask & 0x00007FFF); 88 ew32(ICS, ~mask & 0x00007FFF);
89 e1e_flush(); 89 e1e_flush();
@@ -92,7 +92,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
92 92
93 if (adapter->test_icr) { 93 if (adapter->test_icr) {
94 *data = 5; 94 *data = 5;
95@@ -1103,7 +1103,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data) 95@@ -1112,7 +1112,7 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
96 /* Disable all the interrupts */ 96 /* Disable all the interrupts */
97 ew32(IMC, 0xFFFFFFFF); 97 ew32(IMC, 0xFFFFFFFF);
98 e1e_flush(); 98 e1e_flush();
@@ -101,7 +101,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
101 101
102 /* Unhook test interrupt handler */ 102 /* Unhook test interrupt handler */
103 free_irq(irq, netdev); 103 free_irq(irq, netdev);
104@@ -1479,7 +1479,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter) 104@@ -1488,7 +1488,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter)
105 */ 105 */
106 ew32(SCTL, E1000_SCTL_ENABLE_SERDES_LOOPBACK); 106 ew32(SCTL, E1000_SCTL_ENABLE_SERDES_LOOPBACK);
107 e1e_flush(); 107 e1e_flush();
@@ -110,7 +110,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
110 110
111 return 0; 111 return 0;
112 } 112 }
113@@ -1592,7 +1592,7 @@ static void e1000_loopback_cleanup(struct e1000_adapter *adapter) 113@@ -1602,7 +1602,7 @@ static void e1000_loopback_cleanup(struct e1000_adapter *adapter)
114 hw->phy.media_type == e1000_media_type_internal_serdes) { 114 hw->phy.media_type == e1000_media_type_internal_serdes) {
115 ew32(SCTL, E1000_SCTL_DISABLE_SERDES_LOOPBACK); 115 ew32(SCTL, E1000_SCTL_DISABLE_SERDES_LOOPBACK);
116 e1e_flush(); 116 e1e_flush();
@@ -120,7 +120,7 @@ index 7aff68a4a4df..7cb689bd41f8 100644
120 } 120 }
121 /* Fall Through */ 121 /* Fall Through */
122diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c 122diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
123index f3aaca743ea3..bef75cec259f 100644 123index d6d4ed7acf03..13f502587440 100644
124--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c 124--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
125+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c 125+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
126@@ -289,7 +289,7 @@ static void e1000_toggle_lanphypc_pch_lpt(struct e1000_hw *hw) 126@@ -289,7 +289,7 @@ static void e1000_toggle_lanphypc_pch_lpt(struct e1000_hw *hw)
@@ -132,7 +132,7 @@ index f3aaca743ea3..bef75cec259f 100644
132 } while (!(er32(CTRL_EXT) & E1000_CTRL_EXT_LPCD) && count--); 132 } while (!(er32(CTRL_EXT) & E1000_CTRL_EXT_LPCD) && count--);
133 133
134 msleep(30); 134 msleep(30);
135@@ -422,7 +422,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw) 135@@ -423,7 +423,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)
136 /* Ungate automatic PHY configuration on non-managed 82579 */ 136 /* Ungate automatic PHY configuration on non-managed 82579 */
137 if ((hw->mac.type == e1000_pch2lan) && 137 if ((hw->mac.type == e1000_pch2lan) &&
138 !(fwsm & E1000_ICH_FWSM_FW_VALID)) { 138 !(fwsm & E1000_ICH_FWSM_FW_VALID)) {
@@ -141,7 +141,7 @@ index f3aaca743ea3..bef75cec259f 100644
141 e1000_gate_hw_phy_config_ich8lan(hw, false); 141 e1000_gate_hw_phy_config_ich8lan(hw, false);
142 } 142 }
143 143
144@@ -547,7 +547,7 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw) 144@@ -549,7 +549,7 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
145 phy->id = 0; 145 phy->id = 0;
146 while ((e1000_phy_unknown == e1000e_get_phy_type_from_id(phy->id)) && 146 while ((e1000_phy_unknown == e1000e_get_phy_type_from_id(phy->id)) &&
147 (i++ < 100)) { 147 (i++ < 100)) {
@@ -150,7 +150,7 @@ index f3aaca743ea3..bef75cec259f 100644
150 ret_val = e1000e_get_phy_id(hw); 150 ret_val = e1000e_get_phy_id(hw);
151 if (ret_val) 151 if (ret_val)
152 return ret_val; 152 return ret_val;
153@@ -1259,7 +1259,7 @@ static s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force) 153@@ -1262,7 +1262,7 @@ static s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force)
154 goto out; 154 goto out;
155 } 155 }
156 156
@@ -159,7 +159,7 @@ index f3aaca743ea3..bef75cec259f 100644
159 } 159 }
160 e_dbg("ULP_CONFIG_DONE cleared after %dmsec\n", i * 10); 160 e_dbg("ULP_CONFIG_DONE cleared after %dmsec\n", i * 10);
161 161
162@@ -2011,7 +2011,7 @@ static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw) 162@@ -2014,7 +2014,7 @@ static s32 e1000_check_reset_block_ich8lan(struct e1000_hw *hw)
163 163
164 while ((blocked = !(er32(FWSM) & E1000_ICH_FWSM_RSPCIPHY)) && 164 while ((blocked = !(er32(FWSM) & E1000_ICH_FWSM_RSPCIPHY)) &&
165 (i++ < 30)) 165 (i++ < 30))
@@ -168,7 +168,7 @@ index f3aaca743ea3..bef75cec259f 100644
168 return blocked ? E1000_BLK_PHY_RESET : 0; 168 return blocked ? E1000_BLK_PHY_RESET : 0;
169 } 169 }
170 170
171@@ -2827,7 +2827,7 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw) 171@@ -2833,7 +2833,7 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw)
172 return 0; 172 return 0;
173 173
174 /* Allow time for h/w to get to quiescent state after reset */ 174 /* Allow time for h/w to get to quiescent state after reset */
@@ -177,7 +177,7 @@ index f3aaca743ea3..bef75cec259f 100644
177 177
178 /* Perform any necessary post-reset workarounds */ 178 /* Perform any necessary post-reset workarounds */
179 switch (hw->mac.type) { 179 switch (hw->mac.type) {
180@@ -2863,7 +2863,7 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw) 180@@ -2869,7 +2869,7 @@ static s32 e1000_post_phy_reset_ich8lan(struct e1000_hw *hw)
181 if (hw->mac.type == e1000_pch2lan) { 181 if (hw->mac.type == e1000_pch2lan) {
182 /* Ungate automatic PHY configuration on non-managed 82579 */ 182 /* Ungate automatic PHY configuration on non-managed 82579 */
183 if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) { 183 if (!(er32(FWSM) & E1000_ICH_FWSM_FW_VALID)) {
@@ -186,7 +186,7 @@ index f3aaca743ea3..bef75cec259f 100644
186 e1000_gate_hw_phy_config_ich8lan(hw, false); 186 e1000_gate_hw_phy_config_ich8lan(hw, false);
187 } 187 }
188 188
189@@ -3884,7 +3884,7 @@ static s32 e1000_update_nvm_checksum_spt(struct e1000_hw *hw) 189@@ -3890,7 +3890,7 @@ static s32 e1000_update_nvm_checksum_spt(struct e1000_hw *hw)
190 */ 190 */
191 if (!ret_val) { 191 if (!ret_val) {
192 nvm->ops.reload(hw); 192 nvm->ops.reload(hw);
@@ -195,7 +195,7 @@ index f3aaca743ea3..bef75cec259f 100644
195 } 195 }
196 196
197 out: 197 out:
198@@ -4035,7 +4035,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw) 198@@ -4041,7 +4041,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)
199 */ 199 */
200 if (!ret_val) { 200 if (!ret_val) {
201 nvm->ops.reload(hw); 201 nvm->ops.reload(hw);
@@ -204,7 +204,7 @@ index f3aaca743ea3..bef75cec259f 100644
204 } 204 }
205 205
206 out: 206 out:
207@@ -4658,7 +4658,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw) 207@@ -4665,7 +4665,7 @@ static s32 e1000_reset_hw_ich8lan(struct e1000_hw *hw)
208 ew32(TCTL, E1000_TCTL_PSP); 208 ew32(TCTL, E1000_TCTL_PSP);
209 e1e_flush(); 209 e1e_flush();
210 210
@@ -227,10 +227,10 @@ index b322011ec282..eecbf7a12735 100644
227 if (status & E1000_STATUS_LU) 227 if (status & E1000_STATUS_LU)
228 break; 228 break;
229diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c 229diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
230index 7017281ba2dc..7d68d694ed9e 100644 230index 327dfe5bedc0..1b7cf8e2030d 100644
231--- a/drivers/net/ethernet/intel/e1000e/netdev.c 231--- a/drivers/net/ethernet/intel/e1000e/netdev.c
232+++ b/drivers/net/ethernet/intel/e1000e/netdev.c 232+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
233@@ -3206,7 +3206,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter) 233@@ -3210,7 +3210,7 @@ static void e1000_configure_rx(struct e1000_adapter *adapter)
234 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) 234 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))
235 ew32(RCTL, rctl & ~E1000_RCTL_EN); 235 ew32(RCTL, rctl & ~E1000_RCTL_EN);
236 e1e_flush(); 236 e1e_flush();
@@ -239,7 +239,7 @@ index 7017281ba2dc..7d68d694ed9e 100644
239 239
240 if (adapter->flags2 & FLAG2_DMA_BURST) { 240 if (adapter->flags2 & FLAG2_DMA_BURST) {
241 /* set the writeback threshold (only takes effect if the RDTR 241 /* set the writeback threshold (only takes effect if the RDTR
242@@ -4258,7 +4258,7 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset) 242@@ -4284,7 +4284,7 @@ void e1000e_down(struct e1000_adapter *adapter, bool reset)
243 243
244 /* flush both disables and wait for them to finish */ 244 /* flush both disables and wait for them to finish */
245 e1e_flush(); 245 e1e_flush();
@@ -248,7 +248,7 @@ index 7017281ba2dc..7d68d694ed9e 100644
248 248
249 e1000_irq_disable(adapter); 249 e1000_irq_disable(adapter);
250 250
251@@ -4296,7 +4296,7 @@ void e1000e_reinit_locked(struct e1000_adapter *adapter) 251@@ -4322,7 +4322,7 @@ void e1000e_reinit_locked(struct e1000_adapter *adapter)
252 { 252 {
253 might_sleep(); 253 might_sleep();
254 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) 254 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
@@ -257,7 +257,7 @@ index 7017281ba2dc..7d68d694ed9e 100644
257 e1000e_down(adapter, true); 257 e1000e_down(adapter, true);
258 e1000e_up(adapter); 258 e1000e_up(adapter);
259 clear_bit(__E1000_RESETTING, &adapter->state); 259 clear_bit(__E1000_RESETTING, &adapter->state);
260@@ -4671,7 +4671,7 @@ int e1000e_close(struct net_device *netdev) 260@@ -4697,7 +4697,7 @@ int e1000e_close(struct net_device *netdev)
261 int count = E1000_CHECK_RESET_COUNT; 261 int count = E1000_CHECK_RESET_COUNT;
262 262
263 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) 263 while (test_bit(__E1000_RESETTING, &adapter->state) && count--)
@@ -266,7 +266,7 @@ index 7017281ba2dc..7d68d694ed9e 100644
266 266
267 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); 267 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
268 268
269@@ -5996,7 +5996,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) 269@@ -6015,7 +6015,7 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
270 } 270 }
271 271
272 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) 272 while (test_and_set_bit(__E1000_RESETTING, &adapter->state))
@@ -275,7 +275,7 @@ index 7017281ba2dc..7d68d694ed9e 100644
275 /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */ 275 /* e1000e_down -> e1000e_reset dependent on max_frame_size & mtu */
276 adapter->max_frame_size = max_frame; 276 adapter->max_frame_size = max_frame;
277 e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu); 277 e_info("changing MTU from %d to %d\n", netdev->mtu, new_mtu);
278@@ -6276,7 +6276,7 @@ static int e1000e_pm_freeze(struct device *dev) 278@@ -6295,7 +6295,7 @@ static int e1000e_pm_freeze(struct device *dev)
279 int count = E1000_CHECK_RESET_COUNT; 279 int count = E1000_CHECK_RESET_COUNT;
280 280
281 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) 281 while (test_bit(__E1000_RESETTING, &adapter->state) && count--)
@@ -284,7 +284,7 @@ index 7017281ba2dc..7d68d694ed9e 100644
284 284
285 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); 285 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state));
286 286
287@@ -6687,7 +6687,7 @@ static int e1000e_pm_runtime_suspend(struct device *dev) 287@@ -6710,7 +6710,7 @@ static int e1000e_pm_runtime_suspend(struct device *dev)
288 int count = E1000_CHECK_RESET_COUNT; 288 int count = E1000_CHECK_RESET_COUNT;
289 289
290 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) 290 while (test_bit(__E1000_RESETTING, &adapter->state) && count--)
@@ -307,5 +307,5 @@ index 2efd80dfd88e..38f7c8fb3061 100644
307 } 307 }
308 308
309-- 309--
3102.11.1 3102.15.0
311 311
diff --git a/patches/boot_time_opt/0120-give-rdrand-some-credit.patch b/patches/boot_time_opt/0118-give-rdrand-some-credit.patch
index 4b1669c..a7abd53 100644
--- a/patches/boot_time_opt/0120-give-rdrand-some-credit.patch
+++ b/patches/boot_time_opt/0118-give-rdrand-some-credit.patch
@@ -1,7 +1,7 @@
1From 5cc978db25b2c92707f68b15098ac39901fb5aac Mon Sep 17 00:00:00 2001 1From 7b90a7bba60360a4585cf317b092e266e6a81e76 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 29 Jul 2016 19:10:52 +0000 3Date: Fri, 29 Jul 2016 19:10:52 +0000
4Subject: [PATCH 120/124] give rdrand some credit 4Subject: [PATCH 118/126] give rdrand some credit
5 5
6try to credit rdrand/rdseed with some entropy 6try to credit rdrand/rdseed with some entropy
7 7
@@ -13,10 +13,10 @@ rdrand and rdtsc add zero entropy.
13 1 file changed, 2 insertions(+) 13 1 file changed, 2 insertions(+)
14 14
15diff --git a/drivers/char/random.c b/drivers/char/random.c 15diff --git a/drivers/char/random.c b/drivers/char/random.c
16index d6876d506220..fca09af81b2c 100644 16index 8ad92707e45f..1729d2e733e5 100644
17--- a/drivers/char/random.c 17--- a/drivers/char/random.c
18+++ b/drivers/char/random.c 18+++ b/drivers/char/random.c
19@@ -1638,6 +1638,8 @@ static void init_std_data(struct entropy_store *r) 19@@ -1666,6 +1666,8 @@ static void init_std_data(struct entropy_store *r)
20 if (!arch_get_random_seed_long(&rv) && 20 if (!arch_get_random_seed_long(&rv) &&
21 !arch_get_random_long(&rv)) 21 !arch_get_random_long(&rv))
22 rv = random_get_entropy(); 22 rv = random_get_entropy();
@@ -26,5 +26,5 @@ index d6876d506220..fca09af81b2c 100644
26 } 26 }
27 mix_pool_bytes(r, utsname(), sizeof(*(utsname()))); 27 mix_pool_bytes(r, utsname(), sizeof(*(utsname())));
28-- 28--
292.11.1 292.15.0
30 30
diff --git a/patches/boot_time_opt/0121-e1000e-change-default-policy.patch b/patches/boot_time_opt/0119-e1000e-change-default-policy.patch
index bf3e13d..663f7ae 100644
--- a/patches/boot_time_opt/0121-e1000e-change-default-policy.patch
+++ b/patches/boot_time_opt/0119-e1000e-change-default-policy.patch
@@ -1,7 +1,7 @@
1From 5b4707fc2aa8c49aa18a60136880bf05a3e29071 Mon Sep 17 00:00:00 2001 1From 915dc5df4d7f050ee1835f4c302795baa6c51b7e Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sat, 10 Dec 2016 14:29:52 +0000 3Date: Sat, 10 Dec 2016 14:29:52 +0000
4Subject: [PATCH 121/124] e1000e: change default policy 4Subject: [PATCH 119/126] e1000e: change default policy
5 5
6change the default irq mitigation policy for e1000e to be 6change the default irq mitigation policy for e1000e to be
7more HPC/cluster friendly 7more HPC/cluster friendly
@@ -23,5 +23,5 @@ index 6d8c39abee16..ef1122ad3b98 100644
23 #define MIN_ITR 100 23 #define MIN_ITR 100
24 24
25-- 25--
262.11.1 262.15.0
27 27
diff --git a/patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch b/patches/boot_time_opt/0120-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
index eb44cec..8dbec8f 100644
--- a/patches/boot_time_opt/0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
+++ b/patches/boot_time_opt/0120-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
@@ -1,7 +1,7 @@
1From 5cf7ba4ba9c9d770aad9e52deaa3730f259df9f1 Mon Sep 17 00:00:00 2001 1From 4492e1f2e57ae6d0c5e0470309f0ba3051cc6228 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Fri, 6 Jan 2017 15:34:09 +0000 3Date: Fri, 6 Jan 2017 15:34:09 +0000
4Subject: [PATCH 122/124] ipv4/tcp: allow the memory tuning for tcp to go a 4Subject: [PATCH 120/126] ipv4/tcp: allow the memory tuning for tcp to go a
5 little bigger than default 5 little bigger than default
6 6
7--- 7---
@@ -9,10 +9,10 @@ Subject: [PATCH 122/124] ipv4/tcp: allow the memory tuning for tcp to go a
9 1 file changed, 2 insertions(+), 2 deletions(-) 9 1 file changed, 2 insertions(+), 2 deletions(-)
10 10
11diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c 11diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
12index 6a90a0e130dc..32e43ce7c60e 100644 12index 5091402720ab..61c37e60f393 100644
13--- a/net/ipv4/tcp.c 13--- a/net/ipv4/tcp.c
14+++ b/net/ipv4/tcp.c 14+++ b/net/ipv4/tcp.c
15@@ -3341,8 +3341,8 @@ void __init tcp_init(void) 15@@ -3528,8 +3528,8 @@ void __init tcp_init(void)
16 tcp_init_mem(); 16 tcp_init_mem();
17 /* Set per-socket limits to no more than 1/128 the pressure threshold */ 17 /* Set per-socket limits to no more than 1/128 the pressure threshold */
18 limit = nr_free_buffer_pages() << (PAGE_SHIFT - 7); 18 limit = nr_free_buffer_pages() << (PAGE_SHIFT - 7);
@@ -24,5 +24,5 @@ index 6a90a0e130dc..32e43ce7c60e 100644
24 sysctl_tcp_wmem[0] = SK_MEM_QUANTUM; 24 sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;
25 sysctl_tcp_wmem[1] = 16*1024; 25 sysctl_tcp_wmem[1] = 16*1024;
26-- 26--
272.11.1 272.15.0
28 28
diff --git a/patches/boot_time_opt/0121-igb-no-runtime-pm-to-fix-reboot-oops.patch b/patches/boot_time_opt/0121-igb-no-runtime-pm-to-fix-reboot-oops.patch
new file mode 100644
index 0000000..f271c34
--- /dev/null
+++ b/patches/boot_time_opt/0121-igb-no-runtime-pm-to-fix-reboot-oops.patch
@@ -0,0 +1,64 @@
1From 3600f0a90ddea2a2a8c4a157a0bb70913ae4e640 Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 12 Jan 2017 18:17:14 +0000
4Subject: [PATCH 121/126] disable PM on some NICs
5
6igb: no runtime pm to fix reboot oops
7
8Causes oops on reboot due to a race between runtime resume and shutdown
9
10e1000e: disable PM as it disconects from some NICs
11
12e1000: disable PM just in case
13
14---
15 drivers/net/ethernet/intel/igb/igb_main.c | 3 ---
16 1 file changed, 3 deletions(-)
17
18diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
19index ea69af267d63..1107b74225b0 100644
20--- a/drivers/net/ethernet/intel/igb/igb_main.c
21+++ b/drivers/net/ethernet/intel/igb/igb_main.c
22@@ -239,9 +239,6 @@ static struct pci_driver igb_driver = {
23 .id_table = igb_pci_tbl,
24 .probe = igb_probe,
25 .remove = igb_remove,
26-#ifdef CONFIG_PM
27- .driver.pm = &igb_pm_ops,
28-#endif
29 .shutdown = igb_shutdown,
30 .sriov_configure = igb_pci_sriov_configure,
31 .err_handler = &igb_err_handler
32diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
33index 1982f7917a8d..6e8e8919f9b9 100644
34--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
35+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
36@@ -209,11 +209,6 @@ static struct pci_driver e1000_driver = {
37 .id_table = e1000_pci_tbl,
38 .probe = e1000_probe,
39 .remove = e1000_remove,
40-#ifdef CONFIG_PM
41- /* Power Management Hooks */
42- .suspend = e1000_suspend,
43- .resume = e1000_resume,
44-#endif
45 .shutdown = e1000_shutdown,
46 .err_handler = &e1000_err_handler
47 };
48diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
49index 327dfe5bedc0..4f66a91b4026 100644
50--- a/drivers/net/ethernet/intel/e1000e/netdev.c
51+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
52@@ -7572,9 +7572,6 @@ static struct pci_driver e1000_driver = {
53 .id_table = e1000_pci_tbl,
54 .probe = e1000_probe,
55 .remove = e1000_remove,
56- .driver = {
57- .pm = &e1000_pm_ops,
58- },
59 .shutdown = e1000_shutdown,
60 .err_handler = &e1000_err_handler
61 };
62--
632.15.0
64
diff --git a/patches/boot_time_opt/0124-tweak-perfbias.patch b/patches/boot_time_opt/0122-tweak-perfbias.patch
index 56a2865..7dc75d6 100644
--- a/patches/boot_time_opt/0124-tweak-perfbias.patch
+++ b/patches/boot_time_opt/0122-tweak-perfbias.patch
@@ -1,17 +1,17 @@
1From 03e2c414a860264511dae5bbfc6d7e62b8b94f0f Mon Sep 17 00:00:00 2001 1From 5a2cb154e11490e5ba05975c7a537d0bafb12bba Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com> 2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Sun, 22 Jan 2017 18:51:13 +0000 3Date: Sun, 22 Jan 2017 18:51:13 +0000
4Subject: [PATCH 124/124] tweak perfbias 4Subject: [PATCH 122/126] tweak perfbias
5 5
6--- 6---
7 arch/x86/kernel/cpu/intel.c | 6 +++--- 7 arch/x86/kernel/cpu/intel.c | 6 +++---
8 1 file changed, 3 insertions(+), 3 deletions(-) 8 1 file changed, 3 insertions(+), 3 deletions(-)
9 9
10diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c 10diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
11index fcd484d2bb03..13ae40f10bd4 100644 11index b720dacac051..c01bb1632cbf 100644
12--- a/arch/x86/kernel/cpu/intel.c 12--- a/arch/x86/kernel/cpu/intel.c
13+++ b/arch/x86/kernel/cpu/intel.c 13+++ b/arch/x86/kernel/cpu/intel.c
14@@ -434,12 +434,12 @@ static void init_intel_energy_perf(struct cpuinfo_x86 *c) 14@@ -467,12 +467,12 @@ static void init_intel_energy_perf(struct cpuinfo_x86 *c)
15 return; 15 return;
16 16
17 rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb); 17 rdmsrl(MSR_IA32_ENERGY_PERF_BIAS, epb);
@@ -28,5 +28,5 @@ index fcd484d2bb03..13ae40f10bd4 100644
28 } 28 }
29 29
30-- 30--
312.11.1 312.15.0
32 32
diff --git a/patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch b/patches/boot_time_opt/0123-e1000e-increase-pause-and-refresh-time.patch
index 1c50e74..e5f613e 100644
--- a/patches/boot_time_opt/0125-e1000e-increase-pause-and-refresh-time.patch
+++ b/patches/boot_time_opt/0123-e1000e-increase-pause-and-refresh-time.patch
@@ -1,7 +1,7 @@
1From 6730c1ae12a567d56092d15540d2f971be95b936 Mon Sep 17 00:00:00 2001 1From a5c7b0038c1662ce3a1db76314ba62bca5fae911 Mon Sep 17 00:00:00 2001
2From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> 2From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
3Date: Mon, 27 Mar 2017 16:01:56 -0600 3Date: Mon, 27 Mar 2017 16:01:56 -0600
4Subject: [PATCH] e1000e: increase pause and refresh time 4Subject: [PATCH 123/126] e1000e: increase pause and refresh time
5 5
6Suggested-by: Tim Pepper <timothy.c.pepper@linux.intel.com> 6Suggested-by: Tim Pepper <timothy.c.pepper@linux.intel.com>
7Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> 7Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
@@ -10,13 +10,13 @@ Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
10 1 file changed, 2 insertions(+), 2 deletions(-) 10 1 file changed, 2 insertions(+), 2 deletions(-)
11 11
12diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c 12diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
13index 7d68d694ed9e..1db390a52656 100644 13index 1b7cf8e2030d..6785e7321f1e 100644
14--- a/drivers/net/ethernet/intel/e1000e/netdev.c 14--- a/drivers/net/ethernet/intel/e1000e/netdev.c
15+++ b/drivers/net/ethernet/intel/e1000e/netdev.c 15+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
16@@ -4032,12 +4032,12 @@ void e1000e_reset(struct e1000_adapter *adapter) 16@@ -4058,12 +4058,12 @@ void e1000e_reset(struct e1000_adapter *adapter)
17 case e1000_pch2lan:
18 case e1000_pch_lpt: 17 case e1000_pch_lpt:
19 case e1000_pch_spt: 18 case e1000_pch_spt:
19 case e1000_pch_cnp:
20- fc->refresh_time = 0x0400; 20- fc->refresh_time = 0x0400;
21+ fc->refresh_time = 0xFFFF; 21+ fc->refresh_time = 0xFFFF;
22+ fc->pause_time = 0xFFFF; 22+ fc->pause_time = 0xFFFF;
@@ -29,5 +29,5 @@ index 7d68d694ed9e..1db390a52656 100644
29 } 29 }
30 30
31-- 31--
322.12.2 322.15.0
33 33
diff --git a/patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch b/patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch
deleted file mode 100644
index ce4964e..0000000
--- a/patches/boot_time_opt/0123-igb-no-runtime-pm-to-fix-reboot-oops.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From 10f0c995ce6aaf6b3ffa78377f1a12ad0477057a Mon Sep 17 00:00:00 2001
2From: Arjan van de Ven <arjan@linux.intel.com>
3Date: Thu, 12 Jan 2017 18:17:14 +0000
4Subject: [PATCH 123/124] igb: no runtime pm to fix reboot oops
5
6Causes oops on reboot due to a race between runtime resume and shutdown
7---
8 drivers/net/ethernet/intel/igb/igb_main.c | 3 ---
9 1 file changed, 3 deletions(-)
10
11diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
12index 9affd7c198bd..8ade77e75b36 100644
13--- a/drivers/net/ethernet/intel/igb/igb_main.c
14+++ b/drivers/net/ethernet/intel/igb/igb_main.c
15@@ -238,9 +238,6 @@ static struct pci_driver igb_driver = {
16 .id_table = igb_pci_tbl,
17 .probe = igb_probe,
18 .remove = igb_remove,
19-#ifdef CONFIG_PM
20- .driver.pm = &igb_pm_ops,
21-#endif
22 .shutdown = igb_shutdown,
23 .sriov_configure = igb_pci_sriov_configure,
24 .err_handler = &igb_err_handler
25--
262.11.1
27
diff --git a/patches/boot_time_opt/0151-mm-Export-do_madvise.patch b/patches/boot_time_opt/0151-mm-Export-do_madvise.patch
index a6dbff7..165f16c 100644
--- a/patches/boot_time_opt/0151-mm-Export-do_madvise.patch
+++ b/patches/boot_time_opt/0151-mm-Export-do_madvise.patch
@@ -1,4 +1,4 @@
1From 99b4cdcce43ad0f706120bef26fef8c628c572cf Mon Sep 17 00:00:00 2001 1From fc4ee73f68d0e9da4ba61112416849c18d933882 Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com> 2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:03:52 -0800 3Date: Mon, 23 Jan 2017 15:03:52 -0800
4Subject: [PATCH 151/154] mm: Export do_madvise() 4Subject: [PATCH 151/154] mm: Export do_madvise()
@@ -21,10 +21,10 @@ Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
21 2 files changed, 23 insertions(+), 4 deletions(-) 21 2 files changed, 23 insertions(+), 4 deletions(-)
22 22
23diff --git a/include/linux/mm.h b/include/linux/mm.h 23diff --git a/include/linux/mm.h b/include/linux/mm.h
24index 0b5b2e4df14e..925ec25f99a8 100644 24index 43edf659453b..c3153e9ee7ea 100644
25--- a/include/linux/mm.h 25--- a/include/linux/mm.h
26+++ b/include/linux/mm.h 26+++ b/include/linux/mm.h
27@@ -2450,5 +2450,7 @@ void __init setup_nr_node_ids(void); 27@@ -2603,5 +2603,7 @@ void __init setup_nr_node_ids(void);
28 static inline void setup_nr_node_ids(void) {} 28 static inline void setup_nr_node_ids(void) {}
29 #endif 29 #endif
30 30
@@ -33,10 +33,10 @@ index 0b5b2e4df14e..925ec25f99a8 100644
33 #endif /* __KERNEL__ */ 33 #endif /* __KERNEL__ */
34 #endif /* _LINUX_MM_H */ 34 #endif /* _LINUX_MM_H */
35diff --git a/mm/madvise.c b/mm/madvise.c 35diff --git a/mm/madvise.c b/mm/madvise.c
36index 93fb63e88b5e..c8bbf93d4978 100644 36index 375cf32087e4..3798dd68692e 100644
37--- a/mm/madvise.c 37--- a/mm/madvise.c
38+++ b/mm/madvise.c 38+++ b/mm/madvise.c
39@@ -618,9 +618,7 @@ madvise_behavior_valid(int behavior) 39@@ -730,9 +730,7 @@ madvise_behavior_valid(int behavior)
40 } 40 }
41 41
42 /* 42 /*
@@ -47,7 +47,7 @@ index 93fb63e88b5e..c8bbf93d4978 100644
47 * handle paging I/O in this VM area. The idea is to help the kernel 47 * handle paging I/O in this VM area. The idea is to help the kernel
48 * use appropriate read-ahead and caching techniques. The information 48 * use appropriate read-ahead and caching techniques. The information
49 * provided is advisory only, and can be safely disregarded by the 49 * provided is advisory only, and can be safely disregarded by the
50@@ -673,7 +671,7 @@ madvise_behavior_valid(int behavior) 50@@ -790,7 +788,7 @@ madvise_behavior_valid(int behavior)
51 * -EBADF - map exists, but area maps something that isn't a file. 51 * -EBADF - map exists, but area maps something that isn't a file.
52 * -EAGAIN - a kernel resource was temporarily unavailable. 52 * -EAGAIN - a kernel resource was temporarily unavailable.
53 */ 53 */
@@ -56,7 +56,7 @@ index 93fb63e88b5e..c8bbf93d4978 100644
56 { 56 {
57 unsigned long end, tmp; 57 unsigned long end, tmp;
58 struct vm_area_struct *vma, *prev; 58 struct vm_area_struct *vma, *prev;
59@@ -767,3 +765,22 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) 59@@ -885,3 +883,22 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior)
60 60
61 return error; 61 return error;
62 } 62 }
@@ -80,5 +80,5 @@ index 93fb63e88b5e..c8bbf93d4978 100644
80+ return do_madvise(start, len_in, behavior); 80+ return do_madvise(start, len_in, behavior);
81+} 81+}
82-- 82--
832.12.1 832.15.0
84 84
diff --git a/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch b/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch
index 5f44930..d3a1553 100644
--- a/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch
+++ b/patches/boot_time_opt/0152-x86-kvm-Notify-host-to-release-pages.patch
@@ -1,4 +1,4 @@
1From d28921b5f797829e4e676f7968ae688ef96b7992 Mon Sep 17 00:00:00 2001 1From 771ee703122aa119bb662208066040f8b9356986 Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com> 2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:08:55 -0800 3Date: Mon, 23 Jan 2017 15:08:55 -0800
4Subject: [PATCH 152/154] x86: kvm: Notify host to release pages 4Subject: [PATCH 152/154] x86: kvm: Notify host to release pages
@@ -31,21 +31,24 @@ use it.
31 31
32Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> 32Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com>
33Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com> 33Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
34
35Modified for aufs4 enabled kernel
36Signed-off-by: Martin Borg <martin.borg@enea.com>
34--- 37---
35 arch/x86/kvm/x86.c | 17 +++++++++++++++++ 38 arch/x86/kvm/x86.c | 17 +++++++++++++++++
36 include/linux/mm.h | 5 +++++ 39 include/linux/mm.h | 5 +++++
37 include/uapi/linux/kvm_para.h | 3 +++ 40 include/uapi/linux/kvm_para.h | 3 +++
38 kernel/sysctl.c | 7 +++++++ 41 kernel/sysctl.c | 7 +++++++
39 mm/Makefile | 2 +- 42 mm/Makefile | 2 +-
40 mm/kvm.c | 25 +++++++++++++++++++++++++ 43 mm/kvm.c | 26 ++++++++++++++++++++++++++
41 6 files changed, 58 insertions(+), 1 deletion(-) 44 6 files changed, 59 insertions(+), 1 deletion(-)
42 create mode 100644 mm/kvm.c 45 create mode 100644 mm/kvm.c
43 46
44diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c 47diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
45index 582c75311f95..683a94dd5f03 100644 48index 03869eb7fcd6..628bad46b8ad 100644
46--- a/arch/x86/kvm/x86.c 49--- a/arch/x86/kvm/x86.c
47+++ b/arch/x86/kvm/x86.c 50+++ b/arch/x86/kvm/x86.c
48@@ -46,6 +46,7 @@ 51@@ -45,6 +45,7 @@
49 #include <linux/user-return-notifier.h> 52 #include <linux/user-return-notifier.h>
50 #include <linux/srcu.h> 53 #include <linux/srcu.h>
51 #include <linux/slab.h> 54 #include <linux/slab.h>
@@ -53,7 +56,7 @@ index 582c75311f95..683a94dd5f03 100644
53 #include <linux/perf_event.h> 56 #include <linux/perf_event.h>
54 #include <linux/uaccess.h> 57 #include <linux/uaccess.h>
55 #include <linux/hash.h> 58 #include <linux/hash.h>
56@@ -6019,6 +6020,19 @@ static void kvm_pv_kick_cpu_op(struct kvm *kvm, unsigned long flags, int apicid) 59@@ -6253,6 +6254,19 @@ static void kvm_pv_kick_cpu_op(struct kvm *kvm, unsigned long flags, int apicid)
57 kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL); 60 kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL);
58 } 61 }
59 62
@@ -73,10 +76,10 @@ index 582c75311f95..683a94dd5f03 100644
73 void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) 76 void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu)
74 { 77 {
75 vcpu->arch.apicv_active = false; 78 vcpu->arch.apicv_active = false;
76@@ -6065,6 +6079,9 @@ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu) 79@@ -6304,6 +6318,9 @@ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu)
77 kvm_pv_kick_cpu_op(vcpu->kvm, a0, a1); 80 ret = kvm_pv_clock_pairing(vcpu, a0, a1);
78 ret = 0;
79 break; 81 break;
82 #endif
80+ case KVM_HC_RETURN_MEM: 83+ case KVM_HC_RETURN_MEM:
81+ ret = kvm_pv_return_mem_op(vcpu->kvm, a0, a1); 84+ ret = kvm_pv_return_mem_op(vcpu->kvm, a0, a1);
82+ break; 85+ break;
@@ -84,10 +87,10 @@ index 582c75311f95..683a94dd5f03 100644
84 ret = -KVM_ENOSYS; 87 ret = -KVM_ENOSYS;
85 break; 88 break;
86diff --git a/include/linux/mm.h b/include/linux/mm.h 89diff --git a/include/linux/mm.h b/include/linux/mm.h
87index 925ec25f99a8..833f23d98baa 100644 90index c3153e9ee7ea..15e02bf3a6b3 100644
88--- a/include/linux/mm.h 91--- a/include/linux/mm.h
89+++ b/include/linux/mm.h 92+++ b/include/linux/mm.h
90@@ -2303,6 +2303,11 @@ extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm); 93@@ -2452,6 +2452,11 @@ extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm);
91 extern int sysctl_drop_caches; 94 extern int sysctl_drop_caches;
92 int drop_caches_sysctl_handler(struct ctl_table *, int, 95 int drop_caches_sysctl_handler(struct ctl_table *, int,
93 void __user *, size_t *, loff_t *); 96 void __user *, size_t *, loff_t *);
@@ -100,13 +103,13 @@ index 925ec25f99a8..833f23d98baa 100644
100 103
101 void drop_slab(void); 104 void drop_slab(void);
102diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h 105diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h
103index bf6cd7d5cac2..7d90f77d87d0 100644 106index dcf629dd2889..85f9422fe59c 100644
104--- a/include/uapi/linux/kvm_para.h 107--- a/include/uapi/linux/kvm_para.h
105+++ b/include/uapi/linux/kvm_para.h 108+++ b/include/uapi/linux/kvm_para.h
106@@ -23,6 +23,9 @@ 109@@ -26,6 +26,9 @@
107 #define KVM_HC_MIPS_GET_CLOCK_FREQ 6
108 #define KVM_HC_MIPS_EXIT_VM 7 110 #define KVM_HC_MIPS_EXIT_VM 7
109 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8 111 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8
112 #define KVM_HC_CLOCK_PAIRING 9
110+#define KVM_HC_RETURN_MEM 10 113+#define KVM_HC_RETURN_MEM 10
111+ 114+
112+#define KVM_MAX_RET_MEM_SIZE (1 << 22) // 4MiB 115+#define KVM_MAX_RET_MEM_SIZE (1 << 22) // 4MiB
@@ -114,10 +117,10 @@ index bf6cd7d5cac2..7d90f77d87d0 100644
114 /* 117 /*
115 * hypercalls use architecture specific 118 * hypercalls use architecture specific
116diff --git a/kernel/sysctl.c b/kernel/sysctl.c 119diff --git a/kernel/sysctl.c b/kernel/sysctl.c
117index c1095cdc0fe2..d8ae774fa042 100644 120index d9c31bc2eaea..9a1611f92a2a 100644
118--- a/kernel/sysctl.c 121--- a/kernel/sysctl.c
119+++ b/kernel/sysctl.c 122+++ b/kernel/sysctl.c
120@@ -1398,6 +1398,13 @@ static struct ctl_table vm_table[] = { 123@@ -1410,6 +1410,13 @@ static struct ctl_table vm_table[] = {
121 .extra1 = &one, 124 .extra1 = &one,
122 .extra2 = &four, 125 .extra2 = &four,
123 }, 126 },
@@ -132,25 +135,26 @@ index c1095cdc0fe2..d8ae774fa042 100644
132 { 135 {
133 .procname = "compact_memory", 136 .procname = "compact_memory",
134diff --git a/mm/Makefile b/mm/Makefile 137diff --git a/mm/Makefile b/mm/Makefile
135index 295bd7a..6455723 100644 138index 4659b93cba43..77b145de8a55 100644
136--- a/mm/Makefile 139--- a/mm/Makefile
137+++ b/mm/Makefile 140+++ b/mm/Makefile
138@@ -47,6 +47,8 @@ else 141@@ -40,7 +40,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
139 obj-y += bootmem.o 142 mm_init.o mmu_context.o percpu.o slab_common.o \
140 endif 143 compaction.o vmacache.o swap_slots.o \
144 interval_tree.o list_lru.o workingset.o \
145- prfile.o debug.o $(mmu-y)
146+ prfile.o debug.o kvm.o $(mmu-y)
147
148 obj-y += init-mm.o
141 149
142+obj-y += kvm.o
143+
144 obj-$(CONFIG_ADVISE_SYSCALLS) += fadvise.o
145 ifdef CONFIG_MMU
146 obj-$(CONFIG_ADVISE_SYSCALLS) += madvise.o
147diff --git a/mm/kvm.c b/mm/kvm.c 150diff --git a/mm/kvm.c b/mm/kvm.c
148new file mode 100644 151new file mode 100644
149index 000000000000..8945f6a311b9 152index 000000000000..1c5600788221
150--- /dev/null 153--- /dev/null
151+++ b/mm/kvm.c 154+++ b/mm/kvm.c
152@@ -0,0 +1,25 @@ 155@@ -0,0 +1,26 @@
153+#include <linux/mman.h> 156+#include <linux/mman.h>
157+#include <linux/sysctl.h>
154+ 158+
155+int sysctl_kvm_madv_instant_free; 159+int sysctl_kvm_madv_instant_free;
156+ 160+
@@ -176,5 +180,5 @@ index 000000000000..8945f6a311b9
176+ return 0; 180+ return 0;
177+} 181+}
178-- 182--
1792.12.1 1832.15.0
180 184
diff --git a/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch b/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch
index cdb876a..7e24355 100644
--- a/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch
+++ b/patches/boot_time_opt/0153-x86-Return-memory-from-guest-to-host-kernel.patch
@@ -1,4 +1,4 @@
1From 855ef164854307839c08c60688eaeac14f9a649e Mon Sep 17 00:00:00 2001 1From 9d487e5b95627e54c5ba256363ab6d1c5eaa592d Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com> 2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:26:13 -0800 3Date: Mon, 23 Jan 2017 15:26:13 -0800
4Subject: [PATCH 153/154] x86: Return memory from guest to host kernel 4Subject: [PATCH 153/154] x86: Return memory from guest to host kernel
@@ -53,10 +53,10 @@ Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
53 4 files changed, 42 insertions(+) 53 4 files changed, 42 insertions(+)
54 54
55diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h 55diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
56index bc62e7cbf1b1..4a2f6d1adbd2 100644 56index c373e44049b1..847f17ff111c 100644
57--- a/arch/x86/include/asm/kvm_para.h 57--- a/arch/x86/include/asm/kvm_para.h
58+++ b/arch/x86/include/asm/kvm_para.h 58+++ b/arch/x86/include/asm/kvm_para.h
59@@ -92,6 +92,28 @@ void kvm_async_pf_task_wait(u32 token); 59@@ -93,6 +93,28 @@ void kvm_async_pf_task_wait(u32 token, int interrupt_kernel);
60 void kvm_async_pf_task_wake(u32 token); 60 void kvm_async_pf_task_wake(u32 token);
61 u32 kvm_read_and_reset_pf_reason(void); 61 u32 kvm_read_and_reset_pf_reason(void);
62 extern void kvm_disable_steal_time(void); 62 extern void kvm_disable_steal_time(void);
@@ -86,10 +86,10 @@ index bc62e7cbf1b1..4a2f6d1adbd2 100644
86 #ifdef CONFIG_PARAVIRT_SPINLOCKS 86 #ifdef CONFIG_PARAVIRT_SPINLOCKS
87 void __init kvm_spinlock_init(void); 87 void __init kvm_spinlock_init(void);
88diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c 88diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
89index edbbfc854e39..14167b3f6514 100644 89index 8bb9594d0761..696319728469 100644
90--- a/arch/x86/kernel/kvm.c 90--- a/arch/x86/kernel/kvm.c
91+++ b/arch/x86/kernel/kvm.c 91+++ b/arch/x86/kernel/kvm.c
92@@ -552,6 +552,16 @@ static __init int activate_jump_labels(void) 92@@ -563,6 +563,16 @@ static __init int activate_jump_labels(void)
93 } 93 }
94 arch_initcall(activate_jump_labels); 94 arch_initcall(activate_jump_labels);
95 95
@@ -131,18 +131,18 @@ index 4efc3f56e6df..26eb3a05a8a3 100644
131+ 131+
132 #endif /* _LINUX_MM_ARCH_HOOKS_H */ 132 #endif /* _LINUX_MM_ARCH_HOOKS_H */
133diff --git a/mm/page_alloc.c b/mm/page_alloc.c 133diff --git a/mm/page_alloc.c b/mm/page_alloc.c
134index 1460e6ad5e14..5f6e6371bc6f 100644 134index 77e4d3c5c57b..b14190aeedff 100644
135--- a/mm/page_alloc.c 135--- a/mm/page_alloc.c
136+++ b/mm/page_alloc.c 136+++ b/mm/page_alloc.c
137@@ -64,6 +64,7 @@ 137@@ -65,6 +65,7 @@
138 #include <linux/page_owner.h> 138 #include <linux/page_owner.h>
139 #include <linux/kthread.h> 139 #include <linux/kthread.h>
140 #include <linux/memcontrol.h> 140 #include <linux/memcontrol.h>
141+#include <linux/mm-arch-hooks.h> 141+#include <linux/mm-arch-hooks.h>
142 142 #include <linux/ftrace.h>
143 #include <asm/sections.h> 143 #include <linux/lockdep.h>
144 #include <asm/tlbflush.h> 144 #include <linux/nmi.h>
145@@ -855,6 +856,7 @@ static inline void __free_one_page(struct page *page, 145@@ -869,6 +870,7 @@ static inline void __free_one_page(struct page *page,
146 } 146 }
147 147
148 done_merging: 148 done_merging:
@@ -151,5 +151,5 @@ index 1460e6ad5e14..5f6e6371bc6f 100644
151 151
152 /* 152 /*
153-- 153--
1542.12.1 1542.15.0
155 155
diff --git a/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch b/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
index 07d4a83..64021c6 100644
--- a/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
+++ b/patches/boot_time_opt/0154-sysctl-vm-Fine-grained-cache-shrinking.patch
@@ -1,4 +1,4 @@
1From 2c145b5233b504f5226a0f4bc44baeef33b444d8 Mon Sep 17 00:00:00 2001 1From 130d5d976b920aec243e0fa63273f3143660054b Mon Sep 17 00:00:00 2001
2From: Sebastien Boeuf <sebastien.boeuf@intel.com> 2From: Sebastien Boeuf <sebastien.boeuf@intel.com>
3Date: Mon, 23 Jan 2017 15:32:39 -0800 3Date: Mon, 23 Jan 2017 15:32:39 -0800
4Subject: [PATCH 154/154] sysctl: vm: Fine-grained cache shrinking 4Subject: [PATCH 154/154] sysctl: vm: Fine-grained cache shrinking
@@ -35,10 +35,10 @@ Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
35 4 files changed, 37 insertions(+), 2 deletions(-) 35 4 files changed, 37 insertions(+), 2 deletions(-)
36 36
37diff --git a/fs/drop_caches.c b/fs/drop_caches.c 37diff --git a/fs/drop_caches.c b/fs/drop_caches.c
38index d72d52b90433..f564dfcc13a4 100644 38index 82377017130f..f8de1383498b 100644
39--- a/fs/drop_caches.c 39--- a/fs/drop_caches.c
40+++ b/fs/drop_caches.c 40+++ b/fs/drop_caches.c
41@@ -8,10 +8,12 @@ 41@@ -9,10 +9,12 @@
42 #include <linux/writeback.h> 42 #include <linux/writeback.h>
43 #include <linux/sysctl.h> 43 #include <linux/sysctl.h>
44 #include <linux/gfp.h> 44 #include <linux/gfp.h>
@@ -51,7 +51,7 @@ index d72d52b90433..f564dfcc13a4 100644
51 51
52 static void drop_pagecache_sb(struct super_block *sb, void *unused) 52 static void drop_pagecache_sb(struct super_block *sb, void *unused)
53 { 53 {
54@@ -67,3 +69,26 @@ int drop_caches_sysctl_handler(struct ctl_table *table, int write, 54@@ -68,3 +70,26 @@ int drop_caches_sysctl_handler(struct ctl_table *table, int write,
55 } 55 }
56 return 0; 56 return 0;
57 } 57 }
@@ -79,10 +79,10 @@ index d72d52b90433..f564dfcc13a4 100644
79+ return 0; 79+ return 0;
80+} 80+}
81diff --git a/include/linux/mm.h b/include/linux/mm.h 81diff --git a/include/linux/mm.h b/include/linux/mm.h
82index 833f23d98baa..0bb66c1c31c9 100644 82index 15e02bf3a6b3..9f9b967ad2c9 100644
83--- a/include/linux/mm.h 83--- a/include/linux/mm.h
84+++ b/include/linux/mm.h 84+++ b/include/linux/mm.h
85@@ -2308,6 +2308,10 @@ extern int kvm_ret_mem_advice; 85@@ -2457,6 +2457,10 @@ extern int kvm_ret_mem_advice;
86 int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write, 86 int kvm_madv_instant_free_sysctl_handler(struct ctl_table *table, int write,
87 void __user *buffer, size_t *length, 87 void __user *buffer, size_t *length,
88 loff_t *ppos); 88 loff_t *ppos);
@@ -94,10 +94,10 @@ index 833f23d98baa..0bb66c1c31c9 100644
94 94
95 void drop_slab(void); 95 void drop_slab(void);
96diff --git a/kernel/sysctl.c b/kernel/sysctl.c 96diff --git a/kernel/sysctl.c b/kernel/sysctl.c
97index d8ae774fa042..5dc9a46ae212 100644 97index 9a1611f92a2a..9b74b4f0251d 100644
98--- a/kernel/sysctl.c 98--- a/kernel/sysctl.c
99+++ b/kernel/sysctl.c 99+++ b/kernel/sysctl.c
100@@ -1405,6 +1405,14 @@ static struct ctl_table vm_table[] = { 100@@ -1417,6 +1417,14 @@ static struct ctl_table vm_table[] = {
101 .mode = 0644, 101 .mode = 0644,
102 .proc_handler = kvm_madv_instant_free_sysctl_handler, 102 .proc_handler = kvm_madv_instant_free_sysctl_handler,
103 }, 103 },
@@ -113,10 +113,10 @@ index d8ae774fa042..5dc9a46ae212 100644
113 { 113 {
114 .procname = "compact_memory", 114 .procname = "compact_memory",
115diff --git a/mm/vmscan.c b/mm/vmscan.c 115diff --git a/mm/vmscan.c b/mm/vmscan.c
116index 30a88b945a44..1198e74d1860 100644 116index eb2f0315b8c0..b16f327b0211 100644
117--- a/mm/vmscan.c 117--- a/mm/vmscan.c
118+++ b/mm/vmscan.c 118+++ b/mm/vmscan.c
119@@ -3525,7 +3525,6 @@ void wakeup_kswapd(struct zone *zone, int order, enum zone_type classzone_idx) 119@@ -3646,7 +3646,6 @@ void wakeup_kswapd(struct zone *zone, int order, enum zone_type classzone_idx)
120 wake_up_interruptible(&pgdat->kswapd_wait); 120 wake_up_interruptible(&pgdat->kswapd_wait);
121 } 121 }
122 122
@@ -124,7 +124,7 @@ index 30a88b945a44..1198e74d1860 100644
124 /* 124 /*
125 * Try to free `nr_to_reclaim' of memory, system-wide, and return the number of 125 * Try to free `nr_to_reclaim' of memory, system-wide, and return the number of
126 * freed pages. 126 * freed pages.
127@@ -3564,7 +3563,6 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim) 127@@ -3686,7 +3685,6 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim)
128 128
129 return nr_reclaimed; 129 return nr_reclaimed;
130 } 130 }
@@ -133,5 +133,5 @@ index 30a88b945a44..1198e74d1860 100644
133 /* It's optimal to keep kswapds on the same CPUs as their memory, but 133 /* It's optimal to keep kswapds on the same CPUs as their memory, but
134 not required for correctness. So if the last cpu in a node goes 134 not required for correctness. So if the last cpu in a node goes
135-- 135--
1362.12.1 1362.15.0
137 137
diff --git a/patches/boot_time_opt/host_boot_time_opt.scc b/patches/boot_time_opt/host_boot_time_opt.scc
index ec93999..21bde01 100644
--- a/patches/boot_time_opt/host_boot_time_opt.scc
+++ b/patches/boot_time_opt/host_boot_time_opt.scc
@@ -1,27 +1,26 @@
1define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux, https://github.com/clearlinux-pkgs/linux-lts and https://github.com/clearlinux-pkgs/linux-kvm" 1define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux, https://github.com/clearlinux-pkgs/linux-lts and https://github.com/clearlinux-pkgs/linux-kvm"
2define KFEATURE_COMPATIBILITY all 2define KFEATURE_COMPATIBILITY all
3 3
4patch 0101-kvm-silence-kvm-unhandled-rdmsr.patch 4patch 0101-i8042-decrease-debug-message-level-to-info.patch
5patch 0102-i8042-decrease-debug-message-level-to-info.patch 5patch 0103-Increase-the-ext4-default-commit-age.patch
6patch 0104-Increase-the-ext4-default-commit-age.patch 6patch 0104-silence-rapl.patch
7patch 0105-silence-rapl.patch 7patch 0105-pci-pme-wakeups.patch
8patch 0106-pci-pme-wakeups.patch 8patch 0106-ksm-wakeups.patch
9patch 0107-ksm-wakeups.patch 9patch 0107-intel_idle-tweak-cpuidle-cstates.patch
10patch 0108-intel_idle-tweak-cpuidle-cstates.patch 10patch 0109-init_task-faster-timerslack.patch
11patch 0110-init_task-faster-timerslack.patch 11patch 0110-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch
12patch 0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch 12patch 0111-overload-on-wakeup.patch
13patch 0113-overload-on-wakeup.patch 13patch 0112-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
14patch 0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch 14patch 0113-fix-initcall-timestamps.patch
15patch 0115-fix-initcall-timestamps.patch 15patch 0114-smpboot-reuse-timer-calibration.patch
16patch 0116-smpboot-reuse-timer-calibration.patch 16patch 0116-Initialize-ata-before-graphics.patch
17patch 0118-Initialize-ata-before-graphics.patch 17patch 0117-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch
18patch 0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch 18patch 0118-give-rdrand-some-credit.patch
19patch 0120-give-rdrand-some-credit.patch 19patch 0119-e1000e-change-default-policy.patch
20patch 0121-e1000e-change-default-policy.patch 20patch 0120-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
21patch 0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch 21patch 0121-igb-no-runtime-pm-to-fix-reboot-oops.patch
22patch 0123-igb-no-runtime-pm-to-fix-reboot-oops.patch 22patch 0122-tweak-perfbias.patch
23patch 0124-tweak-perfbias.patch 23patch 0123-e1000e-increase-pause-and-refresh-time.patch
24patch 0125-e1000e-increase-pause-and-refresh-time.patch
25 24
26patch 0151-mm-Export-do_madvise.patch 25patch 0151-mm-Export-do_madvise.patch
27patch 0152-x86-kvm-Notify-host-to-release-pages.patch 26patch 0152-x86-kvm-Notify-host-to-release-pages.patch
diff --git a/patches/boot_time_opt/raid_alg.scc b/patches/boot_time_opt/raid_alg.scc
index 98dd713..75b6b25 100644
--- a/patches/boot_time_opt/raid_alg.scc
+++ b/patches/boot_time_opt/raid_alg.scc
@@ -1,5 +1,5 @@
1define KFEATURE_DESCRIPTION "Use AVX2 for RAID recovery algorithm" 1define KFEATURE_DESCRIPTION "Use AVX2 for RAID recovery algorithm"
2define KFEATURE_COMPATIBILITY all 2define KFEATURE_COMPATIBILITY all
3 3
4patch 0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch 4patch 0115-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
5kconf non-hardware raid_alg.cfg 5kconf non-hardware raid_alg.cfg