Before QEMU introduced migratable CPU property, "-cpu host" included all
features that could be enabled on the host, even those which would block
migration. In other words, the default was equivalent to migratable=off.
When the migratable property was introduced, the default changed to
migratable=on. Let's record the default in domain XML.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_domain.c | 14 ++++++++++++--
.../migration-in-params-in.xml | 2 +-
.../migration-out-params-in.xml | 2 +-
.../qemuxml2xmloutdata/cpu-check-default-none.xml | 2 +-
tests/qemuxml2xmloutdata/cpu-host-kvmclock.xml | 2 +-
.../cpu-host-passthrough-features.xml | 2 +-
tests/qemuxml2xmloutdata/kvm-features.xml | 2 +-
7 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 3239ac1a52..2dad823a86 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4792,7 +4792,8 @@ qemuDomainDefSetDefaultCPU(virDomainDefPtr def,
static int
-qemuDomainDefCPUPostParse(virDomainDefPtr def)
+qemuDomainDefCPUPostParse(virDomainDefPtr def,
+ virQEMUCapsPtr qemuCaps)
{
virCPUFeatureDefPtr sveFeature = NULL;
bool sveVectorLengthsProvided = false;
@@ -4888,6 +4889,15 @@ qemuDomainDefCPUPostParse(virDomainDefPtr def)
}
}
+ if (qemuCaps &&
+ def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH &&
+ !def->cpu->migratable) {
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_MIGRATABLE))
+ def->cpu->migratable = VIR_TRISTATE_SWITCH_ON;
+ else if (ARCH_IS_X86(def->os.arch))
+ def->cpu->migratable = VIR_TRISTATE_SWITCH_OFF;
+ }
+
/* Nothing to be done if only CPU topology is specified. */
if (def->cpu->mode == VIR_CPU_MODE_CUSTOM &&
!def->cpu->model)
@@ -5033,7 +5043,7 @@ qemuDomainDefPostParse(virDomainDefPtr def,
if (qemuDomainDefVcpusPostParse(def) < 0)
return -1;
- if (qemuDomainDefCPUPostParse(def) < 0)
+ if (qemuDomainDefCPUPostParse(def, qemuCaps) < 0)
return -1;
if (qemuDomainDefTsegPostParse(def, qemuCaps) < 0)
diff --git a/tests/qemustatusxml2xmldata/migration-in-params-in.xml
b/tests/qemustatusxml2xmldata/migration-in-params-in.xml
index fdc2d39173..93450c38d5 100644
--- a/tests/qemustatusxml2xmldata/migration-in-params-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-in-params-in.xml
@@ -277,7 +277,7 @@
<apic/>
<vmport state='off'/>
</features>
- <cpu mode='host-passthrough' check='none'/>
+ <cpu mode='host-passthrough' check='none'
migratable='on'/>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
diff --git a/tests/qemustatusxml2xmldata/migration-out-params-in.xml
b/tests/qemustatusxml2xmldata/migration-out-params-in.xml
index 1956eac120..c1daab4dee 100644
--- a/tests/qemustatusxml2xmldata/migration-out-params-in.xml
+++ b/tests/qemustatusxml2xmldata/migration-out-params-in.xml
@@ -291,7 +291,7 @@
<apic/>
<vmport state='off'/>
</features>
- <cpu mode='host-passthrough' check='none'/>
+ <cpu mode='host-passthrough' check='none'
migratable='on'/>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
diff --git a/tests/qemuxml2xmloutdata/cpu-check-default-none.xml
b/tests/qemuxml2xmloutdata/cpu-check-default-none.xml
index ddffb2f15b..9f6b043f2c 100644
--- a/tests/qemuxml2xmloutdata/cpu-check-default-none.xml
+++ b/tests/qemuxml2xmloutdata/cpu-check-default-none.xml
@@ -8,7 +8,7 @@
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
- <cpu mode='host-passthrough' check='none'/>
+ <cpu mode='host-passthrough' check='none'
migratable='off'/>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
diff --git a/tests/qemuxml2xmloutdata/cpu-host-kvmclock.xml
b/tests/qemuxml2xmloutdata/cpu-host-kvmclock.xml
index 6d8fa367c7..9414c41c7a 100644
--- a/tests/qemuxml2xmloutdata/cpu-host-kvmclock.xml
+++ b/tests/qemuxml2xmloutdata/cpu-host-kvmclock.xml
@@ -8,7 +8,7 @@
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
- <cpu mode='host-passthrough' check='none'/>
+ <cpu mode='host-passthrough' check='none'
migratable='off'/>
<clock offset='utc'>
<timer name='kvmclock' present='no'/>
</clock>
diff --git a/tests/qemuxml2xmloutdata/cpu-host-passthrough-features.xml
b/tests/qemuxml2xmloutdata/cpu-host-passthrough-features.xml
index 9a961eb1a1..bd1e50ef6a 100644
--- a/tests/qemuxml2xmloutdata/cpu-host-passthrough-features.xml
+++ b/tests/qemuxml2xmloutdata/cpu-host-passthrough-features.xml
@@ -13,7 +13,7 @@
<type arch='i686' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
- <cpu mode='host-passthrough' check='none'>
+ <cpu mode='host-passthrough' check='none'
migratable='off'>
<feature policy='require' name='abm'/>
<feature policy='force' name='ds'/>
<feature policy='disable' name='invtsc'/>
diff --git a/tests/qemuxml2xmloutdata/kvm-features.xml
b/tests/qemuxml2xmloutdata/kvm-features.xml
index 7c554671b3..9c53eb4630 100644
--- a/tests/qemuxml2xmloutdata/kvm-features.xml
+++ b/tests/qemuxml2xmloutdata/kvm-features.xml
@@ -15,7 +15,7 @@
<hint-dedicated state='on'/>
</kvm>
</features>
- <cpu mode='host-passthrough' check='none'/>
+ <cpu mode='host-passthrough' check='none'
migratable='off'/>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
--
2.27.0