KVM: move alloc_apic_access_page() outside of non-preemptable region
PATCH 1/1 KVM: move alloc_apic_access_page() outside of non-preemptable region
alloc_apic_access_page() can sleep, while vmx_vcpu_setup is called inside a non preemptable region. Move it after put_cpu().
Signed-off-by Marcelo Tosatti <[email protected]>
arch/x86/kvm/vmx.c +3 -3
@@ -1601,9 +1601,6 @@ static int vmx_vcpu_setup(struct vcpu_vmvmcs_writel (CR0_GUEST_HOST_MASK , ~0UL );vmcs_writel (CR4_GUEST_HOST_MASK ,KVM_GUEST_CR4_MASK ); -if (vm_need_virtualize_apic_accesses (vmx->vcpu.kvm)) -if (alloc_apic_access_page (vmx->vcpu.kvm) !=0 ) -return -ENOMEM ;return 0 ; }
@@ -2533,6 +2530,9 @@ static struct kvm_vcpu *vmx_create_vcpu(put_cpu ();if (err) goto free_vmcs; +if (vm_need_virtualize_apic_accesses (kvm)) +if (alloc_apic_access_page (kvm) !=0 ) + goto free_vmcs;return &vmx->vcpu;
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
Avi Kivity
AppliedQuoted 4 lines · Marcelo Tosatti
alloc_apic_access_page()can sleep, whilevmx_vcpu_setupis called inside a non preemptable region. Move it afterput_cpu().
Applied, thanks.
Signature · 7 lines
Any sufficiently difficult bug is indistinguishable from a feature. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/