Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8f5fe86 authored by Sudeep Holla's avatar Sudeep Holla Committed by Daniel Lezcano
Browse files

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: default avatarSudeep Holla <sudeep.holla@arm.com>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent e5af5ff3
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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);
+1 −1
Original line number Original line Diff line number Diff line
@@ -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 = {
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;