On 07/30/2012 03:17 PM, Avi Kivity wrote:Hey Sasha,Possible causes:I've kept trying to narrow it down, and found out It's triggerable using adjtimex().
- the APIC calibration in the guest failed, so it is programming too
low values into the timer
- it actually needs 1 us wakeups and then can't keep up (esp. as kvm
interrupt injection is slowing it down)
You can try to find out by changing
arch/x86/kvm/lapic.c:start_lapic_timer() to impose a minimum wakeup of
(say) 20 microseconds which will let the guest live long enough for you
to ftrace it and see what kind of timers it is programming.
At that point I've bisected it, and got the following commit (parties Cc'ed):
commit 5baefd6d84163443215f4a99f6a20f054ef11236
Author: John Stultz <johnstul@xxxxxxxxxx>
Date: Tue Jul 10 18:43:25 2012 -0400
hrtimer: Update hrtimer base offsets each hrtimer_interrupt
I've also confirmed that reverting the commit above on top of linux-next indeed fixes the issue.