[PATCH 0/4] Enable removing features from CPU models and remove mpx

See 3/4 for details. Jiri Denemark (3): conf: Change return value of some CPU feature APIs cpu: Add removedPolicy parameter to virCPUUpdate qemu: Enable removing features from CPU models Tim Wiederhake (1): cpu_map: Drop 'mpx' from x86 cpu models src/conf/cpu_conf.c | 12 +-- src/conf/cpu_conf.h | 4 +- src/cpu/cpu.c | 10 ++- src/cpu/cpu.h | 6 +- src/cpu/cpu_arm.c | 3 +- src/cpu/cpu_loongarch.c | 3 +- src/cpu/cpu_ppc64.c | 3 +- src/cpu/cpu_riscv64.c | 3 +- src/cpu/cpu_s390.c | 10 +-- src/cpu/cpu_x86.c | 83 +++++++++---------- src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 2 +- src/cpu_map/x86_Cascadelake-Server.xml | 2 +- src/cpu_map/x86_Icelake-Server-noTSX.xml | 2 +- src/cpu_map/x86_Icelake-Server.xml | 2 +- src/cpu_map/x86_Skylake-Client-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Client.xml | 2 +- src/cpu_map/x86_Skylake-Server-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Server.xml | 2 +- src/qemu/qemu_capabilities.c | 5 +- src/qemu/qemu_domain.c | 6 +- src/qemu/qemu_process.c | 36 +++++++- tests/cputest.c | 4 +- .../x86_64-cpuid-Core-i5-6600-guest.xml | 1 + .../x86_64-cpuid-Core-i5-6600-host.xml | 1 + .../x86_64-cpuid-Core-i5-6600-json.xml | 1 + .../x86_64-cpuid-Core-i7-7600U-guest.xml | 1 + .../x86_64-cpuid-Core-i7-7600U-host.xml | 1 + .../x86_64-cpuid-Core-i7-7600U-json.xml | 1 + .../x86_64-cpuid-Core-i7-7700-guest.xml | 1 + .../x86_64-cpuid-Core-i7-7700-host.xml | 1 + .../x86_64-cpuid-Core-i7-7700-json.xml | 1 + .../x86_64-cpuid-Core-i7-8550U-guest.xml | 1 + .../x86_64-cpuid-Core-i7-8550U-host.xml | 1 + .../x86_64-cpuid-Core-i7-8550U-json.xml | 1 + .../x86_64-cpuid-Core-i7-8700-guest.xml | 1 + .../x86_64-cpuid-Core-i7-8700-host.xml | 1 + .../x86_64-cpuid-Core-i7-8700-json.xml | 1 + .../x86_64-cpuid-Ice-Lake-Server-guest.xml | 1 + .../x86_64-cpuid-Ice-Lake-Server-host.xml | 1 + .../x86_64-cpuid-Ice-Lake-Server-json.xml | 1 + .../x86_64-cpuid-Xeon-E3-1225-v5-guest.xml | 1 + .../x86_64-cpuid-Xeon-E3-1225-v5-host.xml | 1 + .../x86_64-cpuid-Xeon-E3-1225-v5-json.xml | 1 + .../x86_64-cpuid-Xeon-E3-1245-v5-guest.xml | 1 + .../x86_64-cpuid-Xeon-E3-1245-v5-host.xml | 1 + .../x86_64-cpuid-Xeon-E3-1245-v5-json.xml | 1 + .../x86_64-cpuid-Xeon-Gold-5115-guest.xml | 1 + .../x86_64-cpuid-Xeon-Gold-5115-host.xml | 1 + .../x86_64-cpuid-Xeon-Gold-5115-json.xml | 1 + .../x86_64-cpuid-Xeon-Gold-6130-guest.xml | 1 + .../x86_64-cpuid-Xeon-Gold-6130-host.xml | 1 + .../x86_64-cpuid-Xeon-Gold-6130-json.xml | 1 + .../x86_64-cpuid-Xeon-Gold-6148-guest.xml | 1 + .../x86_64-cpuid-Xeon-Gold-6148-host.xml | 1 + .../x86_64-cpuid-Xeon-Gold-6148-json.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-8268-guest.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-8268-host.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-8268-json.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-9242-guest.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-9242-host.xml | 1 + .../x86_64-cpuid-Xeon-Platinum-9242-json.xml | 1 + ..._64-cpuid-baseline-Cascadelake+Icelake.xml | 1 + ...puid-baseline-Cascadelake+Skylake-IBRS.xml | 1 + ..._64-cpuid-baseline-Cascadelake+Skylake.xml | 1 + ...-cpuid-baseline-Cooperlake+Cascadelake.xml | 1 + ...6_64-cpuid-baseline-Cooperlake+Icelake.xml | 1 + ...4-cpuid-baseline-Skylake-Client+Server.xml | 1 + .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 + ...-Icelake-Server-pconfig.x86_64-latest.args | 2 +- ...-host-model-fallback-kvm.x86_64-4.2.0.args | 2 +- ...-host-model-fallback-kvm.x86_64-5.0.0.args | 2 +- .../cpu-host-model-kvm.x86_64-4.2.0.args | 2 +- .../cpu-host-model-kvm.x86_64-5.0.0.args | 2 +- ...ost-model-nofallback-kvm.x86_64-4.2.0.args | 2 +- ...ost-model-nofallback-kvm.x86_64-5.0.0.args | 2 +- 80 files changed, 174 insertions(+), 97 deletions(-) -- 2.44.0

The virCPUDefAddFeatureInternal helper function only fails if it is called with VIR_CPU_ADD_FEATURE_MODE_EXCLUSIVE, which is only used in virCPUDefAddFeature. The other callers (virCPUDefUpdateFeature and virCPUDefAddFeatureIfMissing) will never get anything but 0 from virCPUDefAddFeatureInternal and their return type can be changed to void. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/conf/cpu_conf.c | 12 ++++---- src/conf/cpu_conf.h | 4 +-- src/cpu/cpu_s390.c | 7 ++--- src/cpu/cpu_x86.c | 58 +++++++++++++----------------------- src/qemu/qemu_capabilities.c | 5 ++-- src/qemu/qemu_domain.c | 3 +- 6 files changed, 34 insertions(+), 55 deletions(-) diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c index 4dca7e57ec..dcc164d165 100644 --- a/src/conf/cpu_conf.c +++ b/src/conf/cpu_conf.c @@ -938,13 +938,13 @@ virCPUDefAddFeatureInternal(virCPUDef *def, return 0; } -int +void virCPUDefUpdateFeature(virCPUDef *def, const char *name, int policy) { - return virCPUDefAddFeatureInternal(def, name, policy, - VIR_CPU_ADD_FEATURE_MODE_UPDATE); + virCPUDefAddFeatureInternal(def, name, policy, + VIR_CPU_ADD_FEATURE_MODE_UPDATE); } int @@ -957,13 +957,13 @@ virCPUDefAddFeature(virCPUDef *def, } -int +void virCPUDefAddFeatureIfMissing(virCPUDef *def, const char *name, int policy) { - return virCPUDefAddFeatureInternal(def, name, policy, - VIR_CPU_ADD_FEATURE_MODE_NEW); + virCPUDefAddFeatureInternal(def, name, policy, + VIR_CPU_ADD_FEATURE_MODE_NEW); } diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h index b10c23ee82..f71d942ce6 100644 --- a/src/conf/cpu_conf.h +++ b/src/conf/cpu_conf.h @@ -245,12 +245,12 @@ virCPUDefAddFeature(virCPUDef *cpu, const char *name, int policy); -int +void virCPUDefUpdateFeature(virCPUDef *cpu, const char *name, int policy); -int +void virCPUDefAddFeatureIfMissing(virCPUDef *def, const char *name, int policy); diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c index ffb1a2cf7b..13695ee97a 100644 --- a/src/cpu/cpu_s390.c +++ b/src/cpu/cpu_s390.c @@ -72,10 +72,9 @@ virCPUs390Update(virCPUDef *guest, virCPUDefCopyModel(updated, host, true); for (i = 0; i < guest->nfeatures; i++) { - if (virCPUDefUpdateFeature(updated, - guest->features[i].name, - guest->features[i].policy) < 0) - return -1; + virCPUDefUpdateFeature(updated, + guest->features[i].name, + guest->features[i].policy); } virCPUDefStealModel(guest, updated, false); diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index 0fad761809..8770f52d15 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -834,23 +834,19 @@ x86DataAddSignature(virCPUx86Data *data, * mentioned in @cpu to make sure these features will always be explicitly * listed in the CPU definition. */ -static int +static void virCPUx86DisableRemovedFeatures(virCPUDef *cpu, virCPUx86Model *model) { char **feat = model->removedFeatures; if (!feat) - return 0; + return; while (*feat) { - if (virCPUDefAddFeatureIfMissing(cpu, *feat, VIR_CPU_FEATURE_DISABLE) < 0) - return -1; - + virCPUDefAddFeatureIfMissing(cpu, *feat, VIR_CPU_FEATURE_DISABLE); feat++; } - - return 0; } @@ -901,10 +897,8 @@ x86DataToCPU(const virCPUx86Data *data, x86DataToCPUFeatures(cpu, VIR_CPU_FEATURE_DISABLE, &modelData, map)) return NULL; - if (cpuType == VIR_CPU_TYPE_GUEST) { - if (virCPUx86DisableRemovedFeatures(cpu, model) < 0) - return NULL; - } + if (cpuType == VIR_CPU_TYPE_GUEST) + virCPUx86DisableRemovedFeatures(cpu, model); cpu->type = cpuType; @@ -2914,7 +2908,7 @@ virCPUx86Baseline(virCPUDef **cpus, } -static int +static void x86UpdateHostModel(virCPUDef *guest, const virCPUDef *host) { @@ -2931,18 +2925,15 @@ x86UpdateHostModel(virCPUDef *guest, } for (i = 0; i < guest->nfeatures; i++) { - if (virCPUDefUpdateFeature(updated, - guest->features[i].name, - guest->features[i].policy) < 0) - return -1; + virCPUDefUpdateFeature(updated, + guest->features[i].name, + guest->features[i].policy); } virCPUDefStealModel(guest, updated, guest->mode == VIR_CPU_MODE_CUSTOM); guest->mode = VIR_CPU_MODE_CUSTOM; guest->match = VIR_CPU_MATCH_EXACT; - - return 0; } @@ -2984,8 +2975,7 @@ virCPUx86Update(virCPUDef *guest, if (guest->mode == VIR_CPU_MODE_HOST_MODEL || guest->match == VIR_CPU_MATCH_MINIMUM) { - if (x86UpdateHostModel(guest, host) < 0) - return -1; + x86UpdateHostModel(guest, host); } } @@ -2995,8 +2985,7 @@ virCPUx86Update(virCPUDef *guest, return -1; } - if (virCPUx86DisableRemovedFeatures(guest, guestModel) < 0) - return -1; + virCPUx86DisableRemovedFeatures(guest, guestModel); return 0; } @@ -3065,9 +3054,8 @@ virCPUx86UpdateLive(virCPUDef *cpu, if (cpu->check == VIR_CPU_CHECK_FULL && !g_strv_contains((const char **) model->addedFeatures, feature->name)) { virBufferAsprintf(&bufAdded, "%s,", feature->name); - } else if (virCPUDefUpdateFeature(cpu, feature->name, - VIR_CPU_FEATURE_REQUIRE) < 0) { - return -1; + } else { + virCPUDefUpdateFeature(cpu, feature->name, VIR_CPU_FEATURE_REQUIRE); } } @@ -3077,14 +3065,12 @@ virCPUx86UpdateLive(virCPUDef *cpu, VIR_DEBUG("Feature '%s' disabled by the hypervisor", feature->name); if (cpu->check == VIR_CPU_CHECK_FULL) virBufferAsprintf(&bufRemoved, "%s,", feature->name); - else if (virCPUDefUpdateFeature(cpu, feature->name, - VIR_CPU_FEATURE_DISABLE) < 0) - return -1; + else + virCPUDefUpdateFeature(cpu, feature->name, VIR_CPU_FEATURE_DISABLE); } } - if (virCPUx86DisableRemovedFeatures(cpu, model) < 0) - return -1; + virCPUx86DisableRemovedFeatures(cpu, model); virBufferTrim(&bufAdded, ","); virBufferTrim(&bufRemoved, ","); @@ -3186,8 +3172,7 @@ virCPUx86Translate(virCPUDef *cpu, for (i = 0; i < cpu->nfeatures; i++) { virCPUFeatureDef *f = cpu->features + i; - if (virCPUDefUpdateFeature(translated, f->name, f->policy) < 0) - return -1; + virCPUDefUpdateFeature(translated, f->name, f->policy); } virCPUDefStealModel(cpu, translated, true); @@ -3229,14 +3214,11 @@ virCPUx86ExpandFeatures(virCPUDef *cpu) f->policy != VIR_CPU_FEATURE_DISABLE) continue; - if (virCPUDefUpdateFeature(expanded, f->name, f->policy) < 0) - return -1; + virCPUDefUpdateFeature(expanded, f->name, f->policy); } - if (!host) { - if (virCPUx86DisableRemovedFeatures(expanded, model) < 0) - return -1; - } + if (!host) + virCPUx86DisableRemovedFeatures(expanded, model); virCPUDefFreeModel(cpu); diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 21f93c6774..3c16b8f560 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3846,10 +3846,9 @@ virQEMUCapsInitHostCPUModel(virQEMUCaps *qemuCaps, goto error; for (i = 0; i < cpuExpanded->nfeatures; i++) { - if (cpuExpanded->features[i].policy == VIR_CPU_FEATURE_REQUIRE && + if (cpuExpanded->features[i].policy == VIR_CPU_FEATURE_REQUIRE) virCPUDefUpdateFeature(fullCPU, cpuExpanded->features[i].name, - VIR_CPU_FEATURE_REQUIRE) < 0) - goto error; + VIR_CPU_FEATURE_REQUIRE); } } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 3469f0d40c..e42b04865b 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6699,8 +6699,7 @@ qemuDomainMakeCPUMigratable(virArch arch, * would think it was implicitly enabled on the source). New libvirt * will drop it from the XML before starting the domain on new QEMU. */ - if (virCPUDefUpdateFeature(cpu, "pconfig", VIR_CPU_FEATURE_DISABLE) < 0) - return -1; + virCPUDefUpdateFeature(cpu, "pconfig", VIR_CPU_FEATURE_DISABLE); } if (virCPUx86GetAddedFeatures(cpu->model, &data.added) < 0) -- 2.44.0

virCPUUpdate check the CPU definition for features that were marked as removed in the specified CPU model and explicitly adds those that were not mentioned in the definition. So far such features were added with VIR_CPU_FEATURE_DISABLE policy, but the caller may want to use a different policy in some situations, which is now possible via the removedPolicy parameter. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/cpu/cpu.c | 10 +++++++--- src/cpu/cpu.h | 6 ++++-- src/cpu/cpu_arm.c | 3 ++- src/cpu/cpu_loongarch.c | 3 ++- src/cpu/cpu_ppc64.c | 3 ++- src/cpu/cpu_riscv64.c | 3 ++- src/cpu/cpu_s390.c | 3 ++- src/cpu/cpu_x86.c | 31 ++++++++++++++++++++----------- src/qemu/qemu_domain.c | 3 ++- src/qemu/qemu_process.c | 6 ++++-- tests/cputest.c | 4 ++-- 11 files changed, 49 insertions(+), 26 deletions(-) diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index 33701811fb..a2518d7cc7 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -560,19 +560,23 @@ virCPUBaseline(virArch arch, * @arch: CPU architecture * @guest: guest CPU definition to be updated * @host: host CPU definition + * @removedPolicy: default policy for features removed from the CPU model * * Updates @guest CPU definition possibly taking @host CPU into account. This * is required for maintaining compatibility with older libvirt releases or to * support guest CPU definitions specified relatively to host CPU, such as CPUs * with VIR_CPU_MODE_CUSTOM and optional features or VIR_CPU_MATCH_MINIMUM, or - * CPUs with VIR_CPU_MODE_HOST_MODEL. + * CPUs with VIR_CPU_MODE_HOST_MODEL. If @guest CPU uses a CPU model which + * specifies some features as removed, such features that were not already + * present in the @guest CPU definition will be added there with @removedPolicy. * * Returns 0 on success, -1 on error. */ int virCPUUpdate(virArch arch, virCPUDef *guest, - const virCPUDef *host) + const virCPUDef *host, + virCPUFeaturePolicy removedPolicy) { struct cpuArchDriver *driver; bool relative; @@ -622,7 +626,7 @@ virCPUUpdate(virArch arch, return -1; } - if (driver->update(guest, host, relative) < 0) + if (driver->update(guest, host, relative, removedPolicy) < 0) return -1; VIR_DEBUG("model=%s", NULLSTR(guest->model)); diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index a4cdb37f03..d092b4f3f0 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -81,7 +81,8 @@ typedef virCPUDef * typedef int (*virCPUArchUpdate)(virCPUDef *guest, const virCPUDef *host, - bool relative); + bool relative, + virCPUFeaturePolicy removedPolicy); typedef int (*virCPUArchUpdateLive)(virCPUDef *cpu, @@ -229,7 +230,8 @@ virCPUBaseline(virArch arch, int virCPUUpdate(virArch arch, virCPUDef *guest, - const virCPUDef *host) + const virCPUDef *host, + virCPUFeaturePolicy removedPolicy) ATTRIBUTE_NONNULL(2); int diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c index 324c701e81..7a9c8163c8 100644 --- a/src/cpu/cpu_arm.c +++ b/src/cpu/cpu_arm.c @@ -448,7 +448,8 @@ virCPUarmGetMap(void) static int virCPUarmUpdate(virCPUDef *guest, const virCPUDef *host, - bool relative) + bool relative, + virCPUFeaturePolicy removedPolicy G_GNUC_UNUSED) { g_autoptr(virCPUDef) updated = virCPUDefCopyWithoutModel(guest); diff --git a/src/cpu/cpu_loongarch.c b/src/cpu/cpu_loongarch.c index 78d9941320..0e2b0b5848 100644 --- a/src/cpu/cpu_loongarch.c +++ b/src/cpu/cpu_loongarch.c @@ -39,7 +39,8 @@ virCPULoongArchCompare(virCPUDef *host G_GNUC_UNUSED, static int virCPULoongArchUpdate(virCPUDef *guest G_GNUC_UNUSED, const virCPUDef *host G_GNUC_UNUSED, - bool relative G_GNUC_UNUSED) + bool relative G_GNUC_UNUSED, + virCPUFeaturePolicy removedPolicy G_GNUC_UNUSED) { return 0; } diff --git a/src/cpu/cpu_ppc64.c b/src/cpu/cpu_ppc64.c index 448a0a7d85..13f5fc9c2c 100644 --- a/src/cpu/cpu_ppc64.c +++ b/src/cpu/cpu_ppc64.c @@ -654,7 +654,8 @@ virCPUppc64GetHost(virCPUDef *cpu, static int virCPUppc64Update(virCPUDef *guest, const virCPUDef *host G_GNUC_UNUSED, - bool relative G_GNUC_UNUSED) + bool relative G_GNUC_UNUSED, + virCPUFeaturePolicy removedPolicy G_GNUC_UNUSED) { /* * - host-passthrough doesn't even get here diff --git a/src/cpu/cpu_riscv64.c b/src/cpu/cpu_riscv64.c index 4cb795f849..276c80a401 100644 --- a/src/cpu/cpu_riscv64.c +++ b/src/cpu/cpu_riscv64.c @@ -49,7 +49,8 @@ virCPURiscv64ValidateFeatures(virCPUDef *cpu G_GNUC_UNUSED) static int virCPURiscv64Update(virCPUDef *guest, const virCPUDef *host, - bool relative) + bool relative, + virCPUFeaturePolicy removedPolicy G_GNUC_UNUSED) { g_autoptr(virCPUDef) updated = virCPUDefCopyWithoutModel(guest); diff --git a/src/cpu/cpu_s390.c b/src/cpu/cpu_s390.c index 13695ee97a..bcfe3fc07a 100644 --- a/src/cpu/cpu_s390.c +++ b/src/cpu/cpu_s390.c @@ -42,7 +42,8 @@ virCPUs390Compare(virCPUDef *host G_GNUC_UNUSED, static int virCPUs390Update(virCPUDef *guest, const virCPUDef *host, - bool relative) + bool relative, + virCPUFeaturePolicy removedPolicy G_GNUC_UNUSED) { g_autoptr(virCPUDef) updated = virCPUDefCopyWithoutModel(guest); size_t i; diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c index 8770f52d15..7a70eed9e7 100644 --- a/src/cpu/cpu_x86.c +++ b/src/cpu/cpu_x86.c @@ -829,6 +829,22 @@ x86DataAddSignature(virCPUx86Data *data, } +/* + * Adds features removed from the CPU @model to @cpu with a specified @policy + * unless the features were already explicitly mentioned in @cpu. + */ +static void +virCPUx86AddRemovedFeatures(virCPUDef *cpu, + virCPUx86Model *model, + virCPUFeaturePolicy policy) +{ + char **feat; + + for (feat = model->removedFeatures; feat && *feat; feat++) + virCPUDefAddFeatureIfMissing(cpu, *feat, policy); +} + + /* * Disables features removed from the CPU @model unless they are already * mentioned in @cpu to make sure these features will always be explicitly @@ -838,15 +854,7 @@ static void virCPUx86DisableRemovedFeatures(virCPUDef *cpu, virCPUx86Model *model) { - char **feat = model->removedFeatures; - - if (!feat) - return; - - while (*feat) { - virCPUDefAddFeatureIfMissing(cpu, *feat, VIR_CPU_FEATURE_DISABLE); - feat++; - } + virCPUx86AddRemovedFeatures(cpu, model, VIR_CPU_FEATURE_DISABLE); } @@ -2940,7 +2948,8 @@ x86UpdateHostModel(virCPUDef *guest, static int virCPUx86Update(virCPUDef *guest, const virCPUDef *host, - bool relative) + bool relative, + virCPUFeaturePolicy removedPolicy) { g_autoptr(virCPUx86Model) model = NULL; virCPUx86Model *guestModel; @@ -2985,7 +2994,7 @@ virCPUx86Update(virCPUDef *guest, return -1; } - virCPUx86DisableRemovedFeatures(guest, guestModel); + virCPUx86AddRemovedFeatures(guest, guestModel, removedPolicy); return 0; } diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e42b04865b..bda62f2e5c 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6763,7 +6763,8 @@ qemuDomainDefFormatBufInternal(virQEMUDriver *driver, if (virCPUUpdate(def->os.arch, def->cpu, virQEMUCapsGetHostModel(qCaps, def->virtType, - VIR_QEMU_CAPS_HOST_CPU_MIGRATABLE)) < 0) + VIR_QEMU_CAPS_HOST_CPU_MIGRATABLE), + VIR_CPU_FEATURE_DISABLE) < 0) return -1; } diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index da2b024f92..d5c5342966 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6281,7 +6281,8 @@ qemuProcessUpdateGuestCPU(virDomainDef *def, if (virCPUUpdate(def->os.arch, def->cpu, virQEMUCapsGetHostModel(qemuCaps, def->virtType, - VIR_QEMU_CAPS_HOST_CPU_MIGRATABLE)) < 0) + VIR_QEMU_CAPS_HOST_CPU_MIGRATABLE), + VIR_CPU_FEATURE_DISABLE) < 0) return -1; cpuModels = virQEMUCapsGetCPUModels(qemuCaps, def->virtType, NULL, NULL); @@ -8914,7 +8915,8 @@ qemuProcessRefreshCPU(virQEMUDriver *driver, virCPUDefCopyModelFilter(cpu, hostmig, false, virQEMUCapsCPUFilterFeatures, &host->arch); - if (virCPUUpdate(vm->def->os.arch, vm->def->cpu, cpu) < 0) + if (virCPUUpdate(vm->def->os.arch, vm->def->cpu, cpu, + VIR_CPU_FEATURE_DISABLE) < 0) return -1; if (qemuProcessUpdateCPU(vm, VIR_ASYNC_JOB_NONE) < 0) diff --git a/tests/cputest.c b/tests/cputest.c index 93cd0e12a7..32bf86997a 100644 --- a/tests/cputest.c +++ b/tests/cputest.c @@ -236,7 +236,7 @@ cpuTestGuestCPU(const void *arg) goto cleanup; } - if (virCPUUpdate(host->arch, cpu, host) < 0 || + if (virCPUUpdate(host->arch, cpu, host, VIR_CPU_FEATURE_DISABLE) < 0 || virCPUTranslate(host->arch, cpu, data->models) < 0) { ret = -1; goto cleanup; @@ -363,7 +363,7 @@ cpuTestUpdate(const void *arg) if (!(migHost = virCPUCopyMigratable(data->arch, host))) return -1; - if (virCPUUpdate(host->arch, cpu, migHost) < 0) + if (virCPUUpdate(host->arch, cpu, migHost, VIR_CPU_FEATURE_DISABLE) < 0) return -1; result = g_strdup_printf("%s+%s", data->host, data->name); -- 2.44.0

Features removed from a CPU model are marked with "removed='yes'" attribute in the CPU map. Such features will always be present in a CPU definition produced by libvirt regardless on their state. In other words a running domain (even saved in a file) will always explicitly contain states of all features removed from the specified CPU model. This enables migration to older libvirt which would otherwise think the affected features should be enabled as they are still included in the CPU model in the older version of CPU map. Migration from an old libvirt to a new one would be broken as the new libvirt would think the removed features should be disabled (because they are not included in the CPU model anymore), which might not be the case on the source host. Thus we were refusing to remove CPU features unless they were never working and no domain could even be running with those features enabled. This patch removes the limitation. When handling CPU definitions with missing features marked as removed in the specified CPU model, we know whether it comes from a running domain, in which case it must have been created by older libvirt where the missing CPU features were not removed yet. This means the features must have been enabled on the source and we can automatically fix the definition by adding the missing features with correct states. We can safely remove any CPU feature from our CPU models now, but it should only be used for features removed from all versions of a given CPU model in QEMU because unversioned models correspond to v1. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_process.c | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d5c5342966..d0f8176b2c 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6270,6 +6270,7 @@ qemuProcessUpdateGuestCPU(virDomainDef *def, if (def->cpu->mode != VIR_CPU_MODE_HOST_PASSTHROUGH && def->cpu->mode != VIR_CPU_MODE_MAXIMUM) { g_autoptr(virDomainCapsCPUModels) cpuModels = NULL; + virCPUFeaturePolicy removedPolicy = VIR_CPU_FEATURE_DISABLE; if (def->cpu->check == VIR_CPU_CHECK_PARTIAL && !virQEMUCapsIsCPUUsable(qemuCaps, def->virtType, def->cpu) && @@ -6279,10 +6280,22 @@ qemuProcessUpdateGuestCPU(virDomainDef *def, def->cpu, true) < 0) return -1; + /* When starting a fresh domain we disable all features removed from + * the specified CPU model to make sure they are only used if + * explicitly requested. But when we are restoring a previously running + * domain (migration, snapshot, ...) all removed features were already + * explicitly listed in the CPU definition and if we found a removed + * feature which is missing it must have been removed later and must be + * enabled rather than disabled here match the state described by older + * libvirt. + */ + if (!(flags & VIR_QEMU_PROCESS_START_NEW)) + removedPolicy = VIR_CPU_FEATURE_REQUIRE; + if (virCPUUpdate(def->os.arch, def->cpu, virQEMUCapsGetHostModel(qemuCaps, def->virtType, VIR_QEMU_CAPS_HOST_CPU_MIGRATABLE), - VIR_CPU_FEATURE_DISABLE) < 0) + removedPolicy) < 0) return -1; cpuModels = virQEMUCapsGetCPUModels(qemuCaps, def->virtType, NULL, NULL); @@ -8877,13 +8890,27 @@ qemuProcessRefreshCPU(virQEMUDriver *driver, g_autoptr(virCPUDef) host = NULL; g_autoptr(virCPUDef) hostmig = NULL; g_autoptr(virCPUDef) cpu = NULL; + virCPUFeaturePolicy removedPolicy; - if (!virQEMUCapsGuestIsNative(driver->hostarch, vm->def->os.arch)) - return 0; + /* When reconnecting to a running domain, we know all features marked as + * removed from a CPU model were already explicitly mentioned in the + * definition. If any removed features are missing, they must have been + * removed after the domain was started and thus they have to be enabled + * (otherwise they would be explicitly listed as disabled). + */ + removedPolicy = VIR_CPU_FEATURE_REQUIRE; if (!vm->def->cpu) return 0; + if (vm->def->cpu->mode == VIR_CPU_MODE_CUSTOM && + vm->def->cpu->model && + virCPUUpdate(vm->def->os.arch, vm->def->cpu, NULL, removedPolicy) < 0) + return -1; + + if (!virQEMUCapsGuestIsNative(driver->hostarch, vm->def->os.arch)) + return 0; + if (qemuProcessRefreshCPUMigratability(vm, VIR_ASYNC_JOB_NONE) < 0) return -1; @@ -8915,8 +8942,7 @@ qemuProcessRefreshCPU(virQEMUDriver *driver, virCPUDefCopyModelFilter(cpu, hostmig, false, virQEMUCapsCPUFilterFeatures, &host->arch); - if (virCPUUpdate(vm->def->os.arch, vm->def->cpu, cpu, - VIR_CPU_FEATURE_DISABLE) < 0) + if (virCPUUpdate(vm->def->os.arch, vm->def->cpu, cpu, removedPolicy) < 0) return -1; if (qemuProcessUpdateCPU(vm, VIR_ASYNC_JOB_NONE) < 0) -- 2.44.0

From: Tim Wiederhake <twiederh@redhat.com> The mpx feature was removed from the corresponding qemu cpu models. With mpx in the libvirt cpu models, libvirt believes the feature to be implicitly enabled when creating qemu VMs, while in fact it is disabled. This became an issue when commit 94eacd5a5f introduced new vmx-* features, of which some are dependent on mpx (see "feature_dependencies" table in qemu target/i386/cpu.c), e.g. vmx-exit-clear-bndcfgs and vmx-entry-load-bndcfgs. These features cannot be enabled by qemu without also mpx being enabled, leading to the error message error: Failed to create domain from testdomain.xml error: operation failed: guest CPU doesn't match specification: missing features: mpx,vmx-exit-clear-bndcfgs, vmx-entry-load-bndcfgs when trying to create a VM with a "host-model" cpu on a host that does support mpx and the mentioned vmx-* features: <domain> ... <cpu mode='host-model' check='full' /> ... </domain> Resolve the issue by removing mpx from libvirt's cpu models as well. Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 2 +- src/cpu_map/x86_Cascadelake-Server.xml | 2 +- src/cpu_map/x86_Icelake-Server-noTSX.xml | 2 +- src/cpu_map/x86_Icelake-Server.xml | 2 +- src/cpu_map/x86_Skylake-Client-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Client.xml | 2 +- src/cpu_map/x86_Skylake-Server-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 2 +- src/cpu_map/x86_Skylake-Server.xml | 2 +- tests/cputestdata/x86_64-cpuid-Core-i5-6600-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i5-6600-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i5-6600-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-7600U-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-7600U-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-7700-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-7700-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-7700-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-8700-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-8700-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Core-i7-8700-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-guest.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-host.xml | 1 + tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml | 1 + tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Icelake.xml | 1 + .../x86_64-cpuid-baseline-Cascadelake+Skylake-IBRS.xml | 1 + tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake.xml | 1 + .../x86_64-cpuid-baseline-Cooperlake+Cascadelake.xml | 1 + tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Icelake.xml | 1 + .../cputestdata/x86_64-cpuid-baseline-Skylake-Client+Server.xml | 1 + tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 + tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 + .../cpu-Icelake-Server-pconfig.x86_64-latest.args | 2 +- .../cpu-host-model-fallback-kvm.x86_64-4.2.0.args | 2 +- .../cpu-host-model-fallback-kvm.x86_64-5.0.0.args | 2 +- tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-4.2.0.args | 2 +- tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-5.0.0.args | 2 +- .../cpu-host-model-nofallback-kvm.x86_64-4.2.0.args | 2 +- .../cpu-host-model-nofallback-kvm.x86_64-5.0.0.args | 2 +- 66 files changed, 66 insertions(+), 17 deletions(-) diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml index 056f43d088..8c4cbf9c9a 100644 --- a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml +++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml @@ -39,7 +39,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Cascadelake-Server.xml b/src/cpu_map/x86_Cascadelake-Server.xml index 88e51c2067..c7c4f6412f 100644 --- a/src/cpu_map/x86_Cascadelake-Server.xml +++ b/src/cpu_map/x86_Cascadelake-Server.xml @@ -40,7 +40,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml index 072f8145c4..caba24ab35 100644 --- a/src/cpu_map/x86_Icelake-Server-noTSX.xml +++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml @@ -46,7 +46,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Icelake-Server.xml b/src/cpu_map/x86_Icelake-Server.xml index 3a35145d7f..5a864b2fad 100644 --- a/src/cpu_map/x86_Icelake-Server.xml +++ b/src/cpu_map/x86_Icelake-Server.xml @@ -47,7 +47,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Skylake-Client-IBRS.xml b/src/cpu_map/x86_Skylake-Client-IBRS.xml index 1c77f9595b..f36a8bd210 100644 --- a/src/cpu_map/x86_Skylake-Client-IBRS.xml +++ b/src/cpu_map/x86_Skylake-Client-IBRS.xml @@ -37,7 +37,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml index dca117028c..5150117db4 100644 --- a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml +++ b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml @@ -36,7 +36,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Skylake-Client.xml b/src/cpu_map/x86_Skylake-Client.xml index 68e5d2d038..061c0dfaec 100644 --- a/src/cpu_map/x86_Skylake-Client.xml +++ b/src/cpu_map/x86_Skylake-Client.xml @@ -37,7 +37,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Skylake-Server-IBRS.xml b/src/cpu_map/x86_Skylake-Server-IBRS.xml index e467b76242..bbd3c8998e 100644 --- a/src/cpu_map/x86_Skylake-Server-IBRS.xml +++ b/src/cpu_map/x86_Skylake-Server-IBRS.xml @@ -38,7 +38,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml index b8601da0cb..ee0d2a2fa3 100644 --- a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml +++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml @@ -37,7 +37,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/src/cpu_map/x86_Skylake-Server.xml b/src/cpu_map/x86_Skylake-Server.xml index cc1e9ddd7f..9d9d112d40 100644 --- a/src/cpu_map/x86_Skylake-Server.xml +++ b/src/cpu_map/x86_Skylake-Server.xml @@ -38,7 +38,7 @@ <feature name='mce'/> <feature name='mmx'/> <feature name='movbe'/> - <feature name='mpx'/> + <feature name='mpx' removed='yes'/> <feature name='msr'/> <feature name='mtrr'/> <feature name='nx'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-6600-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i5-6600-guest.xml index 4cc7ca2d90..2f8cd224ac 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i5-6600-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i5-6600-guest.xml @@ -18,6 +18,7 @@ <feature policy='require' name='tm'/> <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-6600-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i5-6600-host.xml index 52ae60e86c..19bfe83420 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i5-6600-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i5-6600-host.xml @@ -20,6 +20,7 @@ <feature name='tm'/> <feature name='pbe'/> <feature name='tsc_adjust'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i5-6600-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i5-6600-json.xml index 8c505d0d8f..6210b374d1 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i5-6600-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i5-6600-json.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='xsaves'/> <feature policy='require' name='pdpe1gb'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-guest.xml index fa81abf661..2fa57c5341 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-guest.xml @@ -19,6 +19,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='stibp'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-host.xml index 949e8de327..88ef022243 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-host.xml @@ -21,6 +21,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='sgx'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='stibp'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml index a0f4bc07bb..1f3d7d2114 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml @@ -5,6 +5,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='ssbd'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7700-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7700-guest.xml index 073b099b76..c19c773446 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7700-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7700-guest.xml @@ -19,6 +19,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7700-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7700-host.xml index 47294064f2..7925f195c8 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7700-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7700-host.xml @@ -21,6 +21,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='sgx'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7700-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7700-json.xml index f797656851..778bb32977 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-7700-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7700-json.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='pdpe1gb'/> </cpu> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml index bbf4ad6c60..9ee8103b22 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml @@ -18,6 +18,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml index e93b04aabd..11e36e2e4c 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml @@ -20,6 +20,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='sgx'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml index 685a3aa7e3..5f7b2b49c4 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml @@ -5,6 +5,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8700-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8700-guest.xml index e1c1311bc2..cacd587f13 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8700-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8700-guest.xml @@ -19,6 +19,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='sgxlc'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8700-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8700-host.xml index 6eb860d82a..3ca7e1c548 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8700-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8700-host.xml @@ -21,6 +21,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='sgx'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='sgxlc'/> diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8700-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8700-json.xml index 02c671e5f1..94207c0844 100644 --- a/tests/cputestdata/x86_64-cpuid-Core-i7-8700-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8700-json.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='ssbd'/> diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml index 77d66956f1..fe293599ef 100644 --- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml @@ -21,6 +21,7 @@ <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> <feature policy='require' name='cmt'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='avx512ifma'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='sha-ni'/> diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml index 6cb3a28910..1519793fca 100644 --- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml @@ -23,6 +23,7 @@ <feature name='tsc_adjust'/> <feature name='sgx'/> <feature name='cmt'/> + <feature name='mpx'/> <feature name='avx512ifma'/> <feature name='intel-pt'/> <feature name='sha-ni'/> diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-json.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-json.xml index 2eded58846..d3edbdaafd 100644 --- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-json.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='avx512ifma'/> <feature policy='require' name='sha-ni'/> <feature policy='require' name='stibp'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml index 43038faac3..628ac411fb 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-guest.xml @@ -19,6 +19,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml index be752ae794..a0dd29c89b 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-host.xml @@ -21,6 +21,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='sgx'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml index 9ff862a51b..f82be521cf 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1225-v5-json.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='md-clear'/> <feature policy='require' name='stibp'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-guest.xml index 073b099b76..c19c773446 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-guest.xml @@ -19,6 +19,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='sgx'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-host.xml index 50890d7006..4053f2f9f1 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-host.xml @@ -21,6 +21,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='sgx'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-json.xml index df83cf79a0..00af0786f4 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-E3-1245-v5-json.xml @@ -5,6 +5,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='xsaves'/> <feature policy='require' name='pdpe1gb'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-guest.xml index d0fdec7691..4f5922a7cf 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-guest.xml @@ -20,6 +20,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='cmt'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-host.xml index bbf82dfd9f..377b484751 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-host.xml @@ -22,6 +22,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='cmt'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-json.xml index e92cfaba48..7bb673be4f 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-5115-json.xml @@ -4,5 +4,6 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> </cpu> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml index 4a42d170c2..814eca886d 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml @@ -20,6 +20,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='cmt'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-host.xml index 44a0e1a30f..f8cdd53f42 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-host.xml @@ -22,6 +22,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='cmt'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml index a1b79e7e18..78b2177399 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml @@ -5,6 +5,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-guest.xml index 4b2d012e72..5fdf6e8297 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-guest.xml @@ -20,6 +20,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='cmt'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-host.xml index 2959878fe6..29900eb28e 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-host.xml @@ -22,6 +22,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='cmt'/> + <feature name='mpx'/> <feature name='clflushopt'/> <feature name='intel-pt'/> <feature name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-json.xml index ccf9875dc9..bb17aa5cfa 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6148-json.xml @@ -4,5 +4,6 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> </cpu> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml index d707faf63d..cd504f5b74 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml @@ -20,6 +20,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='cmt'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='pku'/> <feature policy='require' name='ospke'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml index 6cb65b2a90..28e428aeb8 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml @@ -22,6 +22,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='cmt'/> + <feature name='mpx'/> <feature name='intel-pt'/> <feature name='pku'/> <feature name='ospke'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml index d8ac5f373f..637daa0f5c 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> <feature policy='require' name='xsaves'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-guest.xml index f86d2889c6..1abecfb508 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-guest.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-guest.xml @@ -20,6 +20,7 @@ <feature policy='require' name='pbe'/> <feature policy='require' name='tsc_adjust'/> <feature policy='require' name='cmt'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='intel-pt'/> <feature policy='require' name='pku'/> <feature policy='require' name='ospke'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-host.xml index 7289d4cda5..a0bdd7f87d 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-host.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-host.xml @@ -22,6 +22,7 @@ <feature name='pbe'/> <feature name='tsc_adjust'/> <feature name='cmt'/> + <feature name='mpx'/> <feature name='intel-pt'/> <feature name='pku'/> <feature name='ospke'/> diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml index bd187b3d72..46faf74879 100644 --- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml +++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml @@ -5,6 +5,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> <feature policy='require' name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Icelake.xml b/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Icelake.xml index bdc005acc5..16fc6343d2 100644 --- a/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Icelake.xml +++ b/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Icelake.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> <feature policy='require' name='stibp'/> diff --git a/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake-IBRS.xml b/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake-IBRS.xml index 28992ac163..35ce262c58 100644 --- a/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake-IBRS.xml +++ b/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake-IBRS.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> diff --git a/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake.xml b/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake.xml index 98b1c48e70..e28b5223d6 100644 --- a/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake.xml +++ b/tests/cputestdata/x86_64-cpuid-baseline-Cascadelake+Skylake.xml @@ -4,5 +4,6 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> </cpu> diff --git a/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Cascadelake.xml b/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Cascadelake.xml index 833de33a2d..bd28239199 100644 --- a/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Cascadelake.xml +++ b/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Cascadelake.xml @@ -5,6 +5,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> <feature policy='require' name='md-clear'/> diff --git a/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Icelake.xml b/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Icelake.xml index bdc005acc5..16fc6343d2 100644 --- a/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Icelake.xml +++ b/tests/cputestdata/x86_64-cpuid-baseline-Cooperlake+Icelake.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='umip'/> <feature policy='require' name='pku'/> <feature policy='require' name='stibp'/> diff --git a/tests/cputestdata/x86_64-cpuid-baseline-Skylake-Client+Server.xml b/tests/cputestdata/x86_64-cpuid-baseline-Skylake-Client+Server.xml index 34331b0f15..8054f36408 100644 --- a/tests/cputestdata/x86_64-cpuid-baseline-Skylake-Client+Server.xml +++ b/tests/cputestdata/x86_64-cpuid-baseline-Skylake-Client+Server.xml @@ -4,6 +4,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='pdpe1gb'/> </cpu> diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml index 5ac1c405f2..c42a20763f 100644 --- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml @@ -48,6 +48,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml index 7b13d3ba3a..27199ff0c5 100644 --- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml @@ -47,6 +47,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml index edc36e2a84..a4db647efc 100644 --- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml @@ -48,6 +48,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml index 7fe44b5e97..56b94b1ea0 100644 --- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml @@ -47,6 +47,7 @@ <feature policy='require' name='hypervisor'/> <feature policy='require' name='ss'/> <feature policy='require' name='tsc_adjust'/> + <feature policy='require' name='mpx'/> <feature policy='require' name='clflushopt'/> <feature policy='require' name='umip'/> <feature policy='require' name='md-clear'/> diff --git a/tests/qemuxmlconfdata/cpu-Icelake-Server-pconfig.x86_64-latest.args b/tests/qemuxmlconfdata/cpu-Icelake-Server-pconfig.x86_64-latest.args index c841bb80c8..dc4a503dba 100644 --- a/tests/qemuxmlconfdata/cpu-Icelake-Server-pconfig.x86_64-latest.args +++ b/tests/qemuxmlconfdata/cpu-Icelake-Server-pconfig.x86_64-latest.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-test/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-test/master-key.aes"}' \ -machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \ -accel kvm \ --cpu Icelake-Server,intel-pt=off \ +-cpu Icelake-Server,intel-pt=off,mpx=off \ -m size=219136k \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ -overcommit mem-lock=off \ diff --git a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-4.2.0.args b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-4.2.0.args index 52d2ac7b33..292b1cefbb 100644 --- a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-4.2.0.args +++ b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-4.2.0.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \ -machine pc-i440fx-4.2,usb=off,dump-guest-core=off \ -accel kvm \ --cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ +-cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,mpx=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ -m size=219136k \ -overcommit mem-lock=off \ -smp 6,sockets=6,cores=1,threads=1 \ diff --git a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-5.0.0.args b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-5.0.0.args index ca8bff1080..85f71dbd68 100644 --- a/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-5.0.0.args +++ b/tests/qemuxmlconfdata/cpu-host-model-fallback-kvm.x86_64-5.0.0.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \ -machine pc-i440fx-5.0,usb=off,dump-guest-core=off \ -accel kvm \ --cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ +-cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,mpx=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ -m size=219136k \ -overcommit mem-lock=off \ -smp 6,sockets=6,cores=1,threads=1 \ diff --git a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-4.2.0.args b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-4.2.0.args index 42619fdff3..38f5debb79 100644 --- a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-4.2.0.args +++ b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-4.2.0.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \ -machine pc-q35-4.2,usb=off,dump-guest-core=off \ -accel kvm \ --cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ +-cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,mpx=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ -m size=219136k \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ diff --git a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-5.0.0.args b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-5.0.0.args index baceda1d3d..4442dfe011 100644 --- a/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-5.0.0.args +++ b/tests/qemuxmlconfdata/cpu-host-model-kvm.x86_64-5.0.0.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \ -machine pc-q35-5.0,usb=off,dump-guest-core=off \ -accel kvm \ --cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ +-cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,mpx=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ -m size=219136k \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ diff --git a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-4.2.0.args b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-4.2.0.args index 52d2ac7b33..292b1cefbb 100644 --- a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-4.2.0.args +++ b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-4.2.0.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \ -machine pc-i440fx-4.2,usb=off,dump-guest-core=off \ -accel kvm \ --cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ +-cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,mpx=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ -m size=219136k \ -overcommit mem-lock=off \ -smp 6,sockets=6,cores=1,threads=1 \ diff --git a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-5.0.0.args b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-5.0.0.args index ca8bff1080..85f71dbd68 100644 --- a/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-5.0.0.args +++ b/tests/qemuxmlconfdata/cpu-host-model-nofallback-kvm.x86_64-5.0.0.args @@ -12,7 +12,7 @@ XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes \ -machine pc-i440fx-5.0,usb=off,dump-guest-core=off \ -accel kvm \ --cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ +-cpu Skylake-Client-IBRS,vmx=on,hypervisor=on,ss=on,tsc-adjust=on,mpx=on,clflushopt=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaves=on,pdpe1gb=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,vmx-ins-outs=on,vmx-true-ctls=on,vmx-store-lma=on,vmx-activity-hlt=on,vmx-vmwrite-vmexit-fields=on,vmx-apicv-xapic=on,vmx-ept=on,vmx-desc-exit=on,vmx-rdtscp-exit=on,vmx-apicv-x2apic=on,vmx-vpid=on,vmx-wbinvd-exit=on,vmx-unrestricted-guest=on,vmx-rdrand-exit=on,vmx-invpcid-exit=on,vmx-vmfunc=on,vmx-shadow-vmcs=on,vmx-rdseed-exit=on,vmx-pml=on,vmx-xsaves=on,vmx-ept-execonly=on,vmx-page-walk-4=on,vmx-ept-2mb=on,vmx-ept-1gb=on,vmx-invept=on,vmx-eptad=on,vmx-invept-single-context=on,vmx-invept-all-context=on,vmx-invvpid=on,vmx-invvpid-single-addr=on,vmx-invvpid-all-context=on,vmx-intr-exit=on,vmx-nmi-exit=on,vmx-vnmi=on,vmx-preemption-timer=on,vmx-vintr-pending=on,vmx-tsc-offset=on,vmx-hlt-exit=on,vmx-invlpg-exit=on,vmx-mwait-exit=on,vmx-rdpmc-exit=on,vmx-rdtsc-exit=on,vmx-cr3-load-noexit=on,vmx-cr3-store-noexit=on,vmx-cr8-load-exit=on,vmx-cr8-store-exit=on,vmx-flexpriority=on,vmx-vnmi-pending=on,vmx-movdr-exit=on,vmx-io-exit=on,vmx-io-bitmap=on,vmx-mtf=on,vmx-msr-bitmap=on,vmx-monitor-exit=on,vmx-pause-exit=on,vmx-secondary-ctls=on,vmx-exit-nosave-debugctl=on,vmx-exit-ack-intr=on,vmx-exit-save-pat=on,vmx-exit-load-pat=on,vmx-exit-save-efer=on,vmx-exit-load-efer=on,vmx-exit-save-preemption-timer=on,vmx-entry-noload-debugctl=on,vmx-entry-ia32e-mode=on,vmx-entry-load-pat=on,vmx-entry-load-efer=on,vmx-eptp-switching=on \ -m size=219136k \ -overcommit mem-lock=off \ -smp 6,sockets=6,cores=1,threads=1 \ -- 2.44.0

On a Monday in 2024, Jiri Denemark wrote:
See 3/4 for details.
Jiri Denemark (3): conf: Change return value of some CPU feature APIs cpu: Add removedPolicy parameter to virCPUUpdate qemu: Enable removing features from CPU models
Tim Wiederhake (1): cpu_map: Drop 'mpx' from x86 cpu models
src/conf/cpu_conf.c | 12 +-- [...] .../cpu-host-model-kvm.x86_64-5.0.0.args | 2 +- ...ost-model-nofallback-kvm.x86_64-4.2.0.args | 2 +- ...ost-model-nofallback-kvm.x86_64-5.0.0.args | 2 +- 80 files changed, 174 insertions(+), 97 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Jiri Denemark
-
Ján Tomko