diff --git a/libvirt.spec b/libvirt.spec index 10d96fc6ec06d46b0ff643e8bc8db6fd97751ab6..37e39f8b33a67bc194907bad143570becfdfe853 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -101,7 +101,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 6.2.0 -Release: 32 +Release: 33 License: LGPLv2+ URL: https://libvirt.org/ @@ -215,6 +215,14 @@ Patch0102: testCompareXMLToArgv-Split-out-preparation-and-comma.patch Patch0103: virQEMUBuildNetdevCommandlineFromJSON-Prepare-for-qu.patch Patch0104: qemu-Prepare-for-testing-of-netdev_add-props-via-qem.patch Patch0105: qemuxml2argvtest-Add-QAPI-QMP-schema-validation-for-.patch +Patch0106: qemu-Probe-for-a-few-params-supported-by-migrate-set.patch +Patch0107: qemu-Avoid-deprecated-migrate_set_speed-QMP-command.patch +Patch0108: qemu-Avoid-deprecated-migrate_set_downtime-QMP-comma.patch +Patch0109: qemu-Avoid-deprecated-query-migrate-cache-size-QMP-c.patch +Patch0110: qemu-Avoid-deprecated-migrate-set-cache-size-QMP-com.patch +Patch0111: qemu-Track-numa-mem-supported-machine-attribute.patch +Patch0112: qemuBuildNumaArgStr-Switch-order-of-if-and-for.patch +Patch0113: qemuBuildNumaArgStr-Use-modern-numa-memdev-if-old-nu.patch Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon-config-network = %{version}-%{release} @@ -1949,6 +1957,16 @@ exit 0 %changelog +* Fri Mar 11 2022 yezengruan +- qemu: Probe for a few params supported by migrate-set-parameters +- qemu: Avoid deprecated migrate_set_speed QMP command +- qemu: Avoid deprecated migrate_set_downtime QMP command +- qemu: Avoid deprecated query-migrate-cache-size QMP command +- qemu: Avoid deprecated migrate-set-cache-size QMP command +- qemu: Track numa-mem-supported machine attribute +- qemuBuildNumaArgStr: Switch order of if() and for() +- qemuBuildNumaArgStr: Use modern -numa memdev= if old -numa mem= is unsupported + * Mon Feb 21 2022 imxcc - virQEMUBuildCommandLineJSON: Allow skipping certain keys - virQEMUBuildCommandLineJSON: Add possibility for using 'on/off' instead of 'yes/no' @@ -1972,13 +1990,13 @@ exit 0 * Sat Feb 12 2022 imxcc - hotpatch: virsh support autoload mode -* Fri Jun 29 2022 imxcc +* Fri Jan 29 2022 imxcc - Revert "tests: disabale storage tests" -* Fri Jun 14 2022 imxcc +* Fri Jan 14 2022 imxcc - tests: disabale storage tests -* Tue Jun 11 2022 imxcc +* Tue Jan 11 2022 imxcc - docs: build: Don't include stylesheet in intermediate html - tests: Replace deprecated ASN1 code diff --git a/qemu-Avoid-deprecated-migrate-set-cache-size-QMP-com.patch b/qemu-Avoid-deprecated-migrate-set-cache-size-QMP-com.patch new file mode 100644 index 0000000000000000000000000000000000000000..84b84143837bd384af6fe63a1e43135f7ae528f5 --- /dev/null +++ b/qemu-Avoid-deprecated-migrate-set-cache-size-QMP-com.patch @@ -0,0 +1,81 @@ +From 4fe1ead5da84610bba30cae9315ff38de765711f Mon Sep 17 00:00:00 2001 +From: Jiri Denemark +Date: Wed, 10 Jun 2020 16:13:15 +0200 +Subject: [PATCH 5/8] qemu: Avoid deprecated migrate-set-cache-size QMP command + +The same functionality can be achieved using migrate-set-parameters QMP +command with xbzrle-cache-size parameter. + +https://bugzilla.redhat.com/show_bug.cgi?id=1845012 + +Signed-off-by: Jiri Denemark +Reviewed-by: Peter Krempa +--- + src/qemu/qemu_driver.c | 26 +++++++++++++++++++++----- + src/qemu/qemu_migration_params.c | 3 +-- + 2 files changed, 22 insertions(+), 7 deletions(-) + +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index 1ad33197e0..e7166e4af3 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -14067,7 +14067,9 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom, + virQEMUDriverPtr driver = dom->conn->privateData; + virDomainObjPtr vm; + qemuDomainObjPrivatePtr priv; ++ g_autoptr(qemuMigrationParams) migParams = NULL; + int ret = -1; ++ int rc; + + virCheckFlags(0, -1); + +@@ -14092,13 +14094,27 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom, + goto endjob; + } + +- qemuDomainObjEnterMonitor(driver, vm); +- + VIR_DEBUG("Setting compression cache to %llu B", cacheSize); +- ret = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize); ++ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) { ++ if (!(migParams = qemuMigrationParamsNew())) ++ goto endjob; + +- if (qemuDomainObjExitMonitor(driver, vm) < 0) +- ret = -1; ++ if (qemuMigrationParamsSetULL(migParams, ++ QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, ++ cacheSize) < 0) ++ goto endjob; ++ ++ if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_NONE, ++ migParams) < 0) ++ goto endjob; ++ } else { ++ qemuDomainObjEnterMonitor(driver, vm); ++ rc = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize); ++ if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) ++ goto endjob; ++ } ++ ++ ret = 0; + + endjob: + qemuDomainObjEndJob(driver, vm); +diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c +index 810199370f..6953badcfe 100644 +--- a/src/qemu/qemu_migration_params.c ++++ b/src/qemu/qemu_migration_params.c +@@ -869,8 +869,7 @@ qemuMigrationParamsApply(virQEMUDriverPtr driver, + * qemuMonitorSetMigrationParams to ignore this parameter. + */ + if (migParams->params[xbzrle].set && +- (!priv->job.migParams || +- !priv->job.migParams->params[xbzrle].set)) { ++ !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) { + if (qemuMonitorSetMigrationCacheSize(priv->mon, + migParams->params[xbzrle].value.ull) < 0) + goto cleanup; +-- +2.27.0 + diff --git a/qemu-Avoid-deprecated-migrate_set_downtime-QMP-comma.patch b/qemu-Avoid-deprecated-migrate_set_downtime-QMP-comma.patch new file mode 100644 index 0000000000000000000000000000000000000000..6bab2e21817175dc4165d271f46c0cc7b30bcc19 --- /dev/null +++ b/qemu-Avoid-deprecated-migrate_set_downtime-QMP-comma.patch @@ -0,0 +1,65 @@ +From df9385f88c666783c7ac53800f00e359a4177145 Mon Sep 17 00:00:00 2001 +From: Jiri Denemark +Date: Wed, 10 Jun 2020 16:13:15 +0200 +Subject: [PATCH 3/8] qemu: Avoid deprecated migrate_set_downtime QMP command + +The same functionality can be achieved using migrate-set-parameters QMP +command with downtime-limit parameter. + +https://bugzilla.redhat.com/show_bug.cgi?id=1829543 + +Signed-off-by: Jiri Denemark +Reviewed-by: Peter Krempa +--- + src/qemu/qemu_driver.c | 27 +++++++++++++++++++++++---- + 1 file changed, 23 insertions(+), 4 deletions(-) + +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index 1521bc6b2b..3482dccc43 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -13892,7 +13892,9 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, + virQEMUDriverPtr driver = dom->conn->privateData; + virDomainObjPtr vm; + qemuDomainObjPrivatePtr priv; ++ g_autoptr(qemuMigrationParams) migParams = NULL; + int ret = -1; ++ int rc; + + virCheckFlags(0, -1); + +@@ -13911,10 +13913,27 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, + priv = vm->privateData; + + VIR_DEBUG("Setting migration downtime to %llums", downtime); +- qemuDomainObjEnterMonitor(driver, vm); +- ret = qemuMonitorSetMigrationDowntime(priv->mon, downtime); +- if (qemuDomainObjExitMonitor(driver, vm) < 0) +- ret = -1; ++ ++ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_DOWNTIME)) { ++ if (!(migParams = qemuMigrationParamsNew())) ++ goto endjob; ++ ++ if (qemuMigrationParamsSetULL(migParams, ++ QEMU_MIGRATION_PARAM_DOWNTIME_LIMIT, ++ downtime) < 0) ++ goto endjob; ++ ++ if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_NONE, ++ migParams) < 0) ++ goto endjob; ++ } else { ++ qemuDomainObjEnterMonitor(driver, vm); ++ rc = qemuMonitorSetMigrationDowntime(priv->mon, downtime); ++ if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) ++ goto endjob; ++ } ++ ++ ret = 0; + + endjob: + qemuDomainObjEndJob(driver, vm); +-- +2.27.0 + diff --git a/qemu-Avoid-deprecated-migrate_set_speed-QMP-command.patch b/qemu-Avoid-deprecated-migrate_set_speed-QMP-command.patch new file mode 100644 index 0000000000000000000000000000000000000000..814f5086ab252159cef07de13355d5c73d5ca745 --- /dev/null +++ b/qemu-Avoid-deprecated-migrate_set_speed-QMP-command.patch @@ -0,0 +1,174 @@ +From d72c84f9369152d0ca69fb201d4ae41ee559a94b Mon Sep 17 00:00:00 2001 +From: Jiri Denemark +Date: Wed, 10 Jun 2020 16:13:15 +0200 +Subject: [PATCH 2/8] qemu: Avoid deprecated migrate_set_speed QMP command + +The same functionality can be achieved using migrate-set-parameters QMP +command with max-bandwidth parameter. + +https://bugzilla.redhat.com/show_bug.cgi?id=1829545 + +Signed-off-by: Jiri Denemark +Reviewed-by: Peter Krempa +--- + src/qemu/qemu_driver.c | 18 ++++++++++--- + src/qemu/qemu_migration.c | 53 +++++++++++++++++++++++++++++++-------- + 2 files changed, 57 insertions(+), 14 deletions(-) + +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index 21e9a8760e..1521bc6b2b 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -14086,6 +14086,7 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, + qemuDomainObjPrivatePtr priv; + bool postcopy = !!(flags & VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY); + g_autoptr(qemuMigrationParams) migParams = NULL; ++ bool bwParam; + unsigned long long max; + int ret = -1; + +@@ -14124,12 +14125,20 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, + + VIR_DEBUG("Setting migration bandwidth to %luMbs", bandwidth); + +- if (postcopy) { ++ bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH); ++ ++ if (postcopy || bwParam) { ++ qemuMigrationParam param; ++ + if (!(migParams = qemuMigrationParamsNew())) + goto endjob; + +- if (qemuMigrationParamsSetULL(migParams, +- QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH, ++ if (postcopy) ++ param = QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH; ++ else ++ param = QEMU_MIGRATION_PARAM_MAX_BANDWIDTH; ++ ++ if (qemuMigrationParamsSetULL(migParams, param, + bandwidth * 1024 * 1024) < 0) + goto endjob; + +@@ -14143,9 +14152,10 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, + rc = qemuMonitorSetMigrationSpeed(priv->mon, bandwidth); + if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) + goto endjob; ++ } + ++ if (!postcopy) + priv->migMaxBandwidth = bandwidth; +- } + + ret = 0; + +diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c +index 1665071eb3..cd40a886e3 100644 +--- a/src/qemu/qemu_migration.c ++++ b/src/qemu/qemu_migration.c +@@ -3507,6 +3507,7 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, + unsigned int cookieFlags = 0; + bool abort_on_error = !!(flags & VIR_MIGRATE_ABORT_ON_ERROR); + bool events = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT); ++ bool bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH); + bool cancel = false; + unsigned int waitFlags; + virDomainDefPtr persistDef = NULL; +@@ -3594,6 +3595,11 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, + goto error; + } + ++ if (bwParam && ++ qemuMigrationParamsSetULL(migParams, QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, ++ migrate_speed * 1024 * 1024) < 0) ++ goto error; ++ + if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, + migParams) < 0) + goto error; +@@ -3656,7 +3662,8 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, + goto exit_monitor; + } + +- if (qemuMonitorSetMigrationSpeed(priv->mon, migrate_speed) < 0) ++ if (!bwParam && ++ qemuMonitorSetMigrationSpeed(priv->mon, migrate_speed) < 0) + goto exit_monitor; + + /* connect to the destination qemu if needed */ +@@ -5311,24 +5318,41 @@ qemuMigrationSrcToFile(virQEMUDriverPtr driver, virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) + { + qemuDomainObjPrivatePtr priv = vm->privateData; ++ bool bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH); + int rc; + int ret = -1; + int pipeFD[2] = { -1, -1 }; + unsigned long saveMigBandwidth = priv->migMaxBandwidth; + char *errbuf = NULL; + virErrorPtr orig_err = NULL; ++ g_autoptr(qemuMigrationParams) migParams = NULL; + + if (qemuMigrationSetDBusVMState(driver, vm) < 0) + return -1; + + /* Increase migration bandwidth to unlimited since target is a file. + * Failure to change migration speed is not fatal. */ +- if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { +- qemuMonitorSetMigrationSpeed(priv->mon, +- QEMU_DOMAIN_MIG_BANDWIDTH_MAX); +- priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; +- if (qemuDomainObjExitMonitor(driver, vm) < 0) ++ if (bwParam) { ++ if (!(migParams = qemuMigrationParamsNew())) ++ return -1; ++ ++ if (qemuMigrationParamsSetULL(migParams, ++ QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, ++ QEMU_DOMAIN_MIG_BANDWIDTH_MAX * 1024 * 1024) < 0) ++ return -1; ++ ++ if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams) < 0) + return -1; ++ ++ priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; ++ } else { ++ if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { ++ qemuMonitorSetMigrationSpeed(priv->mon, ++ QEMU_DOMAIN_MIG_BANDWIDTH_MAX); ++ priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; ++ if (qemuDomainObjExitMonitor(driver, vm) < 0) ++ return -1; ++ } + } + + if (!virDomainObjIsActive(vm)) { +@@ -5409,11 +5433,20 @@ qemuMigrationSrcToFile(virQEMUDriverPtr driver, virDomainObjPtr vm, + virErrorPreserveLast(&orig_err); + + /* Restore max migration bandwidth */ +- if (virDomainObjIsActive(vm) && +- qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { +- qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth); ++ if (virDomainObjIsActive(vm)) { ++ if (bwParam) { ++ if (qemuMigrationParamsSetULL(migParams, ++ QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, ++ saveMigBandwidth * 1024 * 1024) == 0) ++ ignore_value(qemuMigrationParamsApply(driver, vm, asyncJob, ++ migParams)); ++ } else { ++ if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { ++ qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth); ++ ignore_value(qemuDomainObjExitMonitor(driver, vm)); ++ } ++ } + priv->migMaxBandwidth = saveMigBandwidth; +- ignore_value(qemuDomainObjExitMonitor(driver, vm)); + } + + VIR_FORCE_CLOSE(pipeFD[0]); +-- +2.27.0 + diff --git a/qemu-Avoid-deprecated-query-migrate-cache-size-QMP-c.patch b/qemu-Avoid-deprecated-query-migrate-cache-size-QMP-c.patch new file mode 100644 index 0000000000000000000000000000000000000000..3fe24e4ea9acb64aac584369bd34fcc98403b013 --- /dev/null +++ b/qemu-Avoid-deprecated-query-migrate-cache-size-QMP-c.patch @@ -0,0 +1,62 @@ +From c458102192d82a3a8a5f045cd9df34c29b287ab8 Mon Sep 17 00:00:00 2001 +From: Jiri Denemark +Date: Wed, 10 Jun 2020 16:13:15 +0200 +Subject: [PATCH 4/8] qemu: Avoid deprecated query-migrate-cache-size QMP + command + +The same functionality can be achieved using query-migrate-parameters +QMP command and checking the xbzrle-cache-size parameter. + +https://bugzilla.redhat.com/show_bug.cgi?id=1829544 + +Signed-off-by: Jiri Denemark +Reviewed-by: Peter Krempa +--- + src/qemu/qemu_driver.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index 3482dccc43..1ad33197e0 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -14006,7 +14006,9 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom, + virQEMUDriverPtr driver = dom->conn->privateData; + virDomainObjPtr vm; + qemuDomainObjPrivatePtr priv; ++ g_autoptr(qemuMigrationParams) migParams = NULL; + int ret = -1; ++ int rc; + + virCheckFlags(0, -1); + +@@ -14031,12 +14033,23 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom, + goto endjob; + } + +- qemuDomainObjEnterMonitor(driver, vm); ++ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) { ++ if (qemuMigrationParamsFetch(driver, vm, QEMU_ASYNC_JOB_NONE, ++ &migParams) < 0) ++ goto endjob; + +- ret = qemuMonitorGetMigrationCacheSize(priv->mon, cacheSize); ++ if (qemuMigrationParamsGetULL(migParams, ++ QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, ++ cacheSize) < 0) ++ goto endjob; ++ } else { ++ qemuDomainObjEnterMonitor(driver, vm); ++ rc = qemuMonitorGetMigrationCacheSize(priv->mon, cacheSize); ++ if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) ++ goto endjob; ++ } + +- if (qemuDomainObjExitMonitor(driver, vm) < 0) +- ret = -1; ++ ret = 0; + + endjob: + qemuDomainObjEndJob(driver, vm); +-- +2.27.0 + diff --git a/qemu-Probe-for-a-few-params-supported-by-migrate-set.patch b/qemu-Probe-for-a-few-params-supported-by-migrate-set.patch new file mode 100644 index 0000000000000000000000000000000000000000..f4f1cc7c577172cd0b72fc457648671f0c286f74 --- /dev/null +++ b/qemu-Probe-for-a-few-params-supported-by-migrate-set.patch @@ -0,0 +1,589 @@ +From aa0f670f9d558c518a5890cbfa7f969e1d2841aa Mon Sep 17 00:00:00 2001 +From: Jiri Denemark +Date: Wed, 10 Jun 2020 15:09:00 +0200 +Subject: [PATCH 1/8] qemu: Probe for a few params supported by + migrate-set-parameters + +These parameters were originally set via dedicated commands which are +now deprecated. We want to use migrate-set-parameters instead if +possible. + +Signed-off-by: Jiri Denemark +Reviewed-by: Peter Krempa +--- + src/qemu/qemu_capabilities.c | 6 ++++++ + src/qemu/qemu_capabilities.h | 3 +++ + tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 3 +++ + tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 3 +++ + tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 2 ++ + tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 2 ++ + tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml | 3 +++ + tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml | 3 +++ + tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3 +++ + tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 3 +++ + tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 3 +++ + 38 files changed, 108 insertions(+) + +diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c +index 18bf37b569..fb7726235d 100644 +--- a/src/qemu/qemu_capabilities.c ++++ b/src/qemu/qemu_capabilities.c +@@ -571,6 +571,9 @@ VIR_ENUM_IMPL(virQEMUCaps, + + /* 360 */ + "tpm-tis-device", ++ "migration-param.bandwidth", ++ "migration-param.downtime", ++ "migration-param.xbzrle-cache-size", + ); + + +@@ -1451,6 +1454,9 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { + { "blockdev-add/arg-type/+nvme", QEMU_CAPS_DRIVE_NVME }, + { "query-named-block-nodes/arg-type/flat", QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT }, + { "blockdev-snapshot/$allow-write-only-overlay", QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY }, ++ { "migrate-set-parameters/arg-type/max-bandwidth", QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH }, ++ { "migrate-set-parameters/arg-type/downtime-limit", QEMU_CAPS_MIGRATION_PARAM_DOWNTIME }, ++ { "migrate-set-parameters/arg-type/xbzrle-cache-size", QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE }, + }; + + typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps; +diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h +index 8e16fc0e78..0ac92d77c3 100644 +--- a/src/qemu/qemu_capabilities.h ++++ b/src/qemu/qemu_capabilities.h +@@ -552,6 +552,9 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ + + /* 360 */ + QEMU_CAPS_DEVICE_TPM_TIS_DEVICE, /* -device tpm-tis-device */ ++ QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH, /* max-bandwidth field in migrate-set-parameters */ ++ QEMU_CAPS_MIGRATION_PARAM_DOWNTIME, /* downtime-limit field in migrate-set-parameters */ ++ QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, /* xbzrle-cache-size field in migrate-set-parameters */ + + QEMU_CAPS_LAST /* this must always be the last item */ + } virQEMUCapsFlags; +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +index f598b4678a..e253df4077 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +@@ -140,6 +140,8 @@ + + + ++ ++ + 2010000 + 0 + 61700287 +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +index b95a9d42ad..8df611353f 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +@@ -140,6 +140,8 @@ + + + ++ ++ + 2010000 + 0 + 42900287 +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +index 04ac872985..27ce348b80 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +@@ -107,6 +107,8 @@ + + + ++ ++ + 2010000 + 0 + 39100287 +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +index 7ebe97b6ab..368985a611 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +@@ -183,6 +183,8 @@ + + + ++ ++ + 2010000 + 0 + 43100287 +diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +index 6d36a6e484..c5bcf1c818 100644 +--- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +@@ -114,6 +114,9 @@ + + + ++ ++ ++ + 2011000 + 0 + 39100288 +diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +index b8eb3abd40..717ef46f78 100644 +--- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +@@ -189,6 +189,9 @@ + + + ++ ++ ++ + 2011000 + 0 + 43100288 +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +index 64d8d4951c..fbee7661a1 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +@@ -156,6 +156,9 @@ + + + ++ ++ ++ + 2012000 + 0 + 61700289 +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +index 38a3103c4a..31a643f5d1 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +@@ -154,6 +154,9 @@ + + + ++ ++ ++ + 2011090 + 0 + 42900289 +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +index 21a168dd3b..d0ea4d780a 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +@@ -126,6 +126,9 @@ + + + ++ ++ ++ + 2012000 + 0 + 39100289 +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +index 0c30cc75da..3db7162a34 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +@@ -198,6 +198,9 @@ + + + ++ ++ ++ + 2011090 + 0 + 43100289 +diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +index d204b82030..7becf1bfb6 100644 +--- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +@@ -96,6 +96,8 @@ + + + ++ ++ + 2007093 + 0 + 39100246 +diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +index 489b67f99a..2a0b1f61de 100644 +--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +@@ -160,6 +160,8 @@ + + + ++ ++ + 2008000 + 0 + 43100246 +diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +index 3bc6ec8dab..9141e29757 100644 +--- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +@@ -132,6 +132,8 @@ + + + ++ ++ + 2009000 + 0 + 42900247 +diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +index 9a6d94d37b..bcc7d4bd4e 100644 +--- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +@@ -101,6 +101,8 @@ + + + ++ ++ + 2009000 + 0 + 39100247 +diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +index 83fc6cde97..5cd82aa979 100644 +--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +@@ -177,6 +177,8 @@ + + + ++ ++ + 2009000 + 0 + 43100247 +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +index 9a0b9c05c2..6916da2047 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +@@ -156,6 +156,9 @@ + + + ++ ++ ++ + 2012050 + 0 + 42900239 +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +index 6814a2f9c6..802b624073 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +@@ -96,6 +96,9 @@ + + + ++ ++ ++ + 3000000 + 0 + 0 +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +index b81f5825cc..a16db0912d 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +@@ -96,6 +96,9 @@ + + + ++ ++ ++ + 3000000 + 0 + 0 +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +index 85cda12076..6992e10237 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +@@ -129,6 +129,9 @@ + + + ++ ++ ++ + 3000000 + 0 + 39100239 +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +index 517e27d815..9fdfc634ff 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +@@ -204,6 +204,9 @@ + + + ++ ++ ++ + 3000000 + 0 + 43100239 +diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +index 6801023208..4039923e5f 100644 +--- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +@@ -161,6 +161,9 @@ + + + ++ ++ ++ + 3000091 + 0 + 42900240 +diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +index d901715ffc..02fc245fca 100644 +--- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +@@ -207,6 +207,9 @@ + + + ++ ++ ++ + 3000092 + 0 + 43100240 +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +index 6fd1880ae2..278f2d9135 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +@@ -170,6 +170,9 @@ + + + ++ ++ ++ + 4000000 + 0 + 61700240 +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +index f7e69fcc97..897ca08af0 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +@@ -175,6 +175,9 @@ + + + ++ ++ ++ + 4000000 + 0 + 42900240 +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +index 6a567239b9..1993d52d42 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +@@ -171,6 +171,9 @@ + + + ++ ++ ++ + 4000000 + 0 + 0 +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +index d6686b7c68..348138ab5a 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +@@ -171,6 +171,9 @@ + + + ++ ++ ++ + 4000000 + 0 + 0 +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +index 9dc29832f9..1542ed6c68 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +@@ -137,6 +137,9 @@ + + + ++ ++ ++ + 4000000 + 0 + 39100240 +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +index ae4004ad3c..9292313570 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +@@ -212,6 +212,9 @@ + + + ++ ++ ++ + 4000000 + 0 + 43100240 +diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +index d9bdeb2516..d07a27b4f8 100644 +--- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +@@ -218,6 +218,9 @@ + + + ++ ++ ++ + 4001000 + 0 + 43100241 +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +index de16451b8b..fb3d5996c4 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +@@ -180,6 +180,9 @@ + + + ++ ++ ++ + 4001050 + 0 + 61700242 +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +index 99ec98e8cd..daea978d9f 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +@@ -180,6 +180,9 @@ + + + ++ ++ ++ + 4001050 + 0 + 42900242 +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +index fa3c2ef3e4..d007ae65d6 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +@@ -139,6 +139,9 @@ + + + ++ ++ ++ + 4001050 + 0 + 39100242 +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +index c1b73f4ad5..2d5b2ad0f0 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +@@ -224,6 +224,9 @@ + + + ++ ++ ++ + 4002000 + 0 + 43100242 +diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +index 53fcd750d9..be0be79fda 100644 +--- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +@@ -182,6 +182,9 @@ + + + ++ ++ ++ + 4002050 + 0 + 61700241 +diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +index 2fb5bb49a9..3ee17a66a4 100644 +--- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +@@ -190,6 +190,9 @@ + + + ++ ++ ++ + 4002050 + 0 + 42900241 +diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +index f43090c9e7..73f9319199 100644 +--- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +@@ -227,6 +227,9 @@ + + + ++ ++ ++ + 4002050 + 0 + 43100241 +-- +2.27.0 + diff --git a/qemu-Track-numa-mem-supported-machine-attribute.patch b/qemu-Track-numa-mem-supported-machine-attribute.patch new file mode 100644 index 0000000000000000000000000000000000000000..5ea7c374cea0253b61af25bbf685723ad0f177c9 --- /dev/null +++ b/qemu-Track-numa-mem-supported-machine-attribute.patch @@ -0,0 +1,5669 @@ +From 1e4b3c3a1e5777f43cb713c4370deb8ccb4a649b Mon Sep 17 00:00:00 2001 +From: xiaojin Yang +Date: Fri, 11 Mar 2022 16:00:35 +0800 +Subject: [PATCH 6/8] qemu: Track numa-mem-supported machine attribute +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There is 'numa-mem-supported' machine attribute which specifies +whether '-numa mem=' is supported. Store it in our capabilities +as it will be used in later commits when building the command +line. + +Signed-off-by: Michal Privoznik +Reviewed-by: Ján Tomko + +Signed-off-by: Xiaojin Yang +--- + src/qemu/qemu_capabilities.c | 41 ++- + src/qemu/qemu_capabilities.h | 3 + + src/qemu/qemu_capspriv.h | 3 +- + src/qemu/qemu_monitor.h | 1 + + src/qemu/qemu_monitor_json.c | 11 + + .../caps_1.5.3.x86_64.xml | 60 ++-- + .../caps_1.6.0.x86_64.xml | 68 ++--- + .../caps_1.7.0.x86_64.xml | 76 ++--- + .../caps_2.1.1.x86_64.xml | 92 +++--- + .../caps_2.10.0.aarch64.xml | 204 +++++++------- + .../caps_2.10.0.ppc64.xml | 84 +++--- + .../caps_2.10.0.s390x.xml | 28 +- + .../caps_2.10.0.x86_64.xml | 140 +++++----- + .../caps_2.11.0.s390x.xml | 32 +-- + .../caps_2.11.0.x86_64.xml | 140 +++++----- + .../caps_2.12.0.aarch64.xml | 228 +++++++-------- + .../caps_2.12.0.ppc64.xml | 100 +++---- + .../caps_2.12.0.s390x.xml | 36 +-- + .../caps_2.12.0.x86_64.xml | 148 +++++----- + .../caps_2.4.0.x86_64.xml | 116 ++++---- + .../caps_2.5.0.x86_64.xml | 124 ++++---- + .../caps_2.6.0.aarch64.xml | 164 +++++------ + .../qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 60 ++-- + .../caps_2.6.0.x86_64.xml | 100 +++---- + .../qemucapabilitiesdata/caps_2.7.0.s390x.xml | 16 +- + .../caps_2.7.0.x86_64.xml | 108 +++---- + .../qemucapabilitiesdata/caps_2.8.0.s390x.xml | 20 +- + .../caps_2.8.0.x86_64.xml | 124 ++++---- + .../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 80 +++--- + .../qemucapabilitiesdata/caps_2.9.0.s390x.xml | 24 +- + .../caps_2.9.0.x86_64.xml | 132 ++++----- + .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 104 +++---- + .../caps_3.0.0.riscv32.xml | 10 +- + .../caps_3.0.0.riscv64.xml | 10 +- + .../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 40 +-- + .../caps_3.0.0.x86_64.xml | 156 +++++------ + .../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 108 +++---- + .../caps_3.1.0.x86_64.xml | 164 +++++------ + .../caps_4.0.0.aarch64.xml | 264 +++++++++--------- + .../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 112 ++++---- + .../caps_4.0.0.riscv32.xml | 10 +- + .../caps_4.0.0.riscv64.xml | 10 +- + .../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 48 ++-- + .../caps_4.0.0.x86_64.xml | 164 +++++------ + .../caps_4.1.0.x86_64.xml | 176 ++++++------ + .../caps_4.2.0.aarch64.xml | 52 ++-- + .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 72 ++--- + .../caps_4.2.0.x86_64.xml | 184 ++++++------ + .../caps_5.0.0.aarch64.xml | 52 ++-- + .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 76 ++--- + .../caps_5.0.0.x86_64.xml | 176 ++++++------ + tests/testutilsqemu.c | 6 +- + 52 files changed, 2304 insertions(+), 2253 deletions(-) + +diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c +index fb7726235d..6013be9d05 100644 +--- a/src/qemu/qemu_capabilities.c ++++ b/src/qemu/qemu_capabilities.c +@@ -586,6 +586,7 @@ struct _virQEMUCapsMachineType { + bool hotplugCpus; + bool qemuDefault; + char *defaultCPU; ++ bool numaMemSupported; + }; + + typedef struct _virQEMUCapsHostCPUData virQEMUCapsHostCPUData; +@@ -1813,6 +1814,7 @@ virQEMUCapsAccelCopyMachineTypes(virQEMUCapsAccelPtr dst, + dst->machineTypes[i].maxCpus = src->machineTypes[i].maxCpus; + dst->machineTypes[i].hotplugCpus = src->machineTypes[i].hotplugCpus; + dst->machineTypes[i].qemuDefault = src->machineTypes[i].qemuDefault; ++ dst->machineTypes[i].numaMemSupported = src->machineTypes[i].numaMemSupported; + } + } + +@@ -2453,6 +2455,25 @@ virQEMUCapsGetMachineDefaultCPU(virQEMUCapsPtr qemuCaps, + } + + ++bool ++virQEMUCapsGetMachineNumaMemSupported(virQEMUCapsPtr qemuCaps, ++ virDomainVirtType virtType, ++ const char *name) ++{ ++ virQEMUCapsAccelPtr accel; ++ size_t i; ++ ++ accel = virQEMUCapsGetAccel(qemuCaps, virtType); ++ ++ for (i = 0; i < accel->nmachineTypes; i++) { ++ if (STREQ(accel->machineTypes[i].name, name)) ++ return accel->machineTypes[i].numaMemSupported; ++ } ++ ++ return false; ++} ++ ++ + /** + * virQEMUCapsSetGICCapabilities: + * @qemuCaps: QEMU capabilities +@@ -2665,7 +2686,8 @@ virQEMUCapsAddMachine(virQEMUCapsPtr qemuCaps, + const char *defaultCPU, + int maxCpus, + bool hotplugCpus, +- bool isDefault) ++ bool isDefault, ++ bool numaMemSupported) + { + virQEMUCapsAccelPtr accel = virQEMUCapsGetAccel(qemuCaps, virtType); + virQEMUCapsMachineTypePtr mach; +@@ -2684,6 +2706,8 @@ virQEMUCapsAddMachine(virQEMUCapsPtr qemuCaps, + mach->hotplugCpus = hotplugCpus; + + mach->qemuDefault = isDefault; ++ ++ mach->numaMemSupported = numaMemSupported; + } + + /** +@@ -2729,7 +2753,8 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuCaps, + machines[i]->defaultCPU, + machines[i]->maxCpus, + machines[i]->hotplugCpus, +- machines[i]->isDefault); ++ machines[i]->isDefault, ++ machines[i]->numaMemSupported); + + if (preferredMachine && + (STREQ_NULLABLE(machines[i]->alias, preferredMachine) || +@@ -3949,6 +3974,11 @@ virQEMUCapsLoadMachines(virQEMUCapsAccelPtr caps, + caps->machineTypes[i].qemuDefault = true; + VIR_FREE(str); + ++ str = virXMLPropString(nodes[i], "numaMemSupported"); ++ if (STREQ_NULLABLE(str, "yes")) ++ caps->machineTypes[i].numaMemSupported = true; ++ VIR_FREE(str); ++ + caps->machineTypes[i].defaultCPU = virXMLPropString(nodes[i], "defaultCPU"); + } + +@@ -4069,7 +4099,7 @@ virQEMUCapsParseSEVInfo(virQEMUCapsPtr qemuCaps, xmlXPathContextPtr ctxt) + * ... + * + * ... +- * ++ * + * ... + * + */ +@@ -4405,6 +4435,8 @@ virQEMUCapsFormatMachines(virQEMUCapsAccelPtr caps, + virBufferAddLit(buf, " default='yes'"); + virBufferEscapeString(buf, " defaultCPU='%s'", + caps->machineTypes[i].defaultCPU); ++ if (caps->machineTypes[i].numaMemSupported) ++ virBufferAddLit(buf, " numaMemSupported='yes'"); + virBufferAddLit(buf, "/>\n"); + } + } +@@ -6108,7 +6140,8 @@ virQEMUCapsStripMachineAliasesForVirtType(virQEMUCapsPtr qemuCaps, + + if (name) { + virQEMUCapsAddMachine(qemuCaps, virtType, name, NULL, mach->defaultCPU, +- mach->maxCpus, mach->hotplugCpus, mach->qemuDefault); ++ mach->maxCpus, mach->hotplugCpus, mach->qemuDefault, ++ mach->numaMemSupported); + } + } + } +diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h +index 0ac92d77c3..5f28006b48 100644 +--- a/src/qemu/qemu_capabilities.h ++++ b/src/qemu/qemu_capabilities.h +@@ -661,6 +661,9 @@ bool virQEMUCapsGetMachineHotplugCpus(virQEMUCapsPtr qemuCaps, + const char *virQEMUCapsGetMachineDefaultCPU(virQEMUCapsPtr qemuCaps, + const char *name, + virDomainVirtType type); ++bool virQEMUCapsGetMachineNumaMemSupported(virQEMUCapsPtr qemuCaps, ++ virDomainVirtType virtType, ++ const char *name); + + void virQEMUCapsFilterByMachineType(virQEMUCapsPtr qemuCaps, + virDomainVirtType virtType, +diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h +index 9c2be24ada..4c053af195 100644 +--- a/src/qemu/qemu_capspriv.h ++++ b/src/qemu/qemu_capspriv.h +@@ -119,4 +119,5 @@ virQEMUCapsAddMachine(virQEMUCapsPtr qemuCaps, + const char *defaultCPU, + int maxCpus, + bool hotplugCpus, +- bool isDefault); ++ bool isDefault, ++ bool numaMemSupported); +diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h +index 7a3240f00a..83a33b5b0f 100644 +--- a/src/qemu/qemu_monitor.h ++++ b/src/qemu/qemu_monitor.h +@@ -1095,6 +1095,7 @@ struct _qemuMonitorMachineInfo { + unsigned int maxCpus; + bool hotplugCpus; + char *defaultCPU; ++ bool numaMemSupported; + }; + + int qemuMonitorGetMachines(qemuMonitorPtr mon, +diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c +index c1d92b2009..199b73eafe 100644 +--- a/src/qemu/qemu_monitor_json.c ++++ b/src/qemu/qemu_monitor_json.c +@@ -5634,6 +5634,17 @@ int qemuMonitorJSONGetMachines(qemuMonitorPtr mon, + + info->defaultCPU = g_strdup(tmp); + } ++ ++ if (virJSONValueObjectHasKey(child, "numa-mem-supported")) { ++ if (virJSONValueObjectGetBoolean(child, "numa-mem-supported", &info->numaMemSupported) < 0) { ++ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", ++ _("qemu-machines reply has malformed " ++ "'numa-mem-supported' data")); ++ goto cleanup; ++ } ++ } else { ++ info->numaMemSupported = true; ++ } + } + + ret = n; +diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +index b57cb2ab59..63609dad86 100644 +--- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +@@ -114,21 +114,21 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -153,19 +153,19 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +index 5d0a14a5db..2287e37956 100644 +--- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +@@ -119,23 +119,23 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -160,21 +160,21 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +index c196fe5e45..48f9535486 100644 +--- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +@@ -121,25 +121,25 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -164,23 +164,23 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +index 1edcaa4657..e792506e8c 100644 +--- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +@@ -138,29 +138,29 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -186,27 +186,27 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +index e253df4077..af2787ed1b 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +@@ -179,57 +179,57 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -261,57 +261,57 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +index 8df611353f..7afb2fa2c5 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +@@ -581,27 +581,27 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1035,25 +1035,25 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +index 27ce348b80..b307b439f6 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +@@ -211,13 +211,13 @@ + + + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1262,11 +1262,11 @@ + + + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +index 368985a611..8e4ab591db 100644 +--- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +@@ -532,41 +532,41 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -949,39 +949,39 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +index c5bcf1c818..83c2905e1f 100644 +--- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +@@ -218,14 +218,14 @@ + + + +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -2609,12 +2609,12 @@ + + + +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +index 717ef46f78..ddc187a584 100644 +--- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +@@ -510,41 +510,41 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -943,39 +943,39 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +index fbee7661a1..fddbfebddd 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +@@ -198,63 +198,63 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -289,63 +289,63 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +index 31a643f5d1..148b928520 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +@@ -600,31 +600,31 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1062,29 +1062,29 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +index d0ea4d780a..2b1301d234 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +@@ -231,15 +231,15 @@ + + + +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -2479,13 +2479,13 @@ + + + +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +index 3db7162a34..125346ffd7 100644 +--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +@@ -667,43 +667,43 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1242,43 +1242,43 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + 47 + 1 +diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +index 9b486effe1..b4745d49b9 100644 +--- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +@@ -167,35 +167,35 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -224,33 +224,33 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +index 147b179fdb..21fc702fc7 100644 +--- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +@@ -173,37 +173,37 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -232,35 +232,35 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml +index fddca13ee2..c41c30c923 100644 +--- a/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml +@@ -159,47 +159,47 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -230,47 +230,47 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml +index deb5c28790..b619ec4dd1 100644 +--- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml +@@ -556,21 +556,21 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1001,19 +1001,19 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +index fc508aba8a..492f2720fd 100644 +--- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +@@ -185,31 +185,31 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -238,29 +238,29 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml +index 17351ca6bf..2bacb2008a 100644 +--- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml +@@ -97,13 +97,13 @@ + + s390x + +- +- +- +- ++ ++ ++ ++ + +- +- +- +- ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +index ed199057dc..71cfc3f2c3 100644 +--- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +@@ -191,33 +191,33 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -247,31 +247,31 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +index 7becf1bfb6..335e2c1a69 100644 +--- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +@@ -184,11 +184,11 @@ + + + +- +- +- +- +- ++ ++ ++ ++ ++ + + + +@@ -253,9 +253,9 @@ + + + +- +- +- +- +- ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +index 2a0b1f61de..30ef536ecb 100644 +--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +@@ -222,37 +222,37 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -378,35 +378,35 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +index 9141e29757..e6aee2519b 100644 +--- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +@@ -573,26 +573,26 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1026,24 +1026,24 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +index bcc7d4bd4e..ce042443df 100644 +--- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +@@ -190,12 +190,12 @@ + + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + + + +@@ -260,10 +260,10 @@ + + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +index 5cd82aa979..6781484056 100644 +--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +@@ -473,39 +473,39 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -865,37 +865,37 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +index 6916da2047..b4b9d7ee01 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +@@ -602,32 +602,32 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1065,30 +1065,30 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +index 802b624073..14550b8c7f 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +@@ -104,9 +104,9 @@ + 0 + + riscv32 +- +- +- +- +- ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +index a16db0912d..1479b2bb2d 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +@@ -104,9 +104,9 @@ + 0 + + riscv64 +- +- +- +- +- ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +index 6992e10237..96984d2bc3 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +@@ -240,16 +240,16 @@ + + + +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -2689,14 +2689,14 @@ + + + +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +index 9fdfc634ff..f936f502c3 100644 +--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +@@ -585,45 +585,45 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1189,43 +1189,43 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +index 4039923e5f..e1bc4beddb 100644 +--- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +@@ -607,33 +607,33 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1071,31 +1071,31 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +index 02fc245fca..f462022fb5 100644 +--- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +@@ -664,47 +664,47 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1374,45 +1374,45 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +index 278f2d9135..963c991d5e 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +@@ -215,72 +215,72 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -318,72 +318,72 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +index 897ca08af0..2062fd0a90 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +@@ -621,34 +621,34 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1086,32 +1086,32 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +index 1993d52d42..3bd809f824 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +@@ -179,9 +179,9 @@ + 0 + v4.0.0 + riscv32 +- +- +- +- +- ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +index 348138ab5a..b0ad30460b 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +@@ -179,9 +179,9 @@ + 0 + v4.0.0 + riscv64 +- +- +- +- +- ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +index 1542ed6c68..44e527f570 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +@@ -254,18 +254,18 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -2902,16 +2902,16 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +index 9292313570..ab43924eaa 100644 +--- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +@@ -671,47 +671,47 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1382,45 +1382,45 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +index d07a27b4f8..aff2c6fcad 100644 +--- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +@@ -847,50 +847,50 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +@@ -1951,48 +1951,48 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +index fb3d5996c4..6aa36bac54 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +@@ -251,7 +251,7 @@ + + + +- ++ + + + +@@ -264,26 +264,26 @@ + + + +- ++ + +- ++ + + +- ++ + + +- ++ + + + + +- ++ + +- ++ + +- ++ + +- ++ + + + +@@ -300,10 +300,10 @@ + + + +- +- ++ ++ + +- ++ + + + +@@ -314,7 +314,7 @@ + + + +- ++ + + + +@@ -380,7 +380,7 @@ + + + +- ++ + + + +@@ -393,26 +393,26 @@ + + + +- ++ + +- ++ + + +- ++ + + +- ++ + + + + +- ++ + +- ++ + +- ++ + +- ++ + + + +@@ -429,10 +429,10 @@ + + + +- +- ++ ++ + +- ++ + + + +@@ -442,7 +442,7 @@ + + + +- ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +index daea978d9f..871dc41579 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +@@ -626,34 +626,34 @@ + + + +- ++ + + + + + +- +- ++ ++ + + +- +- ++ ++ + +- +- +- ++ ++ ++ + +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ + +- +- ++ ++ + + + +@@ -1094,34 +1094,34 @@ + + + +- ++ + + + + + +- +- ++ ++ + + +- +- ++ ++ + +- +- +- ++ ++ ++ + +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ + +- +- ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +index 2d5b2ad0f0..383aa10f49 100644 +--- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +@@ -1099,53 +1099,53 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + + + +@@ -2562,51 +2562,51 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +index be0be79fda..92ad10c9b8 100644 +--- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml ++++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +@@ -255,7 +255,7 @@ + + + +- ++ + + + +@@ -268,26 +268,26 @@ + + + +- ++ + + + + +- ++ + + +- ++ + + + + +- ++ + +- ++ + +- ++ + +- ++ + + + +@@ -306,10 +306,10 @@ + + + +- +- ++ ++ + +- ++ + + + +@@ -320,8 +320,8 @@ + + + +- +- ++ ++ + + + +@@ -388,7 +388,7 @@ + + + +- ++ + + + +@@ -401,26 +401,26 @@ + + + +- ++ + + + + +- ++ + + +- ++ + + + + +- ++ + +- ++ + +- ++ + +- ++ + + + +@@ -439,10 +439,10 @@ + + + +- +- ++ ++ + +- ++ + + + +@@ -453,8 +453,8 @@ + + + +- +- ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +index 3ee17a66a4..6842b3c28a 100644 +--- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml ++++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +@@ -638,36 +638,36 @@ + + + +- ++ + + +- +- ++ ++ + +- ++ + +- +- +- +- ++ ++ ++ ++ + + +- +- +- +- ++ ++ ++ ++ + +- ++ + +- +- ++ ++ + +- ++ + + +- +- +- ++ ++ ++ + + + +@@ -1109,36 +1109,36 @@ + + + +- ++ + + +- +- ++ ++ + +- ++ + +- +- +- +- ++ ++ ++ ++ + + +- +- +- +- ++ ++ ++ ++ + +- ++ + +- +- ++ ++ + +- ++ + + +- +- +- ++ ++ ++ + + + +diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +index 73f9319199..577b96e6fa 100644 +--- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml ++++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +@@ -1136,51 +1136,51 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + + + +@@ -2659,49 +2659,49 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ + +diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c +index bae1fa828b..6c43f07015 100644 +--- a/tests/testutilsqemu.c ++++ b/tests/testutilsqemu.c +@@ -344,7 +344,8 @@ int qemuTestCapsCacheInsert(virFileCachePtr cache, + NULL, + 0, + false, +- false); ++ false, ++ true); + } + for (j = 0; kvm_machines[i][j] != NULL; j++) { + virQEMUCapsAddMachine(tmpCaps, +@@ -354,7 +355,8 @@ int qemuTestCapsCacheInsert(virFileCachePtr cache, + NULL, + 0, + false, +- false); ++ false, ++ true); + virQEMUCapsSet(tmpCaps, QEMU_CAPS_KVM); + } + } +-- +2.27.0 + diff --git a/qemuBuildNumaArgStr-Switch-order-of-if-and-for.patch b/qemuBuildNumaArgStr-Switch-order-of-if-and-for.patch new file mode 100644 index 0000000000000000000000000000000000000000..dfa4cec840cec28e82281aa552fc1f6e43d69c0d --- /dev/null +++ b/qemuBuildNumaArgStr-Switch-order-of-if-and-for.patch @@ -0,0 +1,46 @@ +From 6a0f76d72b231bf0baacf70d715aad387476ac98 Mon Sep 17 00:00:00 2001 +From: xiaojin Yang +Date: Fri, 11 Mar 2022 16:03:02 +0800 +Subject: [PATCH 7/8] qemuBuildNumaArgStr: Switch order of if() and for() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When building -numa command line there is a for() loop that +builds '-numa memdev=' for each guest NUMA node. And also +records in a local variable whether any of memory-object-* +backends must be used to satisfy desired config. Well, instead of +checking in each iteration whether corresponding capabilities are +set, we can do swap if() and for() and check only once. + +Signed-off-by: Michal Privoznik +Reviewed-by: Ján Tomko + +Signed-off-by: Xiaojin Yang +--- + src/qemu/qemu_command.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index dae6b5a7f9..f9b6d56209 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -7419,11 +7419,11 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, + + /* using of -numa memdev= cannot be combined with -numa mem=, thus we + * need to check which approach to use */ +- for (i = 0; i < ncells; i++) { +- if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || +- virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE) || +- virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) { ++ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || ++ virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE) || ++ virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) { + ++ for (i = 0; i < ncells; i++) { + if ((rc = qemuBuildMemoryCellBackendStr(def, cfg, i, priv, + &nodeBackends[i])) < 0) + goto cleanup; +-- +2.27.0 + diff --git a/qemuBuildNumaArgStr-Use-modern-numa-memdev-if-old-nu.patch b/qemuBuildNumaArgStr-Use-modern-numa-memdev-if-old-nu.patch new file mode 100644 index 0000000000000000000000000000000000000000..6ac3f80adab41fccf061db8367a702ad6e7962cf --- /dev/null +++ b/qemuBuildNumaArgStr-Use-modern-numa-memdev-if-old-nu.patch @@ -0,0 +1,57 @@ +From a6fccda9f1637a3464e812a16c2cd1f12d5b213d Mon Sep 17 00:00:00 2001 +From: xiaojin Yang +Date: Fri, 11 Mar 2022 16:04:38 +0800 +Subject: [PATCH 8/8] qemuBuildNumaArgStr: Use modern -numa memdev= if old + -numa mem= is unsupported +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In previous commit we started tracking whether QEMU supports +'-numa mem='. This is tied to the machine type because migration +from '-numa mem=' to '-numa memdev' is impossible (or vice +versa). But since it's tied to a machine type (where migration +from one to another is also unsupported) we can allow QEMU to get +rid of the deprecated command line. + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1783355 + +Signed-off-by: Michal Privoznik +Reviewed-by: Ján Tomko + +Signed-off-by: Xiaojin Yang +--- + src/qemu/qemu_command.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index f9b6d56209..f8331a7455 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -7414,6 +7414,11 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, + if (!virDomainNumatuneNodesetIsAvailable(def->numa, priv->autoNodeset)) + goto cleanup; + ++ if (!virQEMUCapsGetMachineNumaMemSupported(qemuCaps, ++ def->virtType, ++ def->os.machine)) ++ needBackend = true; ++ + if (VIR_ALLOC_N(nodeBackends, ncells) < 0) + goto cleanup; + +@@ -7431,6 +7436,11 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, + if (rc == 0) + needBackend = true; + } ++ } else if (needBackend) { ++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", ++ _("NUMA without specified memory backing is not " ++ "supported with this QEMU binary")); ++ goto cleanup; + } + + if (!needBackend && +-- +2.27.0 +