78 lines
2.8 KiB
Diff
78 lines
2.8 KiB
Diff
|
From 909564c3652d6f6fb5b68ebc5830c6cb524ac713 Mon Sep 17 00:00:00 2001
|
||
|
From: Jiri Denemark <jdenemar@redhat.com>
|
||
|
Date: Mon, 11 Mar 2024 15:34:37 +0100
|
||
|
Subject: [PATCH] qemu: domain: Check arch in qemuDomainMakeCPUMigratable
|
||
|
|
||
|
The content is arch specific and checking for Icelake-Server CPU model
|
||
|
on non-x86 architectures does not make sense.
|
||
|
|
||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||
|
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
|
||
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
||
|
---
|
||
|
src/qemu/qemu_domain.c | 14 ++++++++++----
|
||
|
src/qemu/qemu_domain.h | 3 ++-
|
||
|
src/qemu/qemu_migration_cookie.c | 2 +-
|
||
|
3 files changed, 13 insertions(+), 6 deletions(-)
|
||
|
|
||
|
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
||
|
index 8c85446c3de..31a6509166d 100644
|
||
|
--- a/src/qemu/qemu_domain.c
|
||
|
+++ b/src/qemu/qemu_domain.c
|
||
|
@@ -6588,10 +6588,15 @@ qemuDomainDefCopy(virQEMUDriver *driver,
|
||
|
|
||
|
|
||
|
int
|
||
|
-qemuDomainMakeCPUMigratable(virCPUDef *cpu)
|
||
|
+qemuDomainMakeCPUMigratable(virArch arch,
|
||
|
+ virCPUDef *cpu)
|
||
|
{
|
||
|
- if (cpu->mode == VIR_CPU_MODE_CUSTOM &&
|
||
|
- STREQ_NULLABLE(cpu->model, "Icelake-Server")) {
|
||
|
+ if (cpu->mode != VIR_CPU_MODE_CUSTOM ||
|
||
|
+ !cpu->model ||
|
||
|
+ !ARCH_IS_X86(arch))
|
||
|
+ return 0;
|
||
|
+
|
||
|
+ if (STREQ(cpu->model, "Icelake-Server")) {
|
||
|
/* Originally Icelake-Server CPU model contained pconfig CPU feature.
|
||
|
* It was never actually enabled and thus it was removed. To enable
|
||
|
* migration to QEMU 3.1.0 (with both new and old libvirt), we
|
||
|
@@ -6781,7 +6786,8 @@ qemuDomainDefFormatBufInternal(virQEMUDriver *driver,
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
- if (def->cpu && qemuDomainMakeCPUMigratable(def->cpu) < 0)
|
||
|
+ if (def->cpu &&
|
||
|
+ qemuDomainMakeCPUMigratable(def->os.arch, def->cpu) < 0)
|
||
|
return -1;
|
||
|
|
||
|
/* Old libvirt doesn't understand <audio> elements so
|
||
|
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
|
||
|
index 98c188cc8f6..07b03182587 100644
|
||
|
--- a/src/qemu/qemu_domain.h
|
||
|
+++ b/src/qemu/qemu_domain.h
|
||
|
@@ -1045,7 +1045,8 @@ qemuDomainSupportsCheckpointsBlockjobs(virDomainObj *vm)
|
||
|
G_GNUC_WARN_UNUSED_RESULT;
|
||
|
|
||
|
int
|
||
|
-qemuDomainMakeCPUMigratable(virCPUDef *cpu);
|
||
|
+qemuDomainMakeCPUMigratable(virArch arch,
|
||
|
+ virCPUDef *cpu);
|
||
|
|
||
|
int
|
||
|
qemuDomainInitializePflashStorageSource(virDomainObj *vm,
|
||
|
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
|
||
|
index 4361949cca4..c53d42a0184 100644
|
||
|
--- a/src/qemu/qemu_migration_cookie.c
|
||
|
+++ b/src/qemu/qemu_migration_cookie.c
|
||
|
@@ -545,7 +545,7 @@ qemuMigrationCookieAddCPU(qemuMigrationCookie *mig,
|
||
|
|
||
|
mig->cpu = virCPUDefCopy(vm->def->cpu);
|
||
|
|
||
|
- if (qemuDomainMakeCPUMigratable(mig->cpu) < 0)
|
||
|
+ if (qemuDomainMakeCPUMigratable(vm->def->os.arch, mig->cpu) < 0)
|
||
|
return -1;
|
||
|
|
||
|
mig->flags |= QEMU_MIGRATION_COOKIE_CPU;
|