Lines Matching defs:ctrl

365 	struct vmcb_ctrl *ctrl;
369 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
370 return (ctrl->intercept[idx] & bitmask ? 1 : 0);
377 struct vmcb_ctrl *ctrl;
382 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
383 oldval = ctrl->intercept[idx];
386 ctrl->intercept[idx] |= bitmask;
388 ctrl->intercept[idx] &= ~bitmask;
390 if (ctrl->intercept[idx] != oldval) {
393 "from %#x to %#x", idx, oldval, ctrl->intercept[idx]);
415 struct vmcb_ctrl *ctrl;
420 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
423 ctrl->iopm_base_pa = iopm_base_pa;
424 ctrl->msrpm_base_pa = msrpm_base_pa;
427 ctrl->np_enable = 1;
428 ctrl->n_cr3 = np_pml4;
498 ctrl->asid = 0;
506 ctrl->v_intr_masking = 1;
509 ctrl->lbr_virt_en = 1;
754 struct vmcb_ctrl *ctrl;
762 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu);
765 info1 = ctrl->exitinfo1;
838 struct vmcb_ctrl *ctrl;
842 ctrl = &vmcb->ctrl;
878 inst_len = ctrl->inst_len;
879 inst_bytes = ctrl->inst_bytes;
913 struct vmcb_ctrl *ctrl;
915 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
917 KASSERT((ctrl->eventinj & VMCB_EVENTINJ_VALID) == 0,
918 ("%s: event already pending %#lx", __func__, ctrl->eventinj));
936 ctrl->eventinj = vector | (intr_type << 8) | VMCB_EVENTINJ_VALID;
938 ctrl->eventinj |= VMCB_EVENTINJ_EC_VALID;
939 ctrl->eventinj |= (uint64_t)error << 32;
953 struct vmcb_ctrl *ctrl;
957 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
960 vlapic_set_cr8(vlapic, ctrl->v_tpr);
963 KASSERT(ctrl->v_intr_vector == 0, ("%s: invalid "
964 "v_intr_vector %d", __func__, ctrl->v_intr_vector));
970 struct vmcb_ctrl *ctrl;
973 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu);
974 intinfo = ctrl->exitintinfo;
1003 struct vmcb_ctrl *ctrl;
1005 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
1007 if (ctrl->v_irq && ctrl->v_intr_vector == 0) {
1008 KASSERT(ctrl->v_ign_tpr, ("%s: invalid v_ign_tpr", __func__));
1015 ctrl->v_irq = 1;
1016 ctrl->v_ign_tpr = 1;
1017 ctrl->v_intr_vector = 0;
1025 struct vmcb_ctrl *ctrl;
1027 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
1029 if (!ctrl->v_irq && ctrl->v_intr_vector == 0) {
1036 ctrl->v_irq = 0;
1037 ctrl->v_intr_vector = 0;
1045 struct vmcb_ctrl *ctrl;
1048 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
1049 oldval = ctrl->intr_shadow;
1052 ctrl->intr_shadow = newval;
1061 struct vmcb_ctrl *ctrl;
1063 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
1064 *val = ctrl->intr_shadow;
1306 struct vmcb_ctrl *ctrl;
1316 ctrl = &vmcb->ctrl;
1319 code = ctrl->exitcode;
1320 info1 = ctrl->exitinfo1;
1321 info2 = ctrl->exitinfo2;
1325 vmexit->inst_length = nrip_valid(code) ? ctrl->nrip - state->rip : 0;
1339 KASSERT((ctrl->eventinj & VMCB_EVENTINJ_VALID) == 0, ("%s: event "
1340 "injection valid bit is set %#lx", __func__, ctrl->eventinj));
1592 struct vmcb_ctrl *ctrl;
1600 ctrl = svm_get_vmcb_ctrl(sc, vcpu);
1606 ctrl->intr_shadow = 0;
1616 * during event delivery (i.e. ctrl->exitintinfo).
1632 } else if (ctrl->intr_shadow) {
1640 } else if (ctrl->eventinj & VMCB_EVENTINJ_VALID) {
1646 "eventinj %#lx", ctrl->eventinj);
1697 if (ctrl->intr_shadow) {
1704 if (ctrl->eventinj & VMCB_EVENTINJ_VALID) {
1706 "eventinj %#lx", vector, ctrl->eventinj);
1741 if (ctrl->v_tpr != v_tpr) {
1743 ctrl->v_tpr, v_tpr);
1744 ctrl->v_tpr = v_tpr;
1758 KASSERT((ctrl->eventinj & VMCB_EVENTINJ_VALID) != 0 ||
1759 (state->rflags & PSL_I) == 0 || ctrl->intr_shadow,
1762 ctrl->eventinj, ctrl->intr_shadow, state->rflags));
1790 struct vmcb_ctrl *ctrl;
1798 ctrl = svm_get_vmcb_ctrl(sc, vcpuid);
1837 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_NOTHING;
1843 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_GUEST; /* (b1) */
1851 KASSERT(ctrl->tlb_ctrl == VMCB_TLB_FLUSH_NOTHING,
1852 ("Invalid VMCB tlb_ctrl: %#x", ctrl->tlb_ctrl));
1867 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_ALL;
1872 ctrl->asid = vcpustate->asid.num;
1880 ctrl->tlb_ctrl = VMCB_TLB_FLUSH_GUEST;
1884 KASSERT(ctrl->asid != 0, ("Guest ASID must be non-zero"));
1885 KASSERT(ctrl->asid == vcpustate->asid.num,
1886 ("ASID mismatch: %u/%u", ctrl->asid, vcpustate->asid.num));
1968 struct vmcb_ctrl *ctrl;
1981 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu);
2073 ctrl->vmcb_clean = vmcb_clean & ~vcpustate->dirty;
2075 VCPU_CTR1(vm, vcpu, "vmcb clean %#x", ctrl->vmcb_clean);