- conf: Parse hyperv features even for host-model (RHEL-151688) - qemu: Wire up new hyperv host-model mode behavior (RHEL-151688) - Introduce EXPAND_CPU_FEATURES flag for domain capabilities (RHEL-153653) - qemu: Implement VIR_CONNECT_GET_DOMAIN_CAPABILITIES_EXPAND_CPU_FEATURES (RHEL-153653) - virsh: Add --expand-cpu-features option for domcapabilities (RHEL-153653) - docs: Clarify host-model description in domain capabilities (RHEL-153653) - qemu: Fix job handling when domain dies in post-copy migration (RHEL-145179) - security_apparmor: Use g_auto* in AppArmorSetSecurityHostdevLabel (RHEL-159902) - security: Cleanup hostdev label error logic (RHEL-159902) - qemu: Fix IOMMUFD and VFIO security labels (RHEL-159902) - viriommufd: Set IOMMU_OPTION_RLIMIT_MODE only when running privileged (RHEL-156803) - conf: Move and rename virStorageSourceFDTuple object (RHEL-156803) - conf: Refactor virHostdevIsPCIDevice (RHEL-156803) - hypervisor: Fix virHostdevNeedsVFIO detection (RHEL-156803) - qemu: Expand call to qemuDomainNeedsVFIO (RHEL-156803) - qemu: Update qemuDomainNeedsVFIO to ignore PCI hostdev with IOMMUFD (RHEL-156803) - src: Use virHostdevIsPCIDeviceWith* to check for IOMMUFD (RHEL-156803) - conf: Introduce domain iommufd element (RHEL-156803) - qemu: Implement iommufd (RHEL-156803) - conf: Add iommufd fdgroup support (RHEL-156803) - qemu: Implement iommufd fdgroup (RHEL-156803) - tests: Add iommufd fdgroup test (RHEL-156803) - hypervisor: Call virWaitForDevices() after detaching host devices (RHEL-156803) - qemuMigrationSrcBeginXML: Don't call 'qemuMigrationSrcBeginPhaseBlockDirtyBitmaps' with offline VM (RHEL-173433) - qemuMigrationSrcBeginPhase: Don't call 'qemuBlockNodesEnsureActive' with offline VM (RHEL-173433) - util: virGetSubIDs: do not limit file size (RHEL-174491) - cpu_conf: Introduce virCPUDefSortFeatures (RHEL-177364) - qemu_capabilities: Split virQEMUCapsFillDomainCPUCaps (RHEL-177364) - qemu: Move domain caps flags handling to virQEMUCapsFillDomainCPUHostModel (RHEL-177364) - qemu_capabilities: Always sort features in host-model CPU (RHEL-177364) - qemu_capabilities: Use g_autoptr in virQEMUCapsInitHostCPUModel (RHEL-177364) - qemu_capabilities: Split conditions in virQEMUCapsInitHostCPUModel (RHEL-177364) - qemu_capabilities: Cache expanded CPU (RHEL-177364) - domaincapstest: Test EXPAND_CPU_FEATURES flag (RHEL-177364) - util: Publish and mock virHostCPUGetMSRFromKVM (RHEL-177364) - cpu_x86: Introduce virCPUx86DataAddMSR (RHEL-177364) - cpu: Introduce virCPUUpdateFeatures (RHEL-177364) - Fix documentation of VIR_CONNECT_GET_DOMAIN_CAPABILITIES_EXPAND_CPU_FEATURES (RHEL-177364) - Introduce VIR_CONNECT_GET_DOMAIN_CAPABILITIES_SUPPORTED_CPU_FEATURES flag (RHEL-177364) - virsh: Add --supported-cpu-features option for domcapabilities (RHEL-177364) - domaincapstest: Test SUPPORTED_CPU_FEATURES flag (RHEL-177364) - qemu_capabilities: Fix domain capabilities on AMD CPUs (RHEL-177364) - distro: Replace old gating with tmt Resolves: RHEL-145179, RHEL-151688, RHEL-153653, RHEL-156803, RHEL-159902 Resolves: RHEL-173433, RHEL-174491, RHEL-177364
114 lines
4.4 KiB
Diff
114 lines
4.4 KiB
Diff
From b60749c749a3312148c72471b99bd76469a6aff2 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <b60749c749a3312148c72471b99bd76469a6aff2.1780571166.git.jdenemar@redhat.com>
|
|
From: Michal Privoznik <mprivozn@redhat.com>
|
|
Date: Wed, 11 Feb 2026 10:16:28 +0100
|
|
Subject: [PATCH] conf: Parse hyperv features even for host-model
|
|
|
|
As it turns out, some users of the hyperv "host-model" mode might
|
|
want to override the hypervisor defaults. For instance disable a
|
|
feature that's on by default, or vice versa. Currently, this is
|
|
not possible because as soon as our XML parser sees the
|
|
"host-model" mode it exits early and skips parsing of individual
|
|
features (for "custom" mode). Well, do not return early and parse
|
|
the rest.
|
|
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
|
(cherry picked from commit 380fb8939009a420f598175e63994a5bf197fd56)
|
|
Resolves: https://issues.redhat.com/browse/RHEL-151688
|
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
|
---
|
|
docs/formatdomain.rst | 3 +++
|
|
src/conf/domain_conf.c | 3 +--
|
|
src/conf/schemas/domaincommon.rng | 8 ++++----
|
|
tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml | 6 +++++-
|
|
tests/qemuxmlconfdata/hyperv-host-model.xml | 6 +++++-
|
|
5 files changed, 18 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
|
|
index 31232deb3c..5ec9a41aac 100644
|
|
--- a/docs/formatdomain.rst
|
|
+++ b/docs/formatdomain.rst
|
|
@@ -2197,6 +2197,9 @@ are:
|
|
enlightenments are supported by hypervisor and expands them on domain
|
|
startup into the live XML. In a sense, this is similar to ``host-model``
|
|
CPU mode (See `CPU model and topology`_). :since:`Since 11.9.0`
|
|
+ It is also possible to set features, like in ``custom`` mode. These are
|
|
+ then left untouched and no expansion is done for them. :since:`Since
|
|
+ 12.1.0`
|
|
|
|
The ``mode`` attribute can be omitted and will default to ``custom``.
|
|
|
|
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
|
|
index df05d96f01..1f7b1ca340 100644
|
|
--- a/src/conf/domain_conf.c
|
|
+++ b/src/conf/domain_conf.c
|
|
@@ -17269,8 +17269,7 @@ virDomainFeaturesHyperVDefParse(virDomainDef *def,
|
|
|
|
def->features[VIR_DOMAIN_FEATURE_HYPERV] = mode;
|
|
|
|
- if (mode == VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH ||
|
|
- mode == VIR_DOMAIN_HYPERV_MODE_HOST_MODEL)
|
|
+ if (mode == VIR_DOMAIN_HYPERV_MODE_PASSTHROUGH)
|
|
return 0;
|
|
|
|
node = xmlFirstElementChild(node);
|
|
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
|
|
index 441328a08e..afdf7bfc1a 100644
|
|
--- a/src/conf/schemas/domaincommon.rng
|
|
+++ b/src/conf/schemas/domaincommon.rng
|
|
@@ -8063,13 +8063,13 @@
|
|
<attribute name="mode">
|
|
<value>passthrough</value>
|
|
</attribute>
|
|
- <attribute name="mode">
|
|
- <value>host-model</value>
|
|
- </attribute>
|
|
<group>
|
|
<optional>
|
|
<attribute name="mode">
|
|
- <value>custom</value>
|
|
+ <choice>
|
|
+ <value>custom</value>
|
|
+ <value>host-model</value>
|
|
+ </choice>
|
|
</attribute>
|
|
</optional>
|
|
<interleave>
|
|
diff --git a/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml b/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml
|
|
index 453a43b3c9..9535cee02a 100644
|
|
--- a/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml
|
|
+++ b/tests/qemuxmlconfdata/hyperv-host-model.x86_64-latest.xml
|
|
@@ -10,7 +10,11 @@
|
|
</os>
|
|
<features>
|
|
<acpi/>
|
|
- <hyperv mode='host-model'/>
|
|
+ <hyperv mode='host-model'>
|
|
+ <relaxed state='on'/>
|
|
+ <spinlocks state='on' retries='8192'/>
|
|
+ <xmm_input state='off'/>
|
|
+ </hyperv>
|
|
</features>
|
|
<cpu mode='custom' match='exact' check='none'>
|
|
<model fallback='forbid'>qemu64</model>
|
|
diff --git a/tests/qemuxmlconfdata/hyperv-host-model.xml b/tests/qemuxmlconfdata/hyperv-host-model.xml
|
|
index fae00d86dd..473a41892d 100644
|
|
--- a/tests/qemuxmlconfdata/hyperv-host-model.xml
|
|
+++ b/tests/qemuxmlconfdata/hyperv-host-model.xml
|
|
@@ -10,7 +10,11 @@
|
|
</os>
|
|
<features>
|
|
<acpi/>
|
|
- <hyperv mode='host-model'/>
|
|
+ <hyperv mode='host-model'>
|
|
+ <relaxed state='on'/>
|
|
+ <spinlocks state='on' retries='8192'/>
|
|
+ <xmm_input state='off'/>
|
|
+ </hyperv>
|
|
</features>
|
|
<clock offset='utc'/>
|
|
<on_poweroff>destroy</on_poweroff>
|
|
--
|
|
2.54.0
|