|
|
3e5111 |
From 6d2400987412f61857070407a43dc88705cf34f6 Mon Sep 17 00:00:00 2001
|
|
|
3e5111 |
Message-Id: <6d2400987412f61857070407a43dc88705cf34f6@dist-git>
|
|
|
3e5111 |
From: Jiri Denemark <jdenemar@redhat.com>
|
|
|
3e5111 |
Date: Wed, 21 Jun 2017 15:31:38 +0200
|
|
|
3e5111 |
Subject: [PATCH] qemu: Do not skip virCPUUpdateLive if priv->origCPU is set
|
|
|
3e5111 |
|
|
|
3e5111 |
Even though we got both the original CPU (used for starting a domain)
|
|
|
3e5111 |
and the updated version (the CPU really provided by QEMU) during
|
|
|
3e5111 |
incoming migration, restore, or snapshot revert, we still need to update
|
|
|
3e5111 |
the CPU according to the data we got from the freshly started QEMU.
|
|
|
3e5111 |
Otherwise we don't know whether the CPU we got from QEMU matches the one
|
|
|
3e5111 |
before migration. We just need to keep the original CPU in
|
|
|
3e5111 |
priv->origCPU.
|
|
|
3e5111 |
|
|
|
3e5111 |
Messed up by me in v3.4.0-58-g8e34f4781.
|
|
|
3e5111 |
|
|
|
3e5111 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
3e5111 |
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
|
|
|
3e5111 |
(cherry picked from commit eabb0002ca0bba3c5a94d16fb385783de7b144a5)
|
|
|
3e5111 |
|
|
|
3e5111 |
https://bugzilla.redhat.com/show_bug.cgi?id=1441662
|
|
|
3e5111 |
|
|
|
3e5111 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
3e5111 |
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
|
|
|
3e5111 |
---
|
|
|
3e5111 |
src/qemu/qemu_process.c | 12 ++++--------
|
|
|
3e5111 |
1 file changed, 4 insertions(+), 8 deletions(-)
|
|
|
3e5111 |
|
|
|
3e5111 |
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
|
|
3e5111 |
index a7abfc720e..4d7c8d8e40 100644
|
|
|
3e5111 |
--- a/src/qemu/qemu_process.c
|
|
|
3e5111 |
+++ b/src/qemu/qemu_process.c
|
|
|
3e5111 |
@@ -3946,20 +3946,16 @@ qemuProcessUpdateLiveGuestCPU(virQEMUDriverPtr driver,
|
|
|
3e5111 |
if (qemuProcessVerifyCPUFeatures(def, cpu) < 0)
|
|
|
3e5111 |
goto cleanup;
|
|
|
3e5111 |
|
|
|
3e5111 |
- /* Don't update the CPU if we already did so when starting a domain
|
|
|
3e5111 |
- * during migration, restore or snapshot revert. */
|
|
|
3e5111 |
- if (priv->origCPU) {
|
|
|
3e5111 |
- ret = 0;
|
|
|
3e5111 |
- goto cleanup;
|
|
|
3e5111 |
- }
|
|
|
3e5111 |
-
|
|
|
3e5111 |
if (!(orig = virCPUDefCopy(def->cpu)))
|
|
|
3e5111 |
goto cleanup;
|
|
|
3e5111 |
|
|
|
3e5111 |
if ((rc = virCPUUpdateLive(def->os.arch, def->cpu, cpu, disabled)) < 0) {
|
|
|
3e5111 |
goto cleanup;
|
|
|
3e5111 |
} else if (rc == 0) {
|
|
|
3e5111 |
- if (!virCPUDefIsEqual(def->cpu, orig, false))
|
|
|
3e5111 |
+ /* Store the original CPU in priv if QEMU changed it and we didn't
|
|
|
3e5111 |
+ * get the original CPU via migration, restore, or snapshot revert.
|
|
|
3e5111 |
+ */
|
|
|
3e5111 |
+ if (!priv->origCPU && !virCPUDefIsEqual(def->cpu, orig, false))
|
|
|
3e5111 |
VIR_STEAL_PTR(priv->origCPU, orig);
|
|
|
3e5111 |
|
|
|
3e5111 |
def->cpu->check = VIR_CPU_CHECK_FULL;
|
|
|
3e5111 |
--
|
|
|
3e5111 |
2.13.1
|
|
|
3e5111 |
|