Lines Matching refs:nested

179 	if (vmx->nested.current_vmptr == -1ull && !vmx->nested.hv_evmcs)  in nested_vmx_failValid()
215 vmx->nested.need_vmcs12_to_shadow_sync = false; in vmx_disable_shadow_vmcs()
222 if (!vmx->nested.hv_evmcs) in nested_release_evmcs()
225 kvm_vcpu_unmap(vcpu, &vmx->nested.hv_evmcs_map, true); in nested_release_evmcs()
226 vmx->nested.hv_evmcs_vmptr = -1ull; in nested_release_evmcs()
227 vmx->nested.hv_evmcs = NULL; in nested_release_evmcs()
238 if (!vmx->nested.vmxon && !vmx->nested.smm.vmxon) in free_nested()
243 vmx->nested.vmxon = false; in free_nested()
244 vmx->nested.smm.vmxon = false; in free_nested()
245 free_vpid(vmx->nested.vpid02); in free_nested()
246 vmx->nested.posted_intr_nv = -1; in free_nested()
247 vmx->nested.current_vmptr = -1ull; in free_nested()
254 kfree(vmx->nested.cached_vmcs12); in free_nested()
255 vmx->nested.cached_vmcs12 = NULL; in free_nested()
256 kfree(vmx->nested.cached_shadow_vmcs12); in free_nested()
257 vmx->nested.cached_shadow_vmcs12 = NULL; in free_nested()
259 if (vmx->nested.apic_access_page) { in free_nested()
260 kvm_release_page_dirty(vmx->nested.apic_access_page); in free_nested()
261 vmx->nested.apic_access_page = NULL; in free_nested()
263 kvm_vcpu_unmap(vcpu, &vmx->nested.virtual_apic_map, true); in free_nested()
264 kvm_vcpu_unmap(vcpu, &vmx->nested.pi_desc_map, true); in free_nested()
265 vmx->nested.pi_desc = NULL; in free_nested()
271 free_loaded_vmcs(&vmx->nested.vmcs02); in free_nested()
333 if (vmx->nested.pml_full) { in nested_ept_inject_page_fault()
335 vmx->nested.pml_full = false; in nested_ept_inject_page_fault()
352 to_vmx(vcpu)->nested.msrs.ept_caps & in nested_ept_init_mmu_context()
429 !to_vmx(vcpu)->nested.nested_run_pending) { in vmx_inject_page_fault_nested()
566 unsigned long *msr_bitmap_l0 = to_vmx(vcpu)->nested.vmcs02.msr_bitmap; in nested_vmx_prepare_msr_bitmap()
567 struct kvm_host_map *map = &to_vmx(vcpu)->nested.msr_bitmap_map; in nested_vmx_prepare_msr_bitmap()
653 kvm_vcpu_unmap(vcpu, &to_vmx(vcpu)->nested.msr_bitmap_map, false); in nested_vmx_prepare_msr_bitmap()
882 u64 vmx_misc = vmx_control_msr(vmx->nested.msrs.misc_low, in nested_vmx_max_atomic_switch_msrs()
883 vmx->nested.msrs.misc_high); in nested_vmx_max_atomic_switch_msrs()
1038 (nested_cpu_has_vpid(vmcs12) && to_vmx(vcpu)->nested.vpid02); in nested_has_guest_tlb_tag()
1045 return vmx->nested.vpid02 ? vmx->nested.vpid02 : vmx->vpid; in nested_get_vpid02()
1063 u64 vmx_basic = vmx->nested.msrs.basic; in vmx_restore_vmx_basic()
1082 vmx->nested.msrs.basic = data; in vmx_restore_vmx_basic()
1094 lowp = &vmx->nested.msrs.pinbased_ctls_low; in vmx_restore_control_msr()
1095 highp = &vmx->nested.msrs.pinbased_ctls_high; in vmx_restore_control_msr()
1098 lowp = &vmx->nested.msrs.procbased_ctls_low; in vmx_restore_control_msr()
1099 highp = &vmx->nested.msrs.procbased_ctls_high; in vmx_restore_control_msr()
1102 lowp = &vmx->nested.msrs.exit_ctls_low; in vmx_restore_control_msr()
1103 highp = &vmx->nested.msrs.exit_ctls_high; in vmx_restore_control_msr()
1106 lowp = &vmx->nested.msrs.entry_ctls_low; in vmx_restore_control_msr()
1107 highp = &vmx->nested.msrs.entry_ctls_high; in vmx_restore_control_msr()
1110 lowp = &vmx->nested.msrs.secondary_ctls_low; in vmx_restore_control_msr()
1111 highp = &vmx->nested.msrs.secondary_ctls_high; in vmx_restore_control_msr()
1142 vmx_misc = vmx_control_msr(vmx->nested.msrs.misc_low, in vmx_restore_vmx_misc()
1143 vmx->nested.msrs.misc_high); in vmx_restore_vmx_misc()
1148 if ((vmx->nested.msrs.pinbased_ctls_high & in vmx_restore_vmx_misc()
1163 vmx->nested.msrs.misc_low = data; in vmx_restore_vmx_misc()
1164 vmx->nested.msrs.misc_high = data >> 32; in vmx_restore_vmx_misc()
1173 vmx_ept_vpid_cap = vmx_control_msr(vmx->nested.msrs.ept_caps, in vmx_restore_vmx_ept_vpid_cap()
1174 vmx->nested.msrs.vpid_caps); in vmx_restore_vmx_ept_vpid_cap()
1180 vmx->nested.msrs.ept_caps = data; in vmx_restore_vmx_ept_vpid_cap()
1181 vmx->nested.msrs.vpid_caps = data >> 32; in vmx_restore_vmx_ept_vpid_cap()
1191 msr = &vmx->nested.msrs.cr0_fixed0; in vmx_restore_fixed0_msr()
1194 msr = &vmx->nested.msrs.cr4_fixed0; in vmx_restore_fixed0_msr()
1224 if (vmx->nested.vmxon) in vmx_set_vmx_msr()
1265 vmx->nested.msrs.vmcs_enum = data; in vmx_set_vmx_msr()
1268 if (data & ~vmx->nested.msrs.vmfunc_controls) in vmx_set_vmx_msr()
1270 vmx->nested.msrs.vmfunc_controls = data; in vmx_set_vmx_msr()
1429 struct vmcs12 *vmcs12 = vmx->nested.cached_vmcs12; in copy_enlightened_to_vmcs12()
1430 struct hv_enlightened_vmcs *evmcs = vmx->nested.hv_evmcs; in copy_enlightened_to_vmcs12()
1649 struct vmcs12 *vmcs12 = vmx->nested.cached_vmcs12; in copy_vmcs12_to_enlightened()
1650 struct hv_enlightened_vmcs *evmcs = vmx->nested.hv_evmcs; in copy_vmcs12_to_enlightened()
1825 if (likely(!vmx->nested.enlightened_vmcs_enabled)) in nested_vmx_handle_enlightened_vmptrld()
1831 if (unlikely(evmcs_gpa != vmx->nested.hv_evmcs_vmptr)) { in nested_vmx_handle_enlightened_vmptrld()
1832 if (!vmx->nested.hv_evmcs) in nested_vmx_handle_enlightened_vmptrld()
1833 vmx->nested.current_vmptr = -1ull; in nested_vmx_handle_enlightened_vmptrld()
1838 &vmx->nested.hv_evmcs_map)) in nested_vmx_handle_enlightened_vmptrld()
1841 vmx->nested.hv_evmcs = vmx->nested.hv_evmcs_map.hva; in nested_vmx_handle_enlightened_vmptrld()
1865 if ((vmx->nested.hv_evmcs->revision_id != KVM_EVMCS_VERSION) && in nested_vmx_handle_enlightened_vmptrld()
1866 (vmx->nested.hv_evmcs->revision_id != VMCS12_REVISION)) { in nested_vmx_handle_enlightened_vmptrld()
1871 vmx->nested.dirty_vmcs12 = true; in nested_vmx_handle_enlightened_vmptrld()
1872 vmx->nested.hv_evmcs_vmptr = evmcs_gpa; in nested_vmx_handle_enlightened_vmptrld()
1894 vmx->nested.hv_evmcs->hv_clean_fields &= in nested_vmx_handle_enlightened_vmptrld()
1909 if (vmx->nested.enlightened_vmcs_enabled && !vmx->nested.hv_evmcs) in nested_sync_vmcs12_to_shadow()
1912 if (vmx->nested.hv_evmcs) { in nested_sync_vmcs12_to_shadow()
1915 vmx->nested.hv_evmcs->hv_clean_fields |= in nested_sync_vmcs12_to_shadow()
1921 vmx->nested.need_vmcs12_to_shadow_sync = false; in nested_sync_vmcs12_to_shadow()
1927 container_of(timer, struct vcpu_vmx, nested.preemption_timer); in vmx_preemption_timer_fn()
1929 vmx->nested.preemption_timer_expired = true; in vmx_preemption_timer_fn()
1946 vmx_preemption_timer_fn(&vmx->nested.preemption_timer); in vmx_start_preemption_timer()
1956 hrtimer_start(&vmx->nested.preemption_timer, in vmx_start_preemption_timer()
1962 if (vmx->nested.nested_run_pending && in nested_vmx_calc_efer()
1979 if (vmx->nested.vmcs02_initialized) in prepare_vmcs02_constant_state()
1981 vmx->nested.vmcs02_initialized = true; in prepare_vmcs02_constant_state()
1999 vmcs_write64(MSR_BITMAP, __pa(vmx->nested.vmcs02.msr_bitmap)); in prepare_vmcs02_constant_state()
2036 if (nested_cpu_has_vpid(vmcs12) && vmx->nested.vpid02) in prepare_vmcs02_early_rare()
2037 vmcs_write16(VIRTUAL_PROCESSOR_ID, vmx->nested.vpid02); in prepare_vmcs02_early_rare()
2048 if (vmx->nested.dirty_vmcs12 || vmx->nested.hv_evmcs) in prepare_vmcs02_early()
2060 vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv; in prepare_vmcs02_early()
2061 vmx->nested.pi_pending = false; in prepare_vmcs02_early()
2175 if (vmx->nested.nested_run_pending) { in prepare_vmcs02_early()
2193 struct hv_enlightened_vmcs *hv_evmcs = vmx->nested.hv_evmcs; in prepare_vmcs02_rare()
2254 if (kvm_mpx_supported() && vmx->nested.nested_run_pending && in prepare_vmcs02_rare()
2309 struct hv_enlightened_vmcs *hv_evmcs = vmx->nested.hv_evmcs; in prepare_vmcs02()
2312 if (vmx->nested.dirty_vmcs12 || hv_evmcs) { in prepare_vmcs02()
2314 vmx->nested.dirty_vmcs12 = false; in prepare_vmcs02()
2321 if (vmx->nested.nested_run_pending && in prepare_vmcs02()
2327 vmcs_write64(GUEST_IA32_DEBUGCTL, vmx->nested.vmcs01_debugctl); in prepare_vmcs02()
2329 if (kvm_mpx_supported() && (!vmx->nested.nested_run_pending || in prepare_vmcs02()
2331 vmcs_write64(GUEST_BNDCFGS, vmx->nested.vmcs01_guest_bndcfgs); in prepare_vmcs02()
2342 if (vmx->nested.nested_run_pending && in prepare_vmcs02()
2365 if (vmcs12->virtual_processor_id != vmx->nested.last_vpid) { in prepare_vmcs02()
2366 vmx->nested.last_vpid = vmcs12->virtual_processor_id; in prepare_vmcs02()
2459 if (CC(!(vmx->nested.msrs.ept_caps & VMX_EPTP_UC_BIT))) in valid_ept_address()
2463 if (CC(!(vmx->nested.msrs.ept_caps & VMX_EPTP_WB_BIT))) in valid_ept_address()
2480 if (CC(!(vmx->nested.msrs.ept_caps & VMX_EPT_AD_BIT))) in valid_ept_address()
2496 vmx->nested.msrs.pinbased_ctls_low, in nested_check_vm_execution_controls()
2497 vmx->nested.msrs.pinbased_ctls_high)) || in nested_check_vm_execution_controls()
2499 vmx->nested.msrs.procbased_ctls_low, in nested_check_vm_execution_controls()
2500 vmx->nested.msrs.procbased_ctls_high))) in nested_check_vm_execution_controls()
2505 vmx->nested.msrs.secondary_ctls_low, in nested_check_vm_execution_controls()
2506 vmx->nested.msrs.secondary_ctls_high))) in nested_check_vm_execution_controls()
2533 ~vmx->nested.msrs.vmfunc_controls)) in nested_check_vm_execution_controls()
2555 vmx->nested.msrs.exit_ctls_low, in nested_check_vm_exit_controls()
2556 vmx->nested.msrs.exit_ctls_high)) || in nested_check_vm_exit_controls()
2572 vmx->nested.msrs.entry_ctls_low, in nested_check_vm_entry_controls()
2573 vmx->nested.msrs.entry_ctls_high))) in nested_check_vm_entry_controls()
2791 if (to_vmx(vcpu)->nested.nested_run_pending && in nested_vmx_check_guest_state()
2935 if (vmx->nested.apic_access_page) { /* shouldn't happen */ in nested_get_vmcs12_pages()
2936 kvm_release_page_dirty(vmx->nested.apic_access_page); in nested_get_vmcs12_pages()
2937 vmx->nested.apic_access_page = NULL; in nested_get_vmcs12_pages()
2941 vmx->nested.apic_access_page = page; in nested_get_vmcs12_pages()
2942 hpa = page_to_phys(vmx->nested.apic_access_page); in nested_get_vmcs12_pages()
2956 map = &vmx->nested.virtual_apic_map; in nested_get_vmcs12_pages()
2982 map = &vmx->nested.pi_desc_map; in nested_get_vmcs12_pages()
2985 vmx->nested.pi_desc = in nested_get_vmcs12_pages()
3008 if (!to_vmx(vcpu)->nested.vmxon) { in nested_vmx_check_permission()
3057 vmx->nested.vmcs01_debugctl = vmcs_read64(GUEST_IA32_DEBUGCTL); in nested_vmx_enter_non_root_mode()
3060 vmx->nested.vmcs01_guest_bndcfgs = vmcs_read64(GUEST_BNDCFGS); in nested_vmx_enter_non_root_mode()
3081 vmx_switch_vmcs(vcpu, &vmx->nested.vmcs02); in nested_vmx_enter_non_root_mode()
3145 vmx->nested.preemption_timer_expired = false; in nested_vmx_enter_non_root_mode()
3176 if (enable_shadow_vmcs || vmx->nested.hv_evmcs) in nested_vmx_enter_non_root_mode()
3177 vmx->nested.need_vmcs12_to_shadow_sync = true; in nested_vmx_enter_non_root_mode()
3198 if (!vmx->nested.hv_evmcs && vmx->nested.current_vmptr == -1ull) in nested_vmx_run()
3212 if (vmx->nested.hv_evmcs) { in nested_vmx_run()
3249 vmx->nested.nested_run_pending = 1; in nested_vmx_run()
3279 vmx->nested.nested_run_pending = 0; in nested_vmx_run()
3285 vmx->nested.nested_run_pending = 0; in nested_vmx_run()
3402 if (!vmx->nested.pi_desc || !vmx->nested.pi_pending) in vmx_complete_nested_posted_interrupt()
3405 vmx->nested.pi_pending = false; in vmx_complete_nested_posted_interrupt()
3406 if (!pi_test_and_clear_on(vmx->nested.pi_desc)) in vmx_complete_nested_posted_interrupt()
3409 max_irr = find_last_bit((unsigned long *)vmx->nested.pi_desc->pir, 256); in vmx_complete_nested_posted_interrupt()
3411 vapic_page = vmx->nested.virtual_apic_map.hva; in vmx_complete_nested_posted_interrupt()
3415 __kvm_apic_update_irr(vmx->nested.pi_desc->pir, in vmx_complete_nested_posted_interrupt()
3457 vmx->nested.nested_run_pending || kvm_event_needs_reinjection(vcpu); in vmx_check_nested_events()
3477 vmx->nested.preemption_timer_expired) { in vmx_check_nested_events()
3514 hrtimer_get_remaining(&to_vmx(vcpu)->nested.preemption_timer); in vmx_get_preemption_timer_value()
3616 vmx->nested.need_sync_vmcs02_to_vmcs12_rare = false; in sync_vmcs02_to_vmcs12_rare()
3625 if (!vmx->nested.need_sync_vmcs02_to_vmcs12_rare) in copy_vmcs02_to_vmcs12_rare()
3632 vmx->loaded_vmcs = &vmx->nested.vmcs02; in copy_vmcs02_to_vmcs12_rare()
3652 if (vmx->nested.hv_evmcs) in sync_vmcs02_to_vmcs12()
3655 vmx->nested.need_sync_vmcs02_to_vmcs12_rare = !vmx->nested.hv_evmcs; in sync_vmcs02_to_vmcs12()
4070 WARN_ON_ONCE(vmx->nested.nested_run_pending); in nested_vmx_vmexit()
4075 hrtimer_cancel(&to_vmx(vcpu)->nested.preemption_timer); in nested_vmx_vmexit()
4119 if (vmx->nested.change_vmcs01_virtual_apic_mode) { in nested_vmx_vmexit()
4120 vmx->nested.change_vmcs01_virtual_apic_mode = false; in nested_vmx_vmexit()
4129 if (vmx->nested.apic_access_page) { in nested_vmx_vmexit()
4130 kvm_release_page_dirty(vmx->nested.apic_access_page); in nested_vmx_vmexit()
4131 vmx->nested.apic_access_page = NULL; in nested_vmx_vmexit()
4133 kvm_vcpu_unmap(vcpu, &vmx->nested.virtual_apic_map, true); in nested_vmx_vmexit()
4134 kvm_vcpu_unmap(vcpu, &vmx->nested.pi_desc_map, true); in nested_vmx_vmexit()
4135 vmx->nested.pi_desc = NULL; in nested_vmx_vmexit()
4143 if ((exit_reason != -1) && (enable_shadow_vmcs || vmx->nested.hv_evmcs)) in nested_vmx_vmexit()
4144 vmx->nested.need_vmcs12_to_shadow_sync = true; in nested_vmx_vmexit()
4379 r = alloc_loaded_vmcs(&vmx->nested.vmcs02); in enter_vmx_operation()
4383 vmx->nested.cached_vmcs12 = kzalloc(VMCS12_SIZE, GFP_KERNEL_ACCOUNT); in enter_vmx_operation()
4384 if (!vmx->nested.cached_vmcs12) in enter_vmx_operation()
4387 vmx->nested.cached_shadow_vmcs12 = kzalloc(VMCS12_SIZE, GFP_KERNEL_ACCOUNT); in enter_vmx_operation()
4388 if (!vmx->nested.cached_shadow_vmcs12) in enter_vmx_operation()
4394 hrtimer_init(&vmx->nested.preemption_timer, CLOCK_MONOTONIC, in enter_vmx_operation()
4396 vmx->nested.preemption_timer.function = vmx_preemption_timer_fn; in enter_vmx_operation()
4398 vmx->nested.vpid02 = allocate_vpid(); in enter_vmx_operation()
4400 vmx->nested.vmcs02_initialized = false; in enter_vmx_operation()
4401 vmx->nested.vmxon = true; in enter_vmx_operation()
4411 kfree(vmx->nested.cached_shadow_vmcs12); in enter_vmx_operation()
4414 kfree(vmx->nested.cached_vmcs12); in enter_vmx_operation()
4417 free_loaded_vmcs(&vmx->nested.vmcs02); in enter_vmx_operation()
4460 if (vmx->nested.vmxon) in handle_vmon()
4488 vmx->nested.vmxon_ptr = vmptr; in handle_vmon()
4500 if (vmx->nested.current_vmptr == -1ull) in nested_release_vmcs12()
4511 vmx->nested.posted_intr_nv = -1; in nested_release_vmcs12()
4515 vmx->nested.current_vmptr >> PAGE_SHIFT, in nested_release_vmcs12()
4516 vmx->nested.cached_vmcs12, 0, VMCS12_SIZE); in nested_release_vmcs12()
4520 vmx->nested.current_vmptr = -1ull; in nested_release_vmcs12()
4555 if (vmptr == vmx->nested.vmxon_ptr) in handle_vmclear()
4569 if (likely(!vmx->nested.enlightened_vmcs_enabled || in handle_vmclear()
4571 if (vmptr == vmx->nested.current_vmptr) in handle_vmclear()
4613 if (to_vmx(vcpu)->nested.current_vmptr == -1ull) in handle_vmread()
4710 if (vmx->nested.current_vmptr == -1ull) in handle_vmwrite()
4796 vmx->nested.dirty_vmcs12 = true; in handle_vmwrite()
4804 vmx->nested.current_vmptr = vmptr; in set_current_vmptr()
4809 vmx->nested.need_vmcs12_to_shadow_sync = true; in set_current_vmptr()
4811 vmx->nested.dirty_vmcs12 = true; in set_current_vmptr()
4830 if (vmptr == vmx->nested.vmxon_ptr) in handle_vmptrld()
4835 if (vmx->nested.hv_evmcs) in handle_vmptrld()
4838 if (vmx->nested.current_vmptr != vmptr) { in handle_vmptrld()
4869 memcpy(vmx->nested.cached_vmcs12, new_vmcs12, VMCS12_SIZE); in handle_vmptrld()
4883 gpa_t current_vmptr = to_vmx(vcpu)->nested.current_vmptr; in handle_vmptrst()
4890 if (unlikely(to_vmx(vcpu)->nested.hv_evmcs)) in handle_vmptrst()
4917 if (!(vmx->nested.msrs.secondary_ctls_high & in handle_invept()
4919 !(vmx->nested.msrs.ept_caps & VMX_EPT_INVEPT_BIT)) { in handle_invept()
4930 types = (vmx->nested.msrs.ept_caps >> VMX_EPT_EXTENT_SHIFT) & 6; in handle_invept()
4976 if (!(vmx->nested.msrs.secondary_ctls_high & in handle_invvpid()
4978 !(vmx->nested.msrs.vpid_caps & VMX_VPID_INVVPID_BIT)) { in handle_invvpid()
4989 types = (vmx->nested.msrs.vpid_caps & in handle_invvpid()
5324 if (vmx->nested.nested_run_pending) in nested_vmx_exit_reflected()
5523 (vmx->nested.vmxon || vmx->nested.smm.vmxon)) { in vmx_get_nested_state()
5524 kvm_state.hdr.vmx.vmxon_pa = vmx->nested.vmxon_ptr; in vmx_get_nested_state()
5525 kvm_state.hdr.vmx.vmcs12_pa = vmx->nested.current_vmptr; in vmx_get_nested_state()
5530 if (vmx->nested.hv_evmcs) in vmx_get_nested_state()
5539 if (vmx->nested.smm.vmxon) in vmx_get_nested_state()
5542 if (vmx->nested.smm.guest_mode) in vmx_get_nested_state()
5548 if (vmx->nested.nested_run_pending) in vmx_get_nested_state()
5572 } else if (!vmx->nested.need_vmcs12_to_shadow_sync) { in vmx_get_nested_state()
5573 if (vmx->nested.hv_evmcs) in vmx_get_nested_state()
5606 to_vmx(vcpu)->nested.nested_run_pending = 0; in vmx_leave_nested()
5676 (!nested_vmx_allowed(vcpu) || !vmx->nested.enlightened_vmcs_enabled)) in vmx_set_nested_state()
5684 vmx->nested.vmxon_ptr = kvm_state->hdr.vmx.vmxon_pa; in vmx_set_nested_state()
5704 vmx->nested.need_vmcs12_to_shadow_sync = true; in vmx_set_nested_state()
5710 vmx->nested.smm.vmxon = true; in vmx_set_nested_state()
5711 vmx->nested.vmxon = false; in vmx_set_nested_state()
5714 vmx->nested.smm.guest_mode = true; in vmx_set_nested_state()
5727 vmx->nested.nested_run_pending = in vmx_set_nested_state()
5757 vmx->nested.dirty_vmcs12 = true; in vmx_set_nested_state()
5765 vmx->nested.nested_run_pending = 0; in vmx_set_nested_state()