From: Phil Dennis-Jordan Date: Wed, 5 Jun 2024 11:25:54 +0000 (+0200) Subject: i386/hvf: In kick_vcpu use hv_vcpu_interrupt to force exit X-Git-Tag: v9.1.0-rc0~78^2~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bf9bf2306cc8ea31b2b9bf28002aacb188ec2568;p=thirdparty%2Fqemu.git i386/hvf: In kick_vcpu use hv_vcpu_interrupt to force exit When interrupting a vCPU thread, this patch actually tells the hypervisor to stop running guest code on that vCPU. Calling hv_vcpu_interrupt actually forces a vCPU exit, analogously to hv_vcpus_exit on aarch64. Alternatively, if the vCPU thread is not running the VM, it will immediately cause an exit when it attempts to do so. Previously, hvf_kick_vcpu_thread relied upon hv_vcpu_run returning very frequently, including many spurious exits, which made it less of a problem that nothing was actively done to stop the vCPU thread running guest code. The newer, more efficient hv_vcpu_run_until exits much more rarely, so a true "kick" is needed before switching to that. Signed-off-by: Phil Dennis-Jordan Message-ID: <20240605112556.43193-6-phil@philjordan.eu> Signed-off-by: Paolo Bonzini --- diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index 268c5734d5c..106ac5cbf62 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -215,6 +215,7 @@ static inline bool apic_bus_freq_is_known(CPUX86State *env) void hvf_kick_vcpu_thread(CPUState *cpu) { cpus_kick_thread(cpu); + hv_vcpu_interrupt(&cpu->accel->fd, 1); } int hvf_arch_init(void)