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:
Sudeep Holla 2018-07-11 12:24:22 +01:00 коммит произвёл Daniel Lezcano
Родитель e5af5ff34c
Коммит f8f5fe86f7
4 изменённых файлов: 4 добавлений и 4 удалений

Просмотреть файл

@ -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;