diff --git a/add-qemu-VIRTCCA-capability-detection.patch b/add-qemu-VIRTCCA-capability-detection.patch new file mode 100644 index 0000000000000000000000000000000000000000..d01826193982b516831099a0ac08ca384ebe82b2 --- /dev/null +++ b/add-qemu-VIRTCCA-capability-detection.patch @@ -0,0 +1,473 @@ +From 5ea63e7421dc9e4c711a9d206d6a6bcd9ad7561a Mon Sep 17 00:00:00 2001 +From: panhengchang +Date: Wed, 4 Jun 2025 09:38:52 +0800 +Subject: [PATCH 1/3] add qemu VIRTCCA capability detection + +This patch is used to detect virtcca capability +on Hisi Kunpeng platform through qmp command +"query-virtcca-capabilities". The result will +be formated to xml, such as +"" or +"" + +This function can be called by +"virsh domcapabilities" command or libvirt api +"qemuConnectGetDomainCapabilities". + +Signed-off-by: panghengchang +--- + src/conf/domain_capabilities.c | 35 +++++++++++ + src/conf/domain_capabilities.h | 11 ++++ + src/libvirt_private.syms | 1 + + src/qemu/qemu_capabilities.c | 108 +++++++++++++++++++++++++++++++++ + src/qemu/qemu_capabilities.h | 1 + + src/qemu/qemu_monitor.c | 10 +++ + src/qemu/qemu_monitor.h | 3 + + src/qemu/qemu_monitor_json.c | 45 ++++++++++++++ + src/qemu/qemu_monitor_json.h | 4 ++ + 9 files changed, 218 insertions(+) + +diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c +index f6e09dc584..4a83777e9c 100644 +--- a/src/conf/domain_capabilities.c ++++ b/src/conf/domain_capabilities.c +@@ -88,6 +88,16 @@ virSGXCapabilitiesFree(virSGXCapability *cap) + } + + ++void ++virVIRTCCACapabilitiesFree(virVIRTCCACapability *cap) ++{ ++ if (!cap) ++ return; ++ ++ g_free(cap); ++} ++ ++ + static void + virDomainCapsDispose(void *obj) + { +@@ -101,6 +111,7 @@ virDomainCapsDispose(void *obj) + virCPUDefFree(caps->cpu.hostModel); + virSEVCapabilitiesFree(caps->sev); + virSGXCapabilitiesFree(caps->sgx); ++ virVIRTCCACapabilitiesFree(caps->virtcca); + g_free(caps->hyperv); + + values = &caps->os.loader.values; +@@ -707,6 +718,29 @@ virDomainCapsFeatureHypervFormat(virBuffer *buf, + FORMAT_EPILOGUE(hyperv); + } + ++/** ++ * virDomainCapsFeatureVIRTCCAFormat: ++ * @buf: target buffer ++ * @virtcca: VIRTCCA features ++ * ++ * Format VIRTCCA features for inclusion in the domcapabilities XML. ++ * ++ * The resulting XML will look like ++ * ++ * ++ */ ++static void ++virDomainCapsFeatureVIRTCCAFormat(virBuffer *buf, ++ const virVIRTCCACapability *virtcca) ++{ ++ if (!virtcca) { ++ virBufferAddLit(buf, "\n"); ++ return; ++ } ++ ++ virBufferAddLit(buf, "\n"); ++} ++ + static void + virDomainCapsFormatFeatures(const virDomainCaps *caps, + virBuffer *buf) +@@ -728,6 +762,7 @@ virDomainCapsFormatFeatures(const virDomainCaps *caps, + virDomainCapsFeatureSEVFormat(&childBuf, caps->sev); + virDomainCapsFeatureSGXFormat(&childBuf, caps->sgx); + virDomainCapsFeatureHypervFormat(&childBuf, caps->hyperv); ++ virDomainCapsFeatureVIRTCCAFormat(&childBuf, caps->virtcca); + + virXMLFormatElement(buf, "features", NULL, &childBuf); + } +diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h +index 01bcfa2e39..718fb75467 100644 +--- a/src/conf/domain_capabilities.h ++++ b/src/conf/domain_capabilities.h +@@ -231,6 +231,11 @@ struct _virSGXCapability { + virSGXSection *sgxSections; + }; + ++typedef struct _virVIRTCCACapability virVIRTCCACapability; ++struct _virVIRTCCACapability { ++ bool enabled; ++}; ++ + STATIC_ASSERT_ENUM(VIR_DOMAIN_CRYPTO_MODEL_LAST); + STATIC_ASSERT_ENUM(VIR_DOMAIN_CRYPTO_TYPE_LAST); + STATIC_ASSERT_ENUM(VIR_DOMAIN_CRYPTO_BACKEND_LAST); +@@ -284,6 +289,7 @@ struct _virDomainCaps { + virSEVCapability *sev; + virSGXCapability *sgx; + virDomainCapsFeatureHyperv *hyperv; ++ virVIRTCCACapability *virtcca; + /* add new domain features here */ + + virTristateBool features[VIR_DOMAIN_CAPS_FEATURE_LAST]; +@@ -339,3 +345,8 @@ void + virSGXCapabilitiesFree(virSGXCapability *capabilities); + + G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSGXCapability, virSGXCapabilitiesFree); ++ ++void ++virVIRTCCACapabilitiesFree(virVIRTCCACapability *capabilities); ++ ++G_DEFINE_AUTOPTR_CLEANUP_FUNC(virVIRTCCACapability, virVIRTCCACapabilitiesFree); +\ No newline at end of file +diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms +index 4d712f0d79..cd99cc302a 100644 +--- a/src/libvirt_private.syms ++++ b/src/libvirt_private.syms +@@ -218,6 +218,7 @@ virDomainCapsFormat; + virDomainCapsNew; + virSEVCapabilitiesFree; + virSGXCapabilitiesFree; ++virVIRTCCACapabilitiesFree; + + + # conf/domain_conf.h +diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c +index 86f1491bc5..72c6eed5ef 100644 +--- a/src/qemu/qemu_capabilities.c ++++ b/src/qemu/qemu_capabilities.c +@@ -699,6 +699,7 @@ VIR_ENUM_IMPL(virQEMUCaps, + "run-with.async-teardown", /* QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN */ + "virtio-blk-vhost-vdpa", /* QEMU_CAPS_DEVICE_VIRTIO_BLK_VHOST_VDPA */ + "smp-clusters", /* QEMU_CAPS_SMP_CLUSTERS */ ++ "tmm-guest", /* QEMU_CAPS_VIRTCCA */ + ); + + +@@ -784,6 +785,8 @@ struct _virQEMUCaps { + + virSGXCapability *sgxCapabilities; + ++ virVIRTCCACapability *virtccaCapabilities; ++ + virDomainCapsFeatureHyperv *hypervCapabilities; + + /* Capabilities which may differ depending on the accelerator. */ +@@ -1387,6 +1390,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { + { "virtio-crypto-device", QEMU_CAPS_DEVICE_VIRTIO_CRYPTO }, + { "cryptodev-backend-lkcf", QEMU_CAPS_OBJECT_CRYPTO_LKCF }, + { "pvpanic-pci", QEMU_CAPS_DEVICE_PANIC_PCI }, ++ { "tmm-guest", QEMU_CAPS_VIRTCCA }, + }; + + +@@ -1910,6 +1914,25 @@ virQEMUCapsSGXInfoCopy(virSGXCapability **dst, + } + + ++static void ++virQEMUCapsVIRTCCAInfoCopy(virVIRTCCACapability **dst, ++ virVIRTCCACapability *src) ++{ ++ g_autoptr(virVIRTCCACapability) tmp = NULL; ++ ++ if (!src) { ++ *dst = NULL; ++ return; ++ } ++ ++ tmp = g_new0(virVIRTCCACapability, 1); ++ ++ tmp->enabled = src->enabled; ++ ++ *dst = g_steal_pointer(&tmp); ++} ++ ++ + static void + virQEMUCapsAccelCopyMachineTypes(virQEMUCapsAccel *dst, + virQEMUCapsAccel *src) +@@ -1985,6 +2008,9 @@ virQEMUCaps *virQEMUCapsNewCopy(virQEMUCaps *qemuCaps) + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SGX_EPC)) + virQEMUCapsSGXInfoCopy(&ret->sgxCapabilities, qemuCaps->sgxCapabilities); + ++ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTCCA)) ++ virQEMUCapsVIRTCCAInfoCopy(&ret->virtccaCapabilities, qemuCaps->virtccaCapabilities); ++ + ret->hypervCapabilities = g_memdup(qemuCaps->hypervCapabilities, + sizeof(virDomainCapsFeatureHyperv)); + +@@ -2027,6 +2053,7 @@ void virQEMUCapsDispose(void *obj) + + virSEVCapabilitiesFree(qemuCaps->sevCapabilities); + virSGXCapabilitiesFree(qemuCaps->sgxCapabilities); ++ virVIRTCCACapabilitiesFree(qemuCaps->virtccaCapabilities); + + g_free(qemuCaps->hypervCapabilities); + +@@ -3485,6 +3512,31 @@ virQEMUCapsProbeQMPSGXCapabilities(virQEMUCaps *qemuCaps, + } + + ++static int ++virQEMUCapsProbeQMPVIRTCCACapabilities(virQEMUCaps *qemuCaps, ++ qemuMonitor *mon) ++{ ++ int rc = -1; ++ virVIRTCCACapability *caps = NULL; ++ ++ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTCCA)) ++ return 0; ++ ++ if ((rc = qemuMonitorGetVIRTCCACapabilities(mon, &caps)) < 0) ++ return -1; ++ ++ /* VIRTCCA isn't actually supported */ ++ if (rc == 0) { ++ virQEMUCapsClear(qemuCaps, QEMU_CAPS_VIRTCCA); ++ return 0; ++ } ++ ++ virVIRTCCACapabilitiesFree(qemuCaps->virtccaCapabilities); ++ qemuCaps->virtccaCapabilities = caps; ++ return 0; ++} ++ ++ + /* + * Filter for features which should never be passed to QEMU. Either because + * QEMU never supported them or they were dropped as they never did anything +@@ -4356,6 +4408,28 @@ virQEMUCapsParseSGXInfo(virQEMUCaps *qemuCaps, + } + + ++static int ++virQEMUCapsParseVIRTCCAInfo(virQEMUCaps *qemuCaps, ++ xmlXPathContextPtr ctxt) ++{ ++ g_autoptr(virVIRTCCACapability) virtcca = NULL; ++ ++ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTCCA)) ++ return 0; ++ ++ if (virXPathBoolean("boolean(./virtcca)", ctxt) == 0) { ++ virReportError(VIR_ERR_XML_ERROR, "%s", ++ _("missing virtcca platform data in QEMU capabilities cache")); ++ return -1; ++ } ++ ++ virtcca = g_new0(virVIRTCCACapability, 1); ++ ++ qemuCaps->virtccaCapabilities = g_steal_pointer(&virtcca); ++ return 0; ++} ++ ++ + static int + virQEMUCapsParseHypervCapabilities(virQEMUCaps *qemuCaps, + xmlXPathContextPtr ctxt) +@@ -4682,6 +4756,9 @@ virQEMUCapsLoadCache(virArch hostArch, + if (virQEMUCapsParseSGXInfo(qemuCaps, ctxt) < 0) + return -1; + ++ if (virQEMUCapsParseVIRTCCAInfo(qemuCaps, ctxt) < 0) ++ return -1; ++ + if (virQEMUCapsParseHypervCapabilities(qemuCaps, ctxt) < 0) + return -1; + +@@ -4910,6 +4987,14 @@ virQEMUCapsFormatSGXInfo(virQEMUCaps *qemuCaps, + } + + ++static void ++virQEMUCapsFormatVIRTCCAInfo(virBuffer *buf) ++{ ++ virBufferAddLit(buf, "\n"); ++ virBufferAddLit(buf, "\n"); ++} ++ ++ + static void + virQEMUCapsFormatHypervCapabilities(virQEMUCaps *qemuCaps, + virBuffer *buf) +@@ -5018,6 +5103,9 @@ virQEMUCapsFormatCache(virQEMUCaps *qemuCaps) + if (qemuCaps->sgxCapabilities) + virQEMUCapsFormatSGXInfo(qemuCaps, &buf); + ++ if (qemuCaps->virtccaCapabilities) ++ virQEMUCapsFormatVIRTCCAInfo(&buf); ++ + if (qemuCaps->hypervCapabilities) + virQEMUCapsFormatHypervCapabilities(qemuCaps, &buf); + +@@ -5572,6 +5660,8 @@ virQEMUCapsInitQMPMonitor(virQEMUCaps *qemuCaps, + return -1; + if (virQEMUCapsProbeQMPSGXCapabilities(qemuCaps, mon) < 0) + return -1; ++ if (virQEMUCapsProbeQMPVIRTCCACapabilities(qemuCaps, mon) < 0) ++ return -1; + + virQEMUCapsInitProcessCaps(qemuCaps); + +@@ -6607,6 +6697,23 @@ virQEMUCapsFillDomainFeatureSEVCaps(virQEMUCaps *qemuCaps, + } + + ++/** ++ * virQEMUCapsFillDomainFeatureVIRTCCACaps: ++ * @qemuCaps: QEMU capabilities ++ * @domCaps: domain capabilities ++ * ++ * Take the information about VIRTCCA capabilities that has been obtained ++ * using the 'query-virtcca-capabilities' QMP command and stored in @qemuCaps ++ * and convert it to a form suitable for @domCaps. ++ */ ++static void ++virQEMUCapsFillDomainFeatureVIRTCCACaps(virQEMUCaps *qemuCaps, ++ virDomainCaps *domCaps) ++{ ++ virQEMUCapsVIRTCCAInfoCopy(&domCaps->virtcca, qemuCaps->virtccaCapabilities); ++} ++ ++ + static void + virQEMUCapsFillDomainFeatureS390PVCaps(virQEMUCaps *qemuCaps, + virDomainCaps *domCaps) +@@ -6706,6 +6813,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps, + virQEMUCapsFillDomainFeatureSGXCaps(qemuCaps, domCaps); + virQEMUCapsFillDomainFeatureHypervCaps(qemuCaps, domCaps); + virQEMUCapsFillDomainDeviceCryptoCaps(qemuCaps, crypto); ++ virQEMUCapsFillDomainFeatureVIRTCCACaps(qemuCaps, domCaps); + + return 0; + } +diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h +index a928f5947d..f32109573c 100644 +--- a/src/qemu/qemu_capabilities.h ++++ b/src/qemu/qemu_capabilities.h +@@ -678,6 +678,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ + QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN, /* asynchronous teardown -run-with async-teardown=on|off */ + QEMU_CAPS_DEVICE_VIRTIO_BLK_VHOST_VDPA, /* virtio-blk-vhost-vdpa block driver */ + QEMU_CAPS_SMP_CLUSTERS, /* -smp clusters= */ ++ QEMU_CAPS_VIRTCCA, /* tmm-guest */ + + QEMU_CAPS_LAST /* this must always be the last item */ + } virQEMUCapsFlags; +diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c +index e270bee2cd..3fd26a0433 100644 +--- a/src/qemu/qemu_monitor.c ++++ b/src/qemu/qemu_monitor.c +@@ -3469,6 +3469,16 @@ qemuMonitorGetSGXCapabilities(qemuMonitor *mon, + } + + ++int ++qemuMonitorGetVIRTCCACapabilities(qemuMonitor *mon, ++ virVIRTCCACapability **capabilities) ++{ ++ QEMU_CHECK_MONITOR(mon); ++ ++ return qemuMonitorJSONGetVIRTCCACapabilities(mon, capabilities); ++} ++ ++ + int + qemuMonitorNBDServerStart(qemuMonitor *mon, + const virStorageNetHostDef *server, +diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h +index 4cbd225e8f..6c6e18da50 100644 +--- a/src/qemu/qemu_monitor.h ++++ b/src/qemu/qemu_monitor.h +@@ -849,6 +849,9 @@ int qemuMonitorGetSEVCapabilities(qemuMonitor *mon, + int qemuMonitorGetSGXCapabilities(qemuMonitor *mon, + virSGXCapability **capabilities); + ++int qemuMonitorGetVIRTCCACapabilities(qemuMonitor *mon, ++ virVIRTCCACapability **capabilities); ++ + typedef enum { + QEMU_MONITOR_MIGRATE_RESUME = 1 << 0, /* resume failed post-copy migration */ + QEMU_MONITOR_MIGRATION_FLAGS_LAST +diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c +index 3748034bb9..7f23d034b8 100644 +--- a/src/qemu/qemu_monitor_json.c ++++ b/src/qemu/qemu_monitor_json.c +@@ -6139,6 +6139,51 @@ qemuMonitorJSONGetSGXCapabilities(qemuMonitor *mon, + } + + ++/** ++ * qemuMonitorJSONGetVIRTCCACapabilities: ++ * @mon: qemu monitor object ++ * @capabilities: pointer to pointer to a VIRTCCA capability structure to be filled ++ * ++ * Returns: -1 on error, ++ * 0 if VIRTCCA is not supported, and ++ * 1 if VIRTCCA is supported on the platform. ++ */ ++int ++qemuMonitorJSONGetVIRTCCACapabilities(qemuMonitor *mon, ++ virVIRTCCACapability **capabilities) ++{ ++ g_autoptr(virJSONValue) cmd = NULL; ++ g_autoptr(virJSONValue) reply = NULL; ++ g_autoptr(virVIRTCCACapability) capability = NULL; ++ virJSONValue *caps; ++ ++ *capabilities = NULL; ++ capability = g_new0(virVIRTCCACapability, 1); ++ ++ if (!(cmd = qemuMonitorJSONMakeCommand("query-virtcca-capabilities", NULL))) ++ return -1; ++ ++ if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) ++ return -1; ++ ++ /* QEMU not support VIRTCCA */ ++ if (qemuMonitorJSONCheckError(cmd, reply) < 0) ++ return 0; ++ ++ caps = virJSONValueObjectGetObject(reply, "return"); ++ ++ if (virJSONValueObjectGetBoolean(caps, "enabled", &capability->enabled) < 0) { ++ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", ++ _("query-virtcca-capabilities reply was missing 'enabled' field")); ++ return -1; ++ } ++ ++ *capabilities = g_steal_pointer(&capability); ++ ++ return 1; ++} ++ ++ + static virJSONValue * + qemuMonitorJSONBuildInetSocketAddress(const char *host, + const char *port) +diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h +index ed0027c118..2e0f2e2594 100644 +--- a/src/qemu/qemu_monitor_json.h ++++ b/src/qemu/qemu_monitor_json.h +@@ -168,6 +168,10 @@ int + qemuMonitorJSONGetSEVCapabilities(qemuMonitor *mon, + virSEVCapability **capabilities); + ++int ++qemuMonitorJSONGetVIRTCCACapabilities(qemuMonitor *mon, ++ virVIRTCCACapability **capabilities); ++ + int + qemuMonitorJSONMigrate(qemuMonitor *mon, + unsigned int flags, +-- +2.43.0 + diff --git a/add-virtcca-test-xml.patch b/add-virtcca-test-xml.patch new file mode 100644 index 0000000000000000000000000000000000000000..230591ddee36790d5181c7d90ddfdb4c99f1eca3 --- /dev/null +++ b/add-virtcca-test-xml.patch @@ -0,0 +1,979 @@ +From fb9955954172baa42cf91317272ecdbadd400014 Mon Sep 17 00:00:00 2001 +From: panhengchang +Date: Thu, 5 Jun 2025 17:07:16 +0800 +Subject: [PATCH 2/3] add virtcca test xml + +add "" in +tests/domaincapsdata + +Signed-off-by: panghengchang +--- + src/conf/schemas/domaincaps.rng | 9 +++++++++ + tests/domaincapsdata/bhyve_basic.x86_64.xml | 1 + + tests/domaincapsdata/bhyve_fbuf.x86_64.xml | 1 + + tests/domaincapsdata/bhyve_uefi.x86_64.xml | 1 + + tests/domaincapsdata/empty.xml | 1 + + tests/domaincapsdata/libxl-xenfv.xml | 1 + + tests/domaincapsdata/libxl-xenpv.xml | 1 + + tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml | 1 + + tests/domaincapsdata/qemu_4.2.0.aarch64.xml | 1 + + tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 1 + + tests/domaincapsdata/qemu_4.2.0.s390x.xml | 1 + + tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 1 + + tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.1.0.sparc.xml | 1 + + tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 1 + + tests/domaincapsdata/qemu_5.2.0.s390x.xml | 1 + + tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml | 1 + + tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 1 + + tests/domaincapsdata/qemu_6.0.0.s390x.xml | 1 + + tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml | 1 + + tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 1 + + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 1 + + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml | 1 + + tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml | 1 + + tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 1 + + tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 1 + + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 1 + + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml | 1 + + tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml | 1 + + tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_7.2.0.ppc.xml | 1 + + tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml | 1 + + tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml | 1 + + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.1.0.s390x.xml | 1 + + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 1 + + tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 1 + + 79 files changed, 87 insertions(+) + +diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.rng +index e7aa4a1066..5ad452ac5f 100644 +--- a/src/conf/schemas/domaincaps.rng ++++ b/src/conf/schemas/domaincaps.rng +@@ -317,6 +317,9 @@ + + + ++ ++ ++ + + + +@@ -430,6 +433,12 @@ + + + ++ ++ ++ ++ ++ ++ + + + +diff --git a/tests/domaincapsdata/bhyve_basic.x86_64.xml b/tests/domaincapsdata/bhyve_basic.x86_64.xml +index dd054577c0..eff2a8e4a5 100644 +--- a/tests/domaincapsdata/bhyve_basic.x86_64.xml ++++ b/tests/domaincapsdata/bhyve_basic.x86_64.xml +@@ -34,5 +34,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/bhyve_fbuf.x86_64.xml b/tests/domaincapsdata/bhyve_fbuf.x86_64.xml +index 0b1d9c17d7..a7cb29972f 100644 +--- a/tests/domaincapsdata/bhyve_fbuf.x86_64.xml ++++ b/tests/domaincapsdata/bhyve_fbuf.x86_64.xml +@@ -51,5 +51,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/bhyve_uefi.x86_64.xml b/tests/domaincapsdata/bhyve_uefi.x86_64.xml +index 69fff197a7..bbf5805afd 100644 +--- a/tests/domaincapsdata/bhyve_uefi.x86_64.xml ++++ b/tests/domaincapsdata/bhyve_uefi.x86_64.xml +@@ -43,5 +43,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/empty.xml b/tests/domaincapsdata/empty.xml +index 97752ca04a..387a8c3c3d 100644 +--- a/tests/domaincapsdata/empty.xml ++++ b/tests/domaincapsdata/empty.xml +@@ -14,5 +14,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/libxl-xenfv.xml b/tests/domaincapsdata/libxl-xenfv.xml +index c71d759517..013184882b 100644 +--- a/tests/domaincapsdata/libxl-xenfv.xml ++++ b/tests/domaincapsdata/libxl-xenfv.xml +@@ -77,5 +77,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/libxl-xenpv.xml b/tests/domaincapsdata/libxl-xenpv.xml +index 8ae2370b7e..6448259709 100644 +--- a/tests/domaincapsdata/libxl-xenpv.xml ++++ b/tests/domaincapsdata/libxl-xenpv.xml +@@ -67,5 +67,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml +index 152f201ff9..2cdfdf2be6 100644 +--- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml +@@ -318,5 +318,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml +index cea9377cfe..27686a047f 100644 +--- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml +@@ -264,5 +264,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml +index ab68d3547b..468e26e694 100644 +--- a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml ++++ b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml +@@ -196,5 +196,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml +index ab68d3547b..468e26e694 100644 +--- a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml ++++ b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml +@@ -196,5 +196,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml +index 66a9ba87e9..3c10eee92a 100644 +--- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml ++++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml +@@ -164,5 +164,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0.s390x.xml b/tests/domaincapsdata/qemu_4.2.0.s390x.xml +index c0567ffdde..2566693e49 100644 +--- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml ++++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml +@@ -270,5 +270,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml +index 8b7cf44d6d..ca942c1790 100644 +--- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml +@@ -318,5 +318,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml +index 1d29a40f74..5e38ee09ec 100644 +--- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml +@@ -320,5 +320,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml +index 1c7d7c97df..83a90709ba 100644 +--- a/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml +@@ -149,5 +149,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml +index 7b7420ff8e..cd1e975072 100644 +--- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml +@@ -266,5 +266,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml +index d3cd333c07..ee9031fa88 100644 +--- a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml +@@ -209,5 +209,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml +index 3272241b8f..4a353a5830 100644 +--- a/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml +@@ -152,5 +152,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml +index d3cd333c07..ee9031fa88 100644 +--- a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml +@@ -209,5 +209,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml +index 5f29f5c4ae..bb5af8be43 100644 +--- a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml +@@ -171,5 +171,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml +index f3b3adb19e..c6e7631c78 100644 +--- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml +@@ -320,5 +320,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml +index 2a8a784813..8148aea254 100644 +--- a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml +@@ -253,5 +253,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml +index 272d9bed08..1ce59092f3 100644 +--- a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml +@@ -266,5 +266,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.1.0.sparc.xml b/tests/domaincapsdata/qemu_5.1.0.sparc.xml +index 7baee953ce..3e94d2c2a0 100644 +--- a/tests/domaincapsdata/qemu_5.1.0.sparc.xml ++++ b/tests/domaincapsdata/qemu_5.1.0.sparc.xml +@@ -135,5 +135,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml +index 735cd42466..98d8d97131 100644 +--- a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml +@@ -253,5 +253,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml +index 968cfe68e8..1ea56e4614 100644 +--- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml +@@ -253,5 +253,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml +index 1c7d7c97df..83a90709ba 100644 +--- a/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml +@@ -149,5 +149,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml +index 526f39254e..d808c675fa 100644 +--- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml +@@ -266,5 +266,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml +index f32634548b..52a2def30c 100644 +--- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml +@@ -209,5 +209,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml +index 3272241b8f..4a353a5830 100644 +--- a/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml +@@ -152,5 +152,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml +index f32634548b..52a2def30c 100644 +--- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml +@@ -209,5 +209,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml +index 96fd13e06e..75979d3110 100644 +--- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml +@@ -171,5 +171,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml +index 2af88d081a..30513a6b9a 100644 +--- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml ++++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml +@@ -272,5 +272,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml +index 9bbb22b0d8..cfe12255cd 100644 +--- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml +@@ -253,5 +253,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml +index 66da296d8e..a5073137d1 100644 +--- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml +@@ -260,5 +260,6 @@ + 450 + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml +index 0ffd95aee6..6ee80e581c 100644 +--- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml +@@ -274,5 +274,6 @@ + 450 + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml +index 64e62aacf2..f929b95bb1 100644 +--- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml ++++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml +@@ -211,5 +211,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml +index 64e62aacf2..f929b95bb1 100644 +--- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml ++++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml +@@ -211,5 +211,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml +index c8dd1e88c9..782640e0c9 100644 +--- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml ++++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml +@@ -273,5 +273,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml +index 0af8b9d064..a790cc39bc 100644 +--- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml +@@ -260,5 +260,6 @@ + 450 + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml +index cc2081955d..61f1c94e10 100644 +--- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml +@@ -256,5 +256,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml +index a80c86df4f..9f9a66f59d 100644 +--- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml +@@ -269,5 +269,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml +index 22f8c8a397..ceaa05bde8 100644 +--- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml +@@ -256,5 +256,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml +index 782aa792a9..15916b8880 100644 +--- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml +@@ -256,5 +256,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml +index 7ed62fb522..b93cf90da5 100644 +--- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml +@@ -271,5 +271,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml +index 64bed8b367..77db9c1371 100644 +--- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml ++++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml +@@ -218,5 +218,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml +index 64bed8b367..77db9c1371 100644 +--- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml ++++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml +@@ -218,5 +218,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml +index 69a6bcc8bc..f97d146dc3 100644 +--- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml ++++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml +@@ -170,5 +170,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml +index e6283ff153..a60d9e0186 100644 +--- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml +@@ -256,5 +256,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml b/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml +index 94a79e8743..a086cfa7c1 100644 +--- a/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml ++++ b/tests/domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml +@@ -172,5 +172,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +index 50b2ee2ffe..19708706eb 100644 +--- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +@@ -266,5 +266,6 @@ +
+ + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml +index 3a71b54847..fbeb374c33 100644 +--- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml +@@ -281,5 +281,6 @@ +
+ + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml +index d5830c46a3..18bd214788 100644 +--- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml ++++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml +@@ -217,5 +217,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml +index d5830c46a3..18bd214788 100644 +--- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml ++++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml +@@ -217,5 +217,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml +index c865dcf418..7d84541deb 100644 +--- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml ++++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml +@@ -175,5 +175,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml +index fa4b912168..b533d60836 100644 +--- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml +@@ -266,5 +266,6 @@ +
+ + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml +index 2eec2e3162..53bb94ec93 100644 +--- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml +@@ -256,5 +256,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml +index 1ae2a7c342..7d9ad4d5ac 100644 +--- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml +@@ -270,5 +270,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml +index aa3a0571b6..797da263c4 100644 +--- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml ++++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml +@@ -168,5 +168,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml +index 449e1b51d1..6c8603b385 100644 +--- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml +@@ -256,5 +256,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml +index dfd319431e..0b39233102 100644 +--- a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml ++++ b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml +@@ -179,5 +179,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml +index e48a07da28..9803645d19 100644 +--- a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml +@@ -262,5 +262,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml +index 69b6be7616..1a687681c9 100644 +--- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml ++++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml +@@ -260,5 +260,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml +index 69b6be7616..1a687681c9 100644 +--- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml +@@ -260,5 +260,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.2.0.ppc.xml b/tests/domaincapsdata/qemu_7.2.0.ppc.xml +index 7fd4b1ce17..13959c2daa 100644 +--- a/tests/domaincapsdata/qemu_7.2.0.ppc.xml ++++ b/tests/domaincapsdata/qemu_7.2.0.ppc.xml +@@ -154,5 +154,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml +index d116cf2e48..5976ca3a96 100644 +--- a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml +@@ -262,5 +262,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml +index 2815064abc..b16771e9b6 100644 +--- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml +@@ -281,5 +281,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml +index 1911e34b07..8293545d74 100644 +--- a/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml ++++ b/tests/domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml +@@ -155,5 +155,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml +index efb5fcb99d..749bf7ea97 100644 +--- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml +@@ -283,5 +283,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml +index d331dc45e5..0bdba04bc2 100644 +--- a/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml ++++ b/tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml +@@ -158,5 +158,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +index 07d1d06115..5dbdf5263f 100644 +--- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml +@@ -281,5 +281,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml +index 4d438efdf7..e8ca73563b 100644 +--- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml +@@ -283,5 +283,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml +index e32cd80c17..f2b1422f04 100644 +--- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml +@@ -284,5 +284,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsdata/qemu_8.1.0.s390x.xml +index 37c7c3b8bf..f84459c981 100644 +--- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml ++++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml +@@ -280,5 +280,6 @@ + + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml +index 919357e577..cb5e569825 100644 +--- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml +@@ -283,5 +283,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml +index f711a51044..7c0407c057 100644 +--- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml +@@ -285,5 +285,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml +index 784a29acd9..a713f4916a 100644 +--- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml +@@ -284,5 +284,6 @@ + avic + + ++ + + +diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml +index bc060e21b6..9107392448 100644 +--- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml ++++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml +@@ -285,5 +285,6 @@ + avic + + ++ + + +-- +2.43.0 + diff --git a/libvirt.spec b/libvirt.spec index 6c5e52f1afb4deb456c719bc43707d2ffb85ead2..b4472d02c8bab4bdc62db83d5abdce223fc0156a 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -262,7 +262,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 9.10.0 -Release: 17 +Release: 18 License: LGPLv2+ URL: https://libvirt.org/ @@ -341,6 +341,9 @@ Patch0067: Revert-qemu-Remove-pre-blockdev-PFLASH-setup.patch Patch0068: qemu_command-get-disk-alias-from-disk-instead-of-nod.patch Patch0069: migration-Add-the-VIR_MIGRATE_RETURNPATH-flag.patch Patch0070: Revert-Automatically-unbind-all-devices-driver-under.patch +Patch0071: add-qemu-VIRTCCA-capability-detection.patch +Patch0072: add-virtcca-test-xml.patch +Patch0073: virtcca-use-hugepage-disable-bind-numa.patch Requires: libvirt-daemon = %{version}-%{release} @@ -2633,6 +2636,11 @@ exit 0 %endif %changelog +* Wed Aug 27 2025 yxk - 9.10.0-18 +-add-qemu-VIRTCCA-capability-detection.patch +-add-virtcca-test-xml.patch +-virtcca-use-hugepage-disable-bind-numa.patch + * Wed Jul 30 2025 JiaboFeng - 9.10.0-17 - Revert "Automatically unbind all devices' driver under same root port and bind to vfio-pci in the context of CVM." diff --git a/virtcca-use-hugepage-disable-bind-numa.patch b/virtcca-use-hugepage-disable-bind-numa.patch new file mode 100644 index 0000000000000000000000000000000000000000..d35214c8196df79e3386c78c64c62fafa2215bc7 --- /dev/null +++ b/virtcca-use-hugepage-disable-bind-numa.patch @@ -0,0 +1,32 @@ +From af954cfd3f9eba47250081b0ba4c46ec5f434246 Mon Sep 17 00:00:00 2001 +From: liuhao365 +Date: Thu, 12 Jun 2025 10:01:09 +0800 +Subject: [PATCH 3/3] virtcca use hugepage disable bind numa + Signed-off-by:lh + +--- + src/qemu/qemu_process.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c +index 49eaed4d6f..5240fbce09 100644 +--- a/src/qemu/qemu_process.c ++++ b/src/qemu/qemu_process.c +@@ -2636,9 +2636,11 @@ qemuProcessSetupPid(virDomainObj *vm, + virDomainCgroupSetupCpusetCpus(cgroup, use_cpumask) < 0) + goto cleanup; + +- if (mem_mask && virCgroupSetCpusetMems(cgroup, mem_mask) < 0) +- goto cleanup; +- ++ if (!vm->def->sec || ++ vm->def->sec->sectype != VIR_DOMAIN_LAUNCH_SECURITY_CVM) { ++ if (mem_mask && virCgroupSetCpusetMems(cgroup, mem_mask) < 0) ++ goto cleanup; ++ } + } + + if (virDomainCgroupSetupVcpuBW(cgroup, period, quota) < 0) +-- +2.43.0 +