
When a domain starts we need to check what CPU features were enabled and if any of the features we asked for were disabled. Currently this requires more than 470 QMP commands (and the number is growing everytime QEMU adds a new feature or other property to the CPU object). Thanks to a new qom-list-get QMP command introduced by QEMU 7.1 we can replace all those commands with just a single one. On my host using a minimal domain with no devices the startup time went down to about 200 ms from 400 ms before this series. Jiri Denemark (14): qemu: Drop legacy probing of CPU features tests: Add a test for qemuMonitorJSONGetGuestCPU tests: Test qemuMonitorJSONGetGuestCPU with empty unavailable-features qemu: Generalize filtering in qemuMonitorJSONParsePropsList qemu: Move feature filtering to qemuMonitorJSONGetCPUProperties qemu: Parse properties list from any JSON array qemu: Use qom-list-get for checking enabled CPU features tests: Test qemuMonitorJSONGetGuestCPU with qom-get-list qemu: Add qemuMonitorJSONCPUDataAddFeatures helper qemu: Merge qemuMonitorJSONGetCPUData in qemuMonitorJSONGetGuestCPU qemu: Always fetch disabled features in qemuMonitorJSONGetGuestCPU qemu: Merge qemuMonitorJSONGetCPUDataDisabled in qemuMonitorJSONGetGuestCPU qemu: Let qemuMonitorJSONGetCPUProperties also return disabled features qemu: Don't query unavailable-features if qom-list-get is supported src/qemu/qemu_capabilities.c | 2 + src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_monitor.c | 43 +- src/qemu/qemu_monitor.h | 6 +- src/qemu/qemu_monitor_json.c | 383 +- src/qemu/qemu_monitor_json.h | 7 +- src/qemu/qemu_process.c | 20 +- .../caps_10.1.0_x86_64.xml | 1 + .../caps_10.2.0_x86_64.xml | 1 + .../get-guest-cpu-SierraForest-disabled.xml | 7 + .../get-guest-cpu-SierraForest-enabled.xml | 9 + .../get-guest-cpu-SierraForest-legacy.json | 8680 +++++++++++++++++ .../get-guest-cpu-SierraForest.json | 2962 ++++++ .../get-guest-cpu-SkylakeClient-disabled.xml | 2 + ...> get-guest-cpu-SkylakeClient-enabled.xml} | 10 +- .../get-guest-cpu-SkylakeClient-legacy.json | 8671 ++++++++++++++++ .../get-guest-cpu-SkylakeClient.json | 2953 ++++++ .../qemumonitorjson-getcpu-ecx.json | 57 - .../qemumonitorjson-getcpu-full.data | 5 - .../qemumonitorjson-getcpu-full.json | 46 - .../qemumonitorjson-getcpu-host.data | 6 - .../qemumonitorjson-getcpu-host.json | 45 - tests/qemumonitorjsontest.c | 191 +- 23 files changed, 23532 insertions(+), 576 deletions(-) create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SierraForest-disabled.xml create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SierraForest-enabled.xml create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SierraForest-legacy.json create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SierraForest.json create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SkylakeClient-disabled.xml rename tests/qemumonitorjsondata/{qemumonitorjson-getcpu-ecx.data => get-guest-cpu-SkylakeClient-enabled.xml} (53%) create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SkylakeClient-legacy.json create mode 100644 tests/qemumonitorjsondata/get-guest-cpu-SkylakeClient.json delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-ecx.json delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-full.data delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-full.json delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-host.data delete mode 100644 tests/qemumonitorjsondata/qemumonitorjson-getcpu-host.json -- 2.51.0