diff mbox

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

Message ID 1399445204-22159-1-git-send-email-21cnbao@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Barry Song May 7, 2014, 6:46 a.m. UTC
From: Zhiwu Song <Zhiwu.Song@csr.com>

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.

Signed-off-by: Zhiwu Song <Zhiwu.Song@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
---
 drivers/clocksource/timer-marco.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Daniel Lezcano May 16, 2014, 2:07 p.m. UTC | #1
On 05/07/2014 08:46 AM, Barry Song wrote:
> From: Zhiwu Song <Zhiwu.Song@csr.com>
>
> 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.
>
> Signed-off-by: Zhiwu Song <Zhiwu.Song@csr.com>
> Signed-off-by: Barry Song <Baohua.Song@csr.com>
> ---
>   drivers/clocksource/timer-marco.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/clocksource/timer-marco.c b/drivers/clocksource/timer-marco.c
> index 571d109..dbd3039 100644
> --- a/drivers/clocksource/timer-marco.c
> +++ b/drivers/clocksource/timer-marco.c
> @@ -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
diff mbox

Patch

diff --git a/drivers/clocksource/timer-marco.c b/drivers/clocksource/timer-marco.c
index 571d109..dbd3039 100644
--- a/drivers/clocksource/timer-marco.c
+++ b/drivers/clocksource/timer-marco.c
@@ -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;