linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [REPOST PATCH] ARM: sunxi: stop timer from ticking before enabling interrupts
@ 2013-12-02  9:29 Marc Zyngier
  2013-12-02 10:32 ` Daniel Lezcano
  2013-12-02 11:57 ` Daniel Lezcano
  0 siblings, 2 replies; 5+ messages in thread
From: Marc Zyngier @ 2013-12-02  9:29 UTC (permalink / raw)
  To: linux-arm-kernel

The sun4i timer can still be ticking when we enable the interrupt.
If another timer is actually used (A7 architected timer, for example),
odds are that the interrupt will eventually fire with the event_handler
pointer being NULL.

The obvious fix it to stop the timer before registering the interrupt.

Observed and tested on sun7i (cubietruck).

Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
Daniel,

Maxime asked me to forward this to you directly. Please consider merging
it for 3.13.

Thanks,

	M.

 drivers/clocksource/sun4i_timer.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/clocksource/sun4i_timer.c b/drivers/clocksource/sun4i_timer.c
index 2fb4695..a4f6119 100644
--- a/drivers/clocksource/sun4i_timer.c
+++ b/drivers/clocksource/sun4i_timer.c
@@ -179,6 +179,9 @@ static void __init sun4i_timer_init(struct device_node *node)
 	writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
 	       timer_base + TIMER_CTL_REG(0));
 
+	/* Make sure timer is stopped before playing with interrupts */
+	sun4i_clkevt_time_stop(0);
+
 	ret = setup_irq(irq, &sun4i_timer_irq);
 	if (ret)
 		pr_warn("failed to setup irq %d\n", irq);
-- 
1.8.2.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-12-02 11:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-02  9:29 [REPOST PATCH] ARM: sunxi: stop timer from ticking before enabling interrupts Marc Zyngier
2013-12-02 10:32 ` Daniel Lezcano
2013-12-02 10:46   ` Marc Zyngier
2013-12-02 10:49   ` Maxime Ripard
2013-12-02 11:57 ` Daniel Lezcano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).