Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/vmm_dev.c
Show First 20 Lines • Show All 375 Lines • ▼ Show 20 Lines | vmmdev_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag, | ||||
struct vm_suspend *vmsuspend; | struct vm_suspend *vmsuspend; | ||||
struct vm_gla2gpa *gg; | struct vm_gla2gpa *gg; | ||||
struct vm_activate_cpu *vac; | struct vm_activate_cpu *vac; | ||||
struct vm_cpuset *vm_cpuset; | struct vm_cpuset *vm_cpuset; | ||||
struct vm_intinfo *vmii; | struct vm_intinfo *vmii; | ||||
struct vm_rtc_time *rtctime; | struct vm_rtc_time *rtctime; | ||||
struct vm_rtc_data *rtcdata; | struct vm_rtc_data *rtcdata; | ||||
struct vm_memmap *mm; | struct vm_memmap *mm; | ||||
struct vm_munmap *mu; | |||||
struct vm_cpu_topology *topology; | struct vm_cpu_topology *topology; | ||||
struct vm_readwrite_kernemu_device *kernemu; | struct vm_readwrite_kernemu_device *kernemu; | ||||
uint64_t *regvals; | uint64_t *regvals; | ||||
int *regnums; | int *regnums; | ||||
#ifdef BHYVE_SNAPSHOT | #ifdef BHYVE_SNAPSHOT | ||||
struct vm_snapshot_meta *snapshot_meta; | struct vm_snapshot_meta *snapshot_meta; | ||||
#endif | #endif | ||||
Show All 38 Lines | case VM_RESTART_INSTRUCTION: | ||||
vcpu = *(int *)data; | vcpu = *(int *)data; | ||||
error = vcpu_lock_one(sc, vcpu); | error = vcpu_lock_one(sc, vcpu); | ||||
if (error) | if (error) | ||||
goto done; | goto done; | ||||
state_changed = 1; | state_changed = 1; | ||||
break; | break; | ||||
case VM_MAP_PPTDEV_MMIO: | case VM_MAP_PPTDEV_MMIO: | ||||
case VM_UNMAP_PPTDEV_MMIO: | |||||
case VM_BIND_PPTDEV: | case VM_BIND_PPTDEV: | ||||
case VM_UNBIND_PPTDEV: | case VM_UNBIND_PPTDEV: | ||||
#ifdef COMPAT_FREEBSD12 | #ifdef COMPAT_FREEBSD12 | ||||
case VM_ALLOC_MEMSEG_FBSD12: | case VM_ALLOC_MEMSEG_FBSD12: | ||||
#endif | #endif | ||||
case VM_ALLOC_MEMSEG: | case VM_ALLOC_MEMSEG: | ||||
case VM_MMAP_MEMSEG: | case VM_MMAP_MEMSEG: | ||||
case VM_MUNMAP_MEMSEG: | |||||
case VM_REINIT: | case VM_REINIT: | ||||
/* | /* | ||||
* ioctls that operate on the entire virtual machine must | * ioctls that operate on the entire virtual machine must | ||||
* prevent all vcpus from running. | * prevent all vcpus from running. | ||||
*/ | */ | ||||
error = vcpu_lock_all(sc); | error = vcpu_lock_all(sc); | ||||
if (error) | if (error) | ||||
goto done; | goto done; | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | error = ppt_disable_msix(sc->vm, pptdev->bus, pptdev->slot, | ||||
pptdev->func); | pptdev->func); | ||||
break; | break; | ||||
case VM_MAP_PPTDEV_MMIO: | case VM_MAP_PPTDEV_MMIO: | ||||
pptmmio = (struct vm_pptdev_mmio *)data; | pptmmio = (struct vm_pptdev_mmio *)data; | ||||
error = ppt_map_mmio(sc->vm, pptmmio->bus, pptmmio->slot, | error = ppt_map_mmio(sc->vm, pptmmio->bus, pptmmio->slot, | ||||
pptmmio->func, pptmmio->gpa, pptmmio->len, | pptmmio->func, pptmmio->gpa, pptmmio->len, | ||||
pptmmio->hpa); | pptmmio->hpa); | ||||
break; | break; | ||||
case VM_UNMAP_PPTDEV_MMIO: | |||||
pptmmio = (struct vm_pptdev_mmio *)data; | |||||
error = ppt_unmap_mmio(sc->vm, pptmmio->bus, pptmmio->slot, | |||||
pptmmio->func, pptmmio->gpa, pptmmio->len); | |||||
break; | |||||
case VM_BIND_PPTDEV: | case VM_BIND_PPTDEV: | ||||
pptdev = (struct vm_pptdev *)data; | pptdev = (struct vm_pptdev *)data; | ||||
error = vm_assign_pptdev(sc->vm, pptdev->bus, pptdev->slot, | error = vm_assign_pptdev(sc->vm, pptdev->bus, pptdev->slot, | ||||
pptdev->func); | pptdev->func); | ||||
break; | break; | ||||
case VM_UNBIND_PPTDEV: | case VM_UNBIND_PPTDEV: | ||||
pptdev = (struct vm_pptdev *)data; | pptdev = (struct vm_pptdev *)data; | ||||
error = vm_unassign_pptdev(sc->vm, pptdev->bus, pptdev->slot, | error = vm_unassign_pptdev(sc->vm, pptdev->bus, pptdev->slot, | ||||
▲ Show 20 Lines • Show All 101 Lines • ▼ Show 20 Lines | case VM_MMAP_GETNEXT: | ||||
mm = (struct vm_memmap *)data; | mm = (struct vm_memmap *)data; | ||||
error = vm_mmap_getnext(sc->vm, &mm->gpa, &mm->segid, | error = vm_mmap_getnext(sc->vm, &mm->gpa, &mm->segid, | ||||
&mm->segoff, &mm->len, &mm->prot, &mm->flags); | &mm->segoff, &mm->len, &mm->prot, &mm->flags); | ||||
break; | break; | ||||
case VM_MMAP_MEMSEG: | case VM_MMAP_MEMSEG: | ||||
mm = (struct vm_memmap *)data; | mm = (struct vm_memmap *)data; | ||||
error = vm_mmap_memseg(sc->vm, mm->gpa, mm->segid, mm->segoff, | error = vm_mmap_memseg(sc->vm, mm->gpa, mm->segid, mm->segoff, | ||||
mm->len, mm->prot, mm->flags); | mm->len, mm->prot, mm->flags); | ||||
break; | |||||
case VM_MUNMAP_MEMSEG: | |||||
mu = (struct vm_munmap *)data; | |||||
error = vm_munmap_memseg(sc->vm, mu->gpa, mu->len); | |||||
break; | break; | ||||
#ifdef COMPAT_FREEBSD12 | #ifdef COMPAT_FREEBSD12 | ||||
case VM_ALLOC_MEMSEG_FBSD12: | case VM_ALLOC_MEMSEG_FBSD12: | ||||
error = alloc_memseg(sc, (struct vm_memseg *)data, | error = alloc_memseg(sc, (struct vm_memseg *)data, | ||||
sizeof(((struct vm_memseg_fbsd12 *)0)->name)); | sizeof(((struct vm_memseg_fbsd12 *)0)->name)); | ||||
break; | break; | ||||
#endif | #endif | ||||
case VM_ALLOC_MEMSEG: | case VM_ALLOC_MEMSEG: | ||||
▲ Show 20 Lines • Show All 591 Lines • Show Last 20 Lines |