ac8d1c9d39
(targets 5.11 rc2 by default as it's the current latest)
361 lines
12 KiB
Diff
361 lines
12 KiB
Diff
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 c9338f9..6974fbf 100644
|
|
--- a/drivers/pci/pci.c
|
|
+++ b/drivers/pci/pci.c
|
|
@@ -62,7 +62,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
|
|
|
|
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 f449584..c994d24 100644
|
|
--- a/drivers/idle/intel_idle.c
|
|
+++ b/drivers/idle/intel_idle.c
|
|
@@ -531,7 +531,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, },
|
|
{
|
|
@@ -539,7 +539,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, },
|
|
{
|
|
@@ -547,7 +547,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, },
|
|
{
|
|
@@ -555,7 +555,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, },
|
|
{
|
|
@@ -563,7 +563,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, },
|
|
{
|
|
@@ -571,7 +571,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, },
|
|
{
|
|
@@ -579,7 +579,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, },
|
|
{
|
|
@@ -599,7 +599,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, },
|
|
{
|
|
@@ -607,7 +607,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, },
|
|
{
|
|
@@ -615,7 +615,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, },
|
|
{
|
|
@@ -623,7 +623,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, },
|
|
{
|
|
@@ -631,7 +631,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, },
|
|
{
|
|
@@ -639,7 +639,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, },
|
|
{
|
|
@@ -647,7 +647,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, },
|
|
{
|
|
@@ -668,7 +668,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, },
|
|
{
|
|
@@ -676,7 +676,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, },
|
|
{
|
|
@@ -684,7 +684,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, },
|
|
{
|
|
@@ -692,7 +692,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, },
|
|
{
|
|
@@ -700,7 +700,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, },
|
|
{
|
|
@@ -708,7 +708,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, },
|
|
{
|
|
@@ -716,7 +716,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, },
|
|
{
|
|
@@ -737,7 +737,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
|
|
|
|
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 30c1142..4345075 100644
|
|
--- a/net/ipv4/tcp.c
|
|
+++ b/net/ipv4/tcp.c
|
|
@@ -4201,8 +4201,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
|
|
|
|
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 f11b9bd..1bbfcc1 100644
|
|
--- a/kernel/locking/rwsem.c
|
|
+++ b/kernel/locking/rwsem.c
|
|
@@ -717,6 +717,7 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
|
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, nonspinnable);
|
|
@@ -750,7 +751,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
|
|
break;
|
|
}
|
|
|
|
- cpu_relax();
|
|
+ if (i++ > 1000)
|
|
+ cpu_relax();
|
|
}
|
|
rcu_read_unlock();
|
|
|
|
--
|
|
https://clearlinux.org
|
|
|
|
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 c0cd1b9..af1e2fb 100644
|
|
--- a/drivers/Makefile
|
|
+++ b/drivers/Makefile
|
|
@@ -59,15 +59,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-$(CONFIG_NVM) += lightnvm/
|
|
obj-y += base/ block/ misc/ mfd/ nfc/
|
|
@@ -80,6 +73,14 @@ obj-$(CONFIG_IDE) += ide/
|
|
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
|
|
|