qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] icount: fix deadlock when all cpus are sleeping


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] icount: fix deadlock when all cpus are sleeping
Date: Mon, 22 Oct 2018 12:40:29 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0

On 21/10/2018 16:21, Clement Deschamps wrote:
> When all cpus are sleeping (e.g in WFI), to avoid a deadlock
> in the main_loop, wake it up in order to start the warp timer.
> 
> Signed-off-by: Clement Deschamps <address@hidden>
> ---
>  cpus.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/cpus.c b/cpus.c
> index bb2a511483..798d43623a 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -1554,6 +1554,14 @@ static void *qemu_tcg_rr_cpu_thread_fn(void *arg)
>              atomic_mb_set(&cpu->exit_request, 0);
>          }
>  
> +        if (use_icount && all_cpu_threads_idle()) {
> +            /*
> +             * When all cpus are sleeping (e.g in WFI), to avoid a deadlock
> +             * in the main_loop, wake it up in order to start the warp timer.
> +             */
> +            qemu_notify_event();
> +        }
> +
>          qemu_tcg_rr_wait_io_event(cpu ? cpu : first_cpu);
>          deal_with_unplugged_cpus();
>      }
> 

Queued, thanks.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]