> From: Claudio Fontana <cfont...@suse.de> > > register a "CpusAccel" interface for HAX as well. >
> diff --git a/softmmu/cpus.c b/softmmu/cpus.c > index 9fa73735a2..900fff827a 100644 > --- a/softmmu/cpus.c > +++ b/softmmu/cpus.c > @@ -416,35 +403,6 @@ void qemu_wait_io_event(CPUState *cpu) > qemu_wait_io_event_common(cpu); > } > > -static void *qemu_hax_cpu_thread_fn(void *arg) > -{ > - CPUState *cpu = arg; > - int r; > - > - rcu_register_thread(); > - qemu_mutex_lock_iothread(); > - qemu_thread_get_self(cpu->thread); > - > - cpu->thread_id = qemu_get_thread_id(); > - current_cpu = cpu; Hi Claudio, is there a reason why you removed current_cpu = cpu; from hax_cpu_thread_fn() when you moved that function to target/i386/hax-cpus.c? This change broke HAX on Windows. Adding back that line makes it work again. The simplest reproducer is: $ ./qemu-system-x86_64.exe -machine pc,accel=hax -smp 2 -display gtk HAX is working and emulator runs in fast virt mode. Then the QEMU window opens and shows 'Guest has not initialized the display (yet).' forever. A look at the Windows Task Manager suggests one thread is busy looping. With best regards, Volker > - hax_init_vcpu(cpu); > - cpu_thread_signal_created(cpu); > - qemu_guest_random_seed_thread_part2(cpu->random_seed); > - > - do { > - if (cpu_can_run(cpu)) { > - r = hax_smp_cpu_exec(cpu); > - if (r == EXCP_DEBUG) { > - cpu_handle_guest_debug(cpu); > - } > - } > - > - qemu_wait_io_event(cpu); > - } while (!cpu->unplug || cpu_can_run(cpu)); > - rcu_unregister_thread(); > - return NULL; > -} > - > /* The HVF-specific vCPU thread function. This one should only run when the > host > * CPU supports the VMX "unrestricted guest" feature. */ > static void *qemu_hvf_cpu_thread_fn(void *arg) >