Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Thomas Gleixner: "Two minimalistic fixes for 4.2 regressions: - Eric fixed a thinko in the timer_list base switching code caused by the overhaul of the timer wheel. It can cause a cpu to see the wrong base for a timer while we move the timer around. - Guenter fixed a regression for IMX if booted w/o device tree, where the timer interrupt is not initialized and therefor the machine fails to boot" * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: clocksource/imx: Fix boot with non-DT systems timer: Write timer->flags atomically
This commit is contained in:
Коммит
f8a89fc05a
|
@ -462,6 +462,7 @@ void __init mxc_timer_init(unsigned long pbase, int irq, enum imx_gpt_type type)
|
||||||
BUG_ON(!imxtm->base);
|
BUG_ON(!imxtm->base);
|
||||||
|
|
||||||
imxtm->type = type;
|
imxtm->type = type;
|
||||||
|
imxtm->irq = irq;
|
||||||
|
|
||||||
_mxc_timer_init(imxtm);
|
_mxc_timer_init(imxtm);
|
||||||
}
|
}
|
||||||
|
|
|
@ -807,8 +807,8 @@ __mod_timer(struct timer_list *timer, unsigned long expires,
|
||||||
spin_unlock(&base->lock);
|
spin_unlock(&base->lock);
|
||||||
base = new_base;
|
base = new_base;
|
||||||
spin_lock(&base->lock);
|
spin_lock(&base->lock);
|
||||||
timer->flags &= ~TIMER_BASEMASK;
|
WRITE_ONCE(timer->flags,
|
||||||
timer->flags |= base->cpu;
|
(timer->flags & ~TIMER_BASEMASK) | base->cpu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче