Just sending a friendly "ping" to have this series reviewed please. Thank you! On 10/1/26 10:36 PM, Rorie Reyes wrote:
This series extends the qemu-cpu-model-comparison QMP interface in libvirt to surface the "responsible-properties" array returned by QEMU, and uses that information to perform a pre-flight CPU compatibility check on s390x before an incoming migration is accepted.
Background ---------- On x86, QEMU rejects an incompatible CPU model at domain start time and produces a meaningful error. On s390x the guest starts successfully but may fail later in an opaque way if the destination host lacks required CPU features. This series brings s390x in line with x86 by catching the incompatibility early, aborting the migration cleanly, and reporting exactly which CPU properties are responsible.
Functional Test Instructions ----------------------------- Prerequisites: - Two s390x hosts (source and destination) with different CPU feature levels from the same generation lineage (e.g. z16 and z17). - libvirt and QEMU built from this series on both hosts. - QEMU must support the query-cpu-model-comparison QMP command (QEMU >= 5.1).
Test case 1 — Incompatible CPU model is rejected cleanly: 1. Define a guest on the source host using a custom s390x CPU model that includes features not present on the destination host. 2. Initiate a live migration to the destination host:
virsh migrate --live <domain> qemu+ssh://dest-host/system
3. Expected result: migration fails immediately with a clear libvirt error before QEMU starts on the destination, e.g.:
error: operation failed: guest CPU model is a newer generation than the destination host CPU model
or, for a feature-level mismatch within the same generation:
error: operation failed: destination host CPU model is missing features required by the guest CPU model: <prop1>, <prop2>
4. Verify the guest is still running cleanly on the source host:
virsh domstate <domain> # should report: running
Test case 2 — Compatible CPU model migrates successfully: 1. Define a guest using a CPU model fully supported by the destination (e.g. gen16a-base guest migrating to a gen17 host). 2. Initiate the same live migration. 3. Expected result: migration completes successfully with no errors.
Rorie Reyes (4): qemu: extend GetCPUModelComparison to return responsible-properties qemu: propagate responsibleProps parameter through monitor layer qemu: introduce qemuProcessCPUModelComparison helper qemu: check CPU model compatibility on s390x before incoming migration
src/qemu/qemu_driver.c | 20 ++--- src/qemu/qemu_migration.c | 114 +++++++++++++++++++++++++ src/qemu/qemu_monitor.c | 8 +- src/qemu/qemu_monitor.h | 3 +- src/qemu/qemu_monitor_json.c | 26 +++++- src/qemu/qemu_monitor_json.h | 5 +- src/qemu/qemu_process.c | 50 +++++++++++ src/qemu/qemu_process.h | 21 +++++ tests/qemumonitorjsontest.c | 159 +++++++++++++++++++++++++++++++++-- 9 files changed, 381 insertions(+), 25 deletions(-)