From: Avi K. <av...@qu...> - 2008-04-24 16:52:38
|
Marcelo Tosatti wrote: > On Thu, Apr 24, 2008 at 04:44:27PM +0300, Avi Kivity wrote: > >> Chris Lalancette wrote: >> >>> Avi Kivity wrote: >>> >>> >>>> Ok. __pit_timer_fn() is called from an interrupt, which then calls >>>> smp_call_function_single(), which calls spin_lock(). If we've already >>>> taken the lock, we hang. >>>> >>>> >>>> >>> Ah. Just adding a "me too"; I didn't get a chance to debug it yesterday, >>> but I >>> was seeing similar problems. If I disabled in-kernel pit with >>> -no-kvm-pit, all >>> was well. >>> >>> >> How to fix it, though? the only idea that comes to mind is to affine >> the hrtimer with vcpu0 (like the local apic timers) which would mean we >> only need to unwait the waitqueue, and never need to send the IPI. >> Would slightly improve performance as well. >> > > Yes, agree. > > For now I think just revert > I committed this, so this should be fixed for now. I'm not sure hrtimer migration would work 100% reliably (suppose it fired just after a vcpu migration) so I think a queue_work is better. -- error compiling committee.c: too many arguments to function |