Re: [PATCH] Fix block mode during halt emulation
Hi Dor, On Tue, Jul 01, 2008 at 01:30:08AM +0300, Dor Laor wrote: > >From d85feaae019bc0abc98a2524369e04d521a78aa8 Mon Sep 17 00:00:00 2001 > From: Dor Laor <[EMAIL PROTECTED]> > Date: Mon, 30 Jun 2008 18:22:44 -0400 > Subject: [PATCH] Fix block mode hduring halt emulation > > There is no need to check for pending pit/apic timer, nor > pending virq, since all of the check KVM_MP_STATE_RUNNABLE > and wakeup the waitqueue. > > It fixes 100% cpu when windows guest is shutdown (non acpi HAL) You need to test for pending interrupts and timers. IRQ injection and timers can trigger before kvm_vcpu_block() adds the running thread to the waitqueue, in which case waitqueue_active() test fails. > Signed-off-by: Dor Laor <[EMAIL PROTECTED]> > --- > virt/kvm/kvm_main.c |4 > 1 files changed, 0 insertions(+), 4 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index b90da0b..faa0778 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -816,10 +816,6 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu) > for (;;) { > prepare_to_wait(&vcpu->wq, &wait, TASK_INTERRUPTIBLE); > > - if (kvm_cpu_has_interrupt(vcpu)) > - break; > - if (kvm_cpu_has_pending_timer(vcpu)) > - break; > if (kvm_arch_vcpu_runnable(vcpu)) > break; > if (signal_pending(current)) > -- > 1.5.4 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Fix block mode during halt emulation
Well, it's obiosly creates a race, it was too [EMAIL PROTECTED] The problem is that kvm_cpu_has_interrupt() calls apic that checks if the kvm_apic_accept_pic_intr and its true since probably the apic is masked on guest shutdown. There is no test whether the pic is masked. Testing. On Tue, 2008-07-01 at 01:30 +0300, Dor Laor wrote: > >From d85feaae019bc0abc98a2524369e04d521a78aa8 Mon Sep 17 00:00:00 2001 > From: Dor Laor <[EMAIL PROTECTED]> > Date: Mon, 30 Jun 2008 18:22:44 -0400 > Subject: [PATCH] Fix block mode hduring halt emulation > > There is no need to check for pending pit/apic timer, nor > pending virq, since all of the check KVM_MP_STATE_RUNNABLE > and wakeup the waitqueue. > > It fixes 100% cpu when windows guest is shutdown (non acpi HAL) > > Signed-off-by: Dor Laor <[EMAIL PROTECTED]> > --- > virt/kvm/kvm_main.c |4 > 1 files changed, 0 insertions(+), 4 deletions(-) > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index b90da0b..faa0778 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -816,10 +816,6 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu) > for (;;) { > prepare_to_wait(&vcpu->wq, &wait, TASK_INTERRUPTIBLE); > > - if (kvm_cpu_has_interrupt(vcpu)) > - break; > - if (kvm_cpu_has_pending_timer(vcpu)) > - break; > if (kvm_arch_vcpu_runnable(vcpu)) > break; > if (signal_pending(current)) -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] Fix block mode during halt emulation
>From d85feaae019bc0abc98a2524369e04d521a78aa8 Mon Sep 17 00:00:00 2001 From: Dor Laor <[EMAIL PROTECTED]> Date: Mon, 30 Jun 2008 18:22:44 -0400 Subject: [PATCH] Fix block mode hduring halt emulation There is no need to check for pending pit/apic timer, nor pending virq, since all of the check KVM_MP_STATE_RUNNABLE and wakeup the waitqueue. It fixes 100% cpu when windows guest is shutdown (non acpi HAL) Signed-off-by: Dor Laor <[EMAIL PROTECTED]> --- virt/kvm/kvm_main.c |4 1 files changed, 0 insertions(+), 4 deletions(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index b90da0b..faa0778 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -816,10 +816,6 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu) for (;;) { prepare_to_wait(&vcpu->wq, &wait, TASK_INTERRUPTIBLE); - if (kvm_cpu_has_interrupt(vcpu)) - break; - if (kvm_cpu_has_pending_timer(vcpu)) - break; if (kvm_arch_vcpu_runnable(vcpu)) break; if (signal_pending(current)) -- 1.5.4 0001-Fix-block-mode-during-halt-emulation.patch Description: application/mbox