clocksource/drivers: Set clockevent device cpumask to cpu_possible_mask
Currently, quite a few clockevent devices have cpumask set to cpu_all_mask which should be fine. However, cpu_possible_mask is more accurate and if there are any other clockevent devices in the system which have cpumask set to cpu_possible_mask, then having cpu_all_mask may result in issues (mostly boot hang with forever loops in clockevents_notify_released). So, lets replace all the clockevent device cpu_all_mask to cpu_possible_mask in order to prevent above mentioned possible issue. Cc: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: Jonathan Hunter <jonathanh@nvidia.com> Cc: Santosh Shilimkar <ssantosh@kernel.org> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
This commit is contained in:
Родитель
e5af5ff34c
Коммит
f8f5fe86f7
|
@ -230,7 +230,7 @@ static int __init tegra20_init_timer(struct device_node *np)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
tegra_clockevent.cpumask = cpu_all_mask;
|
tegra_clockevent.cpumask = cpu_possible_mask;
|
||||||
tegra_clockevent.irq = tegra_timer_irq.irq;
|
tegra_clockevent.irq = tegra_timer_irq.irq;
|
||||||
clockevents_config_and_register(&tegra_clockevent, 1000000,
|
clockevents_config_and_register(&tegra_clockevent, 1000000,
|
||||||
0x1, 0x1fffffff);
|
0x1, 0x1fffffff);
|
||||||
|
|
|
@ -185,7 +185,7 @@ static struct timer_of to = {
|
||||||
.set_state_oneshot = atcpit100_clkevt_set_oneshot,
|
.set_state_oneshot = atcpit100_clkevt_set_oneshot,
|
||||||
.tick_resume = atcpit100_clkevt_shutdown,
|
.tick_resume = atcpit100_clkevt_shutdown,
|
||||||
.set_next_event = atcpit100_clkevt_next_event,
|
.set_next_event = atcpit100_clkevt_next_event,
|
||||||
.cpumask = cpu_all_mask,
|
.cpumask = cpu_possible_mask,
|
||||||
},
|
},
|
||||||
|
|
||||||
.of_irq = {
|
.of_irq = {
|
||||||
|
|
|
@ -211,7 +211,7 @@ static int __init keystone_timer_init(struct device_node *np)
|
||||||
event_dev->set_state_shutdown = keystone_shutdown;
|
event_dev->set_state_shutdown = keystone_shutdown;
|
||||||
event_dev->set_state_periodic = keystone_set_periodic;
|
event_dev->set_state_periodic = keystone_set_periodic;
|
||||||
event_dev->set_state_oneshot = keystone_shutdown;
|
event_dev->set_state_oneshot = keystone_shutdown;
|
||||||
event_dev->cpumask = cpu_all_mask;
|
event_dev->cpumask = cpu_possible_mask;
|
||||||
event_dev->owner = THIS_MODULE;
|
event_dev->owner = THIS_MODULE;
|
||||||
event_dev->name = TIMER_NAME;
|
event_dev->name = TIMER_NAME;
|
||||||
event_dev->irq = irq;
|
event_dev->irq = irq;
|
||||||
|
|
|
@ -162,7 +162,7 @@ static int __init zevio_timer_add(struct device_node *node)
|
||||||
timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot;
|
timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot;
|
||||||
timer->clkevt.tick_resume = zevio_timer_set_oneshot;
|
timer->clkevt.tick_resume = zevio_timer_set_oneshot;
|
||||||
timer->clkevt.rating = 200;
|
timer->clkevt.rating = 200;
|
||||||
timer->clkevt.cpumask = cpu_all_mask;
|
timer->clkevt.cpumask = cpu_possible_mask;
|
||||||
timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT;
|
timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT;
|
||||||
timer->clkevt.irq = irqnr;
|
timer->clkevt.irq = irqnr;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче