linux/arch/x86/kvm/vmx
Vitaly Kuznetsov e942dbf8c5 KVM: nVMX: stop abusing need_vmcs12_to_shadow_sync for eVMCS mapping
When vmx_set_nested_state() happens, we may not have all the required
data to map enlightened VMCS: e.g. HV_X64_MSR_VP_ASSIST_PAGE MSR may not
yet be restored so we need a postponed action. Currently, we (ab)use
need_vmcs12_to_shadow_sync/nested_sync_vmcs12_to_shadow() for that but
this is not ideal:
- We may not need to sync anything if L2 is running
- It is hard to propagate errors from nested_sync_vmcs12_to_shadow()
 as we call it from vmx_prepare_switch_to_guest() which happens just
 before we do VMLAUNCH, the code is not ready to handle errors there.

Move eVMCS mapping to nested_get_vmcs12_pages() and request
KVM_REQ_GET_VMCS12_PAGES, it seems to be is less abusive in nature.
It would probably be possible to introduce a specialized KVM_REQ_EVMCS_MAP
but it is undesirable to propagate eVMCS specifics all the way up to x86.c

Note, we don't need to request KVM_REQ_GET_VMCS12_PAGES from
vmx_set_nested_state() directly as nested_vmx_enter_non_root_mode() already
does that. Requesting KVM_REQ_GET_VMCS12_PAGES is done to document the
(non-obvious) side-effect and to be future proof.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-03-16 18:19:29 +01:00
..
capabilities.h KVM: x86: Handle PKU CPUID adjustment in VMX code 2020-03-16 17:58:19 +01:00
evmcs.c x86/kvm/hyper-v: don't allow to turn on unsupported VMX controls for nested guests 2020-02-05 15:55:26 +01:00
evmcs.h x86/kvm/hyper-v: don't allow to turn on unsupported VMX controls for nested guests 2020-02-05 15:55:26 +01:00
nested.c KVM: nVMX: stop abusing need_vmcs12_to_shadow_sync for eVMCS mapping 2020-03-16 18:19:29 +01:00
nested.h KVM: nVMX: Rename nested_ept_get_cr3() to nested_ept_get_eptp() 2020-03-16 17:57:44 +01:00
ops.h KVM: VMX: Add error handling to VMREAD helper 2019-09-25 15:30:09 +02:00
pmu_intel.c KVM: VMX: Directly query Intel PT mode when refreshing PMUs 2020-03-16 17:58:38 +01:00
vmcs12.c
vmcs12.h KVM/arm updates for 5.3 2019-07-11 15:14:16 +02:00
vmcs_shadow_fields.h KVM: Fix some out-dated function names in comment 2020-01-21 13:57:27 +01:00
vmcs.h KVM: VMX: Leave preemption timer running when it's disabled 2019-06-18 17:10:46 +02:00
vmenter.S x86/asm: Change all ENTRY+ENDPROC to SYM_FUNC_* 2019-10-18 11:58:33 +02:00
vmx.c KVM: VMX: Micro-optimize vmexit time when not exposing PMU 2020-03-16 17:58:58 +01:00
vmx.h KVM: x86: rename set_cr3 callback and related flags to load_mmu_pgd 2020-03-16 17:58:52 +01:00