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: 00000000At 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