summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch')
-rw-r--r--recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch b/recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch
new file mode 100644
index 0000000..349604c
--- /dev/null
+++ b/recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch
@@ -0,0 +1,61 @@
1From 92f0d4f695198fcb935cf0360f93a15bf0a6af1e Mon Sep 17 00:00:00 2001
2From: Kevin Hilman <khilman@linaro.org>
3Date: Mon, 16 Sep 2013 15:43:48 -0700
4Subject: [PATCH 3/3] sched/nohz: add debugfs control over
5 sched_tick_max_deferment
6
7Allow debugfs override of sched_tick_max_deferment in order to ease
8finding/fixing the remaining issues with full nohz.
9
10The value to be written is in jiffies, and -1 means the max deferment
11is disabled (scheduler_tick_max_deferment() returns KTIME_MAX.)
12
13Cc: Frederic Weisbecker <fweisbec@gmail.com>
14Signed-off-by: Kevin Hilman <khilman@linaro.org>
15---
16 kernel/sched/core.c | 16 +++++++++++++++-
17 1 file changed, 15 insertions(+), 1 deletion(-)
18
19diff --git a/kernel/sched/core.c b/kernel/sched/core.c
20index e8b3350..59c7367 100644
21--- a/kernel/sched/core.c
22+++ b/kernel/sched/core.c
23@@ -2753,6 +2753,8 @@ void scheduler_tick(void)
24 }
25
26 #ifdef CONFIG_NO_HZ_FULL
27+static u32 sched_tick_max_deferment = HZ;
28+
29 /**
30 * scheduler_tick_max_deferment
31 *
32@@ -2769,13 +2771,25 @@ u64 scheduler_tick_max_deferment(void)
33 struct rq *rq = this_rq();
34 unsigned long next, now = ACCESS_ONCE(jiffies);
35
36- next = rq->last_sched_tick + HZ;
37+ if (sched_tick_max_deferment == -1)
38+ return KTIME_MAX;
39+
40+ next = rq->last_sched_tick + sched_tick_max_deferment;
41
42 if (time_before_eq(next, now))
43 return 0;
44
45 return jiffies_to_usecs(next - now) * NSEC_PER_USEC;
46 }
47+
48+static __init int sched_nohz_full_init_debug(void)
49+{
50+ debugfs_create_u32("sched_tick_max_deferment", 0644, NULL,
51+ &sched_tick_max_deferment);
52+
53+ return 0;
54+}
55+late_initcall(sched_nohz_full_init_debug);
56 #endif
57
58 notrace unsigned long get_parent_ip(unsigned long addr)
59--
601.7.10.4
61