On 8/8/25 20:59, Paolo Bonzini wrote:
User-mode emulation correctly uses cpu_exit() whenever it needs to go
all the way out of the cpu exec loop.  It never uses qemu_cpu_kick();
therefore, there is no need for tcg_kick_vcpu_thread() to set
cpu->exit_request again.

Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
---
  accel/tcg/cpu-exec.c | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index 1a973596d87..b9da2e3770e 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -750,6 +750,7 @@ static inline bool cpu_handle_exception(CPUState *cpu, int 
*ret)
void tcg_kick_vcpu_thread(CPUState *cpu)
  {
+#ifdef CONFIG_SYSTEM
      /*
       * Ensure cpu_exec will see the reason why the exit request was set.
       * FIXME: this is not always needed.  Other accelerators instead
@@ -757,6 +758,7 @@ void tcg_kick_vcpu_thread(CPUState *cpu)
       * CPU thread; see kvm_arch_pre_run() for example.
       */
      qatomic_store_release(&cpu->exit_request, 1);
+#endif
/* Ensure cpu_exec will see the exit request after TCG has exited. */
      qatomic_store_release(&cpu->neg.icount_decr.u16.high, -1);

What about cpu_handle_interrupt()?

Reply via email to