From c2da06c175b7ce286c2acdf44d891bfdf8cd8def Mon Sep 17 00:00:00 2001 From: Adrian Dudau Date: Thu, 26 Jun 2014 13:53:30 +0200 Subject: initial commit for Enea Linux 4.0 Migrated from the internal git server on the daisy-enea branch Signed-off-by: Adrian Dudau --- ...add-debugfs-control-over-sched_tick_max_d.patch | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch (limited to 'recipes-kernel/linux/files/patches/sched-nohz-add-debugfs-control-over-sched_tick_max_d.patch') 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 @@ +From 92f0d4f695198fcb935cf0360f93a15bf0a6af1e Mon Sep 17 00:00:00 2001 +From: Kevin Hilman +Date: Mon, 16 Sep 2013 15:43:48 -0700 +Subject: [PATCH 3/3] sched/nohz: add debugfs control over + sched_tick_max_deferment + +Allow debugfs override of sched_tick_max_deferment in order to ease +finding/fixing the remaining issues with full nohz. + +The value to be written is in jiffies, and -1 means the max deferment +is disabled (scheduler_tick_max_deferment() returns KTIME_MAX.) + +Cc: Frederic Weisbecker +Signed-off-by: Kevin Hilman +--- + kernel/sched/core.c | 16 +++++++++++++++- + 1 file changed, 15 insertions(+), 1 deletion(-) + +diff --git a/kernel/sched/core.c b/kernel/sched/core.c +index e8b3350..59c7367 100644 +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -2753,6 +2753,8 @@ void scheduler_tick(void) + } + + #ifdef CONFIG_NO_HZ_FULL ++static u32 sched_tick_max_deferment = HZ; ++ + /** + * scheduler_tick_max_deferment + * +@@ -2769,13 +2771,25 @@ u64 scheduler_tick_max_deferment(void) + struct rq *rq = this_rq(); + unsigned long next, now = ACCESS_ONCE(jiffies); + +- next = rq->last_sched_tick + HZ; ++ if (sched_tick_max_deferment == -1) ++ return KTIME_MAX; ++ ++ next = rq->last_sched_tick + sched_tick_max_deferment; + + if (time_before_eq(next, now)) + return 0; + + return jiffies_to_usecs(next - now) * NSEC_PER_USEC; + } ++ ++static __init int sched_nohz_full_init_debug(void) ++{ ++ debugfs_create_u32("sched_tick_max_deferment", 0644, NULL, ++ &sched_tick_max_deferment); ++ ++ return 0; ++} ++late_initcall(sched_nohz_full_init_debug); + #endif + + notrace unsigned long get_parent_ip(unsigned long addr) +-- +1.7.10.4 + -- cgit v1.2.3-54-g00ecf