This is the output of 'virsh capabilities' on my laptop: <guest> <os_type>hvm</os_type> <arch name='x86_64'> <wordsize>64</wordsize> <emulator>/usr/bin/qemu-system-x86_64</emulator> <machine maxCpus='255'>pc-i440fx-3.0</machine> <machine canonical='pc-i440fx-3.0' maxCpus='255'>pc</machine> <machine maxCpus='288'>pc-q35-3.0</machine> <machine canonical='pc-q35-3.0' maxCpus='288'>q35</machine> <!-- Actually way more machine types listed here --> <domain type='qemu'/> <domain type='kvm'> <emulator>/usr/bin/qemu-kvm</emulator> <machine maxCpus='255'>pc-i440fx-3.0</machine> <machine canonical='pc-i440fx-3.0' maxCpus='255'>pc</machine> <machine maxCpus='288'>pc-q35-3.0</machine> <machine canonical='pc-q35-3.0' maxCpus='288'>q35</machine> <!-- Actually way more machine types listed here --> </domain> </arch> <!-- Other stuff we don't care about --> </guest> Notice how all machine types are listed twice, and how we report that qemu-system-x86_64 for TCG guests qemu-kvm must be used for KVM guests - which is inaccurate, since the former can run KVM guests just fine. After this series, the output is much more reasonable: <guest> <os_type>hvm</os_type> <arch name='x86_64'> <wordsize>64</wordsize> <emulator>/usr/bin/qemu-system-x86_64</emulator> <machine maxCpus='255'>pc-i440fx-3.0</machine> <machine canonical='pc-i440fx-3.0' maxCpus='255'>pc</machine> <machine maxCpus='288'>pc-q35-3.0</machine> <machine canonical='pc-q35-3.0' maxCpus='288'>q35</machine> <!-- Actually way more machine types listed here --> <domain type='qemu'/> <domain type='kvm'/> </arch> <!-- Other stuff we don't care about --> </guest> As a bonus the code gets *simpler* in the process instead of more complicated, and we even get to shave off ~100 lines! Yay! Andrea Bolognani (11): qemu: Move comments to virQEMUCapsGuestIsNative() qemu: Don't duplicate binary name in capabilities qemu: Move armv7l-on-aarch64 special case qemu: Stop looking after finding the first binary qemu: Expect a single binary in virQEMUCapsInitGuest() qemu: Remove unnecessary variables qemu: Don't look for "qemu-kvm" and "kvm" binaries qemu: Simplify QEMU binary search qemu: Rename qemubinCaps => qemuCaps qemu: Refactor virQEMUCapsCacheLookupByArch() qemu: Prefer qemu-system-* binaries src/qemu/qemu_capabilities.c | 170 +++++++----------- src/qemu/qemu_capabilities.h | 4 +- .../qemucaps2xmloutdata/caps_1.5.3.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_1.6.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_1.7.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.1.1.x86_64.xml | 4 +- .../caps_2.10.0.aarch64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.10.0.ppc64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.10.0.s390x.xml | 4 +- .../caps_2.10.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.11.0.s390x.xml | 4 +- .../caps_2.11.0.x86_64.xml | 4 +- .../caps_2.12.0.aarch64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.12.0.ppc64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.12.0.s390x.xml | 4 +- .../caps_2.12.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.4.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.5.0.x86_64.xml | 4 +- .../caps_2.6.0.aarch64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.6.0.ppc64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.6.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.7.0.s390x.xml | 4 +- .../qemucaps2xmloutdata/caps_2.7.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.8.0.s390x.xml | 4 +- .../qemucaps2xmloutdata/caps_2.8.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.9.0.ppc64.xml | 4 +- .../qemucaps2xmloutdata/caps_2.9.0.s390x.xml | 4 +- .../qemucaps2xmloutdata/caps_2.9.0.x86_64.xml | 4 +- .../qemucaps2xmloutdata/caps_3.0.0.ppc64.xml | 4 +- .../qemucaps2xmloutdata/caps_3.0.0.x86_64.xml | 4 +- tests/qemucaps2xmltest.c | 2 - 31 files changed, 97 insertions(+), 191 deletions(-) -- 2.17.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list