]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/linux/clocksource.h
writeback: get rid of wbc->for_writepages
[karo-tx-linux.git] / include / linux / clocksource.h
index c56457c8334eea7ece9236c963fec845791909ba..1219be4fb42e8f2a86e9e1268dfe7958fde8263c 100644 (file)
@@ -293,7 +293,12 @@ static inline int clocksource_enable(struct clocksource *cs)
        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 +314,13 @@ static inline int clocksource_enable(struct clocksource *cs)
  */
 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);
 }