Lines Matching defs:ctrl
296 struct vmcb_ctrl *ctrl;
298 ctrl = svm_get_vmcb_ctrl(vcpu);
299 ctrl->tsc_offset = offset;
392 struct vmcb_ctrl *ctrl;
396 ctrl = svm_get_vmcb_ctrl(vcpu);
397 return (ctrl->intercept[idx] & bitmask ? 1 : 0);
403 struct vmcb_ctrl *ctrl;
408 ctrl = svm_get_vmcb_ctrl(vcpu);
409 oldval = ctrl->intercept[idx];
412 ctrl->intercept[idx] |= bitmask;
414 ctrl->intercept[idx] &= ~bitmask;
416 if (ctrl->intercept[idx] != oldval) {
419 oldval, ctrl->intercept[idx]);
441 struct vmcb_ctrl *ctrl;
446 ctrl = svm_get_vmcb_ctrl(vcpu);
449 ctrl->iopm_base_pa = iopm_base_pa;
450 ctrl->msrpm_base_pa = msrpm_base_pa;
453 ctrl->np_enable = 1;
454 ctrl->n_cr3 = np_pml4;
526 ctrl->asid = 0;
534 ctrl->v_intr_masking = 1;
537 ctrl->lbr_virt_en = 1;
785 struct vmcb_ctrl *ctrl;
793 ctrl = svm_get_vmcb_ctrl(vcpu);
796 info1 = ctrl->exitinfo1;
868 struct vmcb_ctrl *ctrl;
872 ctrl = &vmcb->ctrl;
908 inst_len = ctrl->inst_len;
909 inst_bytes = ctrl->inst_bytes;
943 struct vmcb_ctrl *ctrl;
945 ctrl = svm_get_vmcb_ctrl(vcpu);
947 KASSERT((ctrl->eventinj & VMCB_EVENTINJ_VALID) == 0,
948 ("%s: event already pending %#lx", __func__, ctrl->eventinj));
966 ctrl->eventinj = vector | (intr_type << 8) | VMCB_EVENTINJ_VALID;
968 ctrl->eventinj |= VMCB_EVENTINJ_EC_VALID;
969 ctrl->eventinj |= (uint64_t)error << 32;
982 struct vmcb_ctrl *ctrl;
985 ctrl = svm_get_vmcb_ctrl(vcpu);
988 vlapic_set_cr8(vlapic, ctrl->v_tpr);
991 KASSERT(ctrl->v_intr_vector == 0, ("%s: invalid "
992 "v_intr_vector %d", __func__, ctrl->v_intr_vector));
998 struct vmcb_ctrl *ctrl;
1001 ctrl = svm_get_vmcb_ctrl(vcpu);
1002 intinfo = ctrl->exitintinfo;
1030 struct vmcb_ctrl *ctrl;
1032 ctrl = svm_get_vmcb_ctrl(vcpu);
1034 if (ctrl->v_irq && ctrl->v_intr_vector == 0) {
1035 KASSERT(ctrl->v_ign_tpr, ("%s: invalid v_ign_tpr", __func__));
1042 ctrl->v_irq = 1;
1043 ctrl->v_ign_tpr = 1;
1044 ctrl->v_intr_vector = 0;
1052 struct vmcb_ctrl *ctrl;
1054 ctrl = svm_get_vmcb_ctrl(vcpu);
1056 if (!ctrl->v_irq && ctrl->v_intr_vector == 0) {
1063 ctrl->v_irq = 0;
1064 ctrl->v_intr_vector = 0;
1072 struct vmcb_ctrl *ctrl;
1075 ctrl = svm_get_vmcb_ctrl(vcpu);
1076 oldval = ctrl->intr_shadow;
1079 ctrl->intr_shadow = newval;
1088 struct vmcb_ctrl *ctrl;
1090 ctrl = svm_get_vmcb_ctrl(vcpu);
1091 *val = ctrl->intr_shadow;
1336 struct vmcb_ctrl *ctrl;
1346 ctrl = &vmcb->ctrl;
1349 code = ctrl->exitcode;
1350 info1 = ctrl->exitinfo1;
1351 info2 = ctrl->exitinfo2;
1355 vmexit->inst_length = nrip_valid(code) ? ctrl->nrip - state->rip : 0;
1369 KASSERT((ctrl->eventinj & VMCB_EVENTINJ_VALID) == 0, ("%s: event "
1370 "injection valid bit is set %#lx", __func__, ctrl->eventinj));
1728 struct vmcb_ctrl *ctrl;
1739 ctrl = svm_get_vmcb_ctrl(vcpu);
1744 ctrl->intr_shadow = 0;
1754 * during event delivery (i.e. ctrl->exitintinfo).
1770 } else if (ctrl->intr_shadow) {
1778 } else if (ctrl->eventinj & VMCB_EVENTINJ_VALID) {
1784 "eventinj %#lx", ctrl->eventinj);
1835 if (ctrl->intr_shadow) {
1842 if (ctrl->eventinj & VMCB_EVENTINJ_VALID) {
1844 "eventinj %#lx", vector, ctrl->eventinj);
1879 if (ctrl->v_tpr != v_tpr) {
1881 ctrl->v_tpr, v_tpr);
1882 ctrl->v_tpr = v_tpr;
1896 KASSERT((ctrl->eventinj & VMCB_EVENTINJ_VALID) != 0 ||
1897 (state->rflags & PSL_I) == 0 || ctrl->intr_shadow,
1900 ctrl->eventinj, ctrl->intr_shadow, state->rflags));
1927 struct vmcb_ctrl *ctrl;
1936 ctrl = svm_get_vmcb_ctrl(vcpu);
1975 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_NOTHING;
1981 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_GUEST; /* (b1) */
1989 KASSERT(ctrl->tlb_ctrl == VMCB_TLB_FLUSH_NOTHING,
1990 ("Invalid VMCB tlb_ctrl: %#x", ctrl->tlb_ctrl));
2005 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_ALL;
2010 ctrl->asid = vcpu->asid.num;
2018 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_GUEST;
2022 KASSERT(ctrl->asid != 0, ("Guest ASID must be non-zero"));
2023 KASSERT(ctrl->asid == vcpu->asid.num,
2024 ("ASID mismatch: %u/%u", ctrl->asid, vcpu->asid.num));
2112 struct vmcb_ctrl *ctrl;
2122 ctrl = svm_get_vmcb_ctrl(vcpu);
2217 ctrl->vmcb_clean = vmcb_clean & ~vcpu->dirty;
2219 SVM_CTR1(vcpu, "vmcb clean %#x", ctrl->vmcb_clean);