On Thu, Nov 26, 2020 at 10:50:15PM +0100, Alexander Graf wrote: > When kicking another vCPU, we get an OS function that explicitly does that > for us > on Apple Silicon. That works better than the current signaling logic, let's > make > use of it there. > > Signed-off-by: Alexander Graf <ag...@csgraf.de> > --- > accel/hvf/hvf-cpus.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/accel/hvf/hvf-cpus.c b/accel/hvf/hvf-cpus.c > index b9f674478d..74a272d2e8 100644 > --- a/accel/hvf/hvf-cpus.c > +++ b/accel/hvf/hvf-cpus.c > @@ -418,8 +418,20 @@ static void hvf_start_vcpu_thread(CPUState *cpu) > cpu, QEMU_THREAD_JOINABLE); > } > > +#ifdef __aarch64__ > +static void hvf_kick_vcpu_thread(CPUState *cpu) > +{ > + if (!qemu_cpu_is_self(cpu)) { > + hv_vcpus_exit(&cpu->hvf_fd, 1); > + } > +} > +#endif > + > static const CpusAccel hvf_cpus = { > .create_vcpu_thread = hvf_start_vcpu_thread, > +#ifdef __aarch64__ > + .kick_vcpu_thread = hvf_kick_vcpu_thread, > +#endif
Interesting. We have considered the possibility of adding arch-specific TYPE_ACCEL subclasses when discussing Claudio's, series. Here we have another arch-specific hack that could be avoided if we had a TYPE_ARM_HVF_ACCEL QOM class. > > .synchronize_post_reset = hvf_cpu_synchronize_post_reset, > .synchronize_post_init = hvf_cpu_synchronize_post_init, > -- > 2.24.3 (Apple Git-128) > -- Eduardo