[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] cpus: tcg: fix never exiting loop on unplug
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH] cpus: tcg: fix never exiting loop on unplug |
Date: |
Wed, 25 Apr 2018 15:30:39 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 25/04/2018 15:18, Cédric Le Goater wrote:
> Commit 9b0605f9837b ("cpus: tcg: unregister thread with RCU, fix
> exiting of loop on unplug") changed the exit condition of the loop in
> the vCPU thread function but forgot to remove the beginning 'while (1)'
> statement. The resulting code :
>
> while (1) {
> ...
> } while (!cpu->unplug || cpu_can_run(cpu));
>
> is a sequence of two distinct two while() loops, the first not exiting
> in case of an unplug event.
>
> Remove the first while (1) to fix CPU unplug.
>
> Signed-off-by: Cédric Le Goater <address@hidden>
> ---
> cpus.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/cpus.c b/cpus.c
> index 38eba8bff334..e1d94038fd0d 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -1648,7 +1648,7 @@ static void *qemu_tcg_cpu_thread_fn(void *arg)
> /* process any pending work */
> cpu->exit_request = 1;
>
> - while (1) {
> + do {
> if (cpu_can_run(cpu)) {
> int r;
> qemu_mutex_unlock_iothread();
>
Cc: address@hidden
Queued, thanks.
Paolo