[PATCH V2] ARM: S5PV310: Implement kernel timers using MCT

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Jan 7 07:11:21 EST 2011


On Fri, Jan 07, 2011 at 09:05:11PM +0900, Kukjin Kim wrote:
> Russell King - ARM Linux wrote:
> > 
> > On Tue, Jan 04, 2011 at 11:18:47AM +0900, Kukjin Kim wrote:
> > > From: Changhwan Youn <chaos.youn at samsung.com>
> > >
> > > The Multi-Core Timer(MCT) of S5PV310 is designed for implementing
> > > clock source timer and clock event timers. This patch implements
> > > 1 clock source timer with 64 bit free running counter of MCT and
> > > 2 clock event timers with two of 31-bit tick counters.
> > 
> > I want to wait until after this merge window before commenting too much
> > on this; some of this patch will be impacted by changes in this merge
> > window.
> > 
> Hmmm...Ok, I understood.

That stuff is now in mainline - not only the new sched_clock() support
but also the SMP changes (which impact on your MCT code.)  Please rebase
on latest mainline and re-send.

> > > +static void s5pv310_frc_suspend(struct clocksource *cs)
> > > +{
> > > +	time_suspended = s5pv310_frc_read(cs);
> > > +};
> > > +
> > > +static void s5pv310_frc_resume(struct clocksource *cs)
> > > +{
> > > +	s5pv310_mct_frc_start((u32)(time_suspended >> 32),
> > (u32)time_suspended);
> > > +};
> > 
> > Is this something which other clocksource drivers need to do, or does the
> > core automatically deal with the clocksource being irregular across a
> > suspend/resume event?
> > 
> Normally this is not necessary because core deals with the irregularity of
> clocksource, but for sched_clock() implementation, clocksource had better be
> regular across a suspend/resume event. One example is "Show timing
> information on printks" kernel configuration. Without this code, timing
> information resets after suspend/resume event.
> 
> Following is not submitted but will be submitted :-)
> 
> unsigned long long sched_clock(void)
> {
> 	struct clocksource *cs = &mct_frc;
> 
> 	return clocksource_cyc2ns(cs->read(NULL), sched_mult, sched_shift);
> }

Please use the new sched_clock stuff which guarantees to return a 64-bit
cycle count (which is what sched_clock() is required to do.)



More information about the linux-arm-kernel mailing list