From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [patch 1/2] KVM: hlt emulation should take in-kernel APIC/PIT timers into account Date: Fri, 11 Apr 2008 15:12:41 +0300 Message-ID: <47FF55B9.2010607@qumranet.com> References: <20080410201254.316224847@localhost.localdomain> <20080410201402.382704482@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel@lists.sourceforge.net, Carsten Otte To: Marcelo Tosatti Return-path: In-Reply-To: <20080410201402.382704482@localhost.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org Marcelo Tosatti wrote: > Timers that fire between guest hlt and vcpu_block's add_wait_queue() are > ignored, possibly resulting in hangs. > > Also make sure that atomic_inc and waitqueue_active tests happen in the > specified order, otherwise the following race is open: > > CPU0 CPU1 > if (waitqueue_active(wq)) > add_wait_queue() > if (!atomic_read(pit_timer->pending)) > schedule() > atomic_inc(pit_timer->pending) > > Which is not an issue for the APIC timer due to migration logic. > > Nasty. I hope we can get Dor's interrupt injection notification working, so we don't have to handle these bugs. > Index: kvm/virt/kvm/kvm_main.c > =================================================================== > --- kvm.orig/virt/kvm/kvm_main.c > +++ kvm/virt/kvm/kvm_main.c > @@ -752,6 +752,7 @@ void mark_page_dirty(struct kvm *kvm, gf > } > } > > +#ifdef CONFIG_X86 > /* > * The vCPU has executed a HLT instruction with in-kernel mode enabled. > */ > @@ -765,6 +766,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcp > This breaks ia64 (and shouldn't s390 use this too?) > * We will block until either an interrupt or a signal wakes us up > */ > while (!kvm_cpu_has_interrupt(vcpu) > + && !kvm_cpu_has_pending_timer(vcpu) > I guess the fix is to stub this out for the other archs. -- Any sufficiently difficult bug is indistinguishable from a feature. ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone