-/* $OpenBSD: vm.c,v 1.75 2022/11/10 23:39:51 dv Exp $ */
+/* $OpenBSD: vm.c,v 1.76 2022/11/11 10:52:44 dv Exp $ */
/*
* Copyright (c) 2015 Mike Larkin <mlarkin@openbsd.org>
} else
vrp->vrp_irq = 0xFFFF;
+ /* Still more pending? */
+ if (i8259_is_pending()) {
+ /*
+ * XXX can probably avoid ioctls here by providing intr
+ * in vrp
+ */
+ if (vcpu_pic_intr(vrp->vrp_vm_id,
+ vrp->vrp_vcpu_id, 1)) {
+ fatal("can't set INTR");
+ }
+ } else {
+ if (vcpu_pic_intr(vrp->vrp_vm_id,
+ vrp->vrp_vcpu_id, 0)) {
+ fatal("can't clear INTR");
+ }
+ }
+
if (ioctl(env->vmd_fd, VMM_IOC_RUN, vrp) == -1) {
/* If run ioctl failed, exit */
ret = errno;