Lines Matching refs:vmcb

39 	if (svm->vmcb->control.exit_code != SVM_EXIT_NPF) {  in nested_svm_inject_npf_exit()
44 svm->vmcb->control.exit_code = SVM_EXIT_NPF; in nested_svm_inject_npf_exit()
45 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_npf_exit()
46 svm->vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit()
47 svm->vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit()
50 svm->vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit()
51 svm->vmcb->control.exit_info_1 |= fault->error_code; in nested_svm_inject_npf_exit()
63 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + PF_VECTOR; in svm_inject_page_fault_nested()
64 svm->vmcb->control.exit_code_hi = 0; in svm_inject_page_fault_nested()
65 svm->vmcb->control.exit_info_1 = fault->error_code; in svm_inject_page_fault_nested()
66 svm->vmcb->control.exit_info_2 = fault->address; in svm_inject_page_fault_nested()
127 vmcb_mark_dirty(svm->vmcb, VMCB_INTERCEPTS); in recalc_intercepts()
132 c = &svm->vmcb->control; in recalc_intercepts()
225 svm->vmcb->control.msrpm_base_pa = __sme_set(__pa(svm->nested.msrpm)); in nested_svm_vmrun_msrpm()
332 svm->nested.ctl.event_inj = svm->vmcb->control.event_inj; in nested_sync_control_from_vmcb02()
333 svm->nested.ctl.event_inj_err = svm->vmcb->control.event_inj_err; in nested_sync_control_from_vmcb02()
350 svm->nested.ctl.int_ctl |= svm->vmcb->control.int_ctl & mask; in nested_sync_control_from_vmcb02()
358 struct vmcb *vmcb12) in nested_save_pending_event_to_vmcb12()
449 static void nested_vmcb02_prepare_save(struct vcpu_svm *svm, struct vmcb *vmcb12) in nested_vmcb02_prepare_save()
462 svm->vmcb->save.es = vmcb12->save.es; in nested_vmcb02_prepare_save()
463 svm->vmcb->save.cs = vmcb12->save.cs; in nested_vmcb02_prepare_save()
464 svm->vmcb->save.ss = vmcb12->save.ss; in nested_vmcb02_prepare_save()
465 svm->vmcb->save.ds = vmcb12->save.ds; in nested_vmcb02_prepare_save()
466 svm->vmcb->save.cpl = vmcb12->save.cpl; in nested_vmcb02_prepare_save()
467 vmcb_mark_dirty(svm->vmcb, VMCB_SEG); in nested_vmcb02_prepare_save()
471 svm->vmcb->save.gdtr = vmcb12->save.gdtr; in nested_vmcb02_prepare_save()
472 svm->vmcb->save.idtr = vmcb12->save.idtr; in nested_vmcb02_prepare_save()
473 vmcb_mark_dirty(svm->vmcb, VMCB_DT); in nested_vmcb02_prepare_save()
495 svm->vmcb->save.rax = vmcb12->save.rax; in nested_vmcb02_prepare_save()
496 svm->vmcb->save.rsp = vmcb12->save.rsp; in nested_vmcb02_prepare_save()
497 svm->vmcb->save.rip = vmcb12->save.rip; in nested_vmcb02_prepare_save()
501 svm->vmcb->save.dr7 = vmcb12->save.dr7 | DR7_FIXED_1; in nested_vmcb02_prepare_save()
503 vmcb_mark_dirty(svm->vmcb, VMCB_DR); in nested_vmcb02_prepare_save()
528 svm->vmcb->control.nested_ctl = svm->vmcb01.ptr->control.nested_ctl; in nested_vmcb02_prepare_control()
529 svm->vmcb->control.iopm_base_pa = svm->vmcb01.ptr->control.iopm_base_pa; in nested_vmcb02_prepare_control()
530 svm->vmcb->control.msrpm_base_pa = svm->vmcb01.ptr->control.msrpm_base_pa; in nested_vmcb02_prepare_control()
535 svm->vmcb->control.tlb_ctl = TLB_CONTROL_DO_NOTHING; in nested_vmcb02_prepare_control()
541 svm->vmcb->control.tsc_offset = vcpu->arch.tsc_offset = in nested_vmcb02_prepare_control()
544 svm->vmcb->control.int_ctl = in nested_vmcb02_prepare_control()
548 svm->vmcb->control.int_vector = svm->nested.ctl.int_vector; in nested_vmcb02_prepare_control()
549 svm->vmcb->control.int_state = svm->nested.ctl.int_state; in nested_vmcb02_prepare_control()
550 svm->vmcb->control.event_inj = svm->nested.ctl.event_inj; in nested_vmcb02_prepare_control()
551 svm->vmcb->control.event_inj_err = svm->nested.ctl.event_inj_err; in nested_vmcb02_prepare_control()
553 svm->vmcb->control.pause_filter_count = svm->nested.ctl.pause_filter_count; in nested_vmcb02_prepare_control()
554 svm->vmcb->control.pause_filter_thresh = svm->nested.ctl.pause_filter_thresh; in nested_vmcb02_prepare_control()
568 static void nested_svm_copy_common_state(struct vmcb *from_vmcb, struct vmcb *to_vmcb) in nested_svm_copy_common_state()
581 struct vmcb *vmcb12, bool from_vmrun) in enter_svm_guest_mode()
586 trace_kvm_nested_vmrun(svm->vmcb->save.rip, vmcb12_gpa, in enter_svm_guest_mode()
602 WARN_ON(svm->vmcb == svm->nested.vmcb02.ptr); in enter_svm_guest_mode()
630 struct vmcb *vmcb12; in nested_svm_vmrun()
644 vmcb12_gpa = svm->vmcb->save.rax; in nested_svm_vmrun()
695 svm->vmcb->control.exit_code = SVM_EXIT_ERR; in nested_svm_vmrun()
696 svm->vmcb->control.exit_code_hi = 0; in nested_svm_vmrun()
697 svm->vmcb->control.exit_info_1 = 0; in nested_svm_vmrun()
698 svm->vmcb->control.exit_info_2 = 0; in nested_svm_vmrun()
729 void svm_copy_vmloadsave_state(struct vmcb *to_vmcb, struct vmcb *from_vmcb) in svm_copy_vmloadsave_state()
748 struct vmcb *vmcb12; in nested_svm_vmexit()
749 struct vmcb *vmcb = svm->vmcb; in nested_svm_vmexit() local
777 vmcb12->save.es = vmcb->save.es; in nested_svm_vmexit()
778 vmcb12->save.cs = vmcb->save.cs; in nested_svm_vmexit()
779 vmcb12->save.ss = vmcb->save.ss; in nested_svm_vmexit()
780 vmcb12->save.ds = vmcb->save.ds; in nested_svm_vmexit()
781 vmcb12->save.gdtr = vmcb->save.gdtr; in nested_svm_vmexit()
782 vmcb12->save.idtr = vmcb->save.idtr; in nested_svm_vmexit()
786 vmcb12->save.cr2 = vmcb->save.cr2; in nested_svm_vmexit()
792 vmcb12->save.dr7 = vmcb->save.dr7; in nested_svm_vmexit()
794 vmcb12->save.cpl = vmcb->save.cpl; in nested_svm_vmexit()
796 vmcb12->control.int_state = vmcb->control.int_state; in nested_svm_vmexit()
797 vmcb12->control.exit_code = vmcb->control.exit_code; in nested_svm_vmexit()
798 vmcb12->control.exit_code_hi = vmcb->control.exit_code_hi; in nested_svm_vmexit()
799 vmcb12->control.exit_info_1 = vmcb->control.exit_info_1; in nested_svm_vmexit()
800 vmcb12->control.exit_info_2 = vmcb->control.exit_info_2; in nested_svm_vmexit()
806 vmcb12->control.next_rip = vmcb->control.next_rip; in nested_svm_vmexit()
814 svm->vmcb->control.pause_filter_count; in nested_svm_vmexit()
816 svm->vmcb->control.pause_filter_thresh; in nested_svm_vmexit()
827 svm->vmcb->control.exit_int_info = 0; in nested_svm_vmexit()
830 if (svm->vmcb->control.tsc_offset != svm->vcpu.arch.tsc_offset) { in nested_svm_vmexit()
831 svm->vmcb->control.tsc_offset = svm->vcpu.arch.tsc_offset; in nested_svm_vmexit()
832 vmcb_mark_dirty(svm->vmcb, VMCB_INTERCEPTS); in nested_svm_vmexit()
840 kvm_set_rflags(vcpu, svm->vmcb->save.rflags); in nested_svm_vmexit()
841 svm_set_efer(vcpu, svm->vmcb->save.efer); in nested_svm_vmexit()
842 svm_set_cr0(vcpu, svm->vmcb->save.cr0 | X86_CR0_PE); in nested_svm_vmexit()
843 svm_set_cr4(vcpu, svm->vmcb->save.cr4); in nested_svm_vmexit()
844 kvm_rax_write(vcpu, svm->vmcb->save.rax); in nested_svm_vmexit()
845 kvm_rsp_write(vcpu, svm->vmcb->save.rsp); in nested_svm_vmexit()
846 kvm_rip_write(vcpu, svm->vmcb->save.rip); in nested_svm_vmexit()
864 rc = nested_svm_load_cr3(vcpu, svm->vmcb->save.cr3, false, true); in nested_svm_vmexit()
882 if (unlikely(svm->vmcb->save.rflags & X86_EFLAGS_TF)) in nested_svm_vmexit()
958 vmcb_mark_all_dirty(svm->vmcb); in svm_leave_nested()
974 write = svm->vmcb->control.exit_info_1 & 1; in nested_svm_exit_handled_msr()
999 port = svm->vmcb->control.exit_info_1 >> 16; in nested_svm_intercept_ioio()
1000 size = (svm->vmcb->control.exit_info_1 & SVM_IOIO_SIZE_MASK) >> in nested_svm_intercept_ioio()
1016 u32 exit_code = svm->vmcb->control.exit_code; in nested_svm_intercept()
1077 if (to_svm(vcpu)->vmcb->save.cpl) { in nested_svm_check_permissions()
1096 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + nr; in nested_svm_inject_exception_vmexit()
1097 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_exception_vmexit()
1100 svm->vmcb->control.exit_info_1 = svm->vcpu.arch.exception.error_code; in nested_svm_inject_exception_vmexit()
1108 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.apf.nested_apf_token; in nested_svm_inject_exception_vmexit()
1110 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.exception.payload; in nested_svm_inject_exception_vmexit()
1112 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.cr2; in nested_svm_inject_exception_vmexit()
1186 trace_kvm_nested_intr_vmexit(svm->vmcb->save.rip); in svm_check_nested_events()
1196 u32 exit_code = svm->vmcb->control.exit_code; in nested_svm_exit_special()
1232 struct vmcb __user *user_vmcb = (struct vmcb __user *) in svm_get_nested_state()
1283 struct vmcb __user *user_vmcb = (struct vmcb __user *) in svm_set_nested_state()