summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c b/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
index 8185ca8ea5..2e92ff1624 100644
--- a/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
+++ b/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
@@ -969,10 +969,30 @@ vmmdev_do_ioctl(vmm_softc_t *sc, int cmd, intptr_t arg, int md,
case VM_ACTIVATE_CPU:
error = vm_activate_cpu(sc->vmm_vm, vcpu);
break;
+
case VM_SUSPEND_CPU:
+ if (ddi_copyin(datap, &vcpu, sizeof (vcpu), md)) {
+ error = EFAULT;
+ break;
+ }
+ if (vcpu < -1 || vcpu >= VM_MAXCPU) {
+ error = EINVAL;
+ break;
+ }
+
error = vm_suspend_cpu(sc->vmm_vm, vcpu);
break;
+
case VM_RESUME_CPU:
+ if (ddi_copyin(datap, &vcpu, sizeof (vcpu), md)) {
+ error = EFAULT;
+ break;
+ }
+ if (vcpu < -1 || vcpu >= VM_MAXCPU) {
+ error = EINVAL;
+ break;
+ }
+
error = vm_resume_cpu(sc->vmm_vm, vcpu);
break;