[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