@@ -395,8 +395,9 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
395
395
perfect_us = perfect_cstate_ms * 1000 ;
396
396
397
397
if (repeat && (4 * timer_us < data -> expected_us )) {
398
- hrtimer_start (hrtmr , ns_to_ktime (1000 * timer_us ),
399
- HRTIMER_MODE_REL_PINNED );
398
+ RCU_NONIDLE (hrtimer_start (hrtmr ,
399
+ ns_to_ktime (1000 * timer_us ),
400
+ HRTIMER_MODE_REL_PINNED ));
400
401
/* In repeat case, menu hrtimer is started */
401
402
per_cpu (hrtimer_status , cpu ) = MENU_HRTIMER_REPEAT ;
402
403
} else if (perfect_us < data -> expected_us ) {
@@ -406,8 +407,9 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
406
407
* In that case, it makes sense to re-enter
407
408
* into a deeper C-state after some time.
408
409
*/
409
- hrtimer_start (hrtmr , ns_to_ktime (1000 * timer_us ),
410
- HRTIMER_MODE_REL_PINNED );
410
+ RCU_NONIDLE (hrtimer_start (hrtmr ,
411
+ ns_to_ktime (1000 * timer_us ),
412
+ HRTIMER_MODE_REL_PINNED ));
411
413
/* In general case, menu hrtimer is started */
412
414
per_cpu (hrtimer_status , cpu ) = MENU_HRTIMER_GENERAL ;
413
415
}
0 commit comments