linux/arch/x86/kvm
Xiao Guangrong e6d53e3b0d KVM: avoid unnecessary wait for a async pf
In current code, it checks async pf completion out of the wait context,
like this:

if (vcpu->arch.mp_state == KVM_MP_STATE_RUNNABLE &&
		    !vcpu->arch.apf.halted)
			r = vcpu_enter_guest(vcpu);
		else {
			......
			kvm_vcpu_block(vcpu)
			 ^- waiting until 'async_pf.done' is not empty
}

kvm_check_async_pf_completion(vcpu)
 ^- delete list from async_pf.done

So, if we check aysnc pf completion first, it can be blocked at
kvm_vcpu_block

Fixed by mark the vcpu is unhalted in kvm_check_async_pf_completion()
path

Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Acked-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
2011-01-12 11:29:00 +02:00
..
emulate.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
i8254.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
i8254.h KVM: x86: Introduce a workqueue to deliver PIT timer interrupts 2010-08-01 10:46:49 +03:00
i8259.c KVM: i8259: initialize isr_ack 2011-01-02 11:52:48 +02:00
irq.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
irq.h KVM: Convert PIC lock from raw spinlock to ordinary spinlock 2010-10-24 10:52:56 +02:00
Kconfig KVM: Halt vcpu if page it tries to access is swapped out 2011-01-12 11:21:39 +02:00
kvm_cache_regs.h KVM: MMU: Introduce kvm_pdptr_read_mmu 2010-10-24 10:52:42 +02:00
kvm_timer.h KVM: arch/x86/kvm/kvm_timer.h checkpatch cleanup 2010-05-17 12:14:42 +03:00
lapic.c KVM: Avoid double interrupt injection with vapic 2011-01-12 11:23:36 +02:00
lapic.h KVM: Add HYPER-V apic access MSRs 2010-03-01 12:36:00 -03:00
Makefile KVM: Halt vcpu if page it tries to access is swapped out 2011-01-12 11:21:39 +02:00
mmu.c KVM: fix tracing kvm_try_async_get_page 2011-01-12 11:28:56 +02:00
mmu.h KVM: MMU: Don't track nested fault info in error-code 2010-10-24 10:52:55 +02:00
mmu_audit.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
mmutrace.h KVM: MMU: support disable/enable mmu audit dynamicly 2010-10-24 10:51:56 +02:00
paging_tmpl.h KVM: propagate fault r/w information to gup(), allow read-only memory 2011-01-12 11:28:40 +02:00
svm.c KVM: SVM: Fold save_host_msrs() and load_host_msrs() into their callers 2011-01-12 11:23:34 +02:00
timer.c KVM: fix typo in copyright notice 2010-10-24 10:53:14 +02:00
trace.h KVM: Trace emulated instructions 2010-05-17 12:17:35 +03:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: handle exit due to INVD in VMX 2011-01-12 11:28:53 +02:00
x86.c KVM: avoid unnecessary wait for a async pf 2011-01-12 11:29:00 +02:00
x86.h KVM: SVM: Do not report xsave in supported cpuid 2010-12-08 17:28:37 +02:00