Lines Matching defs:vmcb02
415 * Don't sync vmcb02 V_IRQ back to vmcb12 if KVM (L0) is intercepting
417 * has usurped vmcb02's int_ctl. If an interrupt window opens before
491 * - Don't crush a pending TLB flush in vmcb02 on nested VMRUN
528 if (!svm->nested.vmcb02.ptr)
532 svm->nested.vmcb02.ptr->save.g_pat = svm->vmcb01.ptr->save.g_pat;
539 struct vmcb *vmcb02 = svm->nested.vmcb02.ptr;
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;
557 vmcb_mark_dirty(vmcb02, VMCB_SEG);
561 vmcb02->save.gdtr = vmcb12->save.gdtr;
562 vmcb02->save.idtr = vmcb12->save.idtr;
563 vmcb_mark_dirty(vmcb02, VMCB_DT);
580 vmcb02->save.rax = vmcb12->save.rax;
581 vmcb02->save.rsp = vmcb12->save.rsp;
582 vmcb02->save.rip = vmcb12->save.rip;
586 vmcb02->save.dr7 = svm->nested.save.dr7 | DR7_FIXED_1;
588 vmcb_mark_dirty(vmcb02, VMCB_DR);
597 svm_copy_lbrs(vmcb02, vmcb12);
598 vmcb02->save.dbgctl &= ~DEBUGCTL_RESERVED_BITS;
602 svm_copy_lbrs(vmcb02, vmcb01);
639 struct vmcb *vmcb02 = svm->nested.vmcb02.ptr;
666 vmcb02->control.nested_ctl = vmcb01->control.nested_ctl;
667 vmcb02->control.iopm_base_pa = vmcb01->control.iopm_base_pa;
668 vmcb02->control.msrpm_base_pa = vmcb01->control.msrpm_base_pa;
673 vmcb02->control.tlb_ctl = TLB_CONTROL_DO_NOTHING;
684 vmcb02->control.tsc_offset = vcpu->arch.tsc_offset;
690 vmcb02->control.int_ctl =
694 vmcb02->control.int_vector = svm->nested.ctl.int_vector;
695 vmcb02->control.int_state = svm->nested.ctl.int_state;
696 vmcb02->control.event_inj = svm->nested.ctl.event_inj;
697 vmcb02->control.event_inj_err = svm->nested.ctl.event_inj_err;
708 vmcb02->control.next_rip = svm->nested.ctl.next_rip;
710 vmcb02->control.next_rip = vmcb12_rip;
712 svm->nmi_l1_to_l2 = is_evtinj_nmi(vmcb02->control.event_inj);
713 if (is_evtinj_soft(vmcb02->control.event_inj)) {
723 vmcb02->control.virt_ext = vmcb01->control.virt_ext &
726 vmcb02->control.virt_ext |=
730 vmcb02->control.virt_ext |= VIRTUAL_VMLOAD_VMSAVE_ENABLE_MASK;
742 vmcb02->control.pause_filter_count = pause_count12;
743 vmcb02->control.pause_filter_thresh = pause_thresh12;
747 vmcb02->control.pause_filter_count = vmcb01->control.pause_filter_count;
748 vmcb02->control.pause_filter_thresh = vmcb01->control.pause_filter_thresh;
753 vmcb02->control.pause_filter_count = 0;
755 vmcb02->control.pause_filter_thresh = 0;
809 WARN_ON(svm->vmcb == svm->nested.vmcb02.ptr);
811 nested_svm_copy_common_state(svm->vmcb01.ptr, svm->nested.vmcb02.ptr);
813 svm_switch_vmcb(svm, &svm->nested.vmcb02);
969 struct vmcb *vmcb02 = svm->nested.vmcb02.ptr;
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;
1004 vmcb12->save.cr2 = vmcb02->save.cr2;
1010 vmcb12->save.dr7 = vmcb02->save.dr7;
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;
1024 vmcb12->control.next_rip = vmcb02->control.next_rip;
1031 vmcb01->control.pause_filter_count = vmcb02->control.pause_filter_count;
1036 nested_svm_copy_common_state(svm->nested.vmcb02.ptr, svm->vmcb01.ptr);
1041 * Rules for synchronizing int_ctl bits from vmcb02 to vmcb01:
1044 * intercept interrupts, then KVM will use vmcb02's V_IRQ (and related
1048 * copies this bits from vmcb02 to vmcb01.
1051 * is stored in vmcb02, but its value doesn't need to be copied from/to
1055 * V_GIF: If nested vGIF is not used, KVM uses vmcb02's V_GIF for L1's
1057 * there is no need to copy V_GIF from vmcb02 to vmcb01.
1064 svm_copy_lbrs(vmcb12, vmcb02);
1067 svm_copy_lbrs(vmcb01, vmcb02);
1072 if (vmcb02->control.int_ctl & V_NMI_BLOCKING_MASK)
1185 svm->nested.vmcb02.ptr = page_address(vmcb02_page);
1186 svm->nested.vmcb02.pa = __sme_set(page_to_pfn(vmcb02_page) << PAGE_SHIFT);
1212 __free_page(virt_to_page(svm->nested.vmcb02.ptr));
1213 svm->nested.vmcb02.ptr = NULL;
1220 * When the vmcb02 is freed, this optimization becomes invalid.
1733 * vmcb02, and the L1 save state which we store in vmcb01.
1740 svm->nested.vmcb02.ptr->save = svm->vmcb01.ptr->save;
1752 svm_switch_vmcb(svm, &svm->nested.vmcb02);