Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/vmm_dev.c
Show First 20 Lines • Show All 435 Lines • ▼ Show 20 Lines | case VM_GET_HPET_CAPABILITIES: | ||||
error = vhpet_getcap((struct vm_hpet_cap *)data); | error = vhpet_getcap((struct vm_hpet_cap *)data); | ||||
break; | break; | ||||
case VM_GLA2GPA: { | case VM_GLA2GPA: { | ||||
CTASSERT(PROT_READ == VM_PROT_READ); | CTASSERT(PROT_READ == VM_PROT_READ); | ||||
CTASSERT(PROT_WRITE == VM_PROT_WRITE); | CTASSERT(PROT_WRITE == VM_PROT_WRITE); | ||||
CTASSERT(PROT_EXEC == VM_PROT_EXECUTE); | CTASSERT(PROT_EXEC == VM_PROT_EXECUTE); | ||||
gg = (struct vm_gla2gpa *)data; | gg = (struct vm_gla2gpa *)data; | ||||
error = vm_gla2gpa(sc->vm, gg->vcpuid, &gg->paging, gg->gla, | error = vm_gla2gpa(sc->vm, gg->vcpuid, &gg->paging, gg->gla, | ||||
gg->prot, &gg->gpa); | gg->prot, &gg->gpa, &gg->fault); | ||||
KASSERT(error == 0 || error == 1 || error == -1, | KASSERT(error == 0 || error == EFAULT, | ||||
("%s: vm_gla2gpa unknown error %d", __func__, error)); | ("%s: vm_gla2gpa unknown error %d", __func__, error)); | ||||
if (error >= 0) { | |||||
/* | |||||
* error = 0: the translation was successful | |||||
* error = 1: a fault was injected into the guest | |||||
*/ | |||||
gg->fault = error; | |||||
error = 0; | |||||
} else { | |||||
error = EFAULT; | |||||
} | |||||
break; | break; | ||||
} | } | ||||
case VM_ACTIVATE_CPU: | case VM_ACTIVATE_CPU: | ||||
vac = (struct vm_activate_cpu *)data; | vac = (struct vm_activate_cpu *)data; | ||||
error = vm_activate_cpu(sc->vm, vac->vcpuid); | error = vm_activate_cpu(sc->vm, vac->vcpuid); | ||||
break; | break; | ||||
case VM_GET_CPUS: | case VM_GET_CPUS: | ||||
error = 0; | error = 0; | ||||
▲ Show 20 Lines • Show All 235 Lines • Show Last 20 Lines |