Skip to contentSkip to conversation

clocksource: marco: fix the affinity set for local timer of CPU1

PATCH New Barry Song 2 participants 2 messages May 7, 2014 – May 16, 2014 Clocksource, clockevent drivers

lore
Share & tools
lore

Barry Song

author
#0 lore raw

PATCH 1/1 clocksource: marco: fix the affinity set for local timer of CPU1

From: Zhiwu Song <[email protected]>

irqchip will reject the affinity set to CPUs which is not online yet. but in the CPU1 wakeup stage, OS only sets CPU1 to be online after local timer is set, so that causes the irq_set_affinity not work. this patch moves to irq_force_affinity() for the low level boot stage.

---
 drivers/clocksource/timer-marco.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/clocksource/timer-marco.c +1 -1
index 571d109..dbd3039 100644
@@ -199,7 +199,7 @@ static int sirfsoc_local_timer_setup(struct clock_event_device *ce)
 
 	action->dev_id = ce;
 	BUG_ON(setup_irq(ce->irq, action));
-	irq_set_affinity(action->irq, cpumask_of(cpu));
+	irq_force_affinity(action->irq, cpumask_of(cpu));
 
 	clockevents_register_device(ce);
 	return 0;
Signature · 1 line
1.7.5.4
#1 lore raw

PATCH 1/1 clocksource: marco: fix the affinity set for local timer of CPU1

Quoted 19 lines · Barry Song

From: Zhiwu Song <[email protected]>

irqchip will reject the affinity set to CPUs which is not online yet. but in the CPU1 wakeup stage, OS only sets CPU1 to be online after local timer is set, so that causes the irq_set_affinity not work. this patch moves to irq_force_affinity() for the low level boot stage.

---
  drivers/clocksource/timer-marco.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
drivers/clocksource/timer-marco.c +0 -0
index 571d109..dbd3039 100644

drivers/clocksource/timer-marco.c static int sirfsoc_local_timer_setup(struct clock_event_device *ce) · line 205

Quoted 8 lines
drivers/clocksource/timer-marco.c +1 -1
@@ -199,7 +199,7 @@ static int sirfsoc_local_timer_setup(struct clock_event_device *ce)
 
  	action->dev_id = ce;
  	BUG_ON(setup_irq(ce->irq, action));
-	irq_set_affinity(action->irq, cpumask_of(cpu));
+	irq_force_affinity(action->irq, cpumask_of(cpu));
 
  	clockevents_register_device(ce);
  	return 0;

Applied to my tree as 3.15 fix.

Thanks
-- Daniel

Signature · 5 lines
  <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog