From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PULL 15/29] hw/display: avoid creating empty loadable modules
Date: Tue, 10 Jan 2023 17:02:19 +0100 [thread overview]
Message-ID: <20230110160233.339771-16-pbonzini@redhat.com> (raw)
In-Reply-To: <20230110160233.339771-1-pbonzini@redhat.com>
From: Daniel P. Berrangé <berrange@redhat.com>
When using --disable-virglrenderer, QEMU still creates
hw-display-virtio-gpu-gl.so
hw-display-virtio-vga-gl.so
hw-display-virtio-gpu-pci-gl.so
but when these are loaded, they provide no functionality as the code
which registers types is not compiled in. Funtionally this is
relatively harmless, because QEMU is fine loading a module with no
types.
This is rather confusing for users and OS distro maintainers though,
as they think they have the GL functionality built, but in fact the
module they are looking at provides nothing of value.
The root cause is the use of 'when/if_true' rules when adding sources
to the module source set. If all the rules evaluate to false, then we
have declared the module, but not added anything to it. We need to
put declaration of the entire module inside a condition based on
existance of the 3rd party library deps that are mandatory.
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1352
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20221219125830.2369169-1-berrange@redhat.com>
[Do not check for pixman. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/display/meson.build | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/hw/display/meson.build b/hw/display/meson.build
index 7a725ed80eb5..f860c2c562ac 100644
--- a/hw/display/meson.build
+++ b/hw/display/meson.build
@@ -73,10 +73,12 @@ if config_all_devices.has_key('CONFIG_VIRTIO_GPU')
virtio_gpu_ss.add(when: 'CONFIG_VHOST_USER_GPU', if_true: files('vhost-user-gpu.c'))
hw_display_modules += {'virtio-gpu': virtio_gpu_ss}
- virtio_gpu_gl_ss = ss.source_set()
- virtio_gpu_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', virgl, opengl],
- if_true: [files('virtio-gpu-gl.c', 'virtio-gpu-virgl.c'), pixman, virgl])
- hw_display_modules += {'virtio-gpu-gl': virtio_gpu_gl_ss}
+ if virgl.found() and opengl.found()
+ virtio_gpu_gl_ss = ss.source_set()
+ virtio_gpu_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', virgl, opengl],
+ if_true: [files('virtio-gpu-gl.c', 'virtio-gpu-virgl.c'), pixman, virgl])
+ hw_display_modules += {'virtio-gpu-gl': virtio_gpu_gl_ss}
+ endif
endif
if config_all_devices.has_key('CONFIG_VIRTIO_PCI')
@@ -87,10 +89,12 @@ if config_all_devices.has_key('CONFIG_VIRTIO_PCI')
if_true: files('vhost-user-gpu-pci.c'))
hw_display_modules += {'virtio-gpu-pci': virtio_gpu_pci_ss}
- virtio_gpu_pci_gl_ss = ss.source_set()
- virtio_gpu_pci_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', 'CONFIG_VIRTIO_PCI', virgl, opengl],
- if_true: [files('virtio-gpu-pci-gl.c'), pixman])
- hw_display_modules += {'virtio-gpu-pci-gl': virtio_gpu_pci_gl_ss}
+ if virgl.found() and opengl.found()
+ virtio_gpu_pci_gl_ss = ss.source_set()
+ virtio_gpu_pci_gl_ss.add(when: ['CONFIG_VIRTIO_GPU', 'CONFIG_VIRTIO_PCI', virgl, opengl],
+ if_true: [files('virtio-gpu-pci-gl.c'), pixman])
+ hw_display_modules += {'virtio-gpu-pci-gl': virtio_gpu_pci_gl_ss}
+ endif
endif
if config_all_devices.has_key('CONFIG_VIRTIO_VGA')
--
2.38.1
next prev parent reply other threads:[~2023-01-10 17:53 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-10 16:02 [PULL 00/29] Misc patches for 2023-01-10 Paolo Bonzini
2023-01-10 16:02 ` [PULL 01/29] configure: fix GLIB_VERSION for cross-compilation Paolo Bonzini
2023-01-10 16:02 ` [PULL 02/29] i386: Emit correct error code for 64-bit IDT entry Paolo Bonzini
2023-01-10 16:02 ` [PULL 03/29] accel: introduce accelerator blocker API Paolo Bonzini
2023-01-10 16:02 ` [PULL 04/29] KVM: keep track of running ioctls Paolo Bonzini
2023-01-10 16:02 ` [PULL 05/29] kvm: Atomic memslot updates Paolo Bonzini
2023-01-10 16:02 ` [PULL 06/29] target/i386: Remove compilation errors when -Werror=maybe-uninitialized Paolo Bonzini
2023-01-10 17:19 ` Eric Auger
2023-01-11 9:18 ` Paolo Bonzini
2023-01-11 10:03 ` Philippe Mathieu-Daudé
2023-01-10 16:02 ` [PULL 07/29] chardev: clean up chardev-parallel.c Paolo Bonzini
2023-01-10 16:02 ` [PULL 08/29] gitlab: remove redundant setting of PKG_CONFIG_PATH Paolo Bonzini
2023-01-10 16:40 ` Daniel P. Berrangé
2023-01-11 9:20 ` Paolo Bonzini
2023-01-11 10:18 ` Philippe Mathieu-Daudé
2023-01-10 16:02 ` [PULL 09/29] disas: add G_GNUC_PRINTF to gstring_printf Paolo Bonzini
2023-01-10 16:02 ` [PULL 10/29] hw/xen: use G_GNUC_PRINTF/SCANF for various functions Paolo Bonzini
2023-01-10 16:02 ` [PULL 11/29] tools/virtiofsd: add G_GNUC_PRINTF for logging functions Paolo Bonzini
2023-01-10 16:02 ` [PULL 12/29] util/error: add G_GNUC_PRINTF for various functions Paolo Bonzini
2023-01-10 16:02 ` [PULL 13/29] tests: " Paolo Bonzini
2023-01-10 16:02 ` [PULL 14/29] enforce use of G_GNUC_PRINTF attributes Paolo Bonzini
2023-01-10 16:02 ` Paolo Bonzini [this message]
2023-01-10 16:02 ` [PULL 16/29] libvhost-user: Provide _GNU_SOURCE when compiling outside of QEMU Paolo Bonzini
2023-01-10 16:02 ` [PULL 17/29] libvhost-user: Replace typeof with __typeof__ Paolo Bonzini
2023-01-10 16:02 ` [PULL 18/29] libvhost-user: Cast rc variable to avoid compiler warning Paolo Bonzini
2023-01-10 16:02 ` [PULL 19/29] libvhost-user: Use unsigned int i for some for-loop iterations Paolo Bonzini
2023-01-10 16:02 ` [PULL 20/29] libvhost-user: Declare uffdio_register early to make it C90 compliant Paolo Bonzini
2023-01-10 16:02 ` [PULL 21/29] libvhost-user: Change dev->postcopy_ufd assignment " Paolo Bonzini
2023-01-10 16:02 ` [PULL 22/29] libvduse: Provide _GNU_SOURCE when compiling outside of QEMU Paolo Bonzini
2023-01-10 16:02 ` [PULL 23/29] libvduse: Switch to unsigned int for inuse field in struct VduseVirtq Paolo Bonzini
2023-01-10 16:02 ` [PULL 24/29] libvduse: Fix assignment in vring_set_avail_event Paolo Bonzini
2023-01-10 16:02 ` [PULL 25/29] libvhost-user: " Paolo Bonzini
2023-01-10 16:02 ` [PULL 26/29] libvhost-user: Add extra compiler warnings Paolo Bonzini
2023-01-10 16:02 ` [PULL 27/29] libvduse: " Paolo Bonzini
2023-01-10 16:02 ` [PULL 28/29] target/i386: fix operand size of unary SSE operations Paolo Bonzini
2023-01-10 16:02 ` [PULL 29/29] configure: remove backwards-compatibility code Paolo Bonzini
2023-01-10 22:07 ` [PULL 00/29] Misc patches for 2023-01-10 Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230110160233.339771-16-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=berrange@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).