Re: [patch 3/3] clockevents: Fix resume logic - updated version

Thomas Gleixner
2007-05-09T17:13:16Z

On Wed, 2007-05-09 at 19:09 +0200, Rafael J. Wysocki wrote:
> > > Well, where is unregister_time_interpolator() called from?
> >
> > # grep -rn unregister_time_interpolator .
> > ./kernel/timer.c:1893:unregister_time_interpolator(struct time_interpolator *ti)
> > ./include/linux/timex.h:270:extern void unregister_time_interpolator(struct time_interpolator *);
> >
> > I don't see a caller. i386 does not use time interpolator anyway.
> >
> > # find -iname Kconfig | xargs grep TIME_INTERPOLATION
> > ./arch/sparc64/Kconfig:37:config TIME_INTERPOLATION
> > ./arch/ia64/Kconfig:60:config TIME_INTERPOLATION
>
> But clocksource_resume() has no other caller, AFAICS ...

Eeep ?

clocksource_resume is called from timekeeping_resume()

timestatic int timekeeping_resume(struct sys_device *dev)
{
unsigned long flags;
unsigned long now = read_persistent_clock();

clocksource_resume();
....
}

keeping_resume() called via the sysdev resume

static struct sysdev_class timekeeping_sysclass = {
.resume = timekeeping_resume,
.suspend = timekeeping_suspend,
set_kset_name("timekeeping"),
};

tglx