diff options
Diffstat (limited to 'kernel/time/tick-sched.c')
-rw-r--r-- | kernel/time/tick-sched.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index da00c96989d3..73b332ef4a56 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -1156,6 +1156,17 @@ void tick_setup_sched_timer(void) #endif /* HIGH_RES_TIMERS */ #if defined CONFIG_NO_HZ_COMMON || defined CONFIG_HIGH_RES_TIMERS + +static inline void clear_tick_sched(struct tick_sched *ts) +{ + ktime_t idle_sleeptime = ts->idle_sleeptime; + ktime_t iowait_sleeptime = ts->iowait_sleeptime; + + memset(ts, 0, sizeof(*ts)); + ts->idle_sleeptime = idle_sleeptime; + ts->iowait_sleeptime = iowait_sleeptime; +} + void tick_cancel_sched_timer(int cpu) { struct tick_sched *ts = &per_cpu(tick_cpu_sched, cpu); @@ -1165,7 +1176,7 @@ void tick_cancel_sched_timer(int cpu) hrtimer_cancel(&ts->sched_timer); # endif - memset(ts, 0, sizeof(*ts)); + clear_tick_sched(ts); } #endif |