• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/amd64/vmm/amd/

Lines Matching defs:svm_sc

557 	struct svm_softc *svm_sc;
563 svm_sc = malloc(sizeof (*svm_sc), M_SVM, M_WAITOK | M_ZERO);
564 if (((uintptr_t)svm_sc & PAGE_MASK) != 0)
567 svm_sc->msr_bitmap = contigmalloc(SVM_MSR_BITMAP_SIZE, M_SVM,
569 if (svm_sc->msr_bitmap == NULL)
571 svm_sc->iopm_bitmap = contigmalloc(SVM_IO_BITMAP_SIZE, M_SVM,
573 if (svm_sc->iopm_bitmap == NULL)
576 svm_sc->vm = vm;
577 svm_sc->nptp = (vm_offset_t)vtophys(pmap->pm_pmltop);
582 memset(svm_sc->msr_bitmap, 0xFF, SVM_MSR_BITMAP_SIZE);
589 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_GSBASE);
590 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_FSBASE);
591 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_KGSBASE);
593 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_STAR);
594 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_LSTAR);
595 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_CSTAR);
596 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_SF_MASK);
597 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_SYSENTER_CS_MSR);
598 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_SYSENTER_ESP_MSR);
599 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_SYSENTER_EIP_MSR);
600 svm_msr_rw_ok(svm_sc->msr_bitmap, MSR_PAT);
602 svm_msr_rd_ok(svm_sc->msr_bitmap, MSR_TSC);
607 svm_msr_rd_ok(svm_sc->msr_bitmap, MSR_EFER);
610 memset(svm_sc->iopm_bitmap, 0xFF, SVM_IO_BITMAP_SIZE);
612 iopm_pa = vtophys(svm_sc->iopm_bitmap);
613 msrpm_pa = vtophys(svm_sc->msr_bitmap);
614 pml4_pa = svm_sc->nptp;
615 maxcpus = vm_get_maxcpus(svm_sc->vm);
617 vcpu = svm_get_vcpu(svm_sc, i);
621 vmcb_init(svm_sc, i, iopm_pa, msrpm_pa, pml4_pa);
622 svm_msr_guest_init(svm_sc, i);
624 return (svm_sc);
719 svm_inout_str_seginfo(struct svm_softc *svm_sc, int vcpu, int64_t info1,
732 error = svm_getdesc(svm_sc, vcpu, vis->seg_name, &vis->seg_desc);
773 svm_handle_io(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit)
782 state = svm_get_vmcb_state(svm_sc, vcpu);
783 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu);
784 regs = svm_get_guest_regctx(svm_sc, vcpu);
810 svm_paging_info(svm_get_vmcb(svm_sc, vcpu), &vis->paging);
816 svm_inout_str_seginfo(svm_sc, vcpu, info1,
989 svm_save_intinfo(struct svm_softc *svm_sc, int vcpu)
994 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu);
1005 VCPU_CTR2(svm_sc->vm, vcpu, "SVM:Pending INTINFO(0x%lx), vector=%d.\n",
1007 vmm_stat_incr(svm_sc->vm, vcpu, VCPU_EXITINTINFO, 1);
1008 vm_exit_intinfo(svm_sc->vm, vcpu, intinfo);
1323 svm_vmexit(struct svm_softc *svm_sc, int vcpu, struct vm_exit *vmexit)
1334 ctx = svm_get_guest_regctx(svm_sc, vcpu);
1335 vmcb = svm_get_vmcb(svm_sc, vcpu);
1348 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_COUNT, 1);
1367 svm_update_virqinfo(svm_sc, vcpu);
1368 svm_save_intinfo(svm_sc, vcpu);
1376 clear_nmi_blocking(svm_sc, vcpu);
1380 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_VINTR, 1);
1384 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_EXTINT, 1);
1391 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_EXCEPTION, 1);
1401 VCPU_CTR0(svm_sc->vm, vcpu, "Vectoring to MCE handler");
1405 error = svm_setreg(svm_sc, vcpu, VM_REG_GUEST_CR2,
1435 VCPU_CTR2(svm_sc->vm, vcpu, "Reset inst_length from %d "
1451 VCPU_CTR2(svm_sc->vm, vcpu, "Reflecting exception "
1453 error = vm_inject_exception(svm_sc->vm, vcpu, idtvec,
1467 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_WRMSR, 1);
1469 VCPU_CTR2(svm_sc->vm, vcpu, "wrmsr %#x val %#lx",
1471 if (emulate_wrmsr(svm_sc, vcpu, ecx, val, &retu)) {
1482 VCPU_CTR1(svm_sc->vm, vcpu, "rdmsr %#x", ecx);
1483 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_RDMSR, 1);
1484 if (emulate_rdmsr(svm_sc, vcpu, ecx, &retu)) {
1496 handled = svm_handle_io(svm_sc, vcpu, vmexit);
1497 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_INOUT, 1);
1500 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_CPUID, 1);
1501 handled = x86_emulate_cpuid(svm_sc->vm, vcpu, &state->rax,
1505 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_HLT, 1);
1511 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_PAUSE, 1);
1516 VCPU_CTR2(svm_sc->vm, vcpu, "nested page fault with "
1519 } else if (vm_mem_allocated(svm_sc->vm, vcpu, info2)) {
1523 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_NESTED_FAULT, 1);
1524 VCPU_CTR3(svm_sc->vm, vcpu, "nested page fault "
1529 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_INST_EMUL, 1);
1530 VCPU_CTR3(svm_sc->vm, vcpu, "inst_emul fault "
1552 vm_inject_ud(svm_sc->vm, vcpu);
1556 vmm_stat_incr(svm_sc->vm, vcpu, VMEXIT_UNKNOWN, 1);
1560 VCPU_CTR4(svm_sc->vm, vcpu, "%s %s vmexit at %#lx/%d",
1586 svm_inj_intinfo(struct svm_softc *svm_sc, int vcpu)
1590 if (!vm_entry_intinfo(svm_sc->vm, vcpu, &intinfo))
1596 svm_eventinject(svm_sc, vcpu, VMCB_EXITINTINFO_TYPE(intinfo),
1600 vmm_stat_incr(svm_sc->vm, vcpu, VCPU_INTINFO_INJECTED, 1);
1601 VCPU_CTR1(svm_sc->vm, vcpu, "Injected entry intinfo: %#lx", intinfo);
1992 struct svm_softc *svm_sc;
2003 svm_sc = arg;
2004 vm = svm_sc->vm;
2006 vcpustate = svm_get_vcpu(svm_sc, vcpu);
2007 state = svm_get_vmcb_state(svm_sc, vcpu);
2008 ctrl = svm_get_vmcb_ctrl(svm_sc, vcpu);
2012 gctx = svm_get_guest_regctx(svm_sc, vcpu);
2013 vmcb_pa = svm_sc->vcpu[vcpu].vmcb_pa;
2024 svm_set_dirty(svm_sc, vcpu, 0xffffffff);
2040 svm_msr_guest_enter(svm_sc, vcpu);
2095 svm_inj_interrupts(svm_sc, vcpu, vlapic);
2101 svm_pmap_activate(svm_sc, vcpu, pmap);
2132 handled = svm_vmexit(svm_sc, vcpu, vmexit);
2135 svm_msr_guest_exit(svm_sc, vcpu);
2199 struct svm_softc *svm_sc;
2202 svm_sc = arg;
2205 return (svm_get_intr_shadow(svm_sc, vcpu, val));
2208 if (vmcb_read(svm_sc, vcpu, ident, val) == 0) {
2212 reg = swctx_regptr(svm_get_guest_regctx(svm_sc, vcpu), ident);
2219 VCPU_CTR1(svm_sc->vm, vcpu, "svm_getreg: unknown register %#x", ident);
2226 struct svm_softc *svm_sc;
2229 svm_sc = arg;
2232 return (svm_modify_intr_shadow(svm_sc, vcpu, val));
2237 if (vmcb_write(svm_sc, vcpu, ident, val) == 0) {
2242 reg = swctx_regptr(svm_get_guest_regctx(svm_sc, vcpu), ident);
2260 VCPU_CTR1(svm_sc->vm, vcpu, "svm_setreg: unknown register %#x", ident);
2378 struct svm_softc *svm_sc;
2381 svm_sc = arg;
2383 vlapic->vm = svm_sc->vm;
2385 vlapic->apic_page = (struct LAPIC *)&svm_sc->apic_page[vcpuid];