96 lines
3.5 KiB
Diff
96 lines
3.5 KiB
Diff
From 637590711a1e9aaf304e8a6c8ec57adcb0272cca Mon Sep 17 00:00:00 2001
|
|
Message-ID: <637590711a1e9aaf304e8a6c8ec57adcb0272cca.1749039441.git.jdenemar@redhat.com>
|
|
From: Collin Walling <walling@linux.ibm.com>
|
|
Date: Mon, 16 Dec 2024 18:03:56 -0500
|
|
Subject: [PATCH] qemu_capabilities: filter deprecated features if requested
|
|
|
|
If flag VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEATURES
|
|
is passed to qemuConnectGetDomainCapabilities, then the domain's CPU
|
|
model features will be updated to set any deprecated features to the
|
|
'disabled' policy.
|
|
|
|
Signed-off-by: Collin Walling <walling@linux.ibm.com>
|
|
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
|
|
(cherry picked from commit cd1e837c22182dcadfe17b469c931f9fc9745a46)
|
|
JIRA: https://issues.redhat.com/browse/RHEL-89415
|
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
|
---
|
|
src/qemu/qemu_capabilities.c | 20 ++++++++++++++++++++
|
|
src/qemu/qemu_capabilities.h | 3 +++
|
|
src/qemu/qemu_driver.c | 8 +++++++-
|
|
3 files changed, 30 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
|
|
index b17c582b5e..6bff55f58e 100644
|
|
--- a/src/qemu/qemu_capabilities.c
|
|
+++ b/src/qemu/qemu_capabilities.c
|
|
@@ -3340,6 +3340,26 @@ virQEMUCapsGetCPUFeatures(virQEMUCaps *qemuCaps,
|
|
}
|
|
|
|
|
|
+void
|
|
+virQEMUCapsUpdateCPUDeprecatedFeatures(virQEMUCaps *qemuCaps,
|
|
+ virDomainVirtType virtType,
|
|
+ virCPUDef *cpu)
|
|
+{
|
|
+ qemuMonitorCPUModelInfo *modelInfo;
|
|
+ size_t i;
|
|
+
|
|
+ modelInfo = virQEMUCapsGetCPUModelInfo(qemuCaps, virtType);
|
|
+
|
|
+ if (!modelInfo || !modelInfo->deprecated_props)
|
|
+ return;
|
|
+
|
|
+ for (i = 0; i < g_strv_length(modelInfo->deprecated_props); i++) {
|
|
+ virCPUDefUpdateFeature(cpu, modelInfo->deprecated_props[i],
|
|
+ VIR_CPU_FEATURE_DISABLE);
|
|
+ }
|
|
+}
|
|
+
|
|
+
|
|
struct tpmTypeToCaps {
|
|
int type;
|
|
virQEMUCapsFlags caps;
|
|
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
|
|
index d2bccc0e2a..8de392bf0f 100644
|
|
--- a/src/qemu/qemu_capabilities.h
|
|
+++ b/src/qemu/qemu_capabilities.h
|
|
@@ -768,6 +768,9 @@ int virQEMUCapsGetCPUFeatures(virQEMUCaps *qemuCaps,
|
|
virDomainVirtType virtType,
|
|
bool migratable,
|
|
char ***features);
|
|
+void virQEMUCapsUpdateCPUDeprecatedFeatures(virQEMUCaps *qemuCaps,
|
|
+ virDomainVirtType virtType,
|
|
+ virCPUDef *cpu);
|
|
|
|
virDomainVirtType virQEMUCapsGetVirtType(virQEMUCaps *qemuCaps);
|
|
|
|
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
index b374b1978c..13e2838f19 100644
|
|
--- a/src/qemu/qemu_driver.c
|
|
+++ b/src/qemu/qemu_driver.c
|
|
@@ -16544,7 +16544,8 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
|
virDomainVirtType virttype;
|
|
g_autoptr(virDomainCaps) domCaps = NULL;
|
|
|
|
- virCheckFlags(0, NULL);
|
|
+ virCheckFlags(VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEATURES,
|
|
+ NULL);
|
|
|
|
if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0)
|
|
return NULL;
|
|
@@ -16563,6 +16564,11 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
|
arch, virttype)))
|
|
return NULL;
|
|
|
|
+ if (flags & VIR_CONNECT_GET_DOMAIN_CAPABILITIES_DISABLE_DEPRECATED_FEATURES) {
|
|
+ virQEMUCapsUpdateCPUDeprecatedFeatures(qemuCaps, virttype,
|
|
+ domCaps->cpu.hostModel);
|
|
+ }
|
|
+
|
|
return virDomainCapsFormat(domCaps);
|
|
}
|
|
|
|
--
|
|
2.49.0
|