All of lore.kernel.org
 help / color / mirror / Atom feed
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: Enable arm_global_timer for Zynq brakes boot
Date: Wed, 31 Jul 2013 23:08:51 +0200	[thread overview]
Message-ID: <51F97CE3.9030306@linaro.org> (raw)
In-Reply-To: <068436c6-ff98-428f-8875-bb1c6f86466b@TX2EHSMHS008.ehs.local>

On 07/31/2013 10:58 PM, S?ren Brinkmann wrote:
> On Wed, Jul 31, 2013 at 10:49:06PM +0200, Daniel Lezcano wrote:
>> On 07/31/2013 12:34 AM, S?ren Brinkmann wrote:
>>> On Tue, Jul 30, 2013 at 10:47:15AM +0200, Daniel Lezcano wrote:
>>>> On 07/30/2013 02:03 AM, S?ren Brinkmann wrote:
>>>>> Hi Daniel,
>>>>>
>>>>> On Mon, Jul 29, 2013 at 02:51:49PM +0200, Daniel Lezcano wrote:
>>>>> (snip)
>>>>>>
>>>>>> the CPUIDLE_FLAG_TIMER_STOP flag tells the cpuidle framework the local
>>>>>> timer will be stopped when entering to the idle state. In this case, the
>>>>>> cpuidle framework will call clockevents_notify(ENTER) and switches to a
>>>>>> broadcast timer and will call clockevents_notify(EXIT) when exiting the
>>>>>> idle state, switching the local timer back in use.
>>>>>
>>>>> I've been thinking about this, trying to understand how this makes my
>>>>> boot attempts on Zynq hang. IIUC, the wrongly provided TIMER_STOP flag
>>>>> would make the timer core switch to a broadcast device even though it
>>>>> wouldn't be necessary. But shouldn't it still work? It sounds like we do
>>>>> something useless, but nothing wrong in a sense that it should result in
>>>>> breakage. I guess I'm missing something obvious. This timer system will
>>>>> always remain a mystery to me.
>>>>>
>>>>> Actually this more or less leads to the question: What is this
>>>>> 'broadcast timer'. I guess that is some clockevent device which is
>>>>> common to all cores? (that would be the cadence_ttc for Zynq). Is the
>>>>> hang pointing to some issue with that driver?
>>>>
>>>> If you look at the /proc/timer_list, which timer is used for broadcasting ?
>>>
>>> So, the correct run results (full output attached).
>>>
>>> The vanilla kernel uses the twd timers as local timers and the TTC as
>>> broadcast device:
>>> 	Tick Device: mode:     1                                                         
>>> 	Broadcast device  
>>> 	Clock Event Device: ttc_clockevent
>>>
>>> When I remove the offending CPUIDLE flag and add the DT fragment to
>>> enable the global timer, the twd timers are still used as local timers
>>> and the broadcast device is the global timer:
>>> 	Tick Device: mode:     1                                                         
>>> 	Broadcast device                                                                 
>>> 	Clock Event Device: arm_global_timer
>>>
>>> Again, since boot hangs in the actually broken case, I don't see way to
>>> obtain this information for that case.
>>
>> Can't you use the maxcpus=1 option to ensure the system to boot up ?
> 
> Right, that works. I forgot about that option after you mentioned, that
> it is most likely not that useful.
> 
> Anyway, this are those sysfs files with an unmodified cpuidle driver and
> the gt enabled and having maxcpus=1 set.
> 
> /proc/timer_list:
> 	Tick Device: mode:     1
> 	Broadcast device
> 	Clock Event Device: arm_global_timer
> 	 max_delta_ns:   12884902005
> 	 min_delta_ns:   1000
> 	 mult:           715827876
> 	 shift:          31
> 	 mode:           3

Here the mode is 3 (CLOCK_EVT_MODE_ONESHOT)

The previous timer_list output you gave me when removing the offending
cpuidle flag, it was 1 (CLOCK_EVT_MODE_SHUTDOWN).

Is it possible you try to get this output again right after onlining the
cpu1 in order to check if the broadcast device switches to SHUTDOWN ?

> 	 next_event:     108080000000 nsecs
> 	 set_next_event: gt_clockevent_set_next_event
> 	 set_mode:       gt_clockevent_set_mode
> 	 event_handler:  tick_handle_oneshot_broadcast
> 	 retries:        0
> 	
> 	tick_broadcast_mask: 00000001
> 	tick_broadcast_oneshot_mask: 00000000
> 	
> 	Tick Device: mode:     1
> 	Per CPU device: 0
> 	Clock Event Device: local_timer
> 	 max_delta_ns:   12884902005
> 	 min_delta_ns:   1000
> 	 mult:           715827876
> 	 shift:          31
> 	 mode:           3
> 	 next_event:     106900000000 nsecs
> 	 set_next_event: twd_set_next_event
> 	 set_mode:       twd_set_mode
> 	 event_handler:  hrtimer_interrupt
> 	 retries:        0
> 
> # cat /proc/interrupts 
> 	           CPU0       
> 	 27:        252       GIC  27  gt
> 	 29:        626       GIC  29  twd
> 	 43:          0       GIC  43  ttc_clockevent
> 	 82:        410       GIC  82  xuartps
> 	IPI0:          0  CPU wakeup interrupts
> 	IPI1:          0  Timer broadcast interrupts
> 	IPI2:          0  Rescheduling interrupts
> 	IPI3:          0  Function call interrupts
> 	IPI4:          0  Single function call interrupts
> 	IPI5:          0  CPU stop interrupts
> 	Err:          0
> 
> 
> 	S?ren
> 
> 


-- 
 <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: "Sören Brinkmann" <soren.brinkmann@xilinx.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>,
	John Stultz <john.stultz@linaro.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Stuart Menefy <stuart.menefy@st.com>,
	Russell King <linux@arm.linux.org.uk>,
	Michal Simek <michal.simek@xilinx.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: Enable arm_global_timer for Zynq brakes boot
Date: Wed, 31 Jul 2013 23:08:51 +0200	[thread overview]
Message-ID: <51F97CE3.9030306@linaro.org> (raw)
In-Reply-To: <068436c6-ff98-428f-8875-bb1c6f86466b@TX2EHSMHS008.ehs.local>

On 07/31/2013 10:58 PM, Sören Brinkmann wrote:
> On Wed, Jul 31, 2013 at 10:49:06PM +0200, Daniel Lezcano wrote:
>> On 07/31/2013 12:34 AM, Sören Brinkmann wrote:
>>> On Tue, Jul 30, 2013 at 10:47:15AM +0200, Daniel Lezcano wrote:
>>>> On 07/30/2013 02:03 AM, Sören Brinkmann wrote:
>>>>> Hi Daniel,
>>>>>
>>>>> On Mon, Jul 29, 2013 at 02:51:49PM +0200, Daniel Lezcano wrote:
>>>>> (snip)
>>>>>>
>>>>>> the CPUIDLE_FLAG_TIMER_STOP flag tells the cpuidle framework the local
>>>>>> timer will be stopped when entering to the idle state. In this case, the
>>>>>> cpuidle framework will call clockevents_notify(ENTER) and switches to a
>>>>>> broadcast timer and will call clockevents_notify(EXIT) when exiting the
>>>>>> idle state, switching the local timer back in use.
>>>>>
>>>>> I've been thinking about this, trying to understand how this makes my
>>>>> boot attempts on Zynq hang. IIUC, the wrongly provided TIMER_STOP flag
>>>>> would make the timer core switch to a broadcast device even though it
>>>>> wouldn't be necessary. But shouldn't it still work? It sounds like we do
>>>>> something useless, but nothing wrong in a sense that it should result in
>>>>> breakage. I guess I'm missing something obvious. This timer system will
>>>>> always remain a mystery to me.
>>>>>
>>>>> Actually this more or less leads to the question: What is this
>>>>> 'broadcast timer'. I guess that is some clockevent device which is
>>>>> common to all cores? (that would be the cadence_ttc for Zynq). Is the
>>>>> hang pointing to some issue with that driver?
>>>>
>>>> If you look at the /proc/timer_list, which timer is used for broadcasting ?
>>>
>>> So, the correct run results (full output attached).
>>>
>>> The vanilla kernel uses the twd timers as local timers and the TTC as
>>> broadcast device:
>>> 	Tick Device: mode:     1                                                         
>>> 	Broadcast device  
>>> 	Clock Event Device: ttc_clockevent
>>>
>>> When I remove the offending CPUIDLE flag and add the DT fragment to
>>> enable the global timer, the twd timers are still used as local timers
>>> and the broadcast device is the global timer:
>>> 	Tick Device: mode:     1                                                         
>>> 	Broadcast device                                                                 
>>> 	Clock Event Device: arm_global_timer
>>>
>>> Again, since boot hangs in the actually broken case, I don't see way to
>>> obtain this information for that case.
>>
>> Can't you use the maxcpus=1 option to ensure the system to boot up ?
> 
> Right, that works. I forgot about that option after you mentioned, that
> it is most likely not that useful.
> 
> Anyway, this are those sysfs files with an unmodified cpuidle driver and
> the gt enabled and having maxcpus=1 set.
> 
> /proc/timer_list:
> 	Tick Device: mode:     1
> 	Broadcast device
> 	Clock Event Device: arm_global_timer
> 	 max_delta_ns:   12884902005
> 	 min_delta_ns:   1000
> 	 mult:           715827876
> 	 shift:          31
> 	 mode:           3

Here the mode is 3 (CLOCK_EVT_MODE_ONESHOT)

The previous timer_list output you gave me when removing the offending
cpuidle flag, it was 1 (CLOCK_EVT_MODE_SHUTDOWN).

Is it possible you try to get this output again right after onlining the
cpu1 in order to check if the broadcast device switches to SHUTDOWN ?

> 	 next_event:     108080000000 nsecs
> 	 set_next_event: gt_clockevent_set_next_event
> 	 set_mode:       gt_clockevent_set_mode
> 	 event_handler:  tick_handle_oneshot_broadcast
> 	 retries:        0
> 	
> 	tick_broadcast_mask: 00000001
> 	tick_broadcast_oneshot_mask: 00000000
> 	
> 	Tick Device: mode:     1
> 	Per CPU device: 0
> 	Clock Event Device: local_timer
> 	 max_delta_ns:   12884902005
> 	 min_delta_ns:   1000
> 	 mult:           715827876
> 	 shift:          31
> 	 mode:           3
> 	 next_event:     106900000000 nsecs
> 	 set_next_event: twd_set_next_event
> 	 set_mode:       twd_set_mode
> 	 event_handler:  hrtimer_interrupt
> 	 retries:        0
> 
> # cat /proc/interrupts 
> 	           CPU0       
> 	 27:        252       GIC  27  gt
> 	 29:        626       GIC  29  twd
> 	 43:          0       GIC  43  ttc_clockevent
> 	 82:        410       GIC  82  xuartps
> 	IPI0:          0  CPU wakeup interrupts
> 	IPI1:          0  Timer broadcast interrupts
> 	IPI2:          0  Rescheduling interrupts
> 	IPI3:          0  Function call interrupts
> 	IPI4:          0  Single function call interrupts
> 	IPI5:          0  CPU stop interrupts
> 	Err:          0
> 
> 
> 	Sören
> 
> 


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


  reply	other threads:[~2013-07-31 21:08 UTC|newest]

Thread overview: 142+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20130717210417.GP13667@xsjandreislx>
     [not found] ` <51E72DCA.9070500@codeaurora.org>
     [not found]   ` <f5b76049-7e5b-4dd0-9863-19cfd1d599b9@TX2EHSMHS006.ehs.local>
     [not found]     ` <51E7435B.3060605@codeaurora.org>
     [not found]       ` <ff4d40be-7177-4a55-ab2f-dff11fa18642@DB9EHSMHS009.ehs.local>
     [not found]         ` <51ED8DF2.60600@codeaurora.org>
     [not found]           ` <20130722201348.GI453@xsjandreislx>
2013-07-22 22:41             ` Enable arm_global_timer for Zynq brakes boot Sören Brinkmann
2013-07-22 22:41               ` Sören Brinkmann
2013-07-29 12:51               ` Daniel Lezcano
2013-07-29 12:51                 ` Daniel Lezcano
2013-07-29 15:58                 ` Sören Brinkmann
2013-07-29 15:58                   ` Sören Brinkmann
2013-07-30  0:03                 ` Sören Brinkmann
2013-07-30  0:03                   ` Sören Brinkmann
2013-07-30  8:47                   ` Daniel Lezcano
2013-07-30  8:47                     ` Daniel Lezcano
2013-07-30 22:14                     ` Sören Brinkmann
2013-07-30 22:14                       ` Sören Brinkmann
2013-07-30 22:23                       ` Sören Brinkmann
2013-07-30 22:23                         ` Sören Brinkmann
2013-07-30 22:34                     ` Sören Brinkmann
2013-07-30 22:34                       ` Sören Brinkmann
2013-07-31  7:27                       ` Daniel Lezcano
2013-07-31  7:27                         ` Daniel Lezcano
2013-07-31 16:26                         ` Sören Brinkmann
2013-07-31 16:26                           ` Sören Brinkmann
2013-07-31  9:34                       ` Daniel Lezcano
2013-07-31  9:34                         ` Daniel Lezcano
2013-07-31 16:43                         ` Sören Brinkmann
2013-07-31 16:43                           ` Sören Brinkmann
2013-07-31 20:49                       ` Daniel Lezcano
2013-07-31 20:49                         ` Daniel Lezcano
2013-07-31 20:58                         ` Sören Brinkmann
2013-07-31 20:58                           ` Sören Brinkmann
2013-07-31 21:08                           ` Daniel Lezcano [this message]
2013-07-31 21:08                             ` Daniel Lezcano
2013-07-31 22:18                             ` Sören Brinkmann
2013-07-31 22:18                               ` Sören Brinkmann
2013-07-31 23:01                               ` Daniel Lezcano
2013-07-31 23:01                                 ` Daniel Lezcano
2013-07-31 23:38                                 ` Sören Brinkmann
2013-07-31 23:38                                   ` Sören Brinkmann
2013-08-01 17:29                                   ` Daniel Lezcano
2013-08-01 17:29                                     ` Daniel Lezcano
2013-08-01 17:43                                     ` Sören Brinkmann
2013-08-01 17:43                                       ` Sören Brinkmann
2013-08-01 17:48                                       ` Daniel Lezcano
2013-08-01 17:48                                         ` Daniel Lezcano
2013-08-06  1:28                                         ` Sören Brinkmann
2013-08-06  1:28                                           ` Sören Brinkmann
2013-08-06  8:46                                           ` Daniel Lezcano
2013-08-06  8:46                                             ` Daniel Lezcano
2013-08-06  9:18                                             ` Michal Simek
2013-08-06  9:18                                               ` Michal Simek
2013-08-06 12:30                                               ` Daniel Lezcano
2013-08-06 12:30                                                 ` Daniel Lezcano
2013-08-06 12:41                                                 ` Michal Simek
2013-08-06 12:41                                                   ` Michal Simek
2013-08-06 13:08                                                   ` Daniel Lezcano
2013-08-06 13:08                                                     ` Daniel Lezcano
2013-08-06 13:18                                                     ` Michal Simek
2013-08-06 13:18                                                       ` Michal Simek
2013-08-06 16:09                                                       ` Daniel Lezcano
2013-08-06 16:09                                                         ` Daniel Lezcano
2013-08-06 16:13                                                         ` Sören Brinkmann
2013-08-06 16:13                                                           ` Sören Brinkmann
2013-08-06 16:25                                                         ` Sören Brinkmann
2013-08-06 16:25                                                           ` Sören Brinkmann
2013-08-06 16:18                                             ` Sören Brinkmann
2013-08-06 16:18                                               ` Sören Brinkmann
2013-08-08 17:11                                         ` Sören Brinkmann
2013-08-08 17:11                                           ` Sören Brinkmann
2013-08-08 17:16                                           ` Mark Rutland
2013-08-08 17:16                                             ` Mark Rutland
2013-08-08 17:22                                             ` Stephen Boyd
2013-08-08 17:22                                               ` Stephen Boyd
2013-08-09 10:58                                               ` Mark Rutland
2013-08-09 10:58                                                 ` Mark Rutland
2013-08-08 17:22                                             ` Sören Brinkmann
2013-08-08 17:22                                               ` Sören Brinkmann
2013-08-09 10:32                                           ` Srinivas KANDAGATLA
2013-08-09 10:32                                             ` Srinivas KANDAGATLA
2013-08-09 14:19                                             ` Daniel Lezcano
2013-08-09 14:19                                               ` Daniel Lezcano
2013-08-09 17:27                                               ` Stephen Boyd
2013-08-09 17:27                                                 ` Stephen Boyd
2013-08-09 17:48                                                 ` Sören Brinkmann
2013-08-09 17:48                                                   ` Sören Brinkmann
2013-08-09 18:45                                                   ` Stephen Boyd
2013-08-09 18:45                                                     ` Stephen Boyd
2013-08-12 10:53                                                 ` Daniel Lezcano
2013-08-12 10:53                                                   ` Daniel Lezcano
2013-08-12 16:23                                                   ` Stephen Boyd
2013-08-12 16:23                                                     ` Stephen Boyd
2013-08-12 16:53                                                     ` Daniel Lezcano
2013-08-12 16:53                                                       ` Daniel Lezcano
2013-08-12 16:03                                                 ` Sören Brinkmann
2013-08-12 16:03                                                   ` Sören Brinkmann
2013-08-12 16:08                                                   ` Daniel Lezcano
2013-08-12 16:08                                                     ` Daniel Lezcano
2013-08-12 16:17                                                     ` Sören Brinkmann
2013-08-12 16:17                                                       ` Sören Brinkmann
2013-08-12 16:20                                                   ` Stephen Boyd
2013-08-12 16:20                                                     ` Stephen Boyd
2013-08-12 16:24                                                     ` Sören Brinkmann
2013-08-12 16:24                                                       ` Sören Brinkmann
2013-08-12 16:40                                                       ` Stephen Boyd
2013-08-12 16:40                                                         ` Stephen Boyd
2013-08-12 16:43                                                         ` Sören Brinkmann
2013-08-12 16:43                                                           ` Sören Brinkmann
2013-08-12 16:32                                                     ` Sören Brinkmann
2013-08-12 16:32                                                       ` Sören Brinkmann
2013-08-12 16:49                                                       ` Daniel Lezcano
2013-08-12 16:49                                                         ` Daniel Lezcano
2013-08-12 16:53                                                         ` Sören Brinkmann
2013-08-12 16:53                                                           ` Sören Brinkmann
2013-08-12 17:02                                                           ` Daniel Lezcano
2013-08-12 17:02                                                             ` Daniel Lezcano
2013-08-16 17:28                                                             ` Sören Brinkmann
2013-08-16 17:28                                                               ` Sören Brinkmann
2013-08-19 23:00                                                               ` Stephen Boyd
2013-08-19 23:00                                                                 ` Stephen Boyd
2013-08-19 23:30                                                                 ` Sören Brinkmann
2013-08-19 23:30                                                                   ` Sören Brinkmann
2013-08-20  0:57                                                                   ` Stephen Boyd
2013-08-20  0:57                                                                     ` Stephen Boyd
2013-08-20 15:13                                                                     ` Daniel Lezcano
2013-08-20 15:13                                                                       ` Daniel Lezcano
2013-08-22 17:06                                                                       ` [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources Stephen Boyd
2013-08-22 17:06                                                                         ` Stephen Boyd
2013-08-22 17:06                                                                         ` [PATCH 2/2] clockevents: Prefer clockevents that don't suffer from FEAT_C3_STOP Stephen Boyd
2013-08-22 17:06                                                                           ` Stephen Boyd
2013-08-22 17:33                                                                           ` Santosh Shilimkar
2013-08-22 17:33                                                                             ` Santosh Shilimkar
2013-08-22 17:40                                                                             ` Stephen Boyd
2013-08-22 17:40                                                                               ` Stephen Boyd
2013-08-22 17:48                                                                               ` Santosh Shilimkar
2013-08-22 17:48                                                                                 ` Santosh Shilimkar
2013-08-22 18:31                                                                                 ` Stephen Boyd
2013-08-22 18:31                                                                                   ` Stephen Boyd
2013-08-22 21:06                                                                                   ` Santosh Shilimkar
2013-08-22 21:06                                                                                     ` Santosh Shilimkar
2013-08-22 23:38                                                                         ` [PATCH 1/2] tick: broadcast: Deny per-cpu clockevents from being broadcast sources Sören Brinkmann
2013-08-22 23:38                                                                           ` Sören Brinkmann
2013-09-05 16:53                                                                         ` Sören Brinkmann
2013-09-05 16:53                                                                           ` Sören Brinkmann
2013-08-09 16:03                                             ` Enable arm_global_timer for Zynq brakes boot Sören Brinkmann
2013-08-09 16:03                                               ` Sören Brinkmann

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=51F97CE3.9030306@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --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.