time: Avoid scary backtraces when warning of > 11% adj
authorJohn Stultz <john.stultz@linaro.org>
Fri, 23 Mar 2012 02:14:46 +0000 (19:14 -0700)
committerJohn Stultz <john.stultz@linaro.org>
Fri, 23 Mar 2012 23:25:16 +0000 (16:25 -0700)
Folks have been getting a number of warnings about time
adjustments > 11%. The WARN_ON leaves a big useless backtrace
so this patch removes it for a printk_once().

I'm still working to narrow down the cause of the > 11% adjustment.

Signed-off-by: John Stultz <john.stultz@linaro.org>
kernel/time/timekeeping.c

index 5d76e09..16a175b 100644 (file)
@@ -869,13 +869,15 @@ static void timekeeping_adjust(s64 offset)
        } else /* No adjustment needed */
                return;
 
-       WARN_ONCE(timekeeper.clock->maxadj &&
-                       (timekeeper.mult + adj > timekeeper.clock->mult +
-                                               timekeeper.clock->maxadj),
-                       "Adjusting %s more then 11%% (%ld vs %ld)\n",
+       if (unlikely(timekeeper.clock->maxadj &&
+                       (timekeeper.mult + adj >
+                       timekeeper.clock->mult + timekeeper.clock->maxadj))) {
+               printk_once(KERN_WARNING
+                       "Adjusting %s more than 11%% (%ld vs %ld)\n",
                        timekeeper.clock->name, (long)timekeeper.mult + adj,
                        (long)timekeeper.clock->mult +
                                timekeeper.clock->maxadj);
+       }
        /*
         * So the following can be confusing.
         *