Lines Matching refs:vcpu
108 static int svm_setreg(void *arg, int vcpu, int ident, uint64_t val);
109 static int svm_getreg(void *arg, int vcpu, int ident, uint64_t *val);
252 svm_get_intercept(struct svm_softc *sc, int vcpu, int idx, uint32_t bitmask) in svm_get_intercept() argument
258 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_get_intercept()
263 svm_set_intercept(struct svm_softc *sc, int vcpu, int idx, uint32_t bitmask, in svm_set_intercept() argument
271 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_set_intercept()
280 svm_set_dirty(sc, vcpu, VMCB_CACHE_I); in svm_set_intercept()
285 vmcb_init(struct svm_softc *sc, int vcpu, uint64_t iopm_base_pa, in vmcb_init() argument
293 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in vmcb_init()
294 state = svm_get_vmcb_state(sc, vcpu); in vmcb_init()
310 svm_disable_intercept(sc, vcpu, VMCB_CR_INTCPT, mask); in vmcb_init()
312 svm_enable_intercept(sc, vcpu, VMCB_CR_INTCPT, mask); in vmcb_init()
319 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in vmcb_init()
326 if (vcpu_trace_exceptions(sc->vm, vcpu)) { in vmcb_init()
334 svm_enable_intercept(sc, vcpu, VMCB_EXC_INTCPT, BIT(n)); in vmcb_init()
337 svm_enable_intercept(sc, vcpu, VMCB_EXC_INTCPT, BIT(IDT_MC)); in vmcb_init()
341 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IO); in vmcb_init()
342 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_MSR); in vmcb_init()
343 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_CPUID); in vmcb_init()
344 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INTR); in vmcb_init()
345 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INIT); in vmcb_init()
346 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_NMI); in vmcb_init()
347 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_SMI); in vmcb_init()
348 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_RDPMC); in vmcb_init()
349 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_SHUTDOWN); in vmcb_init()
350 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in vmcb_init()
354 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_HLT); in vmcb_init()
356 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_MONITOR); in vmcb_init()
357 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_MWAIT); in vmcb_init()
360 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INVD); in vmcb_init()
361 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INVLPGA); in vmcb_init()
369 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMRUN); in vmcb_init()
370 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMMCALL); in vmcb_init()
371 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMLOAD); in vmcb_init()
372 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMSAVE); in vmcb_init()
373 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_STGI); in vmcb_init()
374 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_CLGI); in vmcb_init()
375 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_SKINIT); in vmcb_init()
376 if (vcpu_trap_wbinvd(sc->vm, vcpu) != 0) { in vmcb_init()
377 svm_enable_intercept(sc, vcpu, VMCB_CTRL2_INTCPT, in vmcb_init()
424 struct svm_vcpu *vcpu; in svm_vminit() local
480 vcpu = svm_get_vcpu(svm_sc, i); in svm_vminit()
481 vcpu->nextrip = ~0; in svm_vminit()
482 vcpu->lastcpu = NOCPU; in svm_vminit()
483 vcpu->vmcb_pa = vtophys(&vcpu->vmcb); in svm_vminit()
565 svm_handle_inout(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit) in svm_handle_inout() argument
574 state = svm_get_vmcb_state(svm_sc, vcpu); in svm_handle_inout()
575 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu); in svm_handle_inout()
591 svm_paging_info(svm_get_vmcb(svm_sc, vcpu), &paging); in svm_handle_inout()
592 vie = vm_vie_ctx(svm_sc->vm, vcpu); in svm_handle_inout()
677 svm_handle_mmio_emul(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit, in svm_handle_mmio_emul() argument
688 vmcb = svm_get_vmcb(svm_sc, vcpu); in svm_handle_mmio_emul()
726 vie = vm_vie_ctx(svm_sc->vm, vcpu); in svm_handle_mmio_emul()
737 svm_set_cr0(struct svm_softc *svm_sc, int vcpu, uint64_t val, bool guest_write) in svm_set_cr0() argument
743 state = svm_get_vmcb_state(svm_sc, vcpu); in svm_set_cr0()
744 regctx = svm_get_guest_regctx(svm_sc, vcpu); in svm_set_cr0()
756 flush_asid(svm_sc, vcpu); in svm_set_cr0()
780 svm_set_dirty(svm_sc, vcpu, VMCB_CACHE_CR); in svm_set_cr0()
794 svm_enable_intercept(svm_sc, vcpu, VMCB_CR_INTCPT, in svm_set_cr0()
806 svm_disable_intercept(svm_sc, vcpu, VMCB_CR_INTCPT, in svm_set_cr0()
809 svm_set_dirty(svm_sc, vcpu, VMCB_CACHE_I); in svm_set_cr0()
813 svm_get_cr0(struct svm_softc *svm_sc, int vcpu, uint64_t *val) in svm_get_cr0() argument
818 vmcb = svm_get_vmcb(svm_sc, vcpu); in svm_get_cr0()
819 regctx = svm_get_guest_regctx(svm_sc, vcpu); in svm_get_cr0()
829 svm_handle_cr0_read(struct svm_softc *svm_sc, int vcpu, enum vm_reg_name reg) in svm_handle_cr0_read() argument
834 svm_get_cr0(svm_sc, vcpu, &val); in svm_handle_cr0_read()
835 err = svm_setreg(svm_sc, vcpu, reg, val); in svm_handle_cr0_read()
840 svm_handle_cr0_write(struct svm_softc *svm_sc, int vcpu, enum vm_reg_name reg) in svm_handle_cr0_write() argument
846 state = svm_get_vmcb_state(svm_sc, vcpu); in svm_handle_cr0_write()
848 err = svm_getreg(svm_sc, vcpu, reg, &val); in svm_handle_cr0_write()
853 vm_inject_gp(svm_sc->vm, vcpu); in svm_handle_cr0_write()
858 vm_inject_gp(svm_sc->vm, vcpu); in svm_handle_cr0_write()
865 vm_inject_gp(svm_sc->vm, vcpu); in svm_handle_cr0_write()
870 svm_set_cr0(svm_sc, vcpu, val, true); in svm_handle_cr0_write()
874 svm_inst_emul_other(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit) in svm_inst_emul_other() argument
882 vie = vm_vie_ctx(svm_sc->vm, vcpu); in svm_inst_emul_other()
883 svm_paging_info(svm_get_vmcb(svm_sc, vcpu), &paging); in svm_inst_emul_other()
891 svm_update_virqinfo(struct svm_softc *sc, int vcpu) in svm_update_virqinfo() argument
898 vlapic = vm_lapic(vm, vcpu); in svm_update_virqinfo()
899 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_update_virqinfo()
922 svm_stash_intinfo(struct svm_softc *svm_sc, int vcpu, uint64_t intinfo) in svm_stash_intinfo() argument
935 VERIFY0(vm_exit_intinfo(svm_sc->vm, vcpu, intinfo)); in svm_stash_intinfo()
939 svm_save_exitintinfo(struct svm_softc *svm_sc, int vcpu) in svm_save_exitintinfo() argument
941 struct vmcb_ctrl *ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu); in svm_save_exitintinfo()
949 vmm_stat_incr(svm_sc->vm, vcpu, VCPU_EXITINTINFO, 1); in svm_save_exitintinfo()
951 svm_stash_intinfo(svm_sc, vcpu, intinfo); in svm_save_exitintinfo()
956 vintr_intercept_enabled(struct svm_softc *sc, int vcpu) in vintr_intercept_enabled() argument
959 return (svm_get_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in vintr_intercept_enabled()
964 svm_enable_intr_window_exiting(struct svm_softc *sc, int vcpu) in svm_enable_intr_window_exiting() argument
969 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_enable_intr_window_exiting()
970 state = svm_get_vmcb_state(sc, vcpu); in svm_enable_intr_window_exiting()
975 KASSERT(vintr_intercept_enabled(sc, vcpu), in svm_enable_intr_window_exiting()
994 svm_set_dirty(sc, vcpu, VMCB_CACHE_TPR); in svm_enable_intr_window_exiting()
995 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_VINTR); in svm_enable_intr_window_exiting()
999 svm_disable_intr_window_exiting(struct svm_softc *sc, int vcpu) in svm_disable_intr_window_exiting() argument
1003 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_disable_intr_window_exiting()
1006 KASSERT(!vintr_intercept_enabled(sc, vcpu), in svm_disable_intr_window_exiting()
1013 svm_set_dirty(sc, vcpu, VMCB_CACHE_TPR); in svm_disable_intr_window_exiting()
1014 svm_disable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_VINTR); in svm_disable_intr_window_exiting()
1023 svm_nmi_blocked(struct svm_softc *sc, int vcpu) in svm_nmi_blocked() argument
1025 return (svm_get_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in svm_nmi_blocked()
1030 svm_clear_nmi_blocking(struct svm_softc *sc, int vcpu) in svm_clear_nmi_blocking() argument
1034 KASSERT(svm_nmi_blocked(sc, vcpu), ("vNMI already unblocked")); in svm_clear_nmi_blocking()
1046 svm_disable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IRET); in svm_clear_nmi_blocking()
1052 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_clear_nmi_blocking()
1106 svm_inject_nmi(struct svm_softc *sc, int vcpu) in svm_inject_nmi() argument
1108 struct vmcb_ctrl *ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_inject_nmi()
1110 ASSERT(!svm_nmi_blocked(sc, vcpu)); in svm_inject_nmi()
1113 vm_nmi_clear(sc->vm, vcpu); in svm_inject_nmi()
1122 svm_enable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IRET); in svm_inject_nmi()
1126 svm_inject_irq(struct svm_softc *sc, int vcpu, int vector) in svm_inject_irq() argument
1128 struct vmcb_ctrl *ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_inject_irq()
1138 svm_write_efer(struct svm_softc *sc, int vcpu, uint64_t newval) in svm_write_efer() argument
1140 struct vmcb_state *state = svm_get_vmcb_state(sc, vcpu); in svm_write_efer()
1169 !vm_cpuid_capability(sc->vm, vcpu, VCC_NO_EXECUTE)) { in svm_write_efer()
1173 !vm_cpuid_capability(sc->vm, vcpu, VCC_FFXSR)) { in svm_write_efer()
1177 !vm_cpuid_capability(sc->vm, vcpu, VCC_TCE)) { in svm_write_efer()
1189 error = svm_setreg(sc, vcpu, VM_REG_GUEST_EFER, newval); in svm_write_efer()
1195 svm_handle_msr(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit, in svm_handle_msr() argument
1198 struct vmcb_state *state = svm_get_vmcb_state(svm_sc, vcpu); in svm_handle_msr()
1199 struct svm_regctx *ctx = svm_get_guest_regctx(svm_sc, vcpu); in svm_handle_msr()
1205 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_WRMSR, 1); in svm_handle_msr()
1209 struct vlapic *vlapic = vm_lapic(svm_sc->vm, vcpu); in svm_handle_msr()
1213 res = svm_write_efer(svm_sc, vcpu, val); in svm_handle_msr()
1215 res = svm_pmu_wrmsr(svm_sc, vcpu, ecx, val); in svm_handle_msr()
1217 res = svm_wrmsr(svm_sc, vcpu, ecx, val); in svm_handle_msr()
1220 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_RDMSR, 1); in svm_handle_msr()
1223 struct vlapic *vlapic = vm_lapic(svm_sc->vm, vcpu); in svm_handle_msr()
1227 res = svm_pmu_rdmsr(svm_sc, vcpu, ecx, &val); in svm_handle_msr()
1229 res = svm_rdmsr(svm_sc, vcpu, ecx, &val); in svm_handle_msr()
1242 vm_inject_gp(svm_sc->vm, vcpu); in svm_handle_msr()
1256 svm_handle_rdpmc(struct svm_softc *svm_sc, int vcpu) in svm_handle_rdpmc() argument
1258 struct vmcb_state *state = svm_get_vmcb_state(svm_sc, vcpu); in svm_handle_rdpmc()
1259 struct svm_regctx *ctx = svm_get_guest_regctx(svm_sc, vcpu); in svm_handle_rdpmc()
1263 if (svm_pmu_rdpmc(svm_sc, vcpu, ecx, &val)) { in svm_handle_rdpmc()
1267 vm_inject_gp(svm_sc->vm, vcpu); in svm_handle_rdpmc()
1298 svm_vmexit(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit) in svm_vmexit() argument
1307 ctx = svm_get_guest_regctx(svm_sc, vcpu); in svm_vmexit()
1308 vmcb = svm_get_vmcb(svm_sc, vcpu); in svm_vmexit()
1321 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_COUNT, 1); in svm_vmexit()
1340 svm_update_virqinfo(svm_sc, vcpu); in svm_vmexit()
1341 svm_save_exitintinfo(svm_sc, vcpu); in svm_vmexit()
1346 svm_handle_cr0_read(svm_sc, vcpu, in svm_vmexit()
1357 svm_inst_emul_other(svm_sc, vcpu, vmexit); in svm_vmexit()
1363 svm_handle_cr0_write(svm_sc, vcpu, in svm_vmexit()
1376 svm_inst_emul_other(svm_sc, vcpu, vmexit); in svm_vmexit()
1384 svm_clear_nmi_blocking(svm_sc, vcpu); in svm_vmexit()
1388 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_VINTR, 1); in svm_vmexit()
1389 svm_disable_intr_window_exiting(svm_sc, vcpu); in svm_vmexit()
1393 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_EXTINT, 1); in svm_vmexit()
1407 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_EXCEPTION, 1); in svm_vmexit()
1421 VERIFY0(svm_setreg(svm_sc, vcpu, VM_REG_GUEST_CR2, in svm_vmexit()
1459 VERIFY0(vm_inject_exception(svm_sc->vm, vcpu, idtvec, in svm_vmexit()
1466 handled = svm_handle_msr(svm_sc, vcpu, vmexit, info1 != 0); in svm_vmexit()
1469 svm_handle_rdpmc(svm_sc, vcpu); in svm_vmexit()
1473 handled = svm_handle_inout(svm_sc, vcpu, vmexit); in svm_vmexit()
1474 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_INOUT, 1); in svm_vmexit()
1477 (void) vm_suspend(svm_sc->vm, VM_SUSPEND_TRIPLEFAULT, vcpu); in svm_vmexit()
1482 vm_inject_ud(svm_sc->vm, vcpu); in svm_vmexit()
1492 vm_inject_ud(svm_sc->vm, vcpu); in svm_vmexit()
1502 vm_inject_ud(svm_sc->vm, vcpu); in svm_vmexit()
1506 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_CPUID, 1); in svm_vmexit()
1507 vcpu_emulate_cpuid(svm_sc->vm, vcpu, &state->rax, in svm_vmexit()
1512 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_HLT, 1); in svm_vmexit()
1518 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_PAUSE, 1); in svm_vmexit()
1524 } else if (vm_mem_allocated(svm_sc->vm, vcpu, info2)) { in svm_vmexit()
1528 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_NESTED_FAULT, 1); in svm_vmexit()
1530 svm_handle_mmio_emul(svm_sc, vcpu, vmexit, info2); in svm_vmexit()
1531 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_MMIO_EMUL, 1); in svm_vmexit()
1541 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_UNKNOWN, 1); in svm_vmexit()
1545 DTRACE_PROBE3(vmm__vexit, int, vcpu, uint64_t, vmexit->rip, uint32_t, in svm_vmexit()
1579 svm_inject_events(struct svm_softc *sc, int vcpu) in svm_inject_events() argument
1587 state = svm_get_vmcb_state(sc, vcpu); in svm_inject_events()
1588 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_inject_events()
1589 vcpustate = svm_get_vcpu(sc, vcpu); in svm_inject_events()
1614 if (vm_entry_intinfo(sc->vm, vcpu, &intinfo)) { in svm_inject_events()
1616 vmm_stat_incr(sc->vm, vcpu, VCPU_INTINFO_INJECTED, 1); in svm_inject_events()
1621 if (vm_nmi_pending(sc->vm, vcpu) && !svm_nmi_blocked(sc, vcpu)) { in svm_inject_events()
1628 svm_inject_nmi(sc, vcpu); in svm_inject_events()
1635 if (vm_extint_pending(sc->vm, vcpu)) { in svm_inject_events()
1655 svm_inject_irq(sc, vcpu, vector); in svm_inject_events()
1656 vm_extint_clear(sc->vm, vcpu); in svm_inject_events()
1671 svm_inject_vlapic(struct svm_softc *sc, int vcpu, struct vlapic *vlapic, in svm_inject_vlapic() argument
1679 state = svm_get_vmcb_state(sc, vcpu); in svm_inject_vlapic()
1680 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_inject_vlapic()
1695 svm_set_dirty(sc, vcpu, VMCB_CACHE_TPR); in svm_inject_vlapic()
1717 svm_inject_irq(sc, vcpu, vector); in svm_inject_vlapic()
1730 svm_inject_recheck(struct svm_softc *sc, int vcpu, in svm_inject_recheck() argument
1735 ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_inject_recheck()
1746 if (vm_nmi_pending(sc->vm, vcpu) && in svm_inject_recheck()
1747 !svm_nmi_blocked(sc, vcpu)) { in svm_inject_recheck()
1751 if (vm_extint_pending(sc->vm, vcpu)) { in svm_inject_recheck()
1769 svm_enable_intr_window_exiting(sc, vcpu); in svm_inject_recheck()
1891 svm_vmrun(void *arg, int vcpu, uint64_t rip) in svm_vmrun() argument
1908 vcpustate = svm_get_vcpu(svm_sc, vcpu); in svm_vmrun()
1909 state = svm_get_vmcb_state(svm_sc, vcpu); in svm_vmrun()
1910 vmexit = vm_exitinfo(vm, vcpu); in svm_vmrun()
1911 vlapic = vm_lapic(vm, vcpu); in svm_vmrun()
1912 vmc = vm_get_vmclient(vm, vcpu); in svm_vmrun()
1914 gctx = svm_get_guest_regctx(svm_sc, vcpu); in svm_vmrun()
1915 vmcb_pa = svm_sc->vcpu[vcpu].vmcb_pa; in svm_vmrun()
1926 svm_set_dirty(svm_sc, vcpu, 0xffffffff); in svm_vmrun()
1939 vmm_stat_incr(vm, vcpu, VCPU_MIGRATIONS, 1); in svm_vmrun()
1942 svm_apply_tsc_adjust(svm_sc, vcpu); in svm_vmrun()
1944 svm_msr_guest_enter(svm_sc, vcpu); in svm_vmrun()
1961 inject_state = svm_inject_events(svm_sc, vcpu); in svm_vmrun()
1974 inject_state = svm_inject_vlapic(svm_sc, vcpu, vlapic, in svm_vmrun()
1981 if (vcpu_entry_bailout_checks(vm, vcpu, state->rip)) { in svm_vmrun()
1986 if (vcpu_run_state_pending(vm, vcpu)) { in svm_vmrun()
1988 vm_exit_run_state(vm, vcpu, state->rip); in svm_vmrun()
1996 if (svm_inject_recheck(svm_sc, vcpu, inject_state)) { in svm_vmrun()
2016 check_asid(svm_sc, vcpu, curcpu, nptgen); in svm_vmrun()
2018 svm_pmu_enter(svm_sc, vcpu); in svm_vmrun()
2019 vcpu_ustate_change(vm, vcpu, VU_RUN); in svm_vmrun()
2021 svm_apply_dirty(svm_sc, vcpu); in svm_vmrun()
2034 vcpu_ustate_change(vm, vcpu, VU_EMU_KERN); in svm_vmrun()
2035 svm_pmu_exit(svm_sc, vcpu); in svm_vmrun()
2052 handled = svm_vmexit(svm_sc, vcpu, vmexit); in svm_vmrun()
2055 svm_msr_guest_exit(svm_sc, vcpu); in svm_vmrun()
2120 svm_getreg(void *arg, int vcpu, int ident, uint64_t *val) in svm_getreg() argument
2129 vmcb = svm_get_vmcb(sc, vcpu); in svm_getreg()
2131 regp = swctx_regptr(svm_get_guest_regctx(sc, vcpu), ident); in svm_getreg()
2143 svm_get_cr0(sc, vcpu, val); in svm_getreg()
2201 svm_setreg(void *arg, int vcpu, int ident, uint64_t val) in svm_setreg() argument
2211 vmcb = svm_get_vmcb(sc, vcpu); in svm_setreg()
2213 regp = swctx_regptr(svm_get_guest_regctx(sc, vcpu), ident); in svm_setreg()
2233 svm_set_cr0(sc, vcpu, val, false); in svm_setreg()
2282 svm_set_dirty(sc, vcpu, dirty); in svm_setreg()
2295 svm_setdesc(void *arg, int vcpu, int reg, const struct seg_desc *desc) in svm_setdesc() argument
2302 vmcb = svm_get_vmcb(sc, vcpu); in svm_setdesc()
2313 svm_set_dirty(sc, vcpu, VMCB_CACHE_SEG); in svm_setdesc()
2340 svm_set_dirty(sc, vcpu, VMCB_CACHE_DT); in svm_setdesc()
2356 svm_getdesc(void *arg, int vcpu, int reg, struct seg_desc *desc) in svm_getdesc() argument
2363 vmcb = svm_get_vmcb(sc, vcpu); in svm_getdesc()
2431 svm_get_msr(void *arg, int vcpu, uint32_t msr, uint64_t *valp) in svm_get_msr() argument
2434 struct vmcb *vmcb = svm_get_vmcb(sc, vcpu); in svm_get_msr()
2446 svm_set_msr(void *arg, int vcpu, uint32_t msr, uint64_t val) in svm_set_msr() argument
2449 struct vmcb *vmcb = svm_get_vmcb(sc, vcpu); in svm_set_msr()
2473 svm_set_dirty(sc, vcpu, dirty); in svm_set_msr()
2480 svm_setcap(void *arg, int vcpu, int type, int val) in svm_setcap() argument
2489 svm_set_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in svm_setcap()
2493 svm_set_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in svm_setcap()
2504 svm_getcap(void *arg, int vcpu, int type, int *retval) in svm_getcap() argument
2514 *retval = svm_get_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in svm_getcap()
2518 *retval = svm_get_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, in svm_getcap()
2553 svm_pause(void *arg, int vcpu) in svm_pause() argument
2556 struct vmcb_ctrl *ctrl = svm_get_vmcb_ctrl(sc, vcpu); in svm_pause()
2564 svm_stash_intinfo(sc, vcpu, intinfo); in svm_pause()
2574 svm_disable_intr_window_exiting(sc, vcpu); in svm_pause()
2575 svm_disable_intercept(sc, vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IRET); in svm_pause()
2579 svm_savectx(void *arg, int vcpu) in svm_savectx() argument
2586 if (sc->vcpu[vcpu].loaded) { in svm_savectx()
2587 svm_msr_guest_exit(sc, vcpu); in svm_savectx()
2592 svm_restorectx(void *arg, int vcpu) in svm_restorectx() argument
2596 if (sc->vcpu[vcpu].loaded) { in svm_restorectx()
2597 svm_msr_guest_enter(sc, vcpu); in svm_restorectx()