]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.9
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.9/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch b/queue-4.9/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch
new file mode 100644 (file)
index 0000000..dd02ddb
--- /dev/null
@@ -0,0 +1,98 @@
+From 38e77b3e97b13bf468732f5f5f705a602fe94cde 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 05e8b6e4edcb6..debcd4bf22956 100644
+--- a/include/linux/sched/sysctl.h
++++ b/include/linux/sched/sysctl.h
+@@ -60,6 +60,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 870d802c46f90..c7c7ba8807f83 100644
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -8389,8 +8389,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 9ab4d73e9cc95..5034c41a53130 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 34449ec0689d0..513e6da318c47 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
+@@ -426,7 +426,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 261715fe04975816f487af2910d7616779d4a30e..1c9bb7c59b11795ba467c90c70384f0ff7ef3ee7 100644 (file)
@@ -8,3 +8,4 @@ mm-slub.c-fix-corrupted-freechain-in-deactivate_slab.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