From ce85ef24fd8b838638c581ac808d4e71b7949fec Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Sun, 5 Jul 2020 09:48:01 -0400 Subject: [PATCH] Fixes for 4.4 Signed-off-by: Sasha Levin --- ...e-sched_rr_timeslice-sched_rr-timesl.patch | 98 +++++++++++++++++++ queue-4.4/series | 1 + 2 files changed, 99 insertions(+) create mode 100644 queue-4.4/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch 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 index 00000000000..54f9ca4b9c7 --- /dev/null +++ b/queue-4.4/sched-rt-show-the-sched_rr_timeslice-sched_rr-timesl.patch @@ -0,0 +1,98 @@ +From c3ef3c7647234b14e99ae1c3f807f686de0ab0c6 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 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 + + 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 + diff --git a/queue-4.4/series b/queue-4.4/series index 95ad0ab9df1..0d9266129c8 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -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 -- 2.47.3