Patch "KVM: VMX: fix nested vpid for old KVM guests" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: VMX: fix nested vpid for old KVM guests
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kvm-vmx-fix-nested-vpid-for-old-kvm-guests.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
ef697a712a6165aea7779c295604b099e8bfae2eMon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Fri, 18 Mar 2016 16:58:38 +0100
Subject: KVM: VMX: fix nested vpid for old KVM guests
From: Paolo Bonzini <[email protected]>
commit ef697a712a6165aea7779c295604b099e8bfae2e upstream.
Old KVM guests invoke single-context invvpid without actually checking whether it is supported. This was fixed by commit 518c8ae ("KVM: VMX:
Make sure single type invvpid is supported before issuing invvpid instruction", 2010-08-01) and the patch after, but pre-2.6.36 kernels lack it including RHEL 6.
--- arch/x86/kvm/vmx.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
arch/x86/kvm/vmx.c +13 -1
@@ -2637,8 +2637,15 @@ static void nested_vmx_setup_ctls_msrs(s }else vmx->nested.nested_vmx_ept_caps =0 ; +/* +* Old versions of KVM use the single-context version without +* checking for support, so declare that it is supported even +* though it is treated as global context. The alternative is +* not failing the single-context invvpid, and it is worse. +*/ if (enable_vpid) vmx->nested.nested_vmx_vpid_caps =VMX_VPID_INVVPID_BIT | +VMX_VPID_EXTENT_SINGLE_CONTEXT_BIT |VMX_VPID_EXTENT_GLOBAL_CONTEXT_BIT ;else vmx->nested.nested_vmx_vpid_caps =0 ;
@@ -7416,12 +7423,17 @@ static int handle_invvpid(struct kvm_vcp }switch (type) { +case VMX_VPID_EXTENT_SINGLE_CONTEXT : +/* +* Old versions of KVM use the single-context version so we +* have to support it; just treat it the same as all-context. +*/ case VMX_VPID_EXTENT_ALL_CONTEXT :__vmx_flush_tlb (vcpu,to_vmx (vcpu)->nested.vpid02);nested_vmx_succeed (vcpu);break ;default : -/* Trap single context invalidation invvpid calls */ +/* Trap individual address invalidation invvpid calls */ BUG_ON (1 );break ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/kvm-vmx-fix-nested-vpid-for-old-kvm-guests.patch queue-4.4/kvm-x86-fix-missed-hardware-breakpoints.patch queue-4.4/kvm-vmx-avoid-guest-hang-on-invalid-invvpid-instruction.patch queue-4.4/kvm-i8254-change-pit-discard-tick-policy.patch queue-4.4/kvm-fix-spin_lock_init-order-on-x86.patch queue-4.4/kvm-vmx-avoid-guest-hang-on-invalid-invept-instruction.patch