public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: yingjoe.chen@mediatek.com (Yingjoe Chen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] clockevents/drivers/mtk: Fix spurious interrupt leading to crash
Date: Mon, 24 Aug 2015 22:35:24 +0800	[thread overview]
Message-ID: <1440426924.17418.11.camel@mtksdaap41> (raw)
In-Reply-To: <1440423045-7883-1-git-send-email-daniel.lezcano@linaro.org>

On Mon, 2015-08-24 at 15:30 +0200, Daniel Lezcano wrote:
> After analysis done by Yingjoe Chen, the timer appears to have a pending
> interrupt when it is enabled.
>
> Fix this by acknowledging the pending interrupt when enabling the timer
> interrupt.
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Hi Daniel,


Thanks for your patch, this can fix the boot issue.
Tested-by: Yingjoe Chen <yingjoe.chen@mediatek.com>

> ---
>  drivers/clocksource/mtk_timer.c | 13 +++----------
>  1 file changed, 3 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/clocksource/mtk_timer.c b/drivers/clocksource/mtk_timer.c
> index 4cd16fb..13543a8 100644
> --- a/drivers/clocksource/mtk_timer.c
> +++ b/drivers/clocksource/mtk_timer.c
> @@ -156,14 +156,6 @@ static irqreturn_t mtk_timer_interrupt(int irq, void *dev_id)
>  	return IRQ_HANDLED;
>  }
>  
> -static void mtk_timer_global_reset(struct mtk_clock_event_device *evt)
> -{
> -	/* Disable all interrupts */
> -	writel(0x0, evt->gpt_base + GPT_IRQ_EN_REG);
> -	/* Acknowledge all interrupts */
> -	writel(0x3f, evt->gpt_base + GPT_IRQ_ACK_REG);
> -}
> -
>  static void
>  mtk_timer_setup(struct mtk_clock_event_device *evt, u8 timer, u8 option)
>  {
> @@ -183,6 +175,9 @@ static void mtk_timer_enable_irq(struct mtk_clock_event_device *evt, u8 timer)
>  {
>  	u32 val;
>  
> +        /* Acknowledge all spurious pending interrupts */
> +        writel(0x3f, evt->gpt_base + GPT_IRQ_ACK_REG);

This should use tab to indent.

> +
>  	val = readl(evt->gpt_base + GPT_IRQ_EN_REG);
>  	writel(val | GPT_IRQ_ENABLE(timer),
>  			evt->gpt_base + GPT_IRQ_EN_REG);
> @@ -232,8 +227,6 @@ static void __init mtk_timer_init(struct device_node *node)
>  	}
>  	rate = clk_get_rate(clk);
>  
> -	mtk_timer_global_reset(evt);
> -

I think we should keep this one, or at least disable irq first in
mtk_timer_enable_irq. MT8173 firmware didn't use this GPT, but I think
it is a good ideat to do it just in case firmware in some other platform
use it.

Joe.C

  reply	other threads:[~2015-08-24 14:35 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-13  9:32 [PATCH 0/5] add GPT timer support for mt8173 Yingjoe Chen
2015-07-13  9:32 ` [PATCH 1/5] clocksource: mediatek: do not enable GPT_CLK_EVT when setup Yingjoe Chen
2015-07-14  7:39   ` Daniel Kurtz
2015-07-22  8:14     ` [PATCH v2 " Yingjoe Chen
2015-07-31  3:14       ` Yingjoe Chen
2015-08-13  8:35       ` Daniel Lezcano
2015-08-17 14:10         ` Yingjoe Chen
2015-08-20 14:28           ` Daniel Lezcano
2015-08-21 14:39             ` Yingjoe Chen
2015-08-24  7:51               ` Daniel Lezcano
2015-08-24 14:22                 ` Yingjoe Chen
2015-08-24 13:30               ` [PATCH] clockevents/drivers/mtk: Fix spurious interrupt leading to crash Daniel Lezcano
2015-08-24 14:35                 ` Yingjoe Chen [this message]
2015-08-24 21:57                   ` [PATCH V2] " Daniel Lezcano
2015-08-25 13:21                     ` Yingjoe Chen
2015-08-26 14:25                       ` Daniel Lezcano
2015-09-04  7:15                         ` Yingjoe Chen
2015-09-04  7:36                           ` Daniel Lezcano
2015-10-27 11:11                         ` Matthias Brugger
2015-10-27 11:23                           ` Daniel Lezcano
2015-10-27 11:47                             ` Daniel Lezcano
2015-07-22  8:24     ` [PATCH 1/5] clocksource: mediatek: do not enable GPT_CLK_EVT when setup Yingjoe Chen
2015-07-17 21:56   ` Matthias Brugger
2015-07-13  9:32 ` [PATCH 2/5] clocksource: mediatek: Use GPT as sched clock source Yingjoe Chen
2015-07-14  0:40   ` Stephen Boyd
2015-07-17 21:49   ` Matthias Brugger
2015-07-13  9:32 ` [PATCH 3/5] arm64: mediatek: enable MTK_TIMER Yingjoe Chen
2015-07-17 21:54   ` Matthias Brugger
2015-07-18  7:31     ` Thomas Gleixner
2015-07-21  7:52       ` Matthias Brugger
2015-07-13  9:32 ` [PATCH 4/5] clk: mediatek: add 13mhz clock for MT8173 Yingjoe Chen
2015-07-14  0:40   ` Stephen Boyd
2015-07-14  7:34   ` Daniel Kurtz
2015-07-13  9:32 ` [PATCH 5/5] arm64: dts: mt8173: add timer node Yingjoe Chen
2015-07-14  4:26   ` Daniel Kurtz
2015-07-14  4:27     ` Daniel Kurtz
2015-08-11 15:54 ` [PATCH 0/5] add GPT timer support for mt8173 Daniel Kurtz
2015-08-12 12:32   ` Daniel Lezcano
2015-08-13  4:49     ` Daniel Kurtz
2015-08-26  7:37 ` Daniel Lezcano
2015-08-26 14:10   ` Yingjoe Chen

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=1440426924.17418.11.camel@mtksdaap41 \
    --to=yingjoe.chen@mediatek.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox