Thread (71 messages) 71 messages, 8 authors, 2013-09-05

Enable arm_global_timer for Zynq brakes boot

From: Daniel Lezcano <hidden>
Date: 2013-08-12 17:02:46
Also in: lkml

On 08/12/2013 06:53 PM, S?ren Brinkmann wrote:
On Mon, Aug 12, 2013 at 06:49:17PM +0200, Daniel Lezcano wrote:
quoted
On 08/12/2013 06:32 PM, S?ren Brinkmann wrote:
quoted
On Mon, Aug 12, 2013 at 09:20:19AM -0700, Stephen Boyd wrote:
quoted
On 08/12/13 09:03, S?ren Brinkmann wrote:
quoted
On Fri, Aug 09, 2013 at 10:27:57AM -0700, Stephen Boyd wrote:
quoted
On 08/09, Daniel Lezcano wrote:
quoted
yes, but at least the broadcast mechanism should send an IPI to cpu0 to
wake it up, no ? As Stephen stated this kind of configuration should has
never been tested before so the tick broadcast code is not handling this
case properly IMHO.
If you have a per-cpu tick device that isn't suffering from
FEAT_C3_STOP why wouldn't you use that for the tick versus a
per-cpu tick device that has FEAT_C3_STOP? It sounds like there
is a bug in the preference logic or you should boost the rating
of the arm global timer above the twd. Does this patch help? It
should make the arm global timer the tick device and whatever the
cadence timer you have into the broadcast device.
I finally got to test your patch. Unfortunately, it makes the system
hang even earlier:
Sorry it had a bug depending on the registration order. Can you try this
one (tabs are probably spaces, sorry)? I will go read through this
thread to see if we already covered the registration order.
That did it! Booted straight into the system. 
Good news :)
quoted
The broadcast device is
the TTC instead of GT, now.

	Tick Device: mode:     1
	Broadcast device
	Clock Event Device: ttc_clockevent
	 max_delta_ns:   1207932479
	 min_delta_ns:   18432
	 mult:           233015
	 shift:          32
	 mode:           1
	 next_event:     9223372036854775807 nsecs
	 set_next_event: ttc_set_next_event
	 set_mode:       ttc_set_mode
	 event_handler:  tick_handle_oneshot_broadcast
	 retries:        0
	
	tick_broadcast_mask: 00000000
	tick_broadcast_oneshot_mask: 00000000
At the first glance, the timer broadcast usage is not set, right ? Can
you try with the cpuidle flag even if it is not needed ?
It's actually present. I have a clean 3.11-rc3 and the only changes are
my patch to enable the GT and Stephen's fix.
The cpuidle stats show both idle states being used.
Ah, right. The tick_broadcast_mask is not set because the arm global
timer has not the CLOCK_EVT_FEAT_C3STOP feature flag set.

Thanks
  -- Daniel


-- 
 <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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help