This is a followup to https://www.redhat.com/archives/libvir-list/2012-September/msg00643.html As of QEMU 1.2 libvirt is supposed to stop parsing -help and instead use various QMP commands to detect capabilities. Before we can do this, the current QEMU capabilities code needs a serious cleanup and some refactoring. The first half of this series does that major preparation work, and the rest adds the new monitor commands and finally uses them to detect capabilities. Currently we consider "capabilities" to just refer to flags we detect from -help. This series expands to cover all the things we detect from QEMU, specifically including machine types, CPU definitions and architecture. It introduces a single object to track all this data and a centralized caching mechanism so we never re-query data we already have somewhere. b/src/conf/capabilities.h | 1 b/src/qemu/qemu_capabilities.c | 1813 ++++++---- b/src/qemu/qemu_capabilities.h | 47 b/src/qemu/qemu_command.c | 113 b/src/qemu/qemu_command.h | 6 b/src/qemu/qemu_conf.h | 2 b/src/qemu/qemu_driver.c | 211 - b/src/qemu/qemu_monitor.c | 197 + b/src/qemu/qemu_monitor.h | 42 b/src/qemu/qemu_monitor_json.c | 707 +++ b/src/qemu/qemu_monitor_json.h | 36 b/src/qemu/qemu_process.c | 26 b/tests/qemuhelptest.c | 2 b/tests/qemumonitorjsontest.c | 303 + b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-disabled.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-disabled.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-enabled.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-eoi-enabled.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2-nofallback.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-kvmclock.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model-fallback.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model-fallback.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model-nofallback.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-model.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-passthrough.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-host-passthrough.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-kvmclock.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-kvmclock.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-nofallback.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa1.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa1.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa2.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-numa2.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-qemu-host-passthrough.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology1.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology1.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology2.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology2.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology3.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-cpu-topology3.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-eoi-disabled.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-eoi-disabled.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-eoi-enabled.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-eoi-enabled.xml | 2 b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.args | 2 b/tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-timeout.xml | 2 b/tests/qemuxml2argvtest.c | 66 b/tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-timeout.xml | 2 b/tests/qemuxmlnstest.c | 7 tests/qemuxml2argvdata/qemu-lib.sh | 50 tests/qemuxml2argvdata/qemu-supported-cpus.sh | 15 tests/qemuxml2argvdata/qemu.sh | 15 67 files changed, 2499 insertions(+), 1256 deletions(-) -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list