summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McDonald <danmcd@joyent.com>2021-04-05 10:35:40 -0400
committerDan McDonald <danmcd@joyent.com>2021-04-05 10:35:40 -0400
commit226b670d97d873f898223fdf625d09554be198f8 (patch)
treead6ff64a43fcb576ddd249335da72164ce917bd2
parent6d7e602c65f3fdc0a30011e57aa7ff3de1edaafe (diff)
parent867228adfb0b4bbab1ff33e31ec607f5671c9047 (diff)
downloadillumos-joyent-226b670d97d873f898223fdf625d09554be198f8.tar.gz
[illumos-gate merge]
commit 867228adfb0b4bbab1ff33e31ec607f5671c9047 13645 bhyve queues wrong SIPI
-rw-r--r--usr/src/uts/i86pc/io/vmm/vmm.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/usr/src/uts/i86pc/io/vmm/vmm.c b/usr/src/uts/i86pc/io/vmm/vmm.c
index ad3a9f548f..dac488713a 100644
--- a/usr/src/uts/i86pc/io/vmm/vmm.c
+++ b/usr/src/uts/i86pc/io/vmm/vmm.c
@@ -39,7 +39,7 @@
*
* Copyright 2015 Pluribus Networks Inc.
* Copyright 2021 Joyent, Inc.
- * Copyright 2020 Oxide Computer Company
+ * Copyright 2021 Oxide Computer Company
*/
#include <sys/cdefs.h>
@@ -2933,7 +2933,15 @@ vm_inject_init(struct vm *vm, int vcpuid)
vcpu = &vm->vcpu[vcpuid];
vcpu_lock(vcpu);
vcpu->run_state |= VRS_PEND_INIT;
+ /*
+ * As part of queuing the INIT request, clear any pending SIPI. It
+ * would not otherwise survive across the reset of the vCPU when it
+ * undergoes the requested INIT. We would not want it to linger when it
+ * could be mistaken as a subsequent (after the INIT) SIPI request.
+ */
+ vcpu->run_state &= ~VRS_PEND_SIPI;
vcpu_notify_event_locked(vcpu, VCPU_NOTIFY_EXIT);
+
vcpu_unlock(vcpu);
return (0);
}