A 0101-i8042-decrease-debug-message-level-to-info.patch => 0101-i8042-decrease-debug-message-level-to-info.patch +65 -0
@@ 0,0 1,65 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Tue, 23 Jun 2015 01:26:52 -0500
+Subject: [PATCH] i8042: decrease debug message level to info
+
+Author: Arjan van de Ven <arjan@linux.intel.com>
+
+Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
+Signed-off-by: Jose Carlos Venegas Munoz <jos.c.venegas.munoz@intel.com>
+---
+ drivers/input/serio/i8042.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
+index 0b9f1d0a8f8b..fc5f6ac8d264 100644
+--- a/drivers/input/serio/i8042.c
++++ b/drivers/input/serio/i8042.c
+@@ -617,7 +617,7 @@ static int i8042_enable_kbd_port(void)
+ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
+ i8042_ctr &= ~I8042_CTR_KBDINT;
+ i8042_ctr |= I8042_CTR_KBDDIS;
+- pr_err("Failed to enable KBD port\n");
++ pr_info("Failed to enable KBD port\n");
+ return -EIO;
+ }
+
+@@ -636,7 +636,7 @@ static int i8042_enable_aux_port(void)
+ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
+ i8042_ctr &= ~I8042_CTR_AUXINT;
+ i8042_ctr |= I8042_CTR_AUXDIS;
+- pr_err("Failed to enable AUX port\n");
++ pr_info("Failed to enable AUX port\n");
+ return -EIO;
+ }
+
+@@ -728,7 +728,7 @@ static int __init i8042_check_mux(void)
+ i8042_ctr &= ~I8042_CTR_AUXINT;
+
+ if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR)) {
+- pr_err("Failed to disable AUX port, can't use MUX\n");
++ pr_info("Failed to disable AUX port, can't use MUX\n");
+ return -EIO;
+ }
+
+@@ -951,7 +951,7 @@ static int i8042_controller_selftest(void)
+ do {
+
+ if (i8042_command(¶m, I8042_CMD_CTL_TEST)) {
+- pr_err("i8042 controller selftest timeout\n");
++ pr_info("i8042 controller selftest timeout\n");
+ return -ENODEV;
+ }
+
+@@ -973,7 +973,7 @@ static int i8042_controller_selftest(void)
+ pr_info("giving up on controller selftest, continuing anyway...\n");
+ return 0;
+ #else
+- pr_err("i8042 controller selftest failed\n");
++ pr_info("i8042 controller selftest failed\n");
+ return -EIO;
+ #endif
+ }
+--
+https://clearlinux.org
+
A 0102-increase-the-ext4-default-commit-age.patch => 0102-increase-the-ext4-default-commit-age.patch +35 -0
@@ 0,0 1,35 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Mon, 11 Jan 2016 10:01:44 -0600
+Subject: [PATCH] increase the ext4 default commit age
+
+Both the VM and EXT4 have a "commit to disk after X seconds" time.
+Currently the EXT4 time is shorter than our VM time, which is a bit
+suboptional,
+it's better for performance to let the VM do the writeouts in bulk
+rather than something deep in the journalling layer.
+
+(DISTRO TWEAK -- NOT FOR UPSTREAM)
+
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
+---
+ include/linux/jbd2.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
+index fd933c45281a..e70409a77cfa 100644
+--- a/include/linux/jbd2.h
++++ b/include/linux/jbd2.h
+@@ -45,7 +45,7 @@
+ /*
+ * The default maximum commit age, in seconds.
+ */
+-#define JBD2_DEFAULT_MAX_COMMIT_AGE 5
++#define JBD2_DEFAULT_MAX_COMMIT_AGE 30
+
+ #ifdef CONFIG_JBD2_DEBUG
+ /*
+--
+https://clearlinux.org
+
A 0103-silence-rapl.patch => 0103-silence-rapl.patch +25 -0
@@ 0,0 1,25 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Mon, 14 Mar 2016 11:22:09 -0600
+Subject: [PATCH] silence rapl
+
+---
+ drivers/powercap/intel_rapl_common.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/powercap/intel_rapl_common.c b/drivers/powercap/intel_rapl_common.c
+index 7c0099e7a6d7..f0d65382806a 100644
+--- a/drivers/powercap/intel_rapl_common.c
++++ b/drivers/powercap/intel_rapl_common.c
+@@ -1455,7 +1455,7 @@ static int __init rapl_init(void)
+
+ id = x86_match_cpu(rapl_ids);
+ if (!id) {
+- pr_err("driver does not support CPU family %d model %d\n",
++ pr_info("driver does not support CPU family %d model %d\n",
+ boot_cpu_data.x86, boot_cpu_data.x86_model);
+
+ return -ENODEV;
+--
+https://clearlinux.org
+
A 0104-pci-pme-wakeups.patch => 0104-pci-pme-wakeups.patch +27 -0
@@ 0,0 1,27 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Mon, 14 Mar 2016 11:10:58 -0600
+Subject: [PATCH] pci pme wakeups
+
+Reduce wakeups for PME checks, which are a workaround for miswired
+boards (sadly, too many of them) in laptops.
+---
+ drivers/pci/pci.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
+index ce2ab62b64cf..feb0e07f465d 100644
+--- a/drivers/pci/pci.c
++++ b/drivers/pci/pci.c
+@@ -60,7 +60,7 @@ struct pci_pme_device {
+ struct pci_dev *dev;
+ };
+
+-#define PME_TIMEOUT 1000 /* How long between PME checks */
++#define PME_TIMEOUT 4000 /* How long between PME checks */
+
+ static void pci_dev_d3_sleep(struct pci_dev *dev)
+ {
+--
+https://clearlinux.org
+
A 0105-ksm-wakeups.patch => 0105-ksm-wakeups.patch +52 -0
@@ 0,0 1,52 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Mon, 6 May 2019 12:57:09 -0500
+Subject: [PATCH] ksm-wakeups
+
+reduce wakeups in ksm by adding rounding (aligning) when
+the sleep times are 1 second or longer
+
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+---
+ kernel/watchdog.c | 2 +-
+ mm/ksm.c | 11 ++++++++---
+ 2 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/kernel/watchdog.c b/kernel/watchdog.c
+index ad912511a0c0..8ccb40284a24 100644
+--- a/kernel/watchdog.c
++++ b/kernel/watchdog.c
+@@ -41,7 +41,7 @@ unsigned long __read_mostly watchdog_enabled;
+ int __read_mostly watchdog_user_enabled = 1;
+ int __read_mostly nmi_watchdog_user_enabled = NMI_WATCHDOG_DEFAULT;
+ int __read_mostly soft_watchdog_user_enabled = 1;
+-int __read_mostly watchdog_thresh = 10;
++int __read_mostly watchdog_thresh = 40;
+ static int __read_mostly nmi_watchdog_available;
+
+ struct cpumask watchdog_cpumask __read_mostly;
+diff --git a/mm/ksm.c b/mm/ksm.c
+index a5716fdec1aa..7d5ec01385c7 100644
+--- a/mm/ksm.c
++++ b/mm/ksm.c
+@@ -2415,9 +2415,14 @@ static int ksm_scan_thread(void *nothing)
+
+ if (ksmd_should_run()) {
+ sleep_ms = READ_ONCE(ksm_thread_sleep_millisecs);
+- wait_event_interruptible_timeout(ksm_iter_wait,
+- sleep_ms != READ_ONCE(ksm_thread_sleep_millisecs),
+- msecs_to_jiffies(sleep_ms));
++ if (sleep_ms >= 1000)
++ wait_event_interruptible_timeout(ksm_iter_wait,
++ sleep_ms != READ_ONCE(ksm_thread_sleep_millisecs),
++ msecs_to_jiffies(round_jiffies_relative(sleep_ms)));
++ else
++ wait_event_interruptible_timeout(ksm_iter_wait,
++ sleep_ms != READ_ONCE(ksm_thread_sleep_millisecs),
++ msecs_to_jiffies(sleep_ms));
+ } else {
+ wait_event_freezable(ksm_thread_wait,
+ ksmd_should_run() || kthread_should_stop());
+--
+https://clearlinux.org
+
A 0106-intel_idle-tweak-cpuidle-cstates.patch => 0106-intel_idle-tweak-cpuidle-cstates.patch +220 -0
@@ 0,0 1,220 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sat, 19 Mar 2016 21:32:19 -0400
+Subject: [PATCH] intel_idle: tweak cpuidle cstates
+
+Increase target_residency in cpuidle cstate
+
+Tune intel_idle to be a bit less agressive;
+Clear linux is cleaner in hygiene (wakupes) than the average linux,
+so we can afford changing these in a way that increases
+performance while keeping power efficiency
+---
+ drivers/idle/intel_idle.c | 44 +++++++++++++++++++--------------------
+ 1 file changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
+index e6c543b5ee1d..b73df64b2925 100644
+--- a/drivers/idle/intel_idle.c
++++ b/drivers/idle/intel_idle.c
+@@ -502,7 +502,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x01",
+ .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
+ .exit_latency = 10,
+- .target_residency = 20,
++ .target_residency = 120,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -510,7 +510,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x10",
+ .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 33,
+- .target_residency = 100,
++ .target_residency = 900,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -518,7 +518,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x20",
+ .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 133,
+- .target_residency = 400,
++ .target_residency = 1000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -526,7 +526,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x32",
+ .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 166,
+- .target_residency = 500,
++ .target_residency = 1500,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -534,7 +534,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x40",
+ .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 300,
+- .target_residency = 900,
++ .target_residency = 2000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -542,7 +542,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x50",
+ .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 600,
+- .target_residency = 1800,
++ .target_residency = 5000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -550,7 +550,7 @@ static struct cpuidle_state hsw_cstates[] __initdata = {
+ .desc = "MWAIT 0x60",
+ .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 2600,
+- .target_residency = 7700,
++ .target_residency = 9000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -570,7 +570,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x01",
+ .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
+ .exit_latency = 10,
+- .target_residency = 20,
++ .target_residency = 120,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -578,7 +578,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x10",
+ .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 40,
+- .target_residency = 100,
++ .target_residency = 1000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -586,7 +586,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x20",
+ .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 133,
+- .target_residency = 400,
++ .target_residency = 1000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -594,7 +594,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x32",
+ .flags = MWAIT2flg(0x32) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 166,
+- .target_residency = 500,
++ .target_residency = 2000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -602,7 +602,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x40",
+ .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 300,
+- .target_residency = 900,
++ .target_residency = 4000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -610,7 +610,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x50",
+ .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 600,
+- .target_residency = 1800,
++ .target_residency = 7000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -618,7 +618,7 @@ static struct cpuidle_state bdw_cstates[] __initdata = {
+ .desc = "MWAIT 0x60",
+ .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 2600,
+- .target_residency = 7700,
++ .target_residency = 9000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -639,7 +639,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x01",
+ .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
+ .exit_latency = 10,
+- .target_residency = 20,
++ .target_residency = 120,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -647,7 +647,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x10",
+ .flags = MWAIT2flg(0x10) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 70,
+- .target_residency = 100,
++ .target_residency = 1000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -655,7 +655,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x20",
+ .flags = MWAIT2flg(0x20) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 85,
+- .target_residency = 200,
++ .target_residency = 600,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -663,7 +663,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x33",
+ .flags = MWAIT2flg(0x33) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 124,
+- .target_residency = 800,
++ .target_residency = 3000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -671,7 +671,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x40",
+ .flags = MWAIT2flg(0x40) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 200,
+- .target_residency = 800,
++ .target_residency = 3200,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -679,7 +679,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x50",
+ .flags = MWAIT2flg(0x50) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 480,
+- .target_residency = 5000,
++ .target_residency = 9000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -687,7 +687,7 @@ static struct cpuidle_state skl_cstates[] __initdata = {
+ .desc = "MWAIT 0x60",
+ .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
+ .exit_latency = 890,
+- .target_residency = 5000,
++ .target_residency = 9000,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+@@ -708,7 +708,7 @@ static struct cpuidle_state skx_cstates[] __initdata = {
+ .desc = "MWAIT 0x01",
+ .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_ALWAYS_ENABLE,
+ .exit_latency = 10,
+- .target_residency = 20,
++ .target_residency = 300,
+ .enter = &intel_idle,
+ .enter_s2idle = intel_idle_s2idle, },
+ {
+--
+https://clearlinux.org
+
A 0108-smpboot-reuse-timer-calibration.patch => 0108-smpboot-reuse-timer-calibration.patch +28 -0
@@ 0,0 1,28 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Wed, 11 Feb 2015 17:28:14 -0600
+Subject: [PATCH] smpboot: reuse timer calibration
+
+NO point recalibrating for known-constant tsc ...
+saves 200ms+ of boot time.
+---
+ arch/x86/kernel/tsc.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
+index 2e076a459a0c..94bc1166476e 100644
+--- a/arch/x86/kernel/tsc.c
++++ b/arch/x86/kernel/tsc.c
+@@ -1549,6 +1549,9 @@ unsigned long calibrate_delay_is_known(void)
+ if (!constant_tsc || !mask)
+ return 0;
+
++ if (cpu != 0)
++ return cpu_data(0).loops_per_jiffy;
++
+ sibling = cpumask_any_but(mask, cpu);
+ if (sibling < nr_cpu_ids)
+ return cpu_data(sibling).loops_per_jiffy;
+--
+https://clearlinux.org
+
A 0109-initialize-ata-before-graphics.patch => 0109-initialize-ata-before-graphics.patch +50 -0
@@ 0,0 1,50 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Thu, 2 Jun 2016 23:36:32 -0500
+Subject: [PATCH] initialize ata before graphics
+
+ATA init is the long pole in the boot process, and its asynchronous.
+move the graphics init after it so that ata and graphics initialize
+in parallel
+---
+ drivers/Makefile | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/Makefile b/drivers/Makefile
+index be5d40ae1488..5cf1c4a93708 100644
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -60,15 +60,8 @@ obj-y += char/
+ # iommu/ comes before gpu as gpu are using iommu controllers
+ obj-y += iommu/
+
+-# gpu/ comes after char for AGP vs DRM startup and after iommu
+-obj-y += gpu/
+-
+ obj-$(CONFIG_CONNECTOR) += connector/
+
+-# i810fb and intelfb depend on char/agp/
+-obj-$(CONFIG_FB_I810) += video/fbdev/i810/
+-obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
+-
+ obj-$(CONFIG_PARPORT) += parport/
+ obj-y += base/ block/ misc/ mfd/ nfc/
+ obj-$(CONFIG_LIBNVDIMM) += nvdimm/
+@@ -80,6 +73,14 @@ obj-y += macintosh/
+ obj-y += scsi/
+ obj-y += nvme/
+ obj-$(CONFIG_ATA) += ata/
++
++# gpu/ comes after char for AGP vs DRM startup and after iommu
++obj-y += gpu/
++
++# i810fb and intelfb depend on char/agp/
++obj-$(CONFIG_FB_I810) += video/fbdev/i810/
++obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
++
+ obj-$(CONFIG_TARGET_CORE) += target/
+ obj-$(CONFIG_MTD) += mtd/
+ obj-$(CONFIG_SPI) += spi/
+--
+https://clearlinux.org
+
A 0110-give-rdrand-some-credit.patch => 0110-give-rdrand-some-credit.patch +30 -0
@@ 0,0 1,30 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Fri, 29 Jul 2016 19:10:52 +0000
+Subject: [PATCH] give rdrand some credit
+
+try to credit rdrand/rdseed with some entropy
+
+In VMs but even modern hardware, we're super starved for entropy, and while we can
+and do wear a tin foil hat, it's very hard to argue that
+rdrand and rdtsc add zero entropy.
+---
+ drivers/char/random.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/char/random.c b/drivers/char/random.c
+index 605969ed0f96..1cab72339cba 100644
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
+@@ -1757,6 +1757,8 @@ static void __init init_std_data(struct entropy_store *r)
+ if (!arch_get_random_seed_long(&rv) &&
+ !arch_get_random_long(&rv))
+ rv = random_get_entropy();
++ else
++ credit_entropy_bits(r, 1);
+ mix_pool_bytes(r, &rv, sizeof(rv));
+ }
+ mix_pool_bytes(r, utsname(), sizeof(*(utsname())));
+--
+https://clearlinux.org
+
A 0111-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch => 0111-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch +28 -0
@@ 0,0 1,28 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Fri, 6 Jan 2017 15:34:09 +0000
+Subject: [PATCH] ipv4/tcp: allow the memory tuning for tcp to go a little
+ bigger than default
+
+---
+ net/ipv4/tcp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
+index f5c336f8b0c8..27aa106cac3f 100644
+--- a/net/ipv4/tcp.c
++++ b/net/ipv4/tcp.c
+@@ -4557,8 +4557,8 @@ void __init tcp_init(void)
+ tcp_init_mem();
+ /* Set per-socket limits to no more than 1/128 the pressure threshold */
+ limit = nr_free_buffer_pages() << (PAGE_SHIFT - 7);
+- max_wshare = min(4UL*1024*1024, limit);
+- max_rshare = min(6UL*1024*1024, limit);
++ max_wshare = min(16UL*1024*1024, limit);
++ max_rshare = min(16UL*1024*1024, limit);
+
+ init_net.ipv4.sysctl_tcp_wmem[0] = SK_MEM_QUANTUM;
+ init_net.ipv4.sysctl_tcp_wmem[1] = 16*1024;
+--
+https://clearlinux.org
+
A 0112-init-wait-for-partition-and-retry-scan.patch => 0112-init-wait-for-partition-and-retry-scan.patch +53 -0
@@ 0,0 1,53 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Wed, 17 May 2017 01:52:11 +0000
+Subject: [PATCH] init: wait for partition and retry scan
+
+As Clear Linux boots fast the device is not ready when
+the mounting code is reached, so a retry device scan will
+be performed every 0.5 sec for at least 40 sec
+and synchronize the async task.
+
+Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
+---
+ init/do_mounts.c | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/init/do_mounts.c b/init/do_mounts.c
+index 762b534978d9..107b96927049 100644
+--- a/init/do_mounts.c
++++ b/init/do_mounts.c
+@@ -284,8 +284,18 @@ dev_t name_to_dev_t(const char *name)
+ if (strcmp(name, "/dev/ram") == 0)
+ return Root_RAM0;
+ #ifdef CONFIG_BLOCK
+- if (strncmp(name, "PARTUUID=", 9) == 0)
+- return devt_from_partuuid(name + 9);
++ if (strncmp(name, "PARTUUID=", 9) == 0) {
++ dev_t res;
++ int needtowait = 40<<1;
++ res = devt_from_partuuid(name + 9);
++ while (!res && needtowait) {
++ /* waiting 0.5 sec */
++ msleep(500);
++ res = devt_from_partuuid(name + 9);
++ needtowait--;
++ }
++ return res;
++ }
+ if (strncmp(name, "PARTLABEL=", 10) == 0)
+ return devt_from_partlabel(name + 10);
+ if (strncmp(name, "/dev/", 5) == 0)
+@@ -613,7 +623,9 @@ void __init prepare_namespace(void)
+ * For example, it is not atypical to wait 5 seconds here
+ * for the touchpad of a laptop to initialize.
+ */
++ async_synchronize_full();
+ wait_for_device_probe();
++ async_synchronize_full();
+
+ md_run_setup();
+
+--
+https://clearlinux.org
+
A 0115-enable-stateless-firmware-loading.patch => 0115-enable-stateless-firmware-loading.patch +28 -0
@@ 0,0 1,28 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: William Douglas <william.douglas@intel.com>
+Date: Wed, 20 Jun 2018 17:23:21 +0000
+Subject: [PATCH] enable stateless firmware loading
+
+Prefer the order of specific version before generic and /etc before
+/lib to enable the user to give specific overrides for generic
+firmware and distribution firmware.
+---
+ drivers/base/firmware_loader/main.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c
+index bdbedc6660a8..53b254e5240b 100644
+--- a/drivers/base/firmware_loader/main.c
++++ b/drivers/base/firmware_loader/main.c
+@@ -466,6 +466,8 @@ static int fw_decompress_xz(struct device *dev, struct fw_priv *fw_priv,
+ static char fw_path_para[256];
+ static const char * const fw_path[] = {
+ fw_path_para,
++ "/etc/firmware/" UTS_RELEASE,
++ "/etc/firmware",
+ "/lib/firmware/updates/" UTS_RELEASE,
+ "/lib/firmware/updates",
+ "/lib/firmware/" UTS_RELEASE,
+--
+https://clearlinux.org
+
A 0116-migrate-some-systemd-defaults-to-the-kernel-defaults.patch => 0116-migrate-some-systemd-defaults-to-the-kernel-defaults.patch +45 -0
@@ 0,0 1,45 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Auke Kok <auke-jan.h.kok@intel.com>
+Date: Thu, 2 Aug 2018 12:03:22 -0700
+Subject: [PATCH] migrate some systemd defaults to the kernel defaults.
+
+These settings are needed to prevent networking issues when
+the networking modules come up by default without explicit
+settings, which breaks some cases.
+
+We don't want the modprobe settings to be read at boot time
+if we're not going to do anything else ever.
+---
+ drivers/net/dummy.c | 2 +-
+ include/uapi/linux/if_bonding.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
+index f82ad7419508..5e8faa70aad6 100644
+--- a/drivers/net/dummy.c
++++ b/drivers/net/dummy.c
+@@ -43,7 +43,7 @@
+
+ #define DRV_NAME "dummy"
+
+-static int numdummies = 1;
++static int numdummies = 0;
+
+ /* fake multicast ability */
+ static void set_multicast_list(struct net_device *dev)
+diff --git a/include/uapi/linux/if_bonding.h b/include/uapi/linux/if_bonding.h
+index d174914a837d..bf8e2af101a3 100644
+--- a/include/uapi/linux/if_bonding.h
++++ b/include/uapi/linux/if_bonding.h
+@@ -82,7 +82,7 @@
+ #define BOND_STATE_ACTIVE 0 /* link is active */
+ #define BOND_STATE_BACKUP 1 /* link is backup */
+
+-#define BOND_DEFAULT_MAX_BONDS 1 /* Default maximum number of devices to support */
++#define BOND_DEFAULT_MAX_BONDS 0 /* Default maximum number of devices to support */
+
+ #define BOND_DEFAULT_TX_QUEUES 16 /* Default number of tx queues per device */
+
+--
+https://clearlinux.org
+
A 0117-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch => 0117-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch +56 -0
@@ 0,0 1,56 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Alan Cox <alan@linux.intel.com>
+Date: Thu, 10 Mar 2016 15:11:28 +0000
+Subject: [PATCH] xattr: allow setting user.* attributes on symlinks by owner
+
+Kvmtool and clear containers supports using user attributes to label host
+files with the virtual uid/guid of the file in the container. This allows an
+end user to manage their files and a complete uid space without all the ugly
+namespace stuff.
+
+The one gap in the support is symlinks because an end user can change the
+ownership of a symbolic link. We support attributes on these files as you
+can already (as root) set security attributes on them.
+
+The current rules seem slightly over-paranoid and as we have a use case this
+patch enables updating the attributes on a symbolic link IFF you are the
+owner of the synlink (as permissions are not usually meaningful on the link
+itself).
+
+Signed-off-by: Alan Cox <alan@linux.intel.com>
+---
+ fs/xattr.c | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/fs/xattr.c b/fs/xattr.c
+index 5c8c5175b385..0f98df2ea2e2 100644
+--- a/fs/xattr.c
++++ b/fs/xattr.c
+@@ -120,16 +120,17 @@ xattr_permission(struct user_namespace *mnt_userns, struct inode *inode,
+ }
+
+ /*
+- * In the user.* namespace, only regular files and directories can have
+- * extended attributes. For sticky directories, only the owner and
+- * privileged users can write attributes.
++ * In the user.* namespace, only regular files, symbolic links, and
++ * directories can have extended attributes. For symbolic links and
++ * sticky directories, only the owner and privileged users can write
++ * attributes.
+ */
+ if (!strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN)) {
+- if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
++ if (!S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode) && !S_ISLNK(inode->i_mode))
+ return (mask & MAY_WRITE) ? -EPERM : -ENODATA;
+- if (S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX) &&
+- (mask & MAY_WRITE) &&
+- !inode_owner_or_capable(mnt_userns, inode))
++ if (((S_ISDIR(inode->i_mode) && (inode->i_mode & S_ISVTX))
++ || S_ISLNK(inode->i_mode)) && (mask & MAY_WRITE)
++ && !inode_owner_or_capable(mnt_userns, inode))
+ return -EPERM;
+ }
+
+--
+https://clearlinux.org
+
A 0118-add-scheduler-turbo3-patch.patch => 0118-add-scheduler-turbo3-patch.patch +82 -0
@@ 0,0 1,82 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Wed, 21 Nov 2018 21:21:44 +0000
+Subject: [PATCH] add scheduler turbo3 patch
+
+Small scheduler tweak to make the scheduler more turbo3 aware
+---
+ arch/x86/kernel/itmt.c | 14 ++++++++++++++
+ kernel/sched/fair.c | 19 +++++++++++++++++++
+ 2 files changed, 33 insertions(+)
+
+diff --git a/arch/x86/kernel/itmt.c b/arch/x86/kernel/itmt.c
+index 1afbdd1dd777..d828ecf6bce7 100644
+--- a/arch/x86/kernel/itmt.c
++++ b/arch/x86/kernel/itmt.c
+@@ -172,6 +172,11 @@ int arch_asym_cpu_priority(int cpu)
+ return per_cpu(sched_core_priority, cpu);
+ }
+
++extern int best_core;
++extern int second_best_core;
++static int best_core_score;
++static int second_best_core_score;
++
+ /**
+ * sched_set_itmt_core_prio() - Set CPU priority based on ITMT
+ * @prio: Priority of cpu core
+@@ -201,5 +206,14 @@ void sched_set_itmt_core_prio(int prio, int core_cpu)
+ smt_prio = prio * smp_num_siblings / i;
+ per_cpu(sched_core_priority, cpu) = smt_prio;
+ i++;
++
++ if (smt_prio > best_core_score) {
++ best_core = cpu;
++ best_core_score = smt_prio;
++ } else
++ if (smt_prio > second_best_core_score) {
++ second_best_core = cpu;
++ second_best_core_score = smt_prio;
++ }
+ }
+ }
+diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
+index 3889fee98d11..6d925f337add 100644
+--- a/kernel/sched/fair.c
++++ b/kernel/sched/fair.c
+@@ -6836,6 +6836,10 @@ static int find_energy_efficient_cpu(struct task_struct *p, int prev_cpu)
+ *
+ * preempt must be disabled.
+ */
++
++int best_core = -1;
++int second_best_core = -1;
++
+ static int
+ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
+ {
+@@ -6860,6 +6864,21 @@ select_task_rq_fair(struct task_struct *p, int prev_cpu, int wake_flags)
+ want_affine = !wake_wide(p) && cpumask_test_cpu(cpu, p->cpus_ptr);
+ }
+
++ if (prev_cpu != best_core && prev_cpu != second_best_core &&
++ cpu_rq(prev_cpu)->nr_running != 0) {
++ if (second_best_core != -1 && cpu_rq(second_best_core)->nr_running == 0 &&
++ nr_iowait_cpu(second_best_core) < 2 && cpu_to_node(prev_cpu) == cpu_to_node(second_best_core))
++ prev_cpu = second_best_core;
++ if (best_core != -1 && cpu_rq(best_core)->nr_running == 0 &&
++ nr_iowait_cpu(best_core) < 2 && cpu_to_node(prev_cpu) == cpu_to_node(best_core))
++ prev_cpu = best_core;
++ }
++/*
++ if (prev_cpu > 0 && cpu_rq(prev_cpu)->nr_running != 0 && cpu_rq(prev_cpu - 1)->nr_running == 0)
++ prev_cpu = prev_cpu - 1;
++*/
++
++
+ rcu_read_lock();
+ for_each_domain(cpu, tmp) {
+ /*
+--
+https://clearlinux.org
+
A 0119-use-lfence-instead-of-rep-and-nop.patch => 0119-use-lfence-instead-of-rep-and-nop.patch +25 -0
@@ 0,0 1,25 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sat, 8 Dec 2018 18:21:32 +0000
+Subject: [PATCH] use lfence instead of rep and nop
+
+---
+ arch/x86/include/asm/vdso/processor.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/x86/include/asm/vdso/processor.h b/arch/x86/include/asm/vdso/processor.h
+index 57b1a7034c64..e2c45674f989 100644
+--- a/arch/x86/include/asm/vdso/processor.h
++++ b/arch/x86/include/asm/vdso/processor.h
+@@ -10,7 +10,7 @@
+ /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
+ static __always_inline void rep_nop(void)
+ {
+- asm volatile("rep; nop" ::: "memory");
++ asm volatile("lfence" ::: "memory");
+ }
+
+ static __always_inline void cpu_relax(void)
+--
+https://clearlinux.org
+
A 0120-do-accept-in-LIFO-order-for-cache-efficiency.patch => 0120-do-accept-in-LIFO-order-for-cache-efficiency.patch +89 -0
@@ 0,0 1,89 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Thu, 13 Dec 2018 01:00:49 +0000
+Subject: [PATCH] do accept() in LIFO order for cache efficiency
+
+---
+ include/linux/wait.h | 2 ++
+ kernel/sched/wait.c | 24 ++++++++++++++++++++++++
+ net/ipv4/inet_connection_sock.c | 2 +-
+ 3 files changed, 27 insertions(+), 1 deletion(-)
+
+diff --git a/include/linux/wait.h b/include/linux/wait.h
+index 6598ae35e1b5..100dbbcd0df9 100644
+--- a/include/linux/wait.h
++++ b/include/linux/wait.h
+@@ -165,6 +165,7 @@ static inline bool wq_has_sleeper(struct wait_queue_head *wq_head)
+
+ extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
++extern void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ extern void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+
+@@ -1137,6 +1138,7 @@ do { \
+ */
+ void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+ bool prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
++void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+ long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+ void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long timeout);
+diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
+index 76577d1642a5..c33f48ed2bbb 100644
+--- a/kernel/sched/wait.c
++++ b/kernel/sched/wait.c
+@@ -48,6 +48,17 @@ void add_wait_queue_priority(struct wait_queue_head *wq_head, struct wait_queue_
+ }
+ EXPORT_SYMBOL_GPL(add_wait_queue_priority);
+
++void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
++{
++ unsigned long flags;
++
++ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
++ spin_lock_irqsave(&wq_head->lock, flags);
++ __add_wait_queue(wq_head, wq_entry);
++ spin_unlock_irqrestore(&wq_head->lock, flags);
++}
++EXPORT_SYMBOL(add_wait_queue_exclusive_lifo);
++
+ void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
+ {
+ unsigned long flags;
+@@ -283,6 +294,19 @@ prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_ent
+ }
+ EXPORT_SYMBOL(prepare_to_wait_exclusive);
+
++void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
++{
++ unsigned long flags;
++
++ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
++ spin_lock_irqsave(&wq_head->lock, flags);
++ if (list_empty(&wq_entry->entry))
++ __add_wait_queue(wq_head, wq_entry);
++ set_current_state(state);
++ spin_unlock_irqrestore(&wq_head->lock, flags);
++}
++EXPORT_SYMBOL(prepare_to_wait_exclusive_lifo);
++
+ void init_wait_entry(struct wait_queue_entry *wq_entry, int flags)
+ {
+ wq_entry->flags = flags;
+diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
+index fd472eae4f5c..d85f68c9f4a6 100644
+--- a/net/ipv4/inet_connection_sock.c
++++ b/net/ipv4/inet_connection_sock.c
+@@ -433,7 +433,7 @@ static int inet_csk_wait_for_connect(struct sock *sk, long timeo)
+ * having to remove and re-insert us on the wait queue.
+ */
+ for (;;) {
+- prepare_to_wait_exclusive(sk_sleep(sk), &wait,
++ prepare_to_wait_exclusive_lifo(sk_sleep(sk), &wait,
+ TASK_INTERRUPTIBLE);
+ release_sock(sk);
+ if (reqsk_queue_empty(&icsk->icsk_accept_queue))
+--
+https://clearlinux.org
+
A 0121-locking-rwsem-spin-faster.patch => 0121-locking-rwsem-spin-faster.patch +35 -0
@@ 0,0 1,35 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sun, 18 Feb 2018 23:35:41 +0000
+Subject: [PATCH] locking: rwsem: spin faster
+
+tweak rwsem owner spinning a bit
+---
+ kernel/locking/rwsem.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
+index 809b0016d344..2cc79a87c1ca 100644
+--- a/kernel/locking/rwsem.c
++++ b/kernel/locking/rwsem.c
+@@ -668,6 +668,7 @@ rwsem_spin_on_owner(struct rw_semaphore *sem)
+ struct task_struct *new, *owner;
+ unsigned long flags, new_flags;
+ enum owner_state state;
++ int i = 0;
+
+ owner = rwsem_owner_flags(sem, &flags);
+ state = rwsem_owner_state(owner, flags);
+@@ -701,7 +702,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem)
+ break;
+ }
+
+- cpu_relax();
++ if (i++ > 1000)
++ cpu_relax();
+ }
+ rcu_read_unlock();
+
+--
+https://clearlinux.org
+
A 0122-ata-libahci-ignore-staggered-spin-up.patch => 0122-ata-libahci-ignore-staggered-spin-up.patch +42 -0
@@ 0,0 1,42 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Joe Konno <joe.konno@intel.com>
+Date: Tue, 25 Jun 2019 10:35:54 -0700
+Subject: [PATCH] ata: libahci: ignore staggered spin-up
+
+Change libahci to ignore firmware's staggered spin-up flag. End-users
+who wish to honor firmware's SSS flag can add the following kernel
+parameter to a new file at /etc/kernel/cmdline.d/ignore_sss.conf:
+ libahci.ignore_sss=0
+
+And then run
+ sudo clr-boot-manager update
+
+Signed-off-by: Joe Konno <joe.konno@intel.com>
+---
+ drivers/ata/libahci.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
+index fec2e9754aed..e339cb80f29b 100644
+--- a/drivers/ata/libahci.c
++++ b/drivers/ata/libahci.c
+@@ -33,14 +33,14 @@
+ #include "libata.h"
+
+ static int ahci_skip_host_reset;
+-int ahci_ignore_sss;
++int ahci_ignore_sss=1;
+ EXPORT_SYMBOL_GPL(ahci_ignore_sss);
+
+ module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444);
+ MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)");
+
+ module_param_named(ignore_sss, ahci_ignore_sss, int, 0444);
+-MODULE_PARM_DESC(ignore_sss, "Ignore staggered spinup flag (0=don't ignore, 1=ignore)");
++MODULE_PARM_DESC(ignore_sss, "Ignore staggered spinup flag (0=don't ignore, 1=ignore [default])");
+
+ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
+ unsigned hints);
+--
+https://clearlinux.org
+
A 0123-print-CPU-that-faults.patch => 0123-print-CPU-that-faults.patch +29 -0
@@ 0,0 1,29 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sat, 10 Aug 2019 03:19:04 +0000
+Subject: [PATCH] print CPU that faults
+
+print cpu number when we print a crash
+---
+ arch/x86/mm/fault.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
+index 6bda7f67d737..cc37727abe98 100644
+--- a/arch/x86/mm/fault.c
++++ b/arch/x86/mm/fault.c
+@@ -771,9 +771,9 @@ show_signal_msg(struct pt_regs *regs, unsigned long error_code,
+ if (!printk_ratelimit())
+ return;
+
+- printk("%s%s[%d]: segfault at %lx ip %px sp %px error %lx",
++ printk("%s%s[%d]: segfault at %lx ip %px sp %px error %lx cpu %i",
+ loglvl, tsk->comm, task_pid_nr(tsk), address,
+- (void *)regs->ip, (void *)regs->sp, error_code);
++ (void *)regs->ip, (void *)regs->sp, error_code, raw_smp_processor_id());
+
+ print_vma_addr(KERN_CONT " in ", regs->ip);
+
+--
+https://clearlinux.org
+
A 0127-nvme-workaround.patch => 0127-nvme-workaround.patch +25 -0
@@ 0,0 1,25 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Mon, 11 Nov 2019 23:12:11 +0000
+Subject: [PATCH] nvme workaround
+
+---
+ drivers/nvme/host/core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
+index a13eec2fca5a..a53b2968370c 100644
+--- a/drivers/nvme/host/core.c
++++ b/drivers/nvme/host/core.c
+@@ -48,7 +48,7 @@ static u8 nvme_max_retries = 5;
+ module_param_named(max_retries, nvme_max_retries, byte, 0644);
+ MODULE_PARM_DESC(max_retries, "max number of retries a command may have");
+
+-static unsigned long default_ps_max_latency_us = 100000;
++static unsigned long default_ps_max_latency_us = 200;
+ module_param(default_ps_max_latency_us, ulong, 0644);
+ MODULE_PARM_DESC(default_ps_max_latency_us,
+ "max power saving latency for new devices; use PM QOS to change per device");
+--
+https://clearlinux.org
+
A 0128-don-t-report-an-error-if-PowerClamp-run-on-other-CPU.patch => 0128-don-t-report-an-error-if-PowerClamp-run-on-other-CPU.patch +40 -0
@@ 0,0 1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Alexander Koskovich <zvnexus@outlook.com>
+Date: Wed, 12 Feb 2020 22:47:12 +0000
+Subject: [PATCH] don't report an error if PowerClamp run on other CPU
+
+---
+ drivers/thermal/intel/intel_powerclamp.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/thermal/intel/intel_powerclamp.c b/drivers/thermal/intel/intel_powerclamp.c
+index b0eb5ece9243..5dc056d31c36 100644
+--- a/drivers/thermal/intel/intel_powerclamp.c
++++ b/drivers/thermal/intel/intel_powerclamp.c
+@@ -647,6 +647,11 @@ static struct thermal_cooling_device_ops powerclamp_cooling_ops = {
+ .set_cur_state = powerclamp_set_cur_state,
+ };
+
++static const struct x86_cpu_id amd_cpu[] = {
++ { X86_VENDOR_AMD },
++ {},
++};
++
+ static const struct x86_cpu_id __initconst intel_powerclamp_ids[] = {
+ X86_MATCH_VENDOR_FEATURE(INTEL, X86_FEATURE_MWAIT, NULL),
+ {}
+@@ -656,6 +661,11 @@ MODULE_DEVICE_TABLE(x86cpu, intel_powerclamp_ids);
+ static int __init powerclamp_probe(void)
+ {
+
++ if (x86_match_cpu(amd_cpu)){
++ pr_info("Intel PowerClamp does not support AMD CPUs\n");
++ return -ENODEV;
++ }
++
+ if (!x86_match_cpu(intel_powerclamp_ids)) {
+ pr_err("CPU does not support MWAIT\n");
+ return -ENODEV;
+--
+https://clearlinux.org
+
M APKBUILD => APKBUILD +46 -1
@@ 15,7 15,29 @@ source="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${pkgver}.tar.xz
config
fast_skylake.patch
openwrt-402-ath_regd_optional.patch
- "
+ 0101-i8042-decrease-debug-message-level-to-info.patch
+ 0102-increase-the-ext4-default-commit-age.patch
+ 0103-silence-rapl.patch
+ 0104-pci-pme-wakeups.patch
+ 0105-ksm-wakeups.patch
+ 0106-intel_idle-tweak-cpuidle-cstates.patch
+ 0108-smpboot-reuse-timer-calibration.patch
+ 0109-initialize-ata-before-graphics.patch
+ 0110-give-rdrand-some-credit.patch
+ 0111-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
+ 0112-init-wait-for-partition-and-retry-scan.patch
+ 0115-enable-stateless-firmware-loading.patch
+ 0116-migrate-some-systemd-defaults-to-the-kernel-defaults.patch
+ 0117-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
+ 0118-add-scheduler-turbo3-patch.patch
+ 0119-use-lfence-instead-of-rep-and-nop.patch
+ 0120-do-accept-in-LIFO-order-for-cache-efficiency.patch
+ 0121-locking-rwsem-spin-faster.patch
+ 0122-ata-libahci-ignore-staggered-spin-up.patch
+ 0123-print-CPU-that-faults.patch
+ 0127-nvme-workaround.patch
+ 0128-don-t-report-an-error-if-PowerClamp-run-on-other-CPU.patch
+ raid6.patch"
builddir="$srcdir/linux-${pkgver}"
build() {
@@ 42,4 64,27 @@ bfa8f7a4a742038ebf8f9a5b151554e268545543abca1ea1817fffcf388d6a5f3af3dce1c8279824
346ed2f9431c302e85642979e5779172edaa9ee7b4c6b751bd7a6fd77bb7073c4fd0655cb8b52f0b196ed90f1d9a6a1b82abb0d5e8fe118a9bcdc41ef7c7c353 config
cb786c1fa30ab88020988929cfb71bac9164154bfe67f977654f14315d913e3c6dfa7c99c89b02ee7663d5c0817e22d4cc5c57288b7fa6c46333b0cac8acc618 fast_skylake.patch
c0c5d023cac625dfe3086b37b5abb4be8981db301a468e93d495c08b7650debbf47b7a24c39293731951315658164e36783e5a46fb26fc51ed6fc72e3716307c openwrt-402-ath_regd_optional.patch
+7a26ba37bd384da0f32c0b2f545357f010c2287601e9b5d6e3cfe7109f5eb21c9de221ba0d15df0fa190ca40062bc556ec98366dd40c1232992c2a6320dda3a1 0101-i8042-decrease-debug-message-level-to-info.patch
+5c8b294f64465136a5c5b954b72c8fa21a7936254fe7ecd2e5d9b71e443a242dd44e9cb4022bb9bd906fb4c908300ada75e37766a74a74cac91c483bda707e9d 0102-increase-the-ext4-default-commit-age.patch
+185c63f34dd8da41abefd836bdc2ca423de693104901a8b1c213f6456e8e1661c5f9ba46a93769fc635f0226275aac4127f9432c42c8532bed21da968179adee 0103-silence-rapl.patch
+a9751892b7d1c30026d2f7e23c5493da71fe4a35a0899dccb64cdfff3e67a9dfeef95c2acbad2135d948b73b506f85adc20e9b118b841358e184ad5b99a21c5e 0104-pci-pme-wakeups.patch
+f36030e3c00dc00e7b403750de9d2632a87e826feae62f439bf0a57132209610a9401c18c4247d0c51f082266f67a3771ce9db5363e9b639fc53deb2a283d76f 0105-ksm-wakeups.patch
+2a97f3260f9bf6b1a9ae185d974c9537eb2c38045ef0fd3e7fb607b6815bf8fd6d9580c8517340e65b1845fd8eead20f32bbfb970f92f00a3eac7fd517325cc8 0106-intel_idle-tweak-cpuidle-cstates.patch
+38a66f7899c0e28ec2a67b8d925a32e5a16de70bf3810dd95f3c4a43b641dc66aa96246584bffdaf4f1f3e22c29ddffff37909607cb020b890c5897957bb556c 0108-smpboot-reuse-timer-calibration.patch
+7f25e7904061ba13daae95145a065a805a8b2b4d99166496f85f1d03d935560ecc089aca123009e1f34aa439c2e818ebc167dd4d8270749987815644860ff088 0109-initialize-ata-before-graphics.patch
+931684c61eb68c1db790b07749b63706bb8bf142222ef5093dda7754d6b924aed3f02d2b589cdf7c4ac4e2e9d5a0932f20b7a87ae67cef38590cf0f28abf5ce5 0110-give-rdrand-some-credit.patch
+855a1cc42943467e69978b108b89bbab03e7ebfa3f4d9c22dd64e6149087e37522808b2dbc70b6fdb3713ca66837a7124b6f96cb515d4c8a106f81c7d035f919 0111-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
+24bbbe7f2ac4d24efd4eda13d72931380ed7d02ffc4fef5b6fd5bb7f6870e22b434f840bd5e6129eaa7cae78b949a231c9e2f9f131263fdafc7e0c65b2393aab 0112-init-wait-for-partition-and-retry-scan.patch
+3c22016715407c353d2f9b92b27a59e7d19e2b10a0a6752729566a847da5b05a938daaa60c3ff04367746381b6b362d0bdd3d9d37ea86664345c8a198af75fca 0115-enable-stateless-firmware-loading.patch
+ead629b352126972268e96e6f0b34b558b96fbc9d0efbb7b6c560671fe61c97272492509f190b682c2b7db0da485886a941f58a502d72095c208e492f2f4ccd0 0116-migrate-some-systemd-defaults-to-the-kernel-defaults.patch
+6d123b4de7a3dafd39838e648c5158c1153c759dcaaa5cc9812250908b90e0dc8e23fd0429251b1d4b687b278e140115abb70b5e127b163c842154e7debb8f74 0117-xattr-allow-setting-user.-attributes-on-symlinks-by-.patch
+7c1bafba0db4f0e35d8944f41a7eeccd8e5f26c4e7db4c11c0495595792939af108cc5c7813a972e632595bc7f02bf7e0e09c4895aea8975a06a25b0536b5c4d 0118-add-scheduler-turbo3-patch.patch
+027832a5a2e671095460bf069d9a9c02dbf015956938f21bfa3c400aa53be81c75ce367fcc77a82e01bd10ce2f89f2df54bb8ca321ff9cca6d31d69c89dd4353 0119-use-lfence-instead-of-rep-and-nop.patch
+4dd052eedea533f2fc399a661f95c0688fc33df765f939236a3c6e19e7f326f4417b5457faeee02348fa8b4b2b89fedee115272d1f79372dfb85b7322d181c68 0120-do-accept-in-LIFO-order-for-cache-efficiency.patch
+62bc9eb104baf034d9fd37790bfcf6fb17c6fe1f6e1744fe8810a3a001a57ffb15e25215b4bf7eb8e14dd9183d28c66880f9bbc22b2af1d72ebb7777c7e5cf20 0121-locking-rwsem-spin-faster.patch
+f0c56377b2b6677de9bdc8a56db8485272951fb2d5ef1c76fb65e5bbaffb49cebd1caf1283d5bfd4d883a54a82807c23aebcc7ec5dec19c55ddcf6d445a1a2de 0122-ata-libahci-ignore-staggered-spin-up.patch
+1b18d54e9c036096f4e586d86b62b4144bf743177a504839c0f37f72555f4b5acc1791b940eece2e4b57b213390adebd4f86533e5e51220313d85437b9ff635b 0123-print-CPU-that-faults.patch
+81a45dd801e88647e8ff69e089e9bbe3f37496bc0e558914958c67b44b3d29ce00cdb2bba54219708eb6882b1eb43355dec8ea6d1e5dd26470dc52551cdba97e 0127-nvme-workaround.patch
+44b88ef3e60355e8f40f2d2ad9dea8522695f505bdeab425f3ff49b9bc5234a1bfc630b1ee0264845acc7f747cf53963620682d1953bf2352ce0776a291d3840 0128-don-t-report-an-error-if-PowerClamp-run-on-other-CPU.patch
+f0ca097bc177ba78f77a02f36ff1226790f9c241a33c38a88d3efad37e5c03a0ce9ca66e97c3d7b49633f0cbabec66364e3e50459a4f1b38d11a1db0219d6669 raid6.patch
"
A pull-clr-patches.sh => pull-clr-patches.sh +32 -0
@@ 0,0 1,32 @@
+#!/bin/sh
+
+set -e
+
+rm -f 01*.patch
+
+# CLR patches starts with 01
+curl -L https://github.com/clearlinux-pkgs/linux/archive/master.zip | busybox unzip - 'linux-master/01*' 'linux-master/raid6.patch'
+
+cd linux-master
+
+# remove unwanted patches
+
+## misc prints
+rm *-bootstats-add-printk-s-to-measure-boot-time-in-more-.patch
+rm *-print-fsync-count-for-bootchart.patch
+
+## wtf?
+rm *-add-boot-option-to-allow-unsigned-modules.patch
+rm *-x86-microcode-Force-update-a-uCode-even-if-the-rev-i.patch
+rm *-x86-microcode-echo-2-reload-to-force-load-ucode.patch
+rm *-fix-bug-in-ucode-force-reload-revision-check.patch
+
+for i in *;do
+ printf "\t%s\n" "$i"
+done
+
+cp * ../
+
+cd ..
+
+rm -rf linux-master
A raid6.patch => raid6.patch +26 -0
@@ 0,0 1,26 @@
+--- linux-5.14.7/lib/raid6/algos.c~ 2021-09-22 10:39:33.000000000 +0000
++++ linux-5.14.7/lib/raid6/algos.c 2021-09-27 17:36:50.117114553 +0000
+@@ -128,8 +128,10 @@
+
+ for (best = NULL, algo = raid6_recov_algos; *algo; algo++)
+ if (!best || (*algo)->priority > best->priority)
+- if (!(*algo)->valid || (*algo)->valid())
++ if (!(*algo)->valid || (*algo)->valid()) {
+ best = *algo;
++ break;
++ }
+
+ if (best) {
+ raid6_2data_recov = best->data2;
+@@ -198,8 +200,10 @@
+ }
+ preempt_enable();
+
+- if (best == *algo)
++ if (best == *algo) {
+ bestxorperf = perf;
++ break;
++ }
+
+ pr_info("raid6: %-8s xor() %5ld MB/s\n", (*algo)->name,
+ (perf * HZ * (disks-2)) >>