diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c --- a/usr.sbin/bhyve/bhyverun.c +++ b/usr.sbin/bhyve/bhyverun.c @@ -930,7 +930,7 @@ return (error); } -static vmexit_handler_t handler[VM_EXITCODE_MAX] = { +static const vmexit_handler_t handler[VM_EXITCODE_MAX] = { [VM_EXITCODE_INOUT] = vmexit_inout, [VM_EXITCODE_INOUT_STR] = vmexit_inout, [VM_EXITCODE_VMX] = vmexit_vmx, @@ -946,6 +946,8 @@ [VM_EXITCODE_DEBUG] = vmexit_debug, [VM_EXITCODE_BPT] = vmexit_breakpoint, [VM_EXITCODE_IPI] = vmexit_ipi, + [VM_EXITCODE_HLT] = vmexit_hlt, + [VM_EXITCODE_PAUSE] = vmexit_pause, }; static void @@ -1012,7 +1014,7 @@ } static void -fbsdrun_set_capabilities(struct vcpu *vcpu, bool bsp) +fbsdrun_set_capabilities(struct vcpu *vcpu) { int err, tmp; @@ -1023,8 +1025,6 @@ exit(4); } vm_set_capability(vcpu, VM_CAP_HALT_EXIT, 1); - if (bsp) - handler[VM_EXITCODE_HLT] = vmexit_hlt; } if (get_config_bool_default("x86.vmexit_on_pause", false)) { @@ -1038,8 +1038,6 @@ exit(4); } vm_set_capability(vcpu, VM_CAP_PAUSE_EXIT, 1); - if (bsp) - handler[VM_EXITCODE_PAUSE] = vmexit_pause; } if (get_config_bool_default("x86.x2apic", false)) @@ -1130,7 +1128,7 @@ int error; if (!bsp) { - fbsdrun_set_capabilities(vi->vcpu, false); + fbsdrun_set_capabilities(vi->vcpu); /* * Enable the 'unrestricted guest' mode for APs. @@ -1432,7 +1430,7 @@ exit(4); } - fbsdrun_set_capabilities(bsp, true); + fbsdrun_set_capabilities(bsp); /* Allocate per-VCPU resources. */ vcpu_info = calloc(guest_ncpus, sizeof(*vcpu_info));