Lines Matching refs:vmcb

37 	if (svm->vmcb->control.exit_code != SVM_EXIT_NPF) {  in nested_svm_inject_npf_exit()
42 svm->vmcb->control.exit_code = SVM_EXIT_NPF; in nested_svm_inject_npf_exit()
43 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_npf_exit()
44 svm->vmcb->control.exit_info_1 = (1ULL << 32); in nested_svm_inject_npf_exit()
45 svm->vmcb->control.exit_info_2 = fault->address; in nested_svm_inject_npf_exit()
48 svm->vmcb->control.exit_info_1 &= ~0xffffffffULL; in nested_svm_inject_npf_exit()
49 svm->vmcb->control.exit_info_1 |= fault->error_code; in nested_svm_inject_npf_exit()
61 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + PF_VECTOR; in svm_inject_page_fault_nested()
62 svm->vmcb->control.exit_code_hi = 0; in svm_inject_page_fault_nested()
63 svm->vmcb->control.exit_info_1 = fault->error_code; in svm_inject_page_fault_nested()
64 svm->vmcb->control.exit_info_2 = fault->address; in svm_inject_page_fault_nested()
95 struct vmcb *hsave = svm->nested.hsave; in nested_svm_init_mmu_context()
120 vmcb_mark_dirty(svm->vmcb, VMCB_INTERCEPTS); in recalc_intercepts()
125 c = &svm->vmcb->control; in recalc_intercepts()
214 svm->vmcb->control.msrpm_base_pa = __sme_set(__pa(svm->nested.msrpm)); in nested_svm_vmrun_msrpm()
252 static bool nested_vmcb_check_save(struct vcpu_svm *svm, struct vmcb *vmcb12) in nested_vmcb_check_save()
305 svm->nested.ctl.event_inj = svm->vmcb->control.event_inj; in sync_nested_vmcb_control()
306 svm->nested.ctl.event_inj_err = svm->vmcb->control.event_inj_err; in sync_nested_vmcb_control()
323 svm->nested.ctl.int_ctl |= svm->vmcb->control.int_ctl & mask; in sync_nested_vmcb_control()
331 struct vmcb *vmcb12) in nested_vmcb_save_pending_event()
399 static void nested_prepare_vmcb_save(struct vcpu_svm *svm, struct vmcb *vmcb12) in nested_prepare_vmcb_save()
402 svm->vmcb->save.es = vmcb12->save.es; in nested_prepare_vmcb_save()
403 svm->vmcb->save.cs = vmcb12->save.cs; in nested_prepare_vmcb_save()
404 svm->vmcb->save.ss = vmcb12->save.ss; in nested_prepare_vmcb_save()
405 svm->vmcb->save.ds = vmcb12->save.ds; in nested_prepare_vmcb_save()
406 svm->vmcb->save.gdtr = vmcb12->save.gdtr; in nested_prepare_vmcb_save()
407 svm->vmcb->save.idtr = vmcb12->save.idtr; in nested_prepare_vmcb_save()
419 svm->vmcb->save.cr2 = svm->vcpu.arch.cr2 = vmcb12->save.cr2; in nested_prepare_vmcb_save()
425 svm->vmcb->save.rax = vmcb12->save.rax; in nested_prepare_vmcb_save()
426 svm->vmcb->save.rsp = vmcb12->save.rsp; in nested_prepare_vmcb_save()
427 svm->vmcb->save.rip = vmcb12->save.rip; in nested_prepare_vmcb_save()
428 svm->vmcb->save.dr7 = vmcb12->save.dr7; in nested_prepare_vmcb_save()
430 svm->vmcb->save.cpl = vmcb12->save.cpl; in nested_prepare_vmcb_save()
443 svm->vmcb->control.tsc_offset = svm->vcpu.arch.tsc_offset = in nested_prepare_vmcb_control()
446 svm->vmcb->control.int_ctl = in nested_prepare_vmcb_control()
450 svm->vmcb->control.int_vector = svm->nested.ctl.int_vector; in nested_prepare_vmcb_control()
451 svm->vmcb->control.int_state = svm->nested.ctl.int_state; in nested_prepare_vmcb_control()
452 svm->vmcb->control.event_inj = svm->nested.ctl.event_inj; in nested_prepare_vmcb_control()
453 svm->vmcb->control.event_inj_err = svm->nested.ctl.event_inj_err; in nested_prepare_vmcb_control()
455 svm->vmcb->control.pause_filter_count = svm->nested.ctl.pause_filter_count; in nested_prepare_vmcb_control()
456 svm->vmcb->control.pause_filter_thresh = svm->nested.ctl.pause_filter_thresh; in nested_prepare_vmcb_control()
467 vmcb_mark_all_dirty(svm->vmcb); in nested_prepare_vmcb_control()
471 struct vmcb *vmcb12) in enter_svm_guest_mode()
495 struct vmcb *vmcb12; in nested_svm_vmrun()
496 struct vmcb *hsave = svm->nested.hsave; in nested_svm_vmrun()
497 struct vmcb *vmcb = svm->vmcb; in nested_svm_vmrun() local
506 vmcb12_gpa = svm->vmcb->save.rax; in nested_svm_vmrun()
533 trace_kvm_nested_vmrun(svm->vmcb->save.rip, vmcb12_gpa, in nested_svm_vmrun()
554 hsave->save.es = vmcb->save.es; in nested_svm_vmrun()
555 hsave->save.cs = vmcb->save.cs; in nested_svm_vmrun()
556 hsave->save.ss = vmcb->save.ss; in nested_svm_vmrun()
557 hsave->save.ds = vmcb->save.ds; in nested_svm_vmrun()
558 hsave->save.gdtr = vmcb->save.gdtr; in nested_svm_vmrun()
559 hsave->save.idtr = vmcb->save.idtr; in nested_svm_vmrun()
565 hsave->save.rsp = vmcb->save.rsp; in nested_svm_vmrun()
566 hsave->save.rax = vmcb->save.rax; in nested_svm_vmrun()
568 hsave->save.cr3 = vmcb->save.cr3; in nested_svm_vmrun()
572 copy_vmcb_control_area(&hsave->control, &vmcb->control); in nested_svm_vmrun()
585 svm->vmcb->control.exit_code = SVM_EXIT_ERR; in nested_svm_vmrun()
586 svm->vmcb->control.exit_code_hi = 0; in nested_svm_vmrun()
587 svm->vmcb->control.exit_info_1 = 0; in nested_svm_vmrun()
588 svm->vmcb->control.exit_info_2 = 0; in nested_svm_vmrun()
598 void nested_svm_vmloadsave(struct vmcb *from_vmcb, struct vmcb *to_vmcb) in nested_svm_vmloadsave()
617 struct vmcb *vmcb12; in nested_svm_vmexit()
618 struct vmcb *hsave = svm->nested.hsave; in nested_svm_vmexit()
619 struct vmcb *vmcb = svm->vmcb; in nested_svm_vmexit() local
643 vmcb12->save.es = vmcb->save.es; in nested_svm_vmexit()
644 vmcb12->save.cs = vmcb->save.cs; in nested_svm_vmexit()
645 vmcb12->save.ss = vmcb->save.ss; in nested_svm_vmexit()
646 vmcb12->save.ds = vmcb->save.ds; in nested_svm_vmexit()
647 vmcb12->save.gdtr = vmcb->save.gdtr; in nested_svm_vmexit()
648 vmcb12->save.idtr = vmcb->save.idtr; in nested_svm_vmexit()
652 vmcb12->save.cr2 = vmcb->save.cr2; in nested_svm_vmexit()
658 vmcb12->save.dr7 = vmcb->save.dr7; in nested_svm_vmexit()
660 vmcb12->save.cpl = vmcb->save.cpl; in nested_svm_vmexit()
662 vmcb12->control.int_state = vmcb->control.int_state; in nested_svm_vmexit()
663 vmcb12->control.exit_code = vmcb->control.exit_code; in nested_svm_vmexit()
664 vmcb12->control.exit_code_hi = vmcb->control.exit_code_hi; in nested_svm_vmexit()
665 vmcb12->control.exit_info_1 = vmcb->control.exit_info_1; in nested_svm_vmexit()
666 vmcb12->control.exit_info_2 = vmcb->control.exit_info_2; in nested_svm_vmexit()
672 vmcb12->control.next_rip = vmcb->control.next_rip; in nested_svm_vmexit()
680 svm->vmcb->control.pause_filter_count; in nested_svm_vmexit()
682 svm->vmcb->control.pause_filter_thresh; in nested_svm_vmexit()
685 copy_vmcb_control_area(&vmcb->control, &hsave->control); in nested_svm_vmexit()
690 svm->vmcb->control.tsc_offset = svm->vcpu.arch.tsc_offset = in nested_svm_vmexit()
696 svm->vmcb->save.es = hsave->save.es; in nested_svm_vmexit()
697 svm->vmcb->save.cs = hsave->save.cs; in nested_svm_vmexit()
698 svm->vmcb->save.ss = hsave->save.ss; in nested_svm_vmexit()
699 svm->vmcb->save.ds = hsave->save.ds; in nested_svm_vmexit()
700 svm->vmcb->save.gdtr = hsave->save.gdtr; in nested_svm_vmexit()
701 svm->vmcb->save.idtr = hsave->save.idtr; in nested_svm_vmexit()
709 svm->vmcb->save.dr7 = 0; in nested_svm_vmexit()
710 svm->vmcb->save.cpl = 0; in nested_svm_vmexit()
711 svm->vmcb->control.exit_int_info = 0; in nested_svm_vmexit()
713 vmcb_mark_all_dirty(svm->vmcb); in nested_svm_vmexit()
731 svm->vmcb->save.cr3 = hsave->save.cr3; in nested_svm_vmexit()
791 struct vmcb *hsave = svm->nested.hsave; in svm_leave_nested()
792 struct vmcb *vmcb = svm->vmcb; in svm_leave_nested() local
796 copy_vmcb_control_area(&vmcb->control, &hsave->control); in svm_leave_nested()
813 write = svm->vmcb->control.exit_info_1 & 1; in nested_svm_exit_handled_msr()
838 port = svm->vmcb->control.exit_info_1 >> 16; in nested_svm_intercept_ioio()
839 size = (svm->vmcb->control.exit_info_1 & SVM_IOIO_SIZE_MASK) >> in nested_svm_intercept_ioio()
855 u32 exit_code = svm->vmcb->control.exit_code; in nested_svm_intercept()
917 if (svm->vmcb->save.cpl) { in nested_svm_check_permissions()
936 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + nr; in nested_svm_inject_exception_vmexit()
937 svm->vmcb->control.exit_code_hi = 0; in nested_svm_inject_exception_vmexit()
940 svm->vmcb->control.exit_info_1 = svm->vcpu.arch.exception.error_code; in nested_svm_inject_exception_vmexit()
948 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.apf.nested_apf_token; in nested_svm_inject_exception_vmexit()
950 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.exception.payload; in nested_svm_inject_exception_vmexit()
952 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.cr2; in nested_svm_inject_exception_vmexit()
968 svm->vmcb->control.exit_code = SVM_EXIT_SMI; in nested_svm_smi()
969 svm->vmcb->control.exit_info_1 = 0; in nested_svm_smi()
970 svm->vmcb->control.exit_info_2 = 0; in nested_svm_smi()
977 svm->vmcb->control.exit_code = SVM_EXIT_NMI; in nested_svm_nmi()
978 svm->vmcb->control.exit_info_1 = 0; in nested_svm_nmi()
979 svm->vmcb->control.exit_info_2 = 0; in nested_svm_nmi()
986 trace_kvm_nested_intr_vmexit(svm->vmcb->save.rip); in nested_svm_intr()
988 svm->vmcb->control.exit_code = SVM_EXIT_INTR; in nested_svm_intr()
989 svm->vmcb->control.exit_info_1 = 0; in nested_svm_intr()
990 svm->vmcb->control.exit_info_2 = 0; in nested_svm_intr()
1002 svm->vmcb->control.exit_code = SVM_EXIT_INIT; in nested_svm_init()
1003 svm->vmcb->control.exit_info_1 = 0; in nested_svm_init()
1004 svm->vmcb->control.exit_info_2 = 0; in nested_svm_init()
1068 u32 exit_code = svm->vmcb->control.exit_code; in nested_svm_exit_special()
1104 struct vmcb __user *user_vmcb = (struct vmcb __user *) in svm_get_nested_state()
1156 struct vmcb *hsave = svm->nested.hsave; in svm_set_nested_state()
1157 struct vmcb __user *user_vmcb = (struct vmcb __user *) in svm_set_nested_state()
1240 copy_vmcb_control_area(&hsave->control, &svm->vmcb->control); in svm_set_nested_state()