Lines Matching defs:vmcb12
142 * If L2 is active and V_INTR_MASKING is enabled in vmcb12,
404 * they can be copied back into the vmcb12.
415 * Don't sync vmcb02 V_IRQ back to vmcb12 if KVM (L0) is intercepting
418 * the next VM-Exit, svm_clear_vintr() will restore vmcb12's int_ctl.
419 * If no window opens, V_IRQ will be correctly preserved in vmcb12's
441 struct vmcb *vmcb12)
453 vmcb12->control.exit_int_info_err =
470 vmcb12->control.exit_int_info = exit_int_info;
531 /* FIXME: merge g_pat from vmcb01 and vmcb12. */
535 static void nested_vmcb02_prepare_save(struct vcpu_svm *svm, struct vmcb *vmcb12)
551 if (unlikely(new_vmcb12 || vmcb_is_dirty(vmcb12, VMCB_SEG))) {
552 vmcb02->save.es = vmcb12->save.es;
553 vmcb02->save.cs = vmcb12->save.cs;
554 vmcb02->save.ss = vmcb12->save.ss;
555 vmcb02->save.ds = vmcb12->save.ds;
556 vmcb02->save.cpl = vmcb12->save.cpl;
560 if (unlikely(new_vmcb12 || vmcb_is_dirty(vmcb12, VMCB_DT))) {
561 vmcb02->save.gdtr = vmcb12->save.gdtr;
562 vmcb02->save.idtr = vmcb12->save.idtr;
566 kvm_set_rflags(vcpu, vmcb12->save.rflags | X86_EFLAGS_FIXED);
573 svm->vcpu.arch.cr2 = vmcb12->save.cr2;
575 kvm_rax_write(vcpu, vmcb12->save.rax);
576 kvm_rsp_write(vcpu, vmcb12->save.rsp);
577 kvm_rip_write(vcpu, vmcb12->save.rip);
580 vmcb02->save.rax = vmcb12->save.rax;
581 vmcb02->save.rsp = vmcb12->save.rsp;
582 vmcb02->save.rip = vmcb12->save.rip;
585 if (unlikely(new_vmcb12 || vmcb_is_dirty(vmcb12, VMCB_DR))) {
597 svm_copy_lbrs(vmcb02, vmcb12);
702 * to L1, take it verbatim from vmcb12. If nrips is supported in
784 struct vmcb *vmcb12, bool from_vmrun)
791 vmcb12->save.rip,
792 vmcb12->control.int_ctl,
793 vmcb12->control.event_inj,
794 vmcb12->control.nested_ctl,
795 vmcb12->control.nested_cr3,
796 vmcb12->save.cr3,
799 trace_kvm_nested_intercepts(vmcb12->control.intercepts[INTERCEPT_CR] & 0xffff,
800 vmcb12->control.intercepts[INTERCEPT_CR] >> 16,
801 vmcb12->control.intercepts[INTERCEPT_EXCEPTION],
802 vmcb12->control.intercepts[INTERCEPT_WORD3],
803 vmcb12->control.intercepts[INTERCEPT_WORD4],
804 vmcb12->control.intercepts[INTERCEPT_WORD5]);
814 nested_vmcb02_prepare_control(svm, vmcb12->save.rip, vmcb12->save.cs.base);
815 nested_vmcb02_prepare_save(svm, vmcb12);
839 struct vmcb *vmcb12;
872 vmcb12 = map.hva;
877 nested_copy_vmcb_control_to_cache(svm, &vmcb12->control);
878 nested_copy_vmcb_save_to_cache(svm, &vmcb12->save);
882 vmcb12->control.exit_code = SVM_EXIT_ERR;
883 vmcb12->control.exit_code_hi = 0;
884 vmcb12->control.exit_info_1 = 0;
885 vmcb12->control.exit_info_2 = 0;
904 if (enter_svm_guest_mode(vcpu, vmcb12_gpa, vmcb12, true))
970 struct vmcb *vmcb12;
981 vmcb12 = map.hva;
995 vmcb12->save.es = vmcb02->save.es;
996 vmcb12->save.cs = vmcb02->save.cs;
997 vmcb12->save.ss = vmcb02->save.ss;
998 vmcb12->save.ds = vmcb02->save.ds;
999 vmcb12->save.gdtr = vmcb02->save.gdtr;
1000 vmcb12->save.idtr = vmcb02->save.idtr;
1001 vmcb12->save.efer = svm->vcpu.arch.efer;
1002 vmcb12->save.cr0 = kvm_read_cr0(vcpu);
1003 vmcb12->save.cr3 = kvm_read_cr3(vcpu);
1004 vmcb12->save.cr2 = vmcb02->save.cr2;
1005 vmcb12->save.cr4 = svm->vcpu.arch.cr4;
1006 vmcb12->save.rflags = kvm_get_rflags(vcpu);
1007 vmcb12->save.rip = kvm_rip_read(vcpu);
1008 vmcb12->save.rsp = kvm_rsp_read(vcpu);
1009 vmcb12->save.rax = kvm_rax_read(vcpu);
1010 vmcb12->save.dr7 = vmcb02->save.dr7;
1011 vmcb12->save.dr6 = svm->vcpu.arch.dr6;
1012 vmcb12->save.cpl = vmcb02->save.cpl;
1014 vmcb12->control.int_state = vmcb02->control.int_state;
1015 vmcb12->control.exit_code = vmcb02->control.exit_code;
1016 vmcb12->control.exit_code_hi = vmcb02->control.exit_code_hi;
1017 vmcb12->control.exit_info_1 = vmcb02->control.exit_info_1;
1018 vmcb12->control.exit_info_2 = vmcb02->control.exit_info_2;
1020 if (vmcb12->control.exit_code != SVM_EXIT_ERR)
1021 nested_save_pending_event_to_vmcb12(svm, vmcb12);
1024 vmcb12->control.next_rip = vmcb02->control.next_rip;
1026 vmcb12->control.int_ctl = svm->nested.ctl.int_ctl;
1027 vmcb12->control.event_inj = svm->nested.ctl.event_inj;
1028 vmcb12->control.event_inj_err = svm->nested.ctl.event_inj_err;
1064 svm_copy_lbrs(vmcb12, vmcb02);
1120 trace_kvm_nested_vmexit_inject(vmcb12->control.exit_code,
1121 vmcb12->control.exit_info_1,
1122 vmcb12->control.exit_info_2,
1123 vmcb12->control.exit_int_info,
1124 vmcb12->control.exit_int_info_err,
1216 * When last_vmcb12_gpa matches the current vmcb12 gpa,
1217 * some vmcb12 fields are not loaded if they are marked clean
1218 * in the vmcb12, since in this case they are up to date already.
1732 * vmcb12.control, which will be combined with L1 and stored into