ARM: timer-sp: Set dynamic irq affinity
authorViresh Kumar <viresh.kumar@linaro.org>
Sat, 2 Mar 2013 10:10:13 +0000 (11:10 +0100)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Wed, 21 Aug 2013 22:18:53 +0000 (00:18 +0200)
When a cpu goes to a deep idle state where its local timer is shutdown, it
notifies the time frame work to use the broadcast timer instead.

Unfortunately, the broadcast device could wake up any CPU, including an idle one
which is not concerned by the wake up at all.

This implies, in the worst case, an idle CPU will wake up to send an IPI to
another idle cpu.

This patch fixes this for ARM platforms using timer-sp, by setting
CLOCK_EVT_FEAT_DYNIRQ feature.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
arch/arm/common/timer-sp.c

index 023ee63827a2baad853768e740759c9551b28cfa..e901d0f3e0bbcd735f5cf7e62bd653536ff8aa71 100644 (file)
@@ -166,7 +166,8 @@ static int sp804_set_next_event(unsigned long next,
 }
 
 static struct clock_event_device sp804_clockevent = {
-       .features       = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
+       .features       = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
+               CLOCK_EVT_FEAT_DYNIRQ,
        .set_mode       = sp804_set_mode,
        .set_next_event = sp804_set_next_event,
        .rating         = 300,