diff options
author | Martin Borg <martin.borg@enea.com> | 2018-03-23 14:01:03 +0100 |
---|---|---|
committer | Adrian Dudau <adrian.dudau@enea.com> | 2018-03-26 09:57:31 +0200 |
commit | c4bd5f6e084a6ced2c7a2f76798d0a34947ffeb7 (patch) | |
tree | e46d5f9bceca1947817b7739d366aa44faea9be1 | |
parent | dfc8946f58bbf4aa3a345c4fb5d5895502936edd (diff) | |
download | enea-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>
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 @@ | |||
1 | From 07639791f247ae7a807444106b9b7611f070d02b Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Fri, 6 Jan 2017 13:28:29 +0000 | ||
4 | Subject: [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 | |||
10 | diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c | ||
11 | index 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 | -- | ||
24 | 2.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 @@ | |||
1 | From 7e847b13b753ec632fef2f1ffa0d8f5b444c967b Mon Sep 17 00:00:00 2001 | 1 | From 4139c54430520b0afbcedf5306d62ae49e285688 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Tue, 23 Jun 2015 01:26:52 -0500 | 3 | Date: Tue, 23 Jun 2015 01:26:52 -0500 |
4 | Subject: [PATCH 102/124] i8042: decrease debug message level to info | 4 | Subject: [PATCH 101/126] i8042: decrease debug message level to info |
5 | 5 | ||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | 6 | Author: 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 | ||
14 | diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c | 14 | diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c |
15 | index 89abfdb539ac..5317c41b049e 100644 | 15 | index 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(¶m, I8042_CMD_CTL_TEST)) { | 48 | if (i8042_command(¶m, 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 | -- |
64 | 2.11.1 | 64 | 2.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 @@ | |||
1 | From f45c353859fc0ceb75fef3a2f4a2c179dfa378d7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Tue, 23 Jun 2015 01:16:45 -0500 | ||
4 | Subject: [PATCH 101/124] kvm: silence kvm unhandled rdmsr | ||
5 | |||
6 | Author: Arjan van de Ven <arjan@linux.intel.com> | ||
7 | |||
8 | Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | ||
9 | Signed-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 | |||
14 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | ||
15 | index 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 | -- | ||
28 | 2.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 @@ | |||
1 | From b6970d43f97325c9acc7bd942dcd192586d8d407 Mon Sep 17 00:00:00 2001 | 1 | From d098532daf5eead493d71f9756f8905a18f01e04 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Mon, 11 Jan 2016 10:01:44 -0600 | 3 | Date: Mon, 11 Jan 2016 10:01:44 -0600 |
4 | Subject: [PATCH 104/124] Increase the ext4 default commit age | 4 | Subject: [PATCH 103/126] Increase the ext4 default commit age |
5 | 5 | ||
6 | Both the VM and EXT4 have a "commit to disk after X seconds" time. | 6 | Both the VM and EXT4 have a "commit to disk after X seconds" time. |
7 | Currently the EXT4 time is shorter than our VM time, which is a bit | 7 | Currently 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 | ||
20 | diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h | 20 | diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h |
21 | index dfaa1f4dcb0c..9955fd6c6159 100644 | 21 | index 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 | -- |
34 | 2.11.1 | 34 | 2.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 @@ | |||
1 | From 838abc7e5f43ea40a2cc05ebd6c7321b6d84b057 Mon Sep 17 00:00:00 2001 | ||
2 | From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | ||
3 | Date: Fri, 20 Nov 2015 14:01:26 -0600 | ||
4 | Subject: [PATCH 103/124] init: do_mounts: recreate /dev/root | ||
5 | |||
6 | Rootfs shows as is mounted in /dev/root, but this devices is not present in | ||
7 | /dev directory. | ||
8 | |||
9 | Signed-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 | |||
14 | diff --git a/init/do_mounts.c b/init/do_mounts.c | ||
15 | index 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 | -- | ||
41 | 2.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 @@ | |||
1 | From 558d32869c8d8e302dd3810610d62e1c69a8ebce Mon Sep 17 00:00:00 2001 | 1 | From be0a2929159c1b588f2a038df612a5d1437d94a8 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Mon, 14 Mar 2016 11:22:09 -0600 | 3 | Date: Mon, 14 Mar 2016 11:22:09 -0600 |
4 | Subject: [PATCH 105/124] silence rapl | 4 | Subject: [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 | ||
10 | diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c | 10 | diff --git a/drivers/powercap/intel_rapl.c b/drivers/powercap/intel_rapl.c |
11 | index 3c71f608b444..450aff027d42 100644 | 11 | index 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 | -- |
24 | 2.11.1 | 24 | 2.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 @@ | |||
1 | From 1dc7a20946596b24f669fe038a1ae31a28cf59a5 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Mon, 14 Mar 2016 11:10:58 -0600 | ||
4 | Subject: [PATCH 105/126] pci pme wakeups | ||
5 | |||
6 | Reduce wakeups for PME checks, which are a workaround for miswired | ||
7 | boards (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 | |||
13 | diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c | ||
14 | index 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 | /* | ||
26 | diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c | ||
27 | index 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 | -- | ||
40 | 2.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 @@ | |||
1 | From a5de04044d428bf54472365e7dc07958aa184daf Mon Sep 17 00:00:00 2001 | 1 | From 8350ca263ae0f06ae6a40b5e9ba280fb09aff895 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Mon, 14 Mar 2016 11:06:46 -0600 | 3 | Date: Mon, 14 Mar 2016 11:06:46 -0600 |
4 | Subject: [PATCH 107/124] ksm-wakeups | 4 | Subject: [PATCH 106/126] ksm-wakeups |
5 | 5 | ||
6 | reduce wakeups in ksm by adding rounding (aligning) when the sleep times are 1 second or longer | 6 | reduce 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 | ||
13 | diff --git a/mm/ksm.c b/mm/ksm.c | 13 | diff --git a/mm/ksm.c b/mm/ksm.c |
14 | index 9ae6011a41f8..eecd3ff669e2 100644 | 14 | index 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 | -- |
33 | 2.11.1 | 33 | 2.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 @@ | |||
1 | From 1f44219cd74f5c3b97e2c85af87141e1bddf0555 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Mon, 14 Mar 2016 11:10:58 -0600 | ||
4 | Subject: [PATCH 106/124] pci pme wakeups | ||
5 | |||
6 | Reduce wakeups for PME checks, which are a workaround for miswired | ||
7 | boards (sadly, too many of them) in laptops. | ||
8 | --- | ||
9 | drivers/pci/pci.c | 2 +- | ||
10 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
11 | |||
12 | diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c | ||
13 | index 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 | -- | ||
26 | 2.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 @@ | |||
1 | From bf7e0cebaafe790f62cbc5815648d556847b7d27 Mon Sep 17 00:00:00 2001 | 1 | From 790db86f51a23533d457b361bb61e2845b6de6b8 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Sat, 19 Mar 2016 21:32:19 -0400 | 3 | Date: Sat, 19 Mar 2016 21:32:19 -0400 |
4 | Subject: [PATCH 108/124] intel_idle: tweak cpuidle cstates | 4 | Subject: [PATCH 107/126] intel_idle: tweak cpuidle cstates |
5 | 5 | ||
6 | Increase target_residency in cpuidle cstate | 6 | Increase target_residency in cpuidle cstate |
7 | 7 | ||
@@ -10,218 +10,220 @@ Clear linux is cleaner in hygiene (wakupes) than the average linux, | |||
10 | so we can afford changing these in a way that increases | 10 | so we can afford changing these in a way that increases |
11 | performance while keeping power efficiency | 11 | performance 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 | ||
16 | diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c | 16 | diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c |
17 | index 4466a2f969d7..cbab050b83f0 100644 | 17 | index 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 | -- |
226 | 2.11.1 | 228 | 2.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 @@ | |||
1 | From 42c2cb32259b76fb1f6713d99c4f0922e97bcc8d Mon Sep 17 00:00:00 2001 | 1 | From 4c35ad2b763bca4e0eaf449d42a0e4c49197da2c Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Wed, 23 Mar 2016 14:52:41 +0000 | 3 | Date: Wed, 23 Mar 2016 14:52:41 +0000 |
4 | Subject: [PATCH 110/124] init_task: faster timerslack | 4 | Subject: [PATCH 109/126] init_task: faster timerslack |
5 | 5 | ||
6 | the default tuning is a compromise between client power and server performance; | 6 | the default tuning is a compromise between client power and server |
7 | performance; | ||
7 | for a server distro like Clear Linux, we don't need to compromise. | 8 | for 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 | ||
10 | in principle this can be done as a patch to systemd as well, but we have a shared | 11 | in principle this can be done as a patch to systemd as well, but we have |
12 | a shared | ||
11 | systemd between usages while we have different kernels, so the logistics | 13 | systemd between usages while we have different kernels, so the logistics |
12 | for where the patch goes work out better here | 14 | for 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 | ||
17 | diff --git a/include/linux/init_task.h b/include/linux/init_task.h | 19 | diff --git a/include/linux/init_task.h b/include/linux/init_task.h |
18 | index 325f649d77ff..e0eb261e17cb 100644 | 20 | index 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 | -- |
31 | 2.11.1 | 33 | 2.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 @@ | |||
1 | From 4170571f7bb0897c90e13b2fcf3ee06990a9e774 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alan Cox <alan@linux.intel.com> | ||
3 | Date: Thu, 10 Mar 2016 15:11:28 +0000 | ||
4 | Subject: [PATCH 109/124] xattr: allow setting user.* attributes on symlinks by | ||
5 | owner | ||
6 | |||
7 | Kvmtool and clear containers supports using user attributes to label host | ||
8 | files with the virtual uid/guid of the file in the container. This allows an | ||
9 | end user to manage their files and a complete uid space without all the ugly | ||
10 | namespace stuff. | ||
11 | |||
12 | The one gap in the support is symlinks because an end user can change the | ||
13 | ownership of a symbolic link. We support attributes on these files as you | ||
14 | can already (as root) set security attributes on them. | ||
15 | |||
16 | The current rules seem slightly over-paranoid and as we have a use case this | ||
17 | patch enables updating the attributes on a symbolic link IFF you are the | ||
18 | owner of the synlink (as permissions are not usually meaningful on the link | ||
19 | itself). | ||
20 | |||
21 | Signed-off-by: Alan Cox <alan@linux.intel.com> | ||
22 | --- | ||
23 | fs/xattr.c | 14 ++++++++------ | ||
24 | 1 file changed, 8 insertions(+), 6 deletions(-) | ||
25 | |||
26 | diff --git a/fs/xattr.c b/fs/xattr.c | ||
27 | index 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 | -- | ||
55 | 2.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 @@ | |||
1 | From 3152053ea1ea3aa77bcc7e990d48ef84621ff6c9 Mon Sep 17 00:00:00 2001 | 1 | From 5e6c814b3ab74e9abbdd836a224c5ceb7246b44e Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Sat, 9 Apr 2016 22:41:37 +0000 | 3 | Date: Sat, 9 Apr 2016 22:41:37 +0000 |
4 | Subject: [PATCH 112/124] fs: ext4: fsync: optimize double-fsync() a bunch | 4 | Subject: [PATCH 110/126] fs: ext4: fsync: optimize double-fsync() a bunch |
5 | 5 | ||
6 | There are cases where EXT4 is a bit too conservative sending barriers down to the disk; | 6 | There are cases where EXT4 is a bit too conservative sending barriers down to |
7 | there are cases where the transaction in progress is not the one that sent the barrier | 7 | the 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 | 8 | that sent the barrier (in other words: the fsync is for a file for which the |
9 | and all data was already sent to the disk). For that case, a more performing tradeoff | 9 | IO happened more time ago and all data was already sent to the disk). |
10 | can be made on SSD devices (which have the ability to flush their dram caches in a hurry | 10 | |
11 | on a power fail event) where the barrier gets sent to the disk, but we don't need to wait | 11 | For that case, a more performing tradeoff can be made on SSD devices (which |
12 | for the barrier to complete. Any consecutive IO will block on the barrier correctly. | 12 | have the ability to flush their dram caches in a hurry on a power fail event) |
13 | where the barrier gets sent to the disk, but we don't need to wait for the | ||
14 | barrier 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 | ||
21 | diff --git a/block/bio.c b/block/bio.c | 23 | diff --git a/block/bio.c b/block/bio.c |
22 | index db85c5753a76..80f5ab6b536a 100644 | 24 | index 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 |
52 | diff --git a/block/blk-flush.c b/block/blk-flush.c | 53 | diff --git a/block/blk-flush.c b/block/blk-flush.c |
53 | index 3c882cbc7541..b2dfcfe01ed7 100644 | 54 | index 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 | { |
104 | diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c | 104 | diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c |
105 | index 88effb1053c7..a58966c18172 100644 | 105 | index 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 | } |
121 | diff --git a/include/linux/bio.h b/include/linux/bio.h | 121 | diff --git a/include/linux/bio.h b/include/linux/bio.h |
122 | index 97cb48f03dc7..3f055e6541e0 100644 | 122 | index 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, |
133 | diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h | 133 | diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h |
134 | index f6a816129856..727684abf21e 100644 | 134 | index 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 | -- |
157 | 2.11.1 | 157 | 2.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 @@ | |||
1 | From cc7c761946c6b9fa820acc90d7514795af3f42f5 Mon Sep 17 00:00:00 2001 | ||
2 | From: jplozi <jplozi@unice.fr> | ||
3 | Date: Fri, 11 Mar 2016 15:18:06 +0100 | ||
4 | Subject: [PATCH 111/126] overload on wakeup | ||
5 | |||
6 | source https://github.com/jplozi/wastedcores | ||
7 | |||
8 | as an experiment, apply the learnings from the wasted-cores paper | ||
9 | and see how the performance works out. With the data from this we should | ||
10 | be able to work with Peter and the rest of the scheduler folks on | ||
11 | a 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 @@ | |||
1 | From 3a1512b4ed3922f88936b95731aaff706e7286a9 Mon Sep 17 00:00:00 2001 | 1 | From eb6aacfb561485ef9419ff734b2d66059f5fc63d Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Wed, 11 Feb 2015 16:05:23 -0600 | 3 | Date: Wed, 11 Feb 2015 16:05:23 -0600 |
4 | Subject: [PATCH 114/124] bootstats: add printk's to measure boot time in more | 4 | Subject: [PATCH 112/126] bootstats: add printk's to measure boot time in more |
5 | detail | 5 | detail |
6 | 6 | ||
7 | Few distro-tweaks to add printk's to visualize boot time better | 7 | Few 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 | ||
19 | diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c | 19 | diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c |
20 | index 5cb272a7a5a3..d28fb7aae4ce 100644 | 20 | index 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, |
42 | diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c | 42 | diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c |
43 | index a95e1e572697..b29467031be6 100644 | 43 | index 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, |
55 | diff --git a/init/main.c b/init/main.c | 55 | diff --git a/init/main.c b/init/main.c |
56 | index 2858be732f6d..f1d8c3fdbf05 100644 | 56 | index 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(); |
68 | diff --git a/kernel/kmod.c b/kernel/kmod.c | 68 | diff --git a/kernel/kmod.c b/kernel/kmod.c |
69 | index 0277d1216f80..dc5a6edd3895 100644 | 69 | index 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 | -- |
82 | 2.11.1 | 82 | 2.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 @@ | |||
1 | From 5b5ad2c9b9b555d20aeba1f895d0c9d1c2a77776 Mon Sep 17 00:00:00 2001 | 1 | From 2d08a233a1dd6eef3979f6d09b03cfcb66db7b0e Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Thu, 2 Jun 2016 23:36:32 -0500 | 3 | Date: Thu, 2 Jun 2016 23:36:32 -0500 |
4 | Subject: [PATCH 115/124] fix initcall timestamps | 4 | Subject: [PATCH 113/126] fix initcall timestamps |
5 | 5 | ||
6 | Print more finegrained initcall timings | 6 | Print 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 | ||
13 | diff --git a/init/main.c b/init/main.c | 13 | diff --git a/init/main.c b/init/main.c |
14 | index f1d8c3fdbf05..8358cbe6ab13 100644 | 14 | index 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 | -- |
41 | 2.11.1 | 41 | 2.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 @@ | |||
1 | From 9f25d18f45a8391488feb9783404f2f79b7090f4 Mon Sep 17 00:00:00 2001 | ||
2 | From: jplozi <jplozi@unice.fr> | ||
3 | Date: Fri, 11 Mar 2016 15:18:06 +0100 | ||
4 | Subject: [PATCH 113/124] overload on wakeup | ||
5 | |||
6 | source https://github.com/jplozi/wastedcores | ||
7 | |||
8 | as an experiment, apply the learnings from the wasted-cores paper | ||
9 | and see how the performance works out. With the data from this we should | ||
10 | be able to work with Peter and the rest of the scheduler folks on | ||
11 | a more permanent/elegant solution. | ||
12 | --- | ||
13 | kernel/sched/fair.c | 14 ++++++++++++++ | ||
14 | 1 file changed, 14 insertions(+) | ||
15 | |||
16 | diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c | ||
17 | index 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 | -- | ||
42 | 2.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 @@ | |||
1 | From 16104411cc5a7b20f310e3ecede85343ee6ce6b9 Mon Sep 17 00:00:00 2001 | 1 | From 283fcb879f66da9659f1983bcf173476bae9292b Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Wed, 11 Feb 2015 17:28:14 -0600 | 3 | Date: Wed, 11 Feb 2015 17:28:14 -0600 |
4 | Subject: [PATCH 116/124] smpboot: reuse timer calibration | 4 | Subject: [PATCH 114/126] smpboot: reuse timer calibration |
5 | 5 | ||
6 | NO point recalibrating for known-constant tsc... saves 200ms+ of boot time. | 6 | NO 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 | ||
15 | diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c | 15 | diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c |
16 | index 46b2f41f8b05..88553c1f21f1 100644 | 16 | index 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 | -- |
30 | 2.11.1 | 30 | 2.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 @@ | |||
1 | From fd1f55138c242bd9aeec374ff611064bdc89b359 Mon Sep 17 00:00:00 2001 | 1 | From ee1cb812123c8db20af6d73f7d4ab4f2fb537055 Mon Sep 17 00:00:00 2001 |
2 | From: Jim Kukunas <james.t.kukunas@linux.intel.com> | 2 | From: Jim Kukunas <james.t.kukunas@linux.intel.com> |
3 | Date: Fri, 27 May 2016 09:26:51 -0400 | 3 | Date: Fri, 27 May 2016 09:26:51 -0400 |
4 | Subject: [PATCH 117/124] raid6: add Kconfig option to skip raid6 benchmarking | 4 | Subject: [PATCH 115/126] raid6: add Kconfig option to skip raid6 benchmarking |
5 | 5 | ||
6 | Adds CONFIG_RAID6_FORCE_ALGO, which causes the kernel to not benchmark | 6 | Adds CONFIG_RAID6_FORCE_ALGO, which causes the kernel to not benchmark |
7 | each raid recovery and syndrome generation algorithm, and instead use | 7 | each 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 | ||
20 | diff --git a/lib/Kconfig b/lib/Kconfig | 20 | diff --git a/lib/Kconfig b/lib/Kconfig |
21 | index 260a80e313b9..b3efd21db2fd 100644 | 21 | index 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 |
78 | diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c | 78 | diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c |
79 | index 7857049fd7d3..29332d2a04a5 100644 | 79 | index 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 | -- |
155 | 2.11.1 | 155 | 2.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 @@ | |||
1 | From fbc1ab7c18a9c960a0bff293a93620d581658f8d Mon Sep 17 00:00:00 2001 | 1 | From a8f79e6e347a5d884ea8d351631a6f6e899060cc Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Thu, 2 Jun 2016 23:36:32 -0500 | 3 | Date: Thu, 2 Jun 2016 23:36:32 -0500 |
4 | Subject: [PATCH 118/124] Initialize ata before graphics | 4 | Subject: [PATCH 116/126] Initialize ata before graphics |
5 | 5 | ||
6 | ATA init is the long pole in the boot process, and its asynchronous. | 6 | ATA init is the long pole in the boot process, and its asynchronous. |
7 | move the graphics init after it so that ata and graphics initialize | 7 | move 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 | ||
13 | diff --git a/drivers/Makefile b/drivers/Makefile | 13 | diff --git a/drivers/Makefile b/drivers/Makefile |
14 | index 194d20bee7dc..2785e4c6b30f 100644 | 14 | index 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 | -- |
46 | 2.11.1 | 46 | 2.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 @@ | |||
1 | From d9390cb702de5cbef64f893efd2344c4f58dae82 Mon Sep 17 00:00:00 2001 | 1 | From 978b64d2b68efe40d73f69897292e796db46585a Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Mon, 25 Jul 2016 06:44:34 -0500 | 3 | Date: Mon, 25 Jul 2016 06:44:34 -0500 |
4 | Subject: [PATCH 119/124] reduce e1000e boot time by tightening sleep ranges | 4 | Subject: [PATCH 117/126] reduce e1000e boot time by tightening sleep ranges |
5 | 5 | ||
6 | The e1000e driver is a great user of the usleep_range() API, | 6 | The e1000e driver is a great user of the usleep_range() API, |
7 | and has any nice ranges that in principle help power management. | 7 | and 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. |
55 | diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c | 55 | diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c |
56 | index 7aff68a4a4df..7cb689bd41f8 100644 | 56 | index 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 */ |
122 | diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c | 122 | diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c |
123 | index f3aaca743ea3..bef75cec259f 100644 | 123 | index 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; |
229 | diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c | 229 | diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c |
230 | index 7017281ba2dc..7d68d694ed9e 100644 | 230 | index 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 | -- |
310 | 2.11.1 | 310 | 2.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 @@ | |||
1 | From 5cc978db25b2c92707f68b15098ac39901fb5aac Mon Sep 17 00:00:00 2001 | 1 | From 7b90a7bba60360a4585cf317b092e266e6a81e76 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Fri, 29 Jul 2016 19:10:52 +0000 | 3 | Date: Fri, 29 Jul 2016 19:10:52 +0000 |
4 | Subject: [PATCH 120/124] give rdrand some credit | 4 | Subject: [PATCH 118/126] give rdrand some credit |
5 | 5 | ||
6 | try to credit rdrand/rdseed with some entropy | 6 | try 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 | ||
15 | diff --git a/drivers/char/random.c b/drivers/char/random.c | 15 | diff --git a/drivers/char/random.c b/drivers/char/random.c |
16 | index d6876d506220..fca09af81b2c 100644 | 16 | index 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 | -- |
29 | 2.11.1 | 29 | 2.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 @@ | |||
1 | From 5b4707fc2aa8c49aa18a60136880bf05a3e29071 Mon Sep 17 00:00:00 2001 | 1 | From 915dc5df4d7f050ee1835f4c302795baa6c51b7e Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Sat, 10 Dec 2016 14:29:52 +0000 | 3 | Date: Sat, 10 Dec 2016 14:29:52 +0000 |
4 | Subject: [PATCH 121/124] e1000e: change default policy | 4 | Subject: [PATCH 119/126] e1000e: change default policy |
5 | 5 | ||
6 | change the default irq mitigation policy for e1000e to be | 6 | change the default irq mitigation policy for e1000e to be |
7 | more HPC/cluster friendly | 7 | more 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 | -- |
26 | 2.11.1 | 26 | 2.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 @@ | |||
1 | From 5cf7ba4ba9c9d770aad9e52deaa3730f259df9f1 Mon Sep 17 00:00:00 2001 | 1 | From 4492e1f2e57ae6d0c5e0470309f0ba3051cc6228 Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Fri, 6 Jan 2017 15:34:09 +0000 | 3 | Date: Fri, 6 Jan 2017 15:34:09 +0000 |
4 | Subject: [PATCH 122/124] ipv4/tcp: allow the memory tuning for tcp to go a | 4 | Subject: [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 | ||
11 | diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c | 11 | diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c |
12 | index 6a90a0e130dc..32e43ce7c60e 100644 | 12 | index 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 | -- |
27 | 2.11.1 | 27 | 2.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 @@ | |||
1 | From 3600f0a90ddea2a2a8c4a157a0bb70913ae4e640 Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Thu, 12 Jan 2017 18:17:14 +0000 | ||
4 | Subject: [PATCH 121/126] disable PM on some NICs | ||
5 | |||
6 | igb: no runtime pm to fix reboot oops | ||
7 | |||
8 | Causes oops on reboot due to a race between runtime resume and shutdown | ||
9 | |||
10 | e1000e: disable PM as it disconects from some NICs | ||
11 | |||
12 | e1000: disable PM just in case | ||
13 | |||
14 | --- | ||
15 | drivers/net/ethernet/intel/igb/igb_main.c | 3 --- | ||
16 | 1 file changed, 3 deletions(-) | ||
17 | |||
18 | diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c | ||
19 | index 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 | ||
32 | diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c | ||
33 | index 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 | }; | ||
48 | diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c | ||
49 | index 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 | -- | ||
63 | 2.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 @@ | |||
1 | From 03e2c414a860264511dae5bbfc6d7e62b8b94f0f Mon Sep 17 00:00:00 2001 | 1 | From 5a2cb154e11490e5ba05975c7a537d0bafb12bba Mon Sep 17 00:00:00 2001 |
2 | From: Arjan van de Ven <arjan@linux.intel.com> | 2 | From: Arjan van de Ven <arjan@linux.intel.com> |
3 | Date: Sun, 22 Jan 2017 18:51:13 +0000 | 3 | Date: Sun, 22 Jan 2017 18:51:13 +0000 |
4 | Subject: [PATCH 124/124] tweak perfbias | 4 | Subject: [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 | ||
10 | diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c | 10 | diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c |
11 | index fcd484d2bb03..13ae40f10bd4 100644 | 11 | index 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 | -- |
31 | 2.11.1 | 31 | 2.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 @@ | |||
1 | From 6730c1ae12a567d56092d15540d2f971be95b936 Mon Sep 17 00:00:00 2001 | 1 | From a5c7b0038c1662ce3a1db76314ba62bca5fae911 Mon Sep 17 00:00:00 2001 |
2 | From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | 2 | From: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> |
3 | Date: Mon, 27 Mar 2017 16:01:56 -0600 | 3 | Date: Mon, 27 Mar 2017 16:01:56 -0600 |
4 | Subject: [PATCH] e1000e: increase pause and refresh time | 4 | Subject: [PATCH 123/126] e1000e: increase pause and refresh time |
5 | 5 | ||
6 | Suggested-by: Tim Pepper <timothy.c.pepper@linux.intel.com> | 6 | Suggested-by: Tim Pepper <timothy.c.pepper@linux.intel.com> |
7 | Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | 7 | Signed-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 | ||
12 | diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c | 12 | diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c |
13 | index 7d68d694ed9e..1db390a52656 100644 | 13 | index 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 | -- |
32 | 2.12.2 | 32 | 2.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 @@ | |||
1 | From 10f0c995ce6aaf6b3ffa78377f1a12ad0477057a Mon Sep 17 00:00:00 2001 | ||
2 | From: Arjan van de Ven <arjan@linux.intel.com> | ||
3 | Date: Thu, 12 Jan 2017 18:17:14 +0000 | ||
4 | Subject: [PATCH 123/124] igb: no runtime pm to fix reboot oops | ||
5 | |||
6 | Causes 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 | |||
11 | diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c | ||
12 | index 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 | -- | ||
26 | 2.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 @@ | |||
1 | From 99b4cdcce43ad0f706120bef26fef8c628c572cf Mon Sep 17 00:00:00 2001 | 1 | From fc4ee73f68d0e9da4ba61112416849c18d933882 Mon Sep 17 00:00:00 2001 |
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | 2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> |
3 | Date: Mon, 23 Jan 2017 15:03:52 -0800 | 3 | Date: Mon, 23 Jan 2017 15:03:52 -0800 |
4 | Subject: [PATCH 151/154] mm: Export do_madvise() | 4 | Subject: [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 | ||
23 | diff --git a/include/linux/mm.h b/include/linux/mm.h | 23 | diff --git a/include/linux/mm.h b/include/linux/mm.h |
24 | index 0b5b2e4df14e..925ec25f99a8 100644 | 24 | index 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 */ |
35 | diff --git a/mm/madvise.c b/mm/madvise.c | 35 | diff --git a/mm/madvise.c b/mm/madvise.c |
36 | index 93fb63e88b5e..c8bbf93d4978 100644 | 36 | index 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 | -- |
83 | 2.12.1 | 83 | 2.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 @@ | |||
1 | From d28921b5f797829e4e676f7968ae688ef96b7992 Mon Sep 17 00:00:00 2001 | 1 | From 771ee703122aa119bb662208066040f8b9356986 Mon Sep 17 00:00:00 2001 |
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | 2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> |
3 | Date: Mon, 23 Jan 2017 15:08:55 -0800 | 3 | Date: Mon, 23 Jan 2017 15:08:55 -0800 |
4 | Subject: [PATCH 152/154] x86: kvm: Notify host to release pages | 4 | Subject: [PATCH 152/154] x86: kvm: Notify host to release pages |
@@ -31,21 +31,24 @@ use it. | |||
31 | 31 | ||
32 | Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> | 32 | Suggested-by: Arjan van de Ven <arjan.van.de.ven@intel.com> |
33 | Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com> | 33 | Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com> |
34 | |||
35 | Modified for aufs4 enabled kernel | ||
36 | Signed-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 | ||
44 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c | 47 | diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c |
45 | index 582c75311f95..683a94dd5f03 100644 | 48 | index 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; |
86 | diff --git a/include/linux/mm.h b/include/linux/mm.h | 89 | diff --git a/include/linux/mm.h b/include/linux/mm.h |
87 | index 925ec25f99a8..833f23d98baa 100644 | 90 | index 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); |
102 | diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h | 105 | diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h |
103 | index bf6cd7d5cac2..7d90f77d87d0 100644 | 106 | index 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 |
116 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c | 119 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
117 | index c1095cdc0fe2..d8ae774fa042 100644 | 120 | index 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", |
134 | diff --git a/mm/Makefile b/mm/Makefile | 137 | diff --git a/mm/Makefile b/mm/Makefile |
135 | index 295bd7a..6455723 100644 | 138 | index 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 | ||
147 | diff --git a/mm/kvm.c b/mm/kvm.c | 150 | diff --git a/mm/kvm.c b/mm/kvm.c |
148 | new file mode 100644 | 151 | new file mode 100644 |
149 | index 000000000000..8945f6a311b9 | 152 | index 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 | -- |
179 | 2.12.1 | 183 | 2.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 @@ | |||
1 | From 855ef164854307839c08c60688eaeac14f9a649e Mon Sep 17 00:00:00 2001 | 1 | From 9d487e5b95627e54c5ba256363ab6d1c5eaa592d Mon Sep 17 00:00:00 2001 |
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | 2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> |
3 | Date: Mon, 23 Jan 2017 15:26:13 -0800 | 3 | Date: Mon, 23 Jan 2017 15:26:13 -0800 |
4 | Subject: [PATCH 153/154] x86: Return memory from guest to host kernel | 4 | Subject: [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 | ||
55 | diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h | 55 | diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h |
56 | index bc62e7cbf1b1..4a2f6d1adbd2 100644 | 56 | index 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); |
88 | diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c | 88 | diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c |
89 | index edbbfc854e39..14167b3f6514 100644 | 89 | index 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 */ |
133 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c | 133 | diff --git a/mm/page_alloc.c b/mm/page_alloc.c |
134 | index 1460e6ad5e14..5f6e6371bc6f 100644 | 134 | index 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 | -- |
154 | 2.12.1 | 154 | 2.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 @@ | |||
1 | From 2c145b5233b504f5226a0f4bc44baeef33b444d8 Mon Sep 17 00:00:00 2001 | 1 | From 130d5d976b920aec243e0fa63273f3143660054b Mon Sep 17 00:00:00 2001 |
2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> | 2 | From: Sebastien Boeuf <sebastien.boeuf@intel.com> |
3 | Date: Mon, 23 Jan 2017 15:32:39 -0800 | 3 | Date: Mon, 23 Jan 2017 15:32:39 -0800 |
4 | Subject: [PATCH 154/154] sysctl: vm: Fine-grained cache shrinking | 4 | Subject: [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 | ||
37 | diff --git a/fs/drop_caches.c b/fs/drop_caches.c | 37 | diff --git a/fs/drop_caches.c b/fs/drop_caches.c |
38 | index d72d52b90433..f564dfcc13a4 100644 | 38 | index 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 | +} |
81 | diff --git a/include/linux/mm.h b/include/linux/mm.h | 81 | diff --git a/include/linux/mm.h b/include/linux/mm.h |
82 | index 833f23d98baa..0bb66c1c31c9 100644 | 82 | index 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); |
96 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c | 96 | diff --git a/kernel/sysctl.c b/kernel/sysctl.c |
97 | index d8ae774fa042..5dc9a46ae212 100644 | 97 | index 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", |
115 | diff --git a/mm/vmscan.c b/mm/vmscan.c | 115 | diff --git a/mm/vmscan.c b/mm/vmscan.c |
116 | index 30a88b945a44..1198e74d1860 100644 | 116 | index 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 | -- |
136 | 2.12.1 | 136 | 2.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 @@ | |||
1 | define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux, https://github.com/clearlinux-pkgs/linux-lts and https://github.com/clearlinux-pkgs/linux-kvm" | 1 | define KFEATURE_DESCRIPTION "Boot time optimization changes ported from ClearLinux, https://github.com/clearlinux-pkgs/linux-lts and https://github.com/clearlinux-pkgs/linux-kvm" |
2 | define KFEATURE_COMPATIBILITY all | 2 | define KFEATURE_COMPATIBILITY all |
3 | 3 | ||
4 | patch 0101-kvm-silence-kvm-unhandled-rdmsr.patch | 4 | patch 0101-i8042-decrease-debug-message-level-to-info.patch |
5 | patch 0102-i8042-decrease-debug-message-level-to-info.patch | 5 | patch 0103-Increase-the-ext4-default-commit-age.patch |
6 | patch 0104-Increase-the-ext4-default-commit-age.patch | 6 | patch 0104-silence-rapl.patch |
7 | patch 0105-silence-rapl.patch | 7 | patch 0105-pci-pme-wakeups.patch |
8 | patch 0106-pci-pme-wakeups.patch | 8 | patch 0106-ksm-wakeups.patch |
9 | patch 0107-ksm-wakeups.patch | 9 | patch 0107-intel_idle-tweak-cpuidle-cstates.patch |
10 | patch 0108-intel_idle-tweak-cpuidle-cstates.patch | 10 | patch 0109-init_task-faster-timerslack.patch |
11 | patch 0110-init_task-faster-timerslack.patch | 11 | patch 0110-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch |
12 | patch 0112-fs-ext4-fsync-optimize-double-fsync-a-bunch.patch | 12 | patch 0111-overload-on-wakeup.patch |
13 | patch 0113-overload-on-wakeup.patch | 13 | patch 0112-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch |
14 | patch 0114-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch | 14 | patch 0113-fix-initcall-timestamps.patch |
15 | patch 0115-fix-initcall-timestamps.patch | 15 | patch 0114-smpboot-reuse-timer-calibration.patch |
16 | patch 0116-smpboot-reuse-timer-calibration.patch | 16 | patch 0116-Initialize-ata-before-graphics.patch |
17 | patch 0118-Initialize-ata-before-graphics.patch | 17 | patch 0117-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch |
18 | patch 0119-reduce-e1000e-boot-time-by-tightening-sleep-ranges.patch | 18 | patch 0118-give-rdrand-some-credit.patch |
19 | patch 0120-give-rdrand-some-credit.patch | 19 | patch 0119-e1000e-change-default-policy.patch |
20 | patch 0121-e1000e-change-default-policy.patch | 20 | patch 0120-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch |
21 | patch 0122-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch | 21 | patch 0121-igb-no-runtime-pm-to-fix-reboot-oops.patch |
22 | patch 0123-igb-no-runtime-pm-to-fix-reboot-oops.patch | 22 | patch 0122-tweak-perfbias.patch |
23 | patch 0124-tweak-perfbias.patch | 23 | patch 0123-e1000e-increase-pause-and-refresh-time.patch |
24 | patch 0125-e1000e-increase-pause-and-refresh-time.patch | ||
25 | 24 | ||
26 | patch 0151-mm-Export-do_madvise.patch | 25 | patch 0151-mm-Export-do_madvise.patch |
27 | patch 0152-x86-kvm-Notify-host-to-release-pages.patch | 26 | patch 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 @@ | |||
1 | define KFEATURE_DESCRIPTION "Use AVX2 for RAID recovery algorithm" | 1 | define KFEATURE_DESCRIPTION "Use AVX2 for RAID recovery algorithm" |
2 | define KFEATURE_COMPATIBILITY all | 2 | define KFEATURE_COMPATIBILITY all |
3 | 3 | ||
4 | patch 0117-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch | 4 | patch 0115-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch |
5 | kconf non-hardware raid_alg.cfg | 5 | kconf non-hardware raid_alg.cfg |