Lines Matching defs:vmexit

752 svm_handle_io(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit)
778 vmexit->exitcode = VM_EXITCODE_INOUT;
779 vmexit->u.inout.in = (info1 & BIT(0)) ? 1 : 0;
780 vmexit->u.inout.string = inout_string;
781 vmexit->u.inout.rep = (info1 & BIT(3)) ? 1 : 0;
782 vmexit->u.inout.bytes = (info1 >> 4) & 0x7;
783 vmexit->u.inout.port = (uint16_t)(info1 >> 16);
784 vmexit->u.inout.eax = (uint32_t)(state->rax);
787 vmexit->exitcode = VM_EXITCODE_INOUT_STR;
788 vis = &vmexit->u.inout_str;
792 vis->index = svm_inout_str_index(regs, vmexit->u.inout.in);
793 vis->count = svm_inout_str_count(regs, vmexit->u.inout.rep);
796 vmexit->u.inout.in, vis);
834 svm_handle_inst_emul(struct vmcb *vmcb, uint64_t gpa, struct vm_exit *vmexit)
843 paging = &vmexit->u.inst_emul.paging;
845 vmexit->exitcode = VM_EXITCODE_INST_EMUL;
846 vmexit->u.inst_emul.gpa = gpa;
847 vmexit->u.inst_emul.gla = VIE_INVALID_GLA;
855 vmexit->u.inst_emul.cs_base = seg.base;
856 vmexit->u.inst_emul.cs_d = 0;
860 vmexit->u.inst_emul.cs_base = seg.base;
865 vmexit->u.inst_emul.cs_d = (seg.attrib & VMCB_CS_ATTRIB_D) ?
869 vmexit->u.inst_emul.cs_base = 0;
870 vmexit->u.inst_emul.cs_d = 0;
884 vie_init(&vmexit->u.inst_emul.vie, inst_bytes, inst_len);
1302 svm_vmexit(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit)
1323 vmexit->exitcode = VM_EXITCODE_BOGUS;
1324 vmexit->rip = state->rip;
1325 vmexit->inst_length = nrip_valid(code) ? ctrl->nrip - state->rip : 0;
1335 vm_exit_svm(vmexit, code, info1, info2);
1342 KASSERT(vmexit->inst_length >= 0 && vmexit->inst_length <= 15,
1344 vmexit->inst_length, code, info1, info2));
1354 vmexit->inst_length = 0;
1416 vmexit->inst_length, idtvec);
1417 vmexit->inst_length = 0;
1424 KASSERT(vmexit->inst_length == 0, ("invalid inst_length (%d) "
1426 vmexit->inst_length, idtvec));
1451 vmexit->exitcode = VM_EXITCODE_WRMSR;
1452 vmexit->u.msr.code = ecx;
1453 vmexit->u.msr.wval = val;
1457 KASSERT(vmexit->exitcode != VM_EXITCODE_BOGUS,
1464 vmexit->exitcode = VM_EXITCODE_RDMSR;
1465 vmexit->u.msr.code = ecx;
1469 KASSERT(vmexit->exitcode != VM_EXITCODE_BOGUS,
1475 handled = svm_handle_io(svm_sc, vcpu, vmexit);
1488 vmexit->exitcode = VM_EXITCODE_HLT;
1489 vmexit->u.hlt.rflags = state->rflags;
1492 vmexit->exitcode = VM_EXITCODE_PAUSE;
1502 vmexit->exitcode = VM_EXITCODE_PAGING;
1503 vmexit->u.paging.gpa = info2;
1504 vmexit->u.paging.fault_type = npf_fault_type(info1);
1510 svm_handle_inst_emul(vmcb, info2, vmexit);
1518 vmexit->exitcode = VM_EXITCODE_MONITOR;
1521 vmexit->exitcode = VM_EXITCODE_MWAIT;
1542 VCPU_CTR4(svm_sc->vm, vcpu, "%s %s vmexit at %#lx/%d",
1544 vmexit->rip, vmexit->inst_length);
1547 vmexit->rip += vmexit->inst_length;
1548 vmexit->inst_length = 0;
1549 state->rip = vmexit->rip;
1551 if (vmexit->exitcode == VM_EXITCODE_BOGUS) {
1556 vm_exit_svm(vmexit, code, info1, info2);
1969 struct vm_exit *vmexit;
1982 vmexit = vm_exitinfo(vm, vcpu);
2102 handled = svm_vmexit(svm_sc, vcpu, vmexit);