diff --git a/accel/mshv/mshv-all.c b/accel/mshv/mshv-all.c index 58af674bd9..58d8638c0c 100644 --- a/accel/mshv/mshv-all.c +++ b/accel/mshv/mshv-all.c @@ -714,11 +714,23 @@ static const TypeInfo mshv_accel_type = { .instance_size = sizeof(MshvState), }; +/* + * MSHV manages secondary processors in the hypervisor. SIPI for x86 and + * PSCI for Arm are handled internally. Halted vCPUs must still enter + * mshv_cpu_exec() so that MSHV_RUN_VP is called and the hypervisor will + * wake APs. + */ +static bool mshv_vcpu_thread_is_idle(CPUState *cpu) +{ + return false; +} + static void mshv_accel_ops_class_init(ObjectClass *oc, const void *data) { AccelOpsClass *ops = ACCEL_OPS_CLASS(oc); ops->create_vcpu_thread = mshv_start_vcpu_thread; + ops->cpu_thread_is_idle = mshv_vcpu_thread_is_idle; ops->synchronize_post_init = mshv_cpu_synchronize_post_init; ops->synchronize_post_reset = mshv_cpu_synchronize_post_reset; ops->synchronize_state = mshv_cpu_synchronize;