d665afae2a
A couple of fixes, including one which gives confidence we can submit to Factory finally. OBS-URL: https://build.opensuse.org/request/show/612290 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=410
48 lines
1.5 KiB
Diff
48 lines
1.5 KiB
Diff
From b75d0d531a92be9c7d4f8dbbb9ebf7d0cb6b4423 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>
|
|
Date: Wed, 25 Apr 2018 15:18:28 +0200
|
|
Subject: [PATCH] cpus: tcg: fix never exiting loop on unplug
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
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 <clg@kaod.org>
|
|
Message-Id: <20180425131828.15604-1-clg@kaod.org>
|
|
Cc: qemu-stable@nongnu.org
|
|
Fixes: 9b0605f9837b68fd56c7fc7c96a3a1a3b983687d
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
(cherry picked from commit 54961aac190df28d311802364d19e18d5cda8bab)
|
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
|
---
|
|
cpus.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/cpus.c b/cpus.c
|
|
index ef39603cf9..b13112b8e2 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();
|