diff options
author | Dan McDonald <danmcd@joyent.com> | 2021-04-05 10:35:40 -0400 |
---|---|---|
committer | Dan McDonald <danmcd@joyent.com> | 2021-04-05 10:35:40 -0400 |
commit | 226b670d97d873f898223fdf625d09554be198f8 (patch) | |
tree | ad6ff64a43fcb576ddd249335da72164ce917bd2 | |
parent | 6d7e602c65f3fdc0a30011e57aa7ff3de1edaafe (diff) | |
parent | 867228adfb0b4bbab1ff33e31ec607f5671c9047 (diff) | |
download | illumos-joyent-226b670d97d873f898223fdf625d09554be198f8.tar.gz |
[illumos-gate merge]
commit 867228adfb0b4bbab1ff33e31ec607f5671c9047
13645 bhyve queues wrong SIPI
-rw-r--r-- | usr/src/uts/i86pc/io/vmm/vmm.c | 10 |
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); } |