All of lore.kernel.org
 help / color / mirror / Atom feed
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [REPOST PATCH] ARM: sunxi: stop timer from ticking before enabling interrupts
Date: Mon, 02 Dec 2013 10:46:34 +0000	[thread overview]
Message-ID: <529C650A.7060209@arm.com> (raw)
In-Reply-To: <529C61A3.8010208@linaro.org>

On 02/12/13 10:32, Daniel Lezcano wrote:
> On 12/02/2013 10:29 AM, Marc Zyngier wrote:
>> 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);
>> +
> 
> It isn't possible to *not* enable it instead of stopping it ?

Well, it is already enabled by the bootloader.

> In the code before we have:
> 
>          writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD |
>                 TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
>                 timer_base + TIMER_CTL_REG(1));
> 
> If we remove the TIMER_CTL_ENABLE flag, wouldn't it fix the issue ?

No. This piece of code enables the clocksource, which is implemented
using timer 1. Timer 0 still needs to be disabled.

	M.
-- 
Jazz is not dead. It just smells funny...

  reply	other threads:[~2013-12-02 10:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2013-12-02 10:49   ` Maxime Ripard
2013-12-02 11:57 ` Daniel Lezcano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=529C650A.7060209@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.