From 50f0bbdf3b9a0aa26f8c30287874e8ad4153f392 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Sun, 5 Jul 2020 09:48:01 -0400 Subject: [PATCH] Fixes for 4.9 Signed-off-by: Sasha Levin --- ...e-sched_rr_timeslice-sched_rr-timesl.patch | 98 +++++++++++++++++++ queue-4.9/series | 1 + 2 files changed, 99 insertions(+) create mode 100644 queue-4.9/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch 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 index 00000000000..dd02ddb963e --- /dev/null +++ b/queue-4.9/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch @@ -0,0 +1,98 @@ +From 38e77b3e97b13bf468732f5f5f705a602fe94cde Mon Sep 17 00:00:00 2001 +From: Sasha Levin +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 + +[ 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 +Signed-off-by: Peter Zijlstra (Intel) +Cc: Linus Torvalds +Cc: Mike Galbraith +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Link: http://lkml.kernel.org/r/1485612049-20923-1-git-send-email-shile.zhang@nokia.com +Signed-off-by: Ingo Molnar +Signed-off-by: Sasha Levin +--- + 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 + + 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 + diff --git a/queue-4.9/series b/queue-4.9/series index 261715fe049..1c9bb7c59b1 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -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 -- 2.47.3