All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCHv3 09/10] clocksource: time-armada-370-xp: Divorce from local timer API
Date: Wed, 20 Mar 2013 18:26:22 +0100	[thread overview]
Message-ID: <5149F13E.7060901@free-electrons.com> (raw)
In-Reply-To: <5149EFFA.1050408@codeaurora.org>

On 03/20/2013 06:20 PM, Stephen Boyd wrote:
> On 03/20/13 10:09, Gregory CLEMENT wrote:
>> On 03/13/2013 07:17 PM, Stephen Boyd wrote:
>>> Separate the armada 370xp local timers from the local timer API.
>>> This will allow us to remove ARM local timer support in the near
>>> future and makes this driver multi-architecture friendly.
>> At first view the code looks good, but when I applied your patch set on
>> linux-next, build it and run it on a Armada XP based board (AX3 with 2 cores),
>> it crashed:
> [...]
>> Internal error: Oops - undefined instruction: 0 [#1] SMP ARM
>> Modules linked in:
>> CPU: 0    Not tainted  (3.9.0-rc3-next-20130319-00010-g728b448 #153)
>> PC is at 0xe92d45f0
>> LR is at armada_370_xp_timer_interrupt+0x3c/0x4c
>> pc : [<e92d45f0>]    lr : [<c023c2bc>]    psr: 600001d3
>> sp : c0635eb8  ip : 00000000  fp : c063c3f0
>> r10: 000003ff  r9 : 00000000  r8 : 00000010
>> r7 : c22b3c40  r6 : ef007c00  r5 : c0640fcc  r4 : c0053e30
>> r3 : e92d45f0  r2 : fffffffe  r1 : c22b3c40  r0 : c0053e30
>> Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
>> Control: 10c53c7d  Table: 0000406a  DAC: 00000015
>> Process swapper/0 (pid: 0, stack limit = 0xc0634238)
>> Stack: (0xc0635eb8 to 0xc0636000)
>> 5ea0:                                                       ef004c80 c0063224
>> 5ec0: 00000010 00000010 00000000 c0660ac0 c0635f18 c005fcb8 c0632b90 c000ed94
>> 5ee0: c0313c60 60000153 00000001 c00085a8 c0313c54 c0313c60 60000153 ffffffff
>> 5f00: c0635f4c 00000000 562f5842 c06360c0 00000000 c000db60 0000001a ffff8ad0
>> 5f20: ffff8ad0 c06360c0 00000000 00000000 c04379c0 c22ad780 00000000 562f5842
>> 5f40: c06360c0 00000000 60000153 c0635f60 c0313c54 c0313c60 60000153 ffffffff
>> 5f60: 00000021 00000000 00000003 00000004 0000006e c065fcc0 c067924c c063ceb8
>> 5f80: c063cc84 c006d8c0 00000005 c065fcc0 c067924c c0421764 c22ad780 c063c42c
>> 5fa0: 562f5842 c063cca8 c06605c0 c04379c0 c22ad780 00000000 562f5842 00000000
>> 5fc0: 00000000 c0417754 ffffffff ffffffff c04172dc 00000000 00000000 c04379c0
>> 5fe0: 10c53c7d c063c414 c04379bc c063febc 0000406a 00008074 00000000 00000000
>> [<c023c2bc>] (armada_370_xp_timer_interrupt+0x3c/0x4c) from [<c0063224>] (handle_percpu_devid_irq+0x64/0x80)
>> [<c0063224>] (handle_percpu_devid_irq+0x64/0x80) from [<c005fcb8>] (generic_handle_irq+0x20/0x30)
>> [<c005fcb8>] (generic_handle_irq+0x20/0x30) from [<c000ed94>] (handle_IRQ+0x38/0x90)
>> [<c000ed94>] (handle_IRQ+0x38/0x90) from [<c00085a8>] (armada_370_xp_handle_irq+0xa4/0xb0)
>> [<c00085a8>] (armada_370_xp_handle_irq+0xa4/0xb0) from [<c000db60>] (__irq_svc+0x40/0x50)
>> Exception stack(0xc0635f18 to 0xc0635f60)
>> 5f00:                                                       0000001a ffff8ad0
>> 5f20: ffff8ad0 c06360c0 00000000 00000000 c04379c0 c22ad780 00000000 562f5842
>> 5f40: c06360c0 00000000 60000153 c0635f60 c0313c54 c0313c60 60000153 ffffffff
>> [<c000db60>] (__irq_svc+0x40/0x50) from [<c0313c60>] (calibrate_delay+0x378/0x528)
>> [<c0313c60>] (calibrate_delay+0x378/0x528) from [<c0417754>] (start_kernel+0x250/0x2dc)
>> [<c0417754>] (start_kernel+0x250/0x2dc) from [<00008074>] (0x8074)
>> Code: 1fe7deb7 cd5772dd fff5692e ed55f79e (7ed5a5f7)
>>
>>
>>
>> I am trying to figure out what happened.
> 
> Argh. Stupid casting again. Can you try this?

Our emails  must have crossed, your fix is also fine :)


> 
> ---8<----
> 
> diff --git a/drivers/clocksource/time-armada-370-xp.c b/drivers/clocksource/time-armada-370-xp.c
> index ee2e50c5..a9bf37a 100644
> --- a/drivers/clocksource/time-armada-370-xp.c
> +++ b/drivers/clocksource/time-armada-370-xp.c
> @@ -150,7 +150,7 @@ static irqreturn_t armada_370_xp_timer_interrupt(int irq, void *dev_id)
>         /*
>          * ACK timer interrupt and call event handler.
>          */
> -       struct clock_event_device *evt = *(struct clock_event_device **)dev_id;
> +       struct clock_event_device *evt = dev_id;
>  
>         writel(TIMER0_CLR_MASK, local_base + LCL_TIMER_EVENTS_STATUS);
>         evt->event_handler(evt);
> 


-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: gregory.clement@free-electrons.com (Gregory CLEMENT)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv3 09/10] clocksource: time-armada-370-xp: Divorce from local timer API
Date: Wed, 20 Mar 2013 18:26:22 +0100	[thread overview]
Message-ID: <5149F13E.7060901@free-electrons.com> (raw)
In-Reply-To: <5149EFFA.1050408@codeaurora.org>

On 03/20/2013 06:20 PM, Stephen Boyd wrote:
> On 03/20/13 10:09, Gregory CLEMENT wrote:
>> On 03/13/2013 07:17 PM, Stephen Boyd wrote:
>>> Separate the armada 370xp local timers from the local timer API.
>>> This will allow us to remove ARM local timer support in the near
>>> future and makes this driver multi-architecture friendly.
>> At first view the code looks good, but when I applied your patch set on
>> linux-next, build it and run it on a Armada XP based board (AX3 with 2 cores),
>> it crashed:
> [...]
>> Internal error: Oops - undefined instruction: 0 [#1] SMP ARM
>> Modules linked in:
>> CPU: 0    Not tainted  (3.9.0-rc3-next-20130319-00010-g728b448 #153)
>> PC is at 0xe92d45f0
>> LR is at armada_370_xp_timer_interrupt+0x3c/0x4c
>> pc : [<e92d45f0>]    lr : [<c023c2bc>]    psr: 600001d3
>> sp : c0635eb8  ip : 00000000  fp : c063c3f0
>> r10: 000003ff  r9 : 00000000  r8 : 00000010
>> r7 : c22b3c40  r6 : ef007c00  r5 : c0640fcc  r4 : c0053e30
>> r3 : e92d45f0  r2 : fffffffe  r1 : c22b3c40  r0 : c0053e30
>> Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
>> Control: 10c53c7d  Table: 0000406a  DAC: 00000015
>> Process swapper/0 (pid: 0, stack limit = 0xc0634238)
>> Stack: (0xc0635eb8 to 0xc0636000)
>> 5ea0:                                                       ef004c80 c0063224
>> 5ec0: 00000010 00000010 00000000 c0660ac0 c0635f18 c005fcb8 c0632b90 c000ed94
>> 5ee0: c0313c60 60000153 00000001 c00085a8 c0313c54 c0313c60 60000153 ffffffff
>> 5f00: c0635f4c 00000000 562f5842 c06360c0 00000000 c000db60 0000001a ffff8ad0
>> 5f20: ffff8ad0 c06360c0 00000000 00000000 c04379c0 c22ad780 00000000 562f5842
>> 5f40: c06360c0 00000000 60000153 c0635f60 c0313c54 c0313c60 60000153 ffffffff
>> 5f60: 00000021 00000000 00000003 00000004 0000006e c065fcc0 c067924c c063ceb8
>> 5f80: c063cc84 c006d8c0 00000005 c065fcc0 c067924c c0421764 c22ad780 c063c42c
>> 5fa0: 562f5842 c063cca8 c06605c0 c04379c0 c22ad780 00000000 562f5842 00000000
>> 5fc0: 00000000 c0417754 ffffffff ffffffff c04172dc 00000000 00000000 c04379c0
>> 5fe0: 10c53c7d c063c414 c04379bc c063febc 0000406a 00008074 00000000 00000000
>> [<c023c2bc>] (armada_370_xp_timer_interrupt+0x3c/0x4c) from [<c0063224>] (handle_percpu_devid_irq+0x64/0x80)
>> [<c0063224>] (handle_percpu_devid_irq+0x64/0x80) from [<c005fcb8>] (generic_handle_irq+0x20/0x30)
>> [<c005fcb8>] (generic_handle_irq+0x20/0x30) from [<c000ed94>] (handle_IRQ+0x38/0x90)
>> [<c000ed94>] (handle_IRQ+0x38/0x90) from [<c00085a8>] (armada_370_xp_handle_irq+0xa4/0xb0)
>> [<c00085a8>] (armada_370_xp_handle_irq+0xa4/0xb0) from [<c000db60>] (__irq_svc+0x40/0x50)
>> Exception stack(0xc0635f18 to 0xc0635f60)
>> 5f00:                                                       0000001a ffff8ad0
>> 5f20: ffff8ad0 c06360c0 00000000 00000000 c04379c0 c22ad780 00000000 562f5842
>> 5f40: c06360c0 00000000 60000153 c0635f60 c0313c54 c0313c60 60000153 ffffffff
>> [<c000db60>] (__irq_svc+0x40/0x50) from [<c0313c60>] (calibrate_delay+0x378/0x528)
>> [<c0313c60>] (calibrate_delay+0x378/0x528) from [<c0417754>] (start_kernel+0x250/0x2dc)
>> [<c0417754>] (start_kernel+0x250/0x2dc) from [<00008074>] (0x8074)
>> Code: 1fe7deb7 cd5772dd fff5692e ed55f79e (7ed5a5f7)
>>
>>
>>
>> I am trying to figure out what happened.
> 
> Argh. Stupid casting again. Can you try this?

Our emails  must have crossed, your fix is also fine :)


> 
> ---8<----
> 
> diff --git a/drivers/clocksource/time-armada-370-xp.c b/drivers/clocksource/time-armada-370-xp.c
> index ee2e50c5..a9bf37a 100644
> --- a/drivers/clocksource/time-armada-370-xp.c
> +++ b/drivers/clocksource/time-armada-370-xp.c
> @@ -150,7 +150,7 @@ static irqreturn_t armada_370_xp_timer_interrupt(int irq, void *dev_id)
>         /*
>          * ACK timer interrupt and call event handler.
>          */
> -       struct clock_event_device *evt = *(struct clock_event_device **)dev_id;
> +       struct clock_event_device *evt = dev_id;
>  
>         writel(TIMER0_CLR_MASK, local_base + LCL_TIMER_EVENTS_STATUS);
>         evt->event_handler(evt);
> 


-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  reply	other threads:[~2013-03-20 17:26 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-13 18:17 [PATCHv3 00/10] Remove ARM local timer API Stephen Boyd
2013-03-13 18:17 ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 01/10] clocksource: add generic dummy timer driver Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-21 18:09   ` Mark Rutland
2013-03-21 18:09     ` Mark Rutland
2013-03-21 18:09     ` Mark Rutland
2013-03-21 18:13     ` Stephen Boyd
2013-03-21 18:13       ` Stephen Boyd
2013-03-21 18:13       ` Stephen Boyd
2013-03-22 18:03       ` Mark Rutland
2013-03-22 18:03         ` Mark Rutland
2013-03-22 18:03         ` Mark Rutland
2013-03-25 16:49         ` Stephen Boyd
2013-03-25 16:49           ` Stephen Boyd
2013-03-25 16:49           ` Stephen Boyd
2013-03-25 18:00           ` Mark Rutland
2013-03-25 18:00             ` Mark Rutland
2013-03-25 18:00             ` Mark Rutland
2013-03-25 20:47             ` Thomas Gleixner
2013-03-25 20:47               ` Thomas Gleixner
2013-03-25 20:47               ` Thomas Gleixner
2013-03-26 15:26               ` Mark Rutland
2013-03-26 15:26                 ` Mark Rutland
2013-03-26 15:26                 ` Mark Rutland
2013-03-26  2:14             ` Stephen Boyd
2013-03-26  2:14               ` Stephen Boyd
2013-03-26  2:14               ` Stephen Boyd
2013-03-26 11:28               ` Mark Rutland
2013-03-26 11:28                 ` Mark Rutland
2013-03-26 11:28                 ` Mark Rutland
2013-04-05  1:46                 ` Stephen Boyd
2013-04-05  1:46                   ` Stephen Boyd
2013-04-05  1:46                   ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 02/10] ARM: smp: Remove duplicate dummy timer implementation Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 03/10] ARM: smp_twd: Divorce smp_twd from local timer API Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-28 15:22   ` Mark Rutland
2013-03-28 15:22     ` Mark Rutland
2013-03-28 15:22     ` Mark Rutland
2013-03-28 20:09     ` Stephen Boyd
2013-03-28 20:09       ` Stephen Boyd
2013-03-28 20:09       ` Stephen Boyd
2013-04-02  8:41       ` Mark Rutland
2013-04-02  8:41         ` Mark Rutland
2013-04-02  8:41         ` Mark Rutland
2013-03-13 18:17 ` [PATCHv3 04/10] ARM: OMAP2+: Divorce " Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 05/10] ARM: EXYNOS4: Divorce mct " Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 06/10] ARM: PRIMA2: Divorce timer-marco " Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 07/10] ARM: msm: Divorce msm_timer " Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-13 18:17 ` [PATCHv3 08/10] clocksource: time-armada-370-xp: Fix sparse warning Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-20 17:06   ` Gregory CLEMENT
2013-03-20 17:06     ` Gregory CLEMENT
2013-03-13 18:17 ` [PATCHv3 09/10] clocksource: time-armada-370-xp: Divorce from local timer API Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd
2013-03-20 17:09   ` Gregory CLEMENT
2013-03-20 17:09     ` Gregory CLEMENT
2013-03-20 17:20     ` Stephen Boyd
2013-03-20 17:20       ` Stephen Boyd
2013-03-20 17:26       ` Gregory CLEMENT [this message]
2013-03-20 17:26         ` Gregory CLEMENT
2013-03-20 17:44         ` Gregory CLEMENT
2013-03-20 17:44           ` Gregory CLEMENT
2013-03-20 18:00           ` Stephen Boyd
2013-03-20 18:00             ` Stephen Boyd
2013-03-20 17:21     ` Gregory CLEMENT
2013-03-20 17:21       ` Gregory CLEMENT
2013-03-13 18:17 ` [PATCHv3 10/10] ARM: smp: Remove " Stephen Boyd
2013-03-13 18:17   ` Stephen Boyd

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=5149F13E.7060901@free-electrons.com \
    --to=gregory.clement@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sboyd@codeaurora.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.