]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.4
authorSasha Levin <sashal@kernel.org>
Sun, 5 Jul 2020 13:48:01 +0000 (09:48 -0400)
committerSasha Levin <sashal@kernel.org>
Sun, 5 Jul 2020 13:48:01 +0000 (09:48 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch b/queue-4.4/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch
new file mode 100644 (file)
index 0000000..54f9ca4
--- /dev/null
@@ -0,0 +1,98 @@
+From c3ef3c7647234b14e99ae1c3f807f686de0ab0c6 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 28 Jan 2017 22:00:49 +0800
+Subject: sched/rt: Show the 'sched_rr_timeslice' SCHED_RR timeslice tuning
+ knob in milliseconds
+
+From: Shile Zhang <shile.zhang@nokia.com>
+
+[ Upstream commit 975e155ed8732cb81f55c021c441ae662dd040b5 ]
+
+We added the 'sched_rr_timeslice_ms' SCHED_RR tuning knob in this commit:
+
+  ce0dbbbb30ae ("sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice")
+
+... which name suggests to users that it's in milliseconds, while in reality
+it's being set in milliseconds but the result is shown in jiffies.
+
+This is obviously confusing when HZ is not 1000, it makes it appear like the
+value set failed, such as HZ=100:
+
+  root# echo 100 > /proc/sys/kernel/sched_rr_timeslice_ms
+  root# cat /proc/sys/kernel/sched_rr_timeslice_ms
+  10
+
+Fix this to be milliseconds all around.
+
+Signed-off-by: Shile Zhang <shile.zhang@nokia.com>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Mike Galbraith <efault@gmx.de>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Link: http://lkml.kernel.org/r/1485612049-20923-1-git-send-email-shile.zhang@nokia.com
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/linux/sched/sysctl.h | 1 +
+ kernel/sched/core.c          | 5 +++--
+ kernel/sched/rt.c            | 1 +
+ kernel/sysctl.c              | 2 +-
+ 4 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h
+index c9e4731cf10b8..7fc36ebc5de33 100644
+--- a/include/linux/sched/sysctl.h
++++ b/include/linux/sched/sysctl.h
+@@ -81,6 +81,7 @@ extern unsigned int sysctl_sched_cfs_bandwidth_slice;
+ extern unsigned int sysctl_sched_autogroup_enabled;
+ #endif
++extern int sysctl_sched_rr_timeslice;
+ extern int sched_rr_timeslice;
+ extern int sched_rr_handler(struct ctl_table *table, int write,
+diff --git a/kernel/sched/core.c b/kernel/sched/core.c
+index 14a87c1f3a3ac..4a0a754f24c87 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -8266,8 +8266,9 @@ int sched_rr_handler(struct ctl_table *table, int write,
+       /* make sure that internally we keep jiffies */
+       /* also, writing zero resets timeslice to default */
+       if (!ret && write) {
+-              sched_rr_timeslice = sched_rr_timeslice <= 0 ?
+-                      RR_TIMESLICE : msecs_to_jiffies(sched_rr_timeslice);
++              sched_rr_timeslice =
++                      sysctl_sched_rr_timeslice <= 0 ? RR_TIMESLICE :
++                      msecs_to_jiffies(sysctl_sched_rr_timeslice);
+       }
+       mutex_unlock(&mutex);
+       return ret;
+diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
+index 801b4ec407023..5ee5740635f36 100644
+--- a/kernel/sched/rt.c
++++ b/kernel/sched/rt.c
+@@ -9,6 +9,7 @@
+ #include <linux/irq_work.h>
+ int sched_rr_timeslice = RR_TIMESLICE;
++int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
+ static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun);
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index c2dddd335d064..ecbb1b764a82e 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -412,7 +412,7 @@ static struct ctl_table kern_table[] = {
+       },
+       {
+               .procname       = "sched_rr_timeslice_ms",
+-              .data           = &sched_rr_timeslice,
++              .data           = &sysctl_sched_rr_timeslice,
+               .maxlen         = sizeof(int),
+               .mode           = 0644,
+               .proc_handler   = sched_rr_handler,
+-- 
+2.25.1
+
index 95ad0ab9df1a65bf972abcde70a68aa9d3ebb4d8..0d9266129c82a79dbd07a0a480fe69b49d2cbc58 100644 (file)
@@ -5,3 +5,4 @@ edac-amd64-read-back-the-scrub-rate-pci-register-on-.patch
 mm-slub-fix-stack-overruns-with-slub_stats.patch
 usb-usbtest-fix-missing-kfree-dev-buf-in-usbtest_dis.patch
 kgdb-avoid-suspicious-rcu-usage-warning.patch
+sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch