- conf, docs: Add support for direct and extended tlbflush features (RHEL-7122) - qemu: Add support for direct and extended tlbflush features (RHEL-7122) - conf: refactor hyperv features formatting (RHEL-7122) - conf: Adjust hyperv tlbflush formatting (RHEL-7122) - qemu_migration: Do not consider post-copy active in postcopy-recover (RHEL-73085) Resolves: RHEL-7122, RHEL-73085
113 lines
5.0 KiB
Diff
113 lines
5.0 KiB
Diff
From 6f1673eb80487d090c4abc2feaf6a6821fb09580 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <6f1673eb80487d090c4abc2feaf6a6821fb09580.1737030652.git.jdenemar@redhat.com>
|
|
From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
|
|
Date: Mon, 6 Jan 2025 17:20:57 +0100
|
|
Subject: [PATCH] conf: refactor hyperv features formatting
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Add a nested buffer for whatever sub-elements a particular
|
|
hyperv feature might have.
|
|
|
|
Signed-off-by: Ján Tomko <jtomko@redhat.com>
|
|
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
|
|
(cherry picked from commit ad6b4d1fef275036b31a2bee435144871ebbcfbb)
|
|
|
|
https://issues.redhat.com/browse/RHEL-7122
|
|
|
|
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
|
---
|
|
src/conf/domain_conf.c | 46 +++++++++++++++++-------------------------
|
|
1 file changed, 19 insertions(+), 27 deletions(-)
|
|
|
|
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
|
index c2164f6377..c8254d2146 100644
|
|
--- a/src/conf/domain_conf.c
|
|
+++ b/src/conf/domain_conf.c
|
|
@@ -27954,13 +27954,15 @@ virDomainDefFormatFeatures(virBuffer *buf,
|
|
|
|
virBufferAsprintf(&childBuf, "<hyperv mode='%s'>\n",
|
|
virDomainHyperVModeTypeToString(def->features[i]));
|
|
- virBufferAdjustIndent(&childBuf, 2);
|
|
+
|
|
for (j = 0; j < VIR_DOMAIN_HYPERV_LAST; j++) {
|
|
+ g_auto(virBuffer) hypervAttrBuf = VIR_BUFFER_INITIALIZER;
|
|
+ g_auto(virBuffer) hypervChildBuf = VIR_BUFFER_INIT_CHILD(&tmpChildBuf);
|
|
+
|
|
if (def->hyperv_features[j] == VIR_TRISTATE_SWITCH_ABSENT)
|
|
continue;
|
|
|
|
- virBufferAsprintf(&childBuf, "<%s state='%s'",
|
|
- virDomainHypervTypeToString(j),
|
|
+ virBufferAsprintf(&hypervAttrBuf, " state='%s'",
|
|
virTristateSwitchTypeToString(def->hyperv_features[j]));
|
|
|
|
switch ((virDomainHyperv) j) {
|
|
@@ -27978,49 +27980,39 @@ virDomainDefFormatFeatures(virBuffer *buf,
|
|
case VIR_DOMAIN_HYPERV_AVIC:
|
|
case VIR_DOMAIN_HYPERV_EMSR_BITMAP:
|
|
case VIR_DOMAIN_HYPERV_XMM_INPUT:
|
|
- virBufferAddLit(&childBuf, "/>\n");
|
|
break;
|
|
|
|
case VIR_DOMAIN_HYPERV_SPINLOCKS:
|
|
- if (def->hyperv_features[j] != VIR_TRISTATE_SWITCH_ON) {
|
|
- virBufferAddLit(&childBuf, "/>\n");
|
|
- break;
|
|
+ if (def->hyperv_features[j] == VIR_TRISTATE_SWITCH_ON) {
|
|
+ virBufferAsprintf(&hypervAttrBuf,
|
|
+ " retries='%d'", def->hyperv_spinlocks);
|
|
}
|
|
- virBufferAsprintf(&childBuf, " retries='%d'/>\n",
|
|
- def->hyperv_spinlocks);
|
|
break;
|
|
|
|
case VIR_DOMAIN_HYPERV_STIMER:
|
|
- if (def->hyperv_features[j] != VIR_TRISTATE_SWITCH_ON) {
|
|
- virBufferAddLit(&childBuf, "/>\n");
|
|
- break;
|
|
- }
|
|
- if (def->hyperv_stimer_direct == VIR_TRISTATE_SWITCH_ON) {
|
|
- virBufferAddLit(&childBuf, ">\n");
|
|
- virBufferAdjustIndent(&childBuf, 2);
|
|
- virBufferAddLit(&childBuf, "<direct state='on'/>\n");
|
|
- virBufferAdjustIndent(&childBuf, -2);
|
|
- virBufferAddLit(&childBuf, "</stimer>\n");
|
|
- } else {
|
|
- virBufferAddLit(&childBuf, "/>\n");
|
|
+ if (def->hyperv_features[j] == VIR_TRISTATE_SWITCH_ON &&
|
|
+ def->hyperv_stimer_direct == VIR_TRISTATE_SWITCH_ON) {
|
|
+ virBufferAddLit(&hypervChildBuf, "<direct state='on'/>\n");
|
|
}
|
|
|
|
break;
|
|
|
|
case VIR_DOMAIN_HYPERV_VENDOR_ID:
|
|
- if (def->hyperv_features[j] != VIR_TRISTATE_SWITCH_ON) {
|
|
- virBufferAddLit(&childBuf, "/>\n");
|
|
- break;
|
|
+ if (def->hyperv_features[j] == VIR_TRISTATE_SWITCH_ON) {
|
|
+ virBufferEscapeString(&hypervAttrBuf, " value='%s'",
|
|
+ def->hyperv_vendor_id);
|
|
}
|
|
- virBufferEscapeString(&childBuf, " value='%s'/>\n",
|
|
- def->hyperv_vendor_id);
|
|
break;
|
|
|
|
case VIR_DOMAIN_HYPERV_LAST:
|
|
break;
|
|
}
|
|
+
|
|
+ virXMLFormatElement(&tmpChildBuf, virDomainHypervTypeToString(j),
|
|
+ &hypervAttrBuf, &hypervChildBuf);
|
|
}
|
|
- virBufferAdjustIndent(&childBuf, -2);
|
|
+
|
|
+ virBufferAddBuffer(&childBuf, &tmpChildBuf);
|
|
virBufferAddLit(&childBuf, "</hyperv>\n");
|
|
break;
|
|
|
|
--
|
|
2.47.1
|