Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/intel/vmx.c
Show First 20 Lines • Show All 997 Lines • ▼ Show 20 Lines | vmx_vminit(struct vm *vm, pmap_t pmap) | ||||
if (virtual_interrupt_delivery) { | if (virtual_interrupt_delivery) { | ||||
error = vm_map_mmio(vm, DEFAULT_APIC_BASE, PAGE_SIZE, | error = vm_map_mmio(vm, DEFAULT_APIC_BASE, PAGE_SIZE, | ||||
APIC_ACCESS_ADDRESS); | APIC_ACCESS_ADDRESS); | ||||
/* XXX this should really return an error to the caller */ | /* XXX this should really return an error to the caller */ | ||||
KASSERT(error == 0, ("vm_map_mmio(apicbase) error %d", error)); | KASSERT(error == 0, ("vm_map_mmio(apicbase) error %d", error)); | ||||
} | } | ||||
for (i = 0; i < VM_MAXCPU; i++) { | for (i = 0; i < vm_get_maxcpus(vm); i++) { | ||||
vmcs = &vmx->vmcs[i]; | vmcs = &vmx->vmcs[i]; | ||||
vmcs->identifier = vmx_revision(); | vmcs->identifier = vmx_revision(); | ||||
error = vmclear(vmcs); | error = vmclear(vmcs); | ||||
if (error != 0) { | if (error != 0) { | ||||
panic("vmx_vminit: vmclear error %d on vcpu %d\n", | panic("vmx_vminit: vmclear error %d on vcpu %d\n", | ||||
error, i); | error, i); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,985 Lines • ▼ Show 20 Lines | |||||
vmx_vmcleanup(void *arg) | vmx_vmcleanup(void *arg) | ||||
{ | { | ||||
int i; | int i; | ||||
struct vmx *vmx = arg; | struct vmx *vmx = arg; | ||||
if (apic_access_virtualization(vmx, 0)) | if (apic_access_virtualization(vmx, 0)) | ||||
vm_unmap_mmio(vmx->vm, DEFAULT_APIC_BASE, PAGE_SIZE); | vm_unmap_mmio(vmx->vm, DEFAULT_APIC_BASE, PAGE_SIZE); | ||||
for (i = 0; i < VM_MAXCPU; i++) | for (i = 0; i < vm_get_maxcpus(vmx->vm); i++) | ||||
vpid_free(vmx->state[i].vpid); | vpid_free(vmx->state[i].vpid); | ||||
free(vmx, M_VMX); | free(vmx, M_VMX); | ||||
return; | return; | ||||
} | } | ||||
static register_t * | static register_t * | ||||
▲ Show 20 Lines • Show All 738 Lines • Show Last 20 Lines |