Messages in this thread | | | Subject | Re: [PATCH] clocksource: save mult_orig in clocksource_disable() | From | john stultz <> | Date | Thu, 18 Jun 2009 12:17:12 -0700 |
| |
On Fri, 2009-06-19 at 00:24 +0900, Magnus Damm wrote: > From: Magnus Damm <damm@igel.co.jp> > > Save clocksource mult_orig in clocksource_disable(). > > To fix the common case where ->enable() does not setup > mult, make sure mult_orig is saved in mult on disable. > > Also add comments to explain why we do this. > > Signed-off-by: Magnus Damm <damm@igel.co.jp>
Acked-by: John Stultz <johnstul@us.ibm.com>
Thomas, Andrew, please push this for 2.6.31.
thanks -john
> --- > > include/linux/clocksource.h | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > --- 0001/include/linux/clocksource.h > +++ work/include/linux/clocksource.h 2009-06-19 00:12:16.000000000 +0900 > @@ -293,7 +293,11 @@ static inline int clocksource_enable(str > if (cs->enable) > ret = cs->enable(cs); > > - /* save mult_orig on enable */ > + /* The frequency may have changed while the clocksource > + * was disabled. If so the code in ->enable() must update > + * the mult value to reflect the new frequency. Make sure > + * mult_orig follows this change. > + */ > cs->mult_orig = cs->mult; > > return ret; > @@ -309,6 +313,12 @@ static inline int clocksource_enable(str > */ > static inline void clocksource_disable(struct clocksource *cs) > { > + /* Save mult_orig in mult so clocksource_enable() can > + * restore the value regardless if ->enable() updates > + * the value of mult or not. > + */ > + cs->mult = cs->mult_orig; > + > if (cs->disable) > cs->disable(cs); > }
| |