Patch "KVM: nVMX: mask unrestricted_guest if disabled on L0" has been added to the 3.19-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: nVMX: mask unrestricted_guest if disabled on L0
to the 3.19-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-nvmx-mask-unrestricted_guest-if-disabled-on-l0.patch
and it can be found in the queue-3.19 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
0790ec172de1bd2e23f1dbd4925426b6cc3c1b72Mon Sep 17 00:00:00 2001
From: Radim Krčmář <[email protected]>
Date: Tue, 17 Mar 2015 14:02:32 +0100
Subject: KVM: nVMX: mask unrestricted_guest if disabled on L0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Radim Krčmář <[email protected]>
commit 0790ec172de1bd2e23f1dbd4925426b6cc3c1b72 upstream.
If EPT was enabled, unrestricted_guest was allowed in L1 regardless of L0. L1 triple faulted when running L2 guest that required emulation.
Another side effect was 'WARN_ON_ONCE(vmx->nested.nested_run_pending)' in L0's dmesg:
WARNING: CPU: 0 PID: 0 at arch/x86/kvm/vmx.c:9190 nested_vmx_vmexit+0x96e/0xb00 [kvm_intel] ()
Prevent this scenario by masking SECONDARY_EXEC_UNRESTRICTED_GUEST when the host doesn't have it enabled.
--- arch/x86/kvm/vmx.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
arch/x86/kvm/vmx.c +5 -2
@@ -2404,8 +2404,7 @@ static __init void nested_vmx_setup_ctlsif (enable_ept) {/* nested EPT: emulate EPT also to L1 */ - nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT | -SECONDARY_EXEC_UNRESTRICTED_GUEST ; + nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT ; nested_vmx_ept_caps =VMX_EPT_PAGE_WALK_4_BIT |VMX_EPTP_WB_BIT |VMX_EPT_2MB_PAGE_BIT |VMX_EPT_INVEPT_BIT ;
@@ -2419,6 +2418,10 @@ static __init void nested_vmx_setup_ctls }else nested_vmx_ept_caps =0 ; +if (enable_unrestricted_guest) + nested_vmx_secondary_ctls_high |= +SECONDARY_EXEC_UNRESTRICTED_GUEST ; +/* miscellaneous data */ rdmsr (MSR_IA32_VMX_MISC , nested_vmx_misc_low, nested_vmx_misc_high); nested_vmx_misc_low &=VMX_MISC_SAVE_EFER_LMA ;
Patches currently in stable-queue which might be from [email protected] are
queue-3.19/kvm-nvmx-mask-unrestricted_guest-if-disabled-on-l0.patch