Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Sudeep Holla and committed by
Daniel Lezcano
f8f5fe86 e5af5ff3

+4 -4
+1 -1
drivers/clocksource/tegra20_timer.c
··· 230 230 return ret; 231 231 } 232 232 233 - tegra_clockevent.cpumask = cpu_all_mask; 233 + tegra_clockevent.cpumask = cpu_possible_mask; 234 234 tegra_clockevent.irq = tegra_timer_irq.irq; 235 235 clockevents_config_and_register(&tegra_clockevent, 1000000, 236 236 0x1, 0x1fffffff);
+1 -1
drivers/clocksource/timer-atcpit100.c
··· 185 185 .set_state_oneshot = atcpit100_clkevt_set_oneshot, 186 186 .tick_resume = atcpit100_clkevt_shutdown, 187 187 .set_next_event = atcpit100_clkevt_next_event, 188 - .cpumask = cpu_all_mask, 188 + .cpumask = cpu_possible_mask, 189 189 }, 190 190 191 191 .of_irq = {
+1 -1
drivers/clocksource/timer-keystone.c
··· 211 211 event_dev->set_state_shutdown = keystone_shutdown; 212 212 event_dev->set_state_periodic = keystone_set_periodic; 213 213 event_dev->set_state_oneshot = keystone_shutdown; 214 - event_dev->cpumask = cpu_all_mask; 214 + event_dev->cpumask = cpu_possible_mask; 215 215 event_dev->owner = THIS_MODULE; 216 216 event_dev->name = TIMER_NAME; 217 217 event_dev->irq = irq;
+1 -1
drivers/clocksource/zevio-timer.c
··· 162 162 timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot; 163 163 timer->clkevt.tick_resume = zevio_timer_set_oneshot; 164 164 timer->clkevt.rating = 200; 165 - timer->clkevt.cpumask = cpu_all_mask; 165 + timer->clkevt.cpumask = cpu_possible_mask; 166 166 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT; 167 167 timer->clkevt.irq = irqnr; 168 168