The "max" model can be treated the same way as "host" model in general.
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
return cpus && cpus->ncpus > 0;
case VIR_CPU_MODE_MAXIMUM:
+ return virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_MAX);
+
case VIR_CPU_MODE_LAST:
break;
}
VIR_TRISTATE_SWITCH_OFF);
}
+ if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttype,
+ VIR_CPU_MODE_MAXIMUM,
+ domCaps->machine)) {
+ domCaps->cpu.maximum = true;
+
+ domCaps->cpu.maximumMigratable.report = true;
+ VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.maximumMigratable,
+ VIR_TRISTATE_SWITCH_ON);
+ VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.maximumMigratable,
+ VIR_TRISTATE_SWITCH_OFF);
+ }
+
if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttype,
VIR_CPU_MODE_HOST_MODEL,
domCaps->machine)) {
switch ((virCPUMode) cpu->mode) {
case VIR_CPU_MODE_HOST_PASSTHROUGH:
- virBufferAddLit(buf, "host");
+ case VIR_CPU_MODE_MAXIMUM:
+ if (cpu->mode == VIR_CPU_MODE_MAXIMUM)
+ virBufferAddLit(buf, "max");
+ else
+ virBufferAddLit(buf, "host");
if (def->os.arch == VIR_ARCH_ARMV7L &&
driver->hostarch == VIR_ARCH_AARCH64) {
virBufferAdd(buf, cpu->model, -1);
break;
- case VIR_CPU_MODE_MAXIMUM:
case VIR_CPU_MODE_LAST:
break;
}
}
if (hostOff &&
- def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH &&
+ (def->cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH ||
+ def->cpu->mode == VIR_CPU_MODE_MAXIMUM) &&
virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_CACHE))
virBufferAddLit(&buf, ",host-cache-info=off");
break;
case VIR_CPU_CACHE_MODE_PASSTHROUGH:
- if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH) {
+ if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH &&
+ def->cpu->mode != VIR_CPU_MODE_MAXIMUM) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("CPU cache mode '%s' can only be used with "
- "'%s' CPUs"),
+ "'%s' / '%s' CPUs"),
virCPUCacheModeTypeToString(cache->mode),
- virCPUModeTypeToString(VIR_CPU_MODE_HOST_PASSTHROUGH));
+ virCPUModeTypeToString(VIR_CPU_MODE_HOST_PASSTHROUGH),
+ virCPUModeTypeToString(VIR_CPU_MODE_MAXIMUM));
return -1;
}
switch ((virCPUMode) def->cpu->mode) {
case VIR_CPU_MODE_HOST_PASSTHROUGH:
+ case VIR_CPU_MODE_MAXIMUM:
def->cpu->check = VIR_CPU_CHECK_NONE;
break;
def->cpu->check = VIR_CPU_CHECK_PARTIAL;
break;
- case VIR_CPU_MODE_MAXIMUM:
case VIR_CPU_MODE_LAST:
break;
}
switch (obj->def->cpu->mode) {
case VIR_CPU_MODE_HOST_PASSTHROUGH:
+ case VIR_CPU_MODE_MAXIMUM:
if (incomingMigration)
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HOST_CPU, logCtxt);
break;
if (!cpu->model) {
if (cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH) {
cpu->model = g_strdup("host");
+ } else if (cpu->mode == VIR_CPU_MODE_MAXIMUM) {
+ cpu->model = g_strdup("max");
} else {
virReportError(VIR_ERR_INVALID_ARG, "%s",
_("cpu parameter is missing a model name"));
if (virCPUConvertLegacy(hostarch, def->cpu) < 0)
return -1;
- /* nothing to update for host-passthrough */
- if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH) {
+ /* nothing to update for host-passthrough / maximum */
+ if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH &&
+ def->cpu->mode != VIR_CPU_MODE_MAXIMUM) {
g_autoptr(virDomainCapsCPUModels) cpuModels = NULL;
if (def->cpu->check == VIR_CPU_CHECK_PARTIAL &&
bool migratable;
int rc;
- if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH)
+ if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH &&
+ def->cpu->mode != VIR_CPU_MODE_MAXIMUM)
return 0;
/* If the cpu.migratable capability is present, the migratable attribute
case VIR_DOMAIN_FEATURE_KVM:
if (def->kvm_features[VIR_DOMAIN_KVM_DEDICATED] == VIR_TRISTATE_SWITCH_ON &&
- (!def->cpu || def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH)) {
+ (!def->cpu || (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH &&
+ def->cpu->mode != VIR_CPU_MODE_MAXIMUM))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("kvm-hint-dedicated=on is only applicable "
- "for cpu host-passthrough"));
+ "for cpu host-passthrough / maximum"));
return -1;
}
break;
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_MIGRATABLE)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Migratable attribute for host-passthrough "
- "CPU is not supported by QEMU binary"));
+ "CPU is not supported by this QEMU binary"));
return -1;
}
break;
* CUSTOM.
*/
break;
+
case VIR_CPU_MODE_MAXIMUM:
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_MAX)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("maximum CPU is not supported by QEMU binary"));
+ return -1;
+ }
+ break;
+
case VIR_CPU_MODE_CUSTOM:
case VIR_CPU_MODE_LAST:
break;
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Haswell-noTSX</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Opteron_G4</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Haswell-noTSX</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Haswell-noTSX</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Haswell-noTSX</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Opteron_G4</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>z14.2-base</model>
<feature policy='require' name='aen'/>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-IBPB</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-IBPB</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>pxa262</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>gen15a-base</model>
<feature policy='require' name='aen'/>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>cortex-a9</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>cortex-a9</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client-IBRS</model>
<vendor>Intel</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-Rome</model>
<vendor>AMD</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-Rome</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-Rome</model>
<vendor>AMD</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>cortex-a9</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='no'/>
<mode name='custom' supported='yes'>
<model usable='unknown'>cortex-a9</model>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='allow'>POWER8</model>
</mode>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>gen15a-base</model>
<feature policy='require' name='aen'/>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-Rome</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-Rome</model>
<vendor>AMD</vendor>
</os>
<cpu>
<mode name='host-passthrough' supported='no'/>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC</model>
<vendor>AMD</vendor>
<value>off</value>
</enum>
</mode>
- <mode name='maximum' supported='no'/>
+ <mode name='maximum' supported='yes'>
+ <enum name='maximumMigratable'>
+ <value>on</value>
+ <value>off</value>
+ </enum>
+ </mode>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>EPYC-Rome</model>
<vendor>AMD</vendor>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
+ <flag name='cpu-max'/>
<version>2010000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100287</microcodeVersion>
<flag name='fsdev.createmode'/>
<flag name='dc390'/>
<flag name='am53c974'/>
+ <flag name='cpu-max'/>
<version>2011000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100288</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>2012000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700289</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900289</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>2011090</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100289</microcodeVersion>
<flag name='migration-param.downtime'/>
<flag name='dc390'/>
<flag name='am53c974'/>
+ <flag name='cpu-max'/>
<version>2009000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100247</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>2012050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900239</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>3000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100239</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>3000091</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900240</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>3000092</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100240</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700240</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900240</microcodeVersion>
<flag name='migration-param.xbzrle-cache-size'/>
<flag name='fsdev.createmode'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>39100240</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100240</microcodeVersion>
<flag name='am53c974'/>
<flag name='virtio-pmem-pci'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100241</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4001050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700242</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4001050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900242</microcodeVersion>
<flag name='blockdev-hostdev-scsi'/>
<flag name='fsdev.createmode'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>39100242</microcodeVersion>
<flag name='am53c974'/>
<flag name='virtio-pmem-pci'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>4002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700241</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900241</microcodeVersion>
<flag name='am53c974'/>
<flag name='virtio-pmem-pci'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5000000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100241</microcodeVersion>
<flag name='am53c974'/>
<flag name='virtio-pmem-pci'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5001000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>61700243</microcodeVersion>
<flag name='dc390'/>
<flag name='am53c974'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>42900243</microcodeVersion>
<flag name='netdev.vhost-vdpa'/>
<flag name='fsdev.createmode'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>39100243</microcodeVersion>
<flag name='am53c974'/>
<flag name='virtio-pmem-pci'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5002000</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100243</microcodeVersion>
<flag name='virtio-pmem-pci'/>
<flag name='vhost-user-fs.bootindex'/>
<flag name='vhost-user-blk'/>
+ <flag name='cpu-max'/>
<version>5002050</version>
<kvmVersion>0</kvmVersion>
<microcodeVersion>43100242</microcodeVersion>
-unsupported configuration: CPU cache mode 'passthrough' can only be used with 'host-passthrough' CPUs
+unsupported configuration: CPU cache mode 'passthrough' can only be used with 'host-passthrough' / 'maximum' CPUs