diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/hrtimer.c | 20 |
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 | ||