This is done by all other accelerators, but was missing for Hypervisor.framework.
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- target/arm/hvf/hvf.c | 4 ++++ target/i386/hvf/hvf.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index b77db99079e..478bc75fee6 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1927,6 +1927,10 @@ int hvf_vcpu_exec(CPUState *cpu) flush_cpu_state(cpu); bql_unlock(); + /* Corresponding store-release is in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { + hv_vcpus_exit(&cpu->accel->fd, 1); + } r = hv_vcpu_run(cpu->accel->fd); bql_lock(); switch (r) { diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index 8445cadecec..b7c4b849cdf 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -749,6 +749,10 @@ int hvf_vcpu_exec(CPUState *cpu) return EXCP_HLT; } + /* Corresponding store-release is in cpu_exit. */ + if (qatomic_load_acquire(&cpu->exit_request)) { + hv_vcpu_interrupt(&cpu->accel->fd, 1); + } hv_return_t r = hv_vcpu_run_until(cpu->accel->fd, HV_DEADLINE_FOREVER); assert_hvf_ok(r); -- 2.50.1