diff options
author | Frederic Weisbecker <frederic@kernel.org> | 2018-04-05 22:32:37 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-04-09 05:54:57 -0400 |
commit | 2bc629a692a76b9ee3dab9c303e3f501bece66a4 (patch) | |
tree | 228053069ba53acb9f5e11d5d6c6cfbcc075e460 /kernel/time/tick-sched.c | |
parent | 87c9fe6ee495f78f36d39cb37f6a714444a093ee (diff) |
nohz: Gather tick_sched booleans under a common flag field
Optimize the space and leave plenty of room for further flags.
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
[ rjw: Do not use __this_cpu_read() to access tick_stopped and add
got_idle_tick to avoid overloading inidle ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'kernel/time/tick-sched.c')
-rw-r--r-- | kernel/time/tick-sched.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index edb9d49b4996..a9d5cc7406d3 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -465,7 +465,9 @@ __setup("nohz=", setup_tick_nohz); | |||
465 | 465 | ||
466 | bool tick_nohz_tick_stopped(void) | 466 | bool tick_nohz_tick_stopped(void) |
467 | { | 467 | { |
468 | return __this_cpu_read(tick_cpu_sched.tick_stopped); | 468 | struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched); |
469 | |||
470 | return ts->tick_stopped; | ||
469 | } | 471 | } |
470 | 472 | ||
471 | bool tick_nohz_tick_stopped_cpu(int cpu) | 473 | bool tick_nohz_tick_stopped_cpu(int cpu) |
@@ -1014,8 +1016,8 @@ bool tick_nohz_idle_got_tick(void) | |||
1014 | { | 1016 | { |
1015 | struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched); | 1017 | struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched); |
1016 | 1018 | ||
1017 | if (ts->inidle > 1) { | 1019 | if (ts->got_idle_tick) { |
1018 | ts->inidle = 1; | 1020 | ts->got_idle_tick = 0; |
1019 | return true; | 1021 | return true; |
1020 | } | 1022 | } |
1021 | return false; | 1023 | return false; |
@@ -1161,7 +1163,7 @@ static void tick_nohz_handler(struct clock_event_device *dev) | |||
1161 | ktime_t now = ktime_get(); | 1163 | ktime_t now = ktime_get(); |
1162 | 1164 | ||
1163 | if (ts->inidle) | 1165 | if (ts->inidle) |
1164 | ts->inidle = 2; | 1166 | ts->got_idle_tick = 1; |
1165 | 1167 | ||
1166 | dev->next_event = KTIME_MAX; | 1168 | dev->next_event = KTIME_MAX; |
1167 | 1169 | ||
@@ -1261,7 +1263,7 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer) | |||
1261 | ktime_t now = ktime_get(); | 1263 | ktime_t now = ktime_get(); |
1262 | 1264 | ||
1263 | if (ts->inidle) | 1265 | if (ts->inidle) |
1264 | ts->inidle = 2; | 1266 | ts->got_idle_tick = 1; |
1265 | 1267 | ||
1266 | tick_sched_do_timer(now); | 1268 | tick_sched_do_timer(now); |
1267 | 1269 | ||