accel/tcg: Restrict cpu_handle_halt() to sysemu
Commit 372579427a5 ("tcg: enable thread-per-vCPU") added the following
comment describing EXCP_HALTED in qemu_tcg_cpu_thread_fn():
    case EXCP_HALTED:
         /* during start-up the vCPU is reset and the thread is
          * kicked several times. If we don't ensure we go back
          * to sleep in the halted state we won't cleanly
          * start-up when the vCPU is enabled.
          *
          * cpu->halted should ensure we sleep in wait_io_event
          */
         g_assert(cpu->halted);
         break;
qemu_wait_io_event() is sysemu-specific, so we can restrict the
cpu_handle_halt() call in cpu_exec() to system emulation.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20210912172731.789788-2-f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
			
			
This commit is contained in:
		
							parent
							
								
									8b1d5b3c35
								
							
						
					
					
						commit
						0596fa11f1
					
				| @ -588,8 +588,9 @@ static inline void tb_add_jump(TranslationBlock *tb, int n, | ||||
| 
 | ||||
| static inline bool cpu_handle_halt(CPUState *cpu) | ||||
| { | ||||
| #ifndef CONFIG_USER_ONLY | ||||
|     if (cpu->halted) { | ||||
| #if defined(TARGET_I386) && !defined(CONFIG_USER_ONLY) | ||||
| #if defined(TARGET_I386) | ||||
|         if (cpu->interrupt_request & CPU_INTERRUPT_POLL) { | ||||
|             X86CPU *x86_cpu = X86_CPU(cpu); | ||||
|             qemu_mutex_lock_iothread(); | ||||
| @ -597,13 +598,14 @@ static inline bool cpu_handle_halt(CPUState *cpu) | ||||
|             cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL); | ||||
|             qemu_mutex_unlock_iothread(); | ||||
|         } | ||||
| #endif | ||||
| #endif /* TARGET_I386 */ | ||||
|         if (!cpu_has_work(cpu)) { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         cpu->halted = 0; | ||||
|     } | ||||
| #endif /* !CONFIG_USER_ONLY */ | ||||
| 
 | ||||
|     return false; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Philippe Mathieu-Daudé
						Philippe Mathieu-Daudé