aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/common
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2013-03-02 05:10:13 -0500
committerDaniel Lezcano <daniel.lezcano@linaro.org>2013-08-21 18:18:53 -0400
commit887708f0ac7641e7d5131409cedf6774f26f0cb6 (patch)
treec153eb8539af6b982a266e96a692593b7bf1ca68 /arch/arm/common
parent74adcbffa8f4d9d39d72d20d80ee62be279ebf44 (diff)
ARM: timer-sp: Set dynamic irq affinity
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>
Diffstat (limited to 'arch/arm/common')
-rw-r--r--arch/arm/common/timer-sp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/common/timer-sp.c b/arch/arm/common/timer-sp.c
index 023ee63827a2..e901d0f3e0bb 100644
--- a/arch/arm/common/timer-sp.c
+++ b/arch/arm/common/timer-sp.c
@@ -166,7 +166,8 @@ static int sp804_set_next_event(unsigned long next,
166} 166}
167 167
168static struct clock_event_device sp804_clockevent = { 168static struct clock_event_device sp804_clockevent = {
169 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 169 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
170 CLOCK_EVT_FEAT_DYNIRQ,
170 .set_mode = sp804_set_mode, 171 .set_mode = sp804_set_mode,
171 .set_next_event = sp804_set_next_event, 172 .set_next_event = sp804_set_next_event,
172 .rating = 300, 173 .rating = 300,