aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/hrtimer.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index b68e98f4e4c1..aa024f2af78c 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -1143,9 +1143,9 @@ static void __run_hrtimer(struct hrtimer *timer)
1143 spin_lock(&cpu_base->lock); 1143 spin_lock(&cpu_base->lock);
1144 1144
1145 /* 1145 /*
1146 * Note: We clear the CALLBACK bit after enqueue_hrtimer to avoid 1146 * Note: We clear the CALLBACK bit after enqueue_hrtimer and
1147 * reprogramming of the event hardware. This happens at the end of this 1147 * we do not reprogramm the event hardware. Happens either in
1148 * function anyway. 1148 * hrtimer_start_range_ns() or in hrtimer_interrupt()
1149 */ 1149 */
1150 if (restart != HRTIMER_NORESTART) { 1150 if (restart != HRTIMER_NORESTART) {
1151 BUG_ON(timer->state != HRTIMER_STATE_CALLBACK); 1151 BUG_ON(timer->state != HRTIMER_STATE_CALLBACK);
@@ -1514,14 +1514,12 @@ static void migrate_hrtimer_list(struct hrtimer_clock_base *old_base,
1514 __remove_hrtimer(timer, old_base, HRTIMER_STATE_MIGRATE, 0); 1514 __remove_hrtimer(timer, old_base, HRTIMER_STATE_MIGRATE, 0);
1515 timer->base = new_base; 1515 timer->base = new_base;
1516 /* 1516 /*
1517 * Enqueue the timers on the new cpu, but do not reprogram 1517 * Enqueue the timers on the new cpu. This does not
1518 * the timer as that would enable a deadlock between 1518 * reprogram the event device in case the timer
1519 * hrtimer_enqueue_reprogramm() running the timer and us still 1519 * expires before the earliest on this CPU, but we run
1520 * holding a nested base lock. 1520 * hrtimer_interrupt after we migrated everything to
1521 * 1521 * sort out already expired timers and reprogram the
1522 * Instead we tickle the hrtimer interrupt after the migration 1522 * event device.
1523 * is done, which will run all expired timers and re-programm
1524 * the timer device.
1525 */ 1523 */
1526 enqueue_hrtimer(timer, new_base); 1524 enqueue_hrtimer(timer, new_base);
1527 1525