Messages in this thread | | | Date | Mon, 06 Aug 2012 11:12:43 -0700 | From | John Stultz <> | Subject | Re: rcu: INFO: rcu_preempt detected stalls on CPUs/tasks on v3.6 |
| |
On 08/06/2012 10:21 AM, John Stultz wrote: > On 08/05/2012 09:55 AM, Sasha Levin wrote: >> On 07/30/2012 03:17 PM, Avi Kivity wrote: >>> Possible causes: >>> - 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. >> I've kept trying to narrow it down, and found out It's triggerable >> using adjtimex(). >> >> At that point I've bisected it, and got the following commit (parties >> Cc'ed): >> >> commit 5baefd6d84163443215f4a99f6a20f054ef11236 >> Author: John Stultz <johnstul@us.ibm.com> >> 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. > Hey Sasha, > Thanks for the heads up. I don't have a clear sense of what could > be wrong here yet, but if you see this with 3.6-rc but not 3.5, could > you try the fix(1d17d17484d40f2d5b35c79518597a2b25296996) Ingo just > made on tip/timers/urgent?
Reading over the thread here, the large timeouts also made me think that it could also be related to this pending fix: http://lkml.org/lkml/2012/8/1/436
Its not a clear cut solution though, since the edge case that limits usually results in a hang since we stop expiring timers all together.
Still working to reproduce what you're seeing, and will let you know as soon as I have any more info.
thanks -john
| |