diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-07-10 02:17:14 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-07-10 02:17:14 -0400 |
| commit | 9e4144abf8a30ae221311368bbb10690ebdb4b76 (patch) | |
| tree | 032289d5b7d87976675c1a1a32d512a44d234fa2 /kernel/hrtimer.c | |
| parent | e17ba73b0ee6c0f24393c48b455e0d8db761782c (diff) | |
| parent | 6329d3021bcfa9038621e6e917d98929421d8ec8 (diff) | |
Merge branch 'linus' into core/printk
Conflicts:
kernel/printk.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/hrtimer.c')
| -rw-r--r-- | kernel/hrtimer.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 421be5fe5cc7..ab80515008f4 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
| @@ -1003,10 +1003,18 @@ hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode) | |||
| 1003 | */ | 1003 | */ |
| 1004 | raise = timer->state == HRTIMER_STATE_PENDING; | 1004 | raise = timer->state == HRTIMER_STATE_PENDING; |
| 1005 | 1005 | ||
| 1006 | /* | ||
| 1007 | * We use preempt_disable to prevent this task from migrating after | ||
| 1008 | * setting up the softirq and raising it. Otherwise, if me migrate | ||
| 1009 | * we will raise the softirq on the wrong CPU. | ||
| 1010 | */ | ||
| 1011 | preempt_disable(); | ||
| 1012 | |||
| 1006 | unlock_hrtimer_base(timer, &flags); | 1013 | unlock_hrtimer_base(timer, &flags); |
| 1007 | 1014 | ||
| 1008 | if (raise) | 1015 | if (raise) |
| 1009 | hrtimer_raise_softirq(); | 1016 | hrtimer_raise_softirq(); |
| 1017 | preempt_enable(); | ||
| 1010 | 1018 | ||
| 1011 | return ret; | 1019 | return ret; |
| 1012 | } | 1020 | } |
