diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b52e25a072..972f3e24ee 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6756,11 +6756,21 @@ virQEMUCapsStripMachineAliasesForVirtType(virQEMUCaps *qemuCaps,
for (i = 0; i < accel->nmachineTypes; i++) {
virQEMUCapsMachineType *mach = &accel->machineTypes[i];
- g_autofree char *name = g_steal_pointer(&mach->alias);
- if (name) {
- virQEMUCapsAddMachine(qemuCaps, virtType, name, NULL, mach->defaultCPU,
- mach->maxCpus, mach->hotplugCpus, mach->qemuDefault,
+ if (mach->alias) {
+ g_autofree char *origName = g_steal_pointer(&mach->name);
+
+ /* The preferred machine type, which is generally the default by qemu
+ * in most cases but also generally an alias needs to be kept at the
+ * first entry in the list, because virQEMUCapsGetPreferredMachine
+ * picks the first element. Thus we create a new entry for the
+ * original machine name and replace the existing one by the alias. */
+ mach->name = g_steal_pointer(&mach->alias);
+
+ /* also de-assert the copy's default flag, to ensure we don't have multiple
+ * machines with it */
+ virQEMUCapsAddMachine(qemuCaps, virtType, origName, NULL, mach->defaultCPU,
+ mach->maxCpus, mach->hotplugCpus, false,
mach->numaMemSupported, mach->defaultRAMid,
mach->deprecated, mach->acpi);
}
@@ -6778,6 +6788,9 @@ virQEMUCapsStripMachineAliasesForVirtType(virQEMUCaps *qemuCaps,
*
* Remove all aliases so that the tests depending on the latest capabilities
* file can be stable when new files are added.
+ *
+ * Additionally if a machine type is default, only the copy created for the
+ * alias will be kept as default to eliminate churn in output files.
*/
void
virQEMUCapsStripMachineAliases(virQEMUCaps *qemuCaps)
diff --git a/tests/qemuxml2xmloutdata/default-kvm-host-arch.x86_64-latest.xml b/tests/qemuxml2xmloutdata/default-kvm-host-arch.x86_64-latest.xml
index a9de07d41c..c5f03ff2c1 100644
--- a/tests/qemuxml2xmloutdata/default-kvm-host-arch.x86_64-latest.xml
+++ b/tests/qemuxml2xmloutdata/default-kvm-host-arch.x86_64-latest.xml
@@ -5,7 +5,7 @@
4194304
4
- hvm
+ hvm
diff --git a/tests/qemuxml2xmloutdata/default-qemu-host-arch.x86_64-latest.xml b/tests/qemuxml2xmloutdata/default-qemu-host-arch.x86_64-latest.xml
index 37673010f6..36ed26c473 100644
--- a/tests/qemuxml2xmloutdata/default-qemu-host-arch.x86_64-latest.xml
+++ b/tests/qemuxml2xmloutdata/default-qemu-host-arch.x86_64-latest.xml
@@ -5,7 +5,7 @@
4194304
4
- hvm
+ hvm