From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [patch 2/2] KVM: fix kvm_vcpu_kick vs __vcpu_run race Date: Sun, 13 Apr 2008 19:07:49 +0300 Message-ID: <48022FD5.9090307@qumranet.com> References: <20080410201254.316224847@localhost.localdomain> <20080410201402.446470629@localhost.localdomain> <47FF570B.2010708@qumranet.com> <20080411180122.GB3800@dmt> <4801DB8F.3090202@qumranet.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel To: Marcelo Tosatti Return-path: In-Reply-To: <4801DB8F.3090202@qumranet.com> 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 Avi Kivity wrote: > >> @@ -3944,11 +3950,13 @@ static void vcpu_kick_intr(void *info) >> void kvm_vcpu_kick(struct kvm_vcpu *vcpu) >> { >> int ipi_pcpu = vcpu->cpu; >> + int cpu = get_cpu(); >> >> if (waitqueue_active(&vcpu->wq)) { >> wake_up_interruptible(&vcpu->wq); >> ++vcpu->stat.halt_wakeup; >> } >> - if (vcpu->guest_mode) >> + if (vcpu->guest_mode && vcpu->cpu != cpu) >> smp_call_function_single(ipi_pcpu, vcpu_kick_intr, vcpu, 0, 0); >> + put_cpu(); >> } >> > > Looks like a no-op now, as vcpu_kick_intr() does nothing and > smp_call_function_single() won't force an exit if vcpu->cpu == cpu, so > I dropped this hunk. > Oh, I see the reason now: the irq stuff now happens with irqs disabled which annoys smp_call_function_single(). Well, I'd like to avoid all this irq-disabled processing, so I'm looking at an alternate fix using a new KVM_REQ_EVAL_IRQ. -- error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- 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