On 10/08/2015 17:27, fred.kon...@greensocs.com wrote:
> +    while (!cpu->exit_request) {
>          qemu_clock_enable(QEMU_CLOCK_VIRTUAL,
>                            (cpu->singlestep_enabled & SSTEP_NOTIMER) == 0);
>  
> @@ -1507,7 +1480,7 @@ static void tcg_exec_all(void)
>          }
>      }
>  
> -    first_cpu->exit_request = 0;
> +    cpu->exit_request = 0;

One issue here is that when tcg_cpu_exec returns EXCP_HALTED, the
function keeps looping.  There is no need to set cpu->exit_request in
that case, since in fact there is no request pending, so the while loop
probably should be an "if".

Also, cpu->interrupt_request is not protected by any mutex, so
everything apart from the non-zero test must take the iothread mutex.

Paolo

Reply via email to