aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clocksource
diff options
context:
space:
mode:
authorSudeep Holla <sudeep.holla@arm.com>2018-07-11 07:24:22 -0400
committerDaniel Lezcano <daniel.lezcano@linaro.org>2018-07-26 05:26:30 -0400
commitf8f5fe86f7e10ecc784b53537edbe3fcf0c00884 (patch)
tree84a4baeee102c9fb7196e5ab6de0c5de09ec871e /drivers/clocksource
parente5af5ff34cf037ac7bb70976161427dc40bf4a96 (diff)
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>
Diffstat (limited to 'drivers/clocksource')
-rw-r--r--drivers/clocksource/tegra20_timer.c2
-rw-r--r--drivers/clocksource/timer-atcpit100.c2
-rw-r--r--drivers/clocksource/timer-keystone.c2
-rw-r--r--drivers/clocksource/zevio-timer.c2
4 files changed, 4 insertions, 4 deletions
diff --git a/drivers/clocksource/tegra20_timer.c b/drivers/clocksource/tegra20_timer.c
index c337a8100a7b..dabf0a103567 100644
--- a/drivers/clocksource/tegra20_timer.c
+++ b/drivers/clocksource/tegra20_timer.c
@@ -230,7 +230,7 @@ static int __init tegra20_init_timer(struct device_node *np)
230 return ret; 230 return ret;
231 } 231 }
232 232
233 tegra_clockevent.cpumask = cpu_all_mask; 233 tegra_clockevent.cpumask = cpu_possible_mask;
234 tegra_clockevent.irq = tegra_timer_irq.irq; 234 tegra_clockevent.irq = tegra_timer_irq.irq;
235 clockevents_config_and_register(&tegra_clockevent, 1000000, 235 clockevents_config_and_register(&tegra_clockevent, 1000000,
236 0x1, 0x1fffffff); 236 0x1, 0x1fffffff);
diff --git a/drivers/clocksource/timer-atcpit100.c b/drivers/clocksource/timer-atcpit100.c
index 5e23d7b4a722..b4bd2f5b801d 100644
--- a/drivers/clocksource/timer-atcpit100.c
+++ b/drivers/clocksource/timer-atcpit100.c
@@ -185,7 +185,7 @@ static struct timer_of to = {
185 .set_state_oneshot = atcpit100_clkevt_set_oneshot, 185 .set_state_oneshot = atcpit100_clkevt_set_oneshot,
186 .tick_resume = atcpit100_clkevt_shutdown, 186 .tick_resume = atcpit100_clkevt_shutdown,
187 .set_next_event = atcpit100_clkevt_next_event, 187 .set_next_event = atcpit100_clkevt_next_event,
188 .cpumask = cpu_all_mask, 188 .cpumask = cpu_possible_mask,
189 }, 189 },
190 190
191 .of_irq = { 191 .of_irq = {
diff --git a/drivers/clocksource/timer-keystone.c b/drivers/clocksource/timer-keystone.c
index 0eee03250cfc..f5b2eda30bf3 100644
--- a/drivers/clocksource/timer-keystone.c
+++ b/drivers/clocksource/timer-keystone.c
@@ -211,7 +211,7 @@ static int __init keystone_timer_init(struct device_node *np)
211 event_dev->set_state_shutdown = keystone_shutdown; 211 event_dev->set_state_shutdown = keystone_shutdown;
212 event_dev->set_state_periodic = keystone_set_periodic; 212 event_dev->set_state_periodic = keystone_set_periodic;
213 event_dev->set_state_oneshot = keystone_shutdown; 213 event_dev->set_state_oneshot = keystone_shutdown;
214 event_dev->cpumask = cpu_all_mask; 214 event_dev->cpumask = cpu_possible_mask;
215 event_dev->owner = THIS_MODULE; 215 event_dev->owner = THIS_MODULE;
216 event_dev->name = TIMER_NAME; 216 event_dev->name = TIMER_NAME;
217 event_dev->irq = irq; 217 event_dev->irq = irq;
diff --git a/drivers/clocksource/zevio-timer.c b/drivers/clocksource/zevio-timer.c
index a6a0338eea77..f74689334f7c 100644
--- a/drivers/clocksource/zevio-timer.c
+++ b/drivers/clocksource/zevio-timer.c
@@ -162,7 +162,7 @@ static int __init zevio_timer_add(struct device_node *node)
162 timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot; 162 timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot;
163 timer->clkevt.tick_resume = zevio_timer_set_oneshot; 163 timer->clkevt.tick_resume = zevio_timer_set_oneshot;
164 timer->clkevt.rating = 200; 164 timer->clkevt.rating = 200;
165 timer->clkevt.cpumask = cpu_all_mask; 165 timer->clkevt.cpumask = cpu_possible_mask;
166 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT; 166 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT;
167 timer->clkevt.irq = irqnr; 167 timer->clkevt.irq = irqnr;
168 168