KVM: nVMX: Disable unrestricted mode if ept=0
PATCH 1/1 KVM: nVMX: Disable unrestricted mode if ept=0
If L0 has disabled EPT, don't advertise unrestricted mode at all since it depends on EPT to run real mode code.
Signed-off-by Bandan Das <[email protected]>
--- arch/x86/kvm/vmx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/x86/kvm/vmx.c +2 -2
@@ -2377,12 +2377,12 @@ static __init void nested_vmx_setup_ctls_msrs(void) nested_vmx_secondary_ctls_low =0 ; nested_vmx_secondary_ctls_high &=SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | -SECONDARY_EXEC_UNRESTRICTED_GUEST |SECONDARY_EXEC_WBINVD_EXITING ;if (enable_ept) {/* nested EPT: emulate EPT also to L1 */ - nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT ; + nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT | +SECONDARY_EXEC_UNRESTRICTED_GUEST ; nested_vmx_ept_caps =VMX_EPT_PAGE_WALK_4_BIT |VMX_EPTP_WB_BIT |VMX_EPT_2MB_PAGE_BIT |VMX_EPT_INVEPT_BIT ;
Signature · 1 line
1.9.3
Quoted 19 lines · Bandan Das
If L0 has disabled EPT, don't advertise unrestricted mode at all since it depends on EPT to run real mode code.
Signed-off-by Bandan Das <[email protected]>--- arch/x86/kvm/vmx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)arch/x86/kvm/vmx.c +0
-1@@ -2377,12 +2377,12 @@ static __init void nested_vmx_setup_ctls_msrs(void) nested_vmx_secondary_ctls_low =0 ; nested_vmx_secondary_ctls_high &= SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | - SECONDARY_EXEC_UNRESTRICTED_GUEST |
arch/x86/kvm/vmx.c static __init void nested_vmx_setup_ctls_msrs(void) · line 2388
Quoted 10 lines
arch/x86/kvm/vmx.c +2
-1SECONDARY_EXEC_WBINVD_EXITING ;if (enable_ept) {/* nested EPT: emulate EPT also to L1 */ - nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT ; + nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT | +SECONDARY_EXEC_UNRESTRICTED_GUEST ; nested_vmx_ept_caps =VMX_EPT_PAGE_WALK_4_BIT |VMX_EPTP_WB_BIT |VMX_EPT_2MB_PAGE_BIT |VMX_EPT_INVEPT_BIT ;
Reviewed-by Jan Kiszka <[email protected]>
Jan
Quoted 19 lines · Bandan Das
If L0 has disabled EPT, don't advertise unrestricted mode at all since it depends on EPT to run real mode code.
Signed-off-by Bandan Das <[email protected]>--- arch/x86/kvm/vmx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)arch/x86/kvm/vmx.c +0
-1@@ -2377,12 +2377,12 @@ static __init void nested_vmx_setup_ctls_msrs(void) nested_vmx_secondary_ctls_low =0 ; nested_vmx_secondary_ctls_high &= SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES | - SECONDARY_EXEC_UNRESTRICTED_GUEST |
arch/x86/kvm/vmx.c static __init void nested_vmx_setup_ctls_msrs(void) · line 2388
Quoted 10 lines
arch/x86/kvm/vmx.c +2
-1SECONDARY_EXEC_WBINVD_EXITING ;if (enable_ept) {/* nested EPT: emulate EPT also to L1 */ - nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT ; + nested_vmx_secondary_ctls_high |=SECONDARY_EXEC_ENABLE_EPT | +SECONDARY_EXEC_UNRESTRICTED_GUEST ; nested_vmx_ept_caps =VMX_EPT_PAGE_WALK_4_BIT |VMX_EPTP_WB_BIT |VMX_EPT_2MB_PAGE_BIT |VMX_EPT_INVEPT_BIT ;
Thanks, applied with
Fixes 92fbc7b195b824e201d9f06f2b93105f72384d65
Paolo