Messages in this thread | | | Date | Fri, 4 Nov 2011 16:20:38 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] clocksource: Avoid selecting mult values that might overflow when adjusted |
| |
* John Stultz <john.stultz@linaro.org> wrote:
> On Thu, 2011-11-03 at 22:10 +0100, Ingo Molnar wrote: > > * John Stultz <john.stultz@linaro.org> wrote: > > > > > For some frequqencies, the clocks_calc_mult_shift() function will > > > unfortunately select mult values very close to 0xffffffff. This > > > has the potential to overflow when NTP adjusts the clock, adding > > > to the mult value. > > > > > > This patch adds a clocksource.maxadj value, which provides > > > an approximation of an 11% adjustment(NTP limits adjustments to > > > 500ppm and the tick adjustment is limited to 10%), which could > > > be made to the clocksource.mult value. This is then used to both > > > check that the current mult value won't overflow/underflow, as > > > well as warning us if the timekeeping_adjust() code pushes over > > > that 11% boundary. > > > > > > CC: Yong Zhang <yong.zhang0@gmail.com> > > > CC: David Daney <ddaney.cavm@gmail.com> > > > CC: Thomas Gleixner <tglx@linutronix.de> > > > Reported-by: Chen Jie <chenj@lemote.com> > > > Reported-by: zhangfx <zhangfx@lemote.com> > > > Signed-off-by: John Stultz <john.stultz@linaro.org> > > > --- > > > include/linux/clocksource.h | 3 +- > > > kernel/time/clocksource.c | 53 ++++++++++++++++++++++++++++++++++-------- > > > kernel/time/timekeeping.c | 3 ++ > > > 3 files changed, 48 insertions(+), 11 deletions(-) > > > > This patch (included in tip:timers/urgent) causes the following boot > > warning x86: > > > > [ 0.000000] Fast TSC calibration using PIT > > [ 0.000000] ------------[ cut here ]------------ > > [ 0.000000] WARNING: at kernel/time/timekeeping.c:855 do_timer+0x47f/0x4c0() > > [ 0.000000] Hardware name: System Product Name > > [ 0.000000] Adjusting more then 11% > > [ 0.000000] Modules linked in: > > [ 0.000000] Pid: 0, comm: swapper Not tainted 3.1.0-tip+ #161792 > > [ 0.000000] Call Trace: > > [ 0.000000] <IRQ> [<ffffffff81042d0a>] warn_slowpath_common+0x7a/0xb0 > > [ 0.000000] [<ffffffff81042de1>] warn_slowpath_fmt+0x41/0x50 > > [ 0.000000] [<ffffffff8106e78f>] do_timer+0x47f/0x4c0 > > [ 0.000000] [<ffffffff81073953>] tick_periodic+0x63/0x80 > > [ 0.000000] [<ffffffff810739f1>] tick_handle_periodic+0x21/0x70 > > [ 0.000000] [<ffffffff810046d8>] timer_interrupt+0x18/0x20 > > [ 0.000000] [<ffffffff8109ff9e>] handle_irq_event_percpu+0x5e/0x220 > > [ 0.000000] [<ffffffff810a019b>] handle_irq_event+0x3b/0x60 > > [ 0.000000] [<ffffffff810a295c>] handle_level_irq+0x6c/0xd0 > > [ 0.000000] [<ffffffff81003f34>] handle_irq+0x44/0xa0 > > > > Full bootlog and config attached. > > > > i've excluded it from tip:master for now. > > Sounds good. Thanks for the heads up. Do you have a dmesg for this > system as well, so I can narrow down what I should try to reproduce > this on?
The full bootlog that i attached to my report is a dmesg - do you need any other info beyond that?
Thanks,
Ingo
| |