diff options
Diffstat (limited to 'kernel/time/tick-sched.c')
| -rw-r--r-- | kernel/time/tick-sched.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index be9707f68024..955851748dc3 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -634,10 +634,12 @@ static void tick_nohz_restart(struct tick_sched *ts, ktime_t now)  	/* Forward the time to expire in the future */  	hrtimer_forward(&ts->sched_timer, now, tick_period); -	if (ts->nohz_mode == NOHZ_MODE_HIGHRES) -		hrtimer_start_expires(&ts->sched_timer, HRTIMER_MODE_ABS_PINNED); -	else +	if (ts->nohz_mode == NOHZ_MODE_HIGHRES) { +		hrtimer_start_expires(&ts->sched_timer, +				      HRTIMER_MODE_ABS_PINNED_HARD); +	} else {  		tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1); +	}  	/*  	 * Reset to make sure next tick stop doesn't get fooled by past @@ -802,7 +804,8 @@ static void tick_nohz_stop_tick(struct tick_sched *ts, int cpu)  	}  	if (ts->nohz_mode == NOHZ_MODE_HIGHRES) { -		hrtimer_start(&ts->sched_timer, tick, HRTIMER_MODE_ABS_PINNED); +		hrtimer_start(&ts->sched_timer, tick, +			      HRTIMER_MODE_ABS_PINNED_HARD);  	} else {  		hrtimer_set_expires(&ts->sched_timer, tick);  		tick_program_event(tick, 1); @@ -1230,7 +1233,7 @@ static void tick_nohz_switch_to_nohz(void)  	 * Recycle the hrtimer in ts, so we can share the  	 * hrtimer_forward with the highres code.  	 */ -	hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); +	hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);  	/* Get the next period */  	next = tick_init_jiffy_update(); @@ -1327,7 +1330,7 @@ void tick_setup_sched_timer(void)  	/*  	 * Emulate tick processing via per-CPU hrtimers:  	 */ -	hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); +	hrtimer_init(&ts->sched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);  	ts->sched_timer.function = tick_sched_timer;  	/* Get the next period (per-CPU) */ @@ -1342,7 +1345,7 @@ void tick_setup_sched_timer(void)  	}  	hrtimer_forward(&ts->sched_timer, now, tick_period); -	hrtimer_start_expires(&ts->sched_timer, HRTIMER_MODE_ABS_PINNED); +	hrtimer_start_expires(&ts->sched_timer, HRTIMER_MODE_ABS_PINNED_HARD);  	tick_nohz_activate(ts, NOHZ_MODE_HIGHRES);  }  #endif /* HIGH_RES_TIMERS */  |