You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
4.7 KiB
140 lines
4.7 KiB
From 4c33439fbcd0eb9ea09ab9a8a6aa5b8780ac9175 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <4c33439fbcd0eb9ea09ab9a8a6aa5b8780ac9175.1784297532.git.jdenemar@redhat.com>
|
|
From: Peter Krempa <pkrempa@redhat.com>
|
|
Date: Wed, 10 Jun 2026 12:38:00 +0200
|
|
Subject: [PATCH] qemuDeviceVideoGetModel: Simplify by relying on checks from
|
|
'qemuValidateDomainDeviceDefVideo'
|
|
|
|
'qemuValidateDomainDeviceDefVideo' ensures that only the correct video
|
|
device models are selected as well as that only QXL and VIRTIO video
|
|
devices can be selected as secondary.
|
|
|
|
Remove unnecessary checks and simplify the code.
|
|
|
|
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
(cherry picked from commit 736c0f455a0edf1ed6961558f6ece877f5f7dbc6)
|
|
|
|
https://redhat.atlassian.net/browse/RHEL-186019
|
|
|
|
https://redhat.atlassian.net/browse/RHEL-177646 (rhel-9.9)
|
|
---
|
|
src/qemu/qemu_command.c | 94 ++++++++++++++++++-----------------------
|
|
1 file changed, 40 insertions(+), 54 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
|
|
index 2f19a6c1ff..963dc2afa3 100644
|
|
--- a/src/qemu/qemu_command.c
|
|
+++ b/src/qemu/qemu_command.c
|
|
@@ -737,7 +737,32 @@ qemuDeviceVideoGetModel(const virDomainVideoDef *video,
|
|
*virtio = false;
|
|
*virtioBusSuffix = false;
|
|
|
|
- if (video->type == VIR_DOMAIN_VIDEO_TYPE_VIRTIO) {
|
|
+ /* 'qemuValidateDomainDeviceDefVideo' ensures that only supported models
|
|
+ * are used as well as that only 'QXL' and 'virtio' graphics can be
|
|
+ * secondary */
|
|
+ switch ((virDomainVideoType) video->type) {
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_VGA:
|
|
+ return "VGA";
|
|
+
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_CIRRUS:
|
|
+ return "cirrus-vga";
|
|
+
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_VMVGA:
|
|
+ return "vmware-svga";
|
|
+
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_QXL:
|
|
+ if (video->primary)
|
|
+ return "qxl-vga";
|
|
+
|
|
+ return "qxl";
|
|
+
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_BOCHS:
|
|
+ return "bochs-display";
|
|
+
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_RAMFB:
|
|
+ return "ramfb";
|
|
+
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_VIRTIO: {
|
|
struct qemuDeviceVideoModelVirtioOpts *opts = &qemuDeviceVideoGetModelVirtioOptsTable[video->virtiodevice];
|
|
|
|
*virtio = opts->virtio;
|
|
@@ -746,61 +771,22 @@ qemuDeviceVideoGetModel(const virDomainVideoDef *video,
|
|
return virDomainVideoVirtioDeviceTypeToString(video->virtiodevice);
|
|
}
|
|
|
|
- if (video->primary) {
|
|
- switch ((virDomainVideoType) video->type) {
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VGA:
|
|
- return "VGA";
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_DEFAULT:
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_XEN:
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_VBOX:
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_PARALLELS:
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_GOP:
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_NONE:
|
|
+ virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
+ _("invalid model for video type '%1$s'"),
|
|
+ virDomainVideoTypeToString(video->type));
|
|
+ return NULL;
|
|
|
|
- case VIR_DOMAIN_VIDEO_TYPE_CIRRUS:
|
|
- return "cirrus-vga";
|
|
-
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VMVGA:
|
|
- return "vmware-svga";
|
|
-
|
|
- case VIR_DOMAIN_VIDEO_TYPE_QXL:
|
|
- return "qxl-vga";
|
|
-
|
|
- case VIR_DOMAIN_VIDEO_TYPE_BOCHS:
|
|
- return "bochs-display";
|
|
-
|
|
- case VIR_DOMAIN_VIDEO_TYPE_RAMFB:
|
|
- return "ramfb";
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VIRTIO:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_DEFAULT:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_XEN:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VBOX:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_PARALLELS:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_GOP:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_NONE:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_LAST:
|
|
- break;
|
|
- }
|
|
- } else {
|
|
- switch ((virDomainVideoType) video->type) {
|
|
- case VIR_DOMAIN_VIDEO_TYPE_QXL:
|
|
- return "qxl";
|
|
-
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VIRTIO:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_DEFAULT:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VGA:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_CIRRUS:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VMVGA:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_XEN:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_VBOX:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_PARALLELS:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_GOP:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_NONE:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_BOCHS:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_RAMFB:
|
|
- case VIR_DOMAIN_VIDEO_TYPE_LAST:
|
|
- break;
|
|
- }
|
|
+ case VIR_DOMAIN_VIDEO_TYPE_LAST:
|
|
+ default:
|
|
+ virReportEnumRangeError(virDomainVideoType, video->type);
|
|
+ return NULL;
|
|
}
|
|
-
|
|
- virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
- _("invalid model for video type '%1$s'"),
|
|
- virDomainVideoTypeToString(video->type));
|
|
- return NULL;
|
|
}
|
|
|
|
|
|
--
|
|
2.55.0
|
|
|