summaryrefslogtreecommitdiff
path: root/sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-11-04 02:42:59 +0000
committerV3n3RiX <venerix@redcorelinux.org>2018-11-04 02:42:59 +0000
commit2a64b546a0efd4bb7f5907db9a02a03c2bb045ed (patch)
tree3c30a3f683aae9303c7c5bc133dbce6eaeeca746 /sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch
parent6afcc60d32a78331bc2e5fed072b042fb77bd17c (diff)
sys-kernel/linux-{image,sources}-redcore-lts :
* version bump to v4.14.75 * adjust MuQSS v0.162 CPU scheduler to linux-hardened and enable it by default * add BFQ-SQ v8r12 I/O scheduler and enable it by default * lower HZ to 100 (recommended value for MuQSS enabled kernels) * disable dynamic ticks (MuQSS itself is a tickless scheduler, so no longer required)
Diffstat (limited to 'sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch')
-rw-r--r--sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch b/sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch
new file mode 100644
index 00000000..2f065652
--- /dev/null
+++ b/sys-kernel/linux-image-redcore-lts/files/0006-Convert-msleep-to-use-hrtimers-when-active.patch
@@ -0,0 +1,54 @@
+From 9df803c28bb8ccb2588c0ccaf857b9e673175fed Mon Sep 17 00:00:00 2001
+From: Con Kolivas <kernel@kolivas.org>
+Date: Fri, 4 Nov 2016 09:25:54 +1100
+Subject: [PATCH 06/16] Convert msleep to use hrtimers when active.
+
+---
+ kernel/time/timer.c | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/time/timer.c b/kernel/time/timer.c
+index dd4d1b193286..c68cb9307f64 100644
+--- a/kernel/time/timer.c
++++ b/kernel/time/timer.c
+@@ -1884,7 +1884,19 @@ void __init init_timers(void)
+ */
+ void msleep(unsigned int msecs)
+ {
+- unsigned long timeout = msecs_to_jiffies(msecs) + 1;
++ int jiffs = msecs_to_jiffies(msecs);
++ unsigned long timeout;
++
++ /*
++ * Use high resolution timers where the resolution of tick based
++ * timers is inadequate.
++ */
++ if (jiffs < 5 && hrtimer_resolution < NSEC_PER_SEC / HZ) {
++ while (msecs)
++ msecs = schedule_msec_hrtimeout_uninterruptible(msecs);
++ return;
++ }
++ timeout = msecs_to_jiffies(msecs) + 1;
+
+ while (timeout)
+ timeout = schedule_timeout_uninterruptible(timeout);
+@@ -1898,7 +1910,15 @@ EXPORT_SYMBOL(msleep);
+ */
+ unsigned long msleep_interruptible(unsigned int msecs)
+ {
+- unsigned long timeout = msecs_to_jiffies(msecs) + 1;
++ int jiffs = msecs_to_jiffies(msecs);
++ unsigned long timeout;
++
++ if (jiffs < 5 && hrtimer_resolution < NSEC_PER_SEC / HZ) {
++ while (msecs && !signal_pending(current))
++ msecs = schedule_msec_hrtimeout_interruptible(msecs);
++ return msecs;
++ }
++ timeout = msecs_to_jiffies(msecs) + 1;
+
+ while (timeout && !signal_pending(current))
+ timeout = schedule_timeout_interruptible(timeout);
+--
+2.11.0
+