mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-17 20:54:10 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-hrt
* git://git.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-hrt: hrtimer: timeout too long when using HRTIMER_CB_SOFTIRQ
This commit is contained in:
commit
513694b5f9
1 changed files with 13 additions and 2 deletions
|
@ -1080,8 +1080,19 @@ static void run_hrtimer_pending(struct hrtimer_cpu_base *cpu_base)
|
||||||
* If the timer was rearmed on another CPU, reprogram
|
* If the timer was rearmed on another CPU, reprogram
|
||||||
* the event device.
|
* the event device.
|
||||||
*/
|
*/
|
||||||
if (timer->base->first == &timer->node)
|
struct hrtimer_clock_base *base = timer->base;
|
||||||
hrtimer_reprogram(timer, timer->base);
|
|
||||||
|
if (base->first == &timer->node &&
|
||||||
|
hrtimer_reprogram(timer, base)) {
|
||||||
|
/*
|
||||||
|
* Timer is expired. Thus move it from tree to
|
||||||
|
* pending list again.
|
||||||
|
*/
|
||||||
|
__remove_hrtimer(timer, base,
|
||||||
|
HRTIMER_STATE_PENDING, 0);
|
||||||
|
list_add_tail(&timer->cb_entry,
|
||||||
|
&base->cpu_base->cb_pending);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
spin_unlock_irq(&cpu_base->lock);
|
spin_unlock_irq(&cpu_base->lock);
|
||||||
|
|
Loading…
Add table
Reference in a new issue