diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/time/tick-sched.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index a9d5cc7406d3..956831cf6cfb 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -113,8 +113,7 @@ static ktime_t tick_init_jiffy_update(void) | |||
113 | return period; | 113 | return period; |
114 | } | 114 | } |
115 | 115 | ||
116 | 116 | static void tick_sched_do_timer(struct tick_sched *ts, ktime_t now) | |
117 | static void tick_sched_do_timer(ktime_t now) | ||
118 | { | 117 | { |
119 | int cpu = smp_processor_id(); | 118 | int cpu = smp_processor_id(); |
120 | 119 | ||
@@ -134,6 +133,9 @@ static void tick_sched_do_timer(ktime_t now) | |||
134 | /* Check, if the jiffies need an update */ | 133 | /* Check, if the jiffies need an update */ |
135 | if (tick_do_timer_cpu == cpu) | 134 | if (tick_do_timer_cpu == cpu) |
136 | tick_do_update_jiffies64(now); | 135 | tick_do_update_jiffies64(now); |
136 | |||
137 | if (ts->inidle) | ||
138 | ts->got_idle_tick = 1; | ||
137 | } | 139 | } |
138 | 140 | ||
139 | static void tick_sched_handle(struct tick_sched *ts, struct pt_regs *regs) | 141 | static void tick_sched_handle(struct tick_sched *ts, struct pt_regs *regs) |
@@ -1162,12 +1164,9 @@ static void tick_nohz_handler(struct clock_event_device *dev) | |||
1162 | struct pt_regs *regs = get_irq_regs(); | 1164 | struct pt_regs *regs = get_irq_regs(); |
1163 | ktime_t now = ktime_get(); | 1165 | ktime_t now = ktime_get(); |
1164 | 1166 | ||
1165 | if (ts->inidle) | ||
1166 | ts->got_idle_tick = 1; | ||
1167 | |||
1168 | dev->next_event = KTIME_MAX; | 1167 | dev->next_event = KTIME_MAX; |
1169 | 1168 | ||
1170 | tick_sched_do_timer(now); | 1169 | tick_sched_do_timer(ts, now); |
1171 | tick_sched_handle(ts, regs); | 1170 | tick_sched_handle(ts, regs); |
1172 | 1171 | ||
1173 | /* No need to reprogram if we are running tickless */ | 1172 | /* No need to reprogram if we are running tickless */ |
@@ -1262,10 +1261,7 @@ static enum hrtimer_restart tick_sched_timer(struct hrtimer *timer) | |||
1262 | struct pt_regs *regs = get_irq_regs(); | 1261 | struct pt_regs *regs = get_irq_regs(); |
1263 | ktime_t now = ktime_get(); | 1262 | ktime_t now = ktime_get(); |
1264 | 1263 | ||
1265 | if (ts->inidle) | 1264 | tick_sched_do_timer(ts, now); |
1266 | ts->got_idle_tick = 1; | ||
1267 | |||
1268 | tick_sched_do_timer(now); | ||
1269 | 1265 | ||
1270 | /* | 1266 | /* |
1271 | * Do not call, when we are not in irq context and have | 1267 | * Do not call, when we are not in irq context and have |