Subject: [RFC/NOT FOR MERGING] HACK: add global/private timers for A9

From: [email-masked] (Tony Lindgren)
Date: Thu, 4 Jun 2015 14:46:51 -0700

* Felipe Balbi <[email-masked]> [150604 13:41]:
> On Thu, Jun 04, 2015 at 10:32:40PM +0200, Mason wrote:
> > On 04/06/2015 22:08, Felipe Balbi wrote:
> > 
> > > On Thu, Jun 04, 2015 at 11:46:59AM +0200, Mason wrote:
> > >> Also, check /proc/timer_list for a "Broadcast device". If you don't
> > >> define one, the TWD timers are set to periodic mode, with hrtimers
> > >> disabled.
> > > 
> > > Did you manage to turn global timer into Broadcast device ?
> > 
> > Disclaimer: I am a kernel noob, take everything I say with
> > a rock of salt.
> > 
> > As far as I can see, the global timer code doesn't handle
> > frequency changes, whereas the TWD code does.
> 
> All right, but TWD has C3STOP and that prevents it from being used as
> broadcast device.
> 
> Tony Lindgren had the idea of implementing a timer switch during idle
> and that could help us strip the kernel off of C3STOP feature flag. That
> means we might be able to use TWD as broadcast until CPU decides to
> idle, at which point we need to switch to a different timer.

Yeah I'm looking at adding clocksource_pm_enter/exit() to allow also
changing the clocksource to a different one for idle.. Will post some
patches after investigating it a bit further.

Changing the clockevent for idle already works just fine based on
tick_broadcast_enable() + tick_broadcast_enter/exit().

Regards,

Tony