Marc-André Lureau
cca1575686
build-sys: add a "pixman" feature
...
For now, pixman is mandatory, but we set config_host.h and Kconfig.
Once compilation is fixed, "pixman" will become actually optional.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
2023-11-07 14:04:24 +04:00
Marc-André Lureau
10b9ddbc83
Revert "virtio-gpu: block migration of VMs with blob=true"
...
If we decide to apply this patch (for easier backporting reasons), we
can now revert it.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Peter Xu <peterx@redhat.com >
2023-11-06 17:30:01 +04:00
Marc-André Lureau
f66767f75c
virtio-gpu: add virtio-gpu/blob vmstate subsection
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Peter Xu <peterx@redhat.com >
2023-11-06 17:29:54 +04:00
Marc-André Lureau
0f2a301db3
virtio-gpu: move scanout restoration to post_load
...
As we are going to introduce an extra subsection for "blob" resources,
scanout have to be restored after.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Peter Xu <peterx@redhat.com >
2023-11-06 16:13:34 +04:00
Marc-André Lureau
e92ffae6ba
virtio-gpu: factor out restore mapping
...
The same function is going to be used next to restore "blob" resources.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Peter Xu <peterx@redhat.com >
2023-11-06 16:13:30 +04:00
Marc-André Lureau
9c549ab689
virtio-gpu: block migration of VMs with blob=true
...
"blob" resources don't have an associated pixman image:
#0 pixman_image_get_stride (image=0x0) at ../pixman/pixman-image.c:921
#1 0x0000562327c25236 in virtio_gpu_save (f=0x56232bb13b00, opaque=0x56232b555a60, size=0, field=0x5623289ab6c8 <__compound_literal.3+104>, vmdesc=0x56232ab59fe0) at ../hw/display/virtio-gpu.c:1225
Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=2236353
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Peter Xu <peterx@redhat.com >
2023-11-06 16:12:56 +04:00
Marc-André Lureau
cd4c0da6db
migration: set file error on subsection loading
...
commit 13cde50889 ("vmstate: Return error in case of error") sets
QemuFile error to stop reading from it and report to the caller (checked
by unit tests). We should do the same on subsection loading error.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Juan Quintela <quintela@redhat.com >
Signed-off-by: Juan Quintela <quintela@redhat.com >
Message-ID: <20231024084043.2926316-8-marcandre.lureau@redhat.com >
2023-10-30 17:44:03 +01:00
Marc-André Lureau
4d8bdc2ae0
migration: rename vmstate_save_needed->vmstate_section_needed
...
The function is used on save at this point. The following commits will
use it on load.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Juan Quintela <quintela@redhat.com >
Signed-off-by: Juan Quintela <quintela@redhat.com >
Message-ID: <20231024084043.2926316-5-marcandre.lureau@redhat.com >
2023-10-30 17:44:03 +01:00
Marc-André Lureau
1ff5f4d294
memory: follow Error API guidelines
...
Return true/false on success/failure.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: David Hildenbrand <david@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20231009075310.153617-1-marcandre.lureau@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-10-20 14:46:06 +02:00
Marc-André Lureau
85f3d509b2
memory: drop needless argument
...
The argument is unused since commit bdc44640c ("cpu: Use QTAILQ for CPU list").
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: David Hildenbrand <david@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20231009075231.150568-1-marcandre.lureau@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-10-20 14:46:06 +02:00
Marc-André Lureau
8a5b974b98
memory: follow Error API guidelines
...
Return true/false on success/failure.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: David Hildenbrand <david@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20231009075310.153617-1-marcandre.lureau@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-10-19 23:13:27 +02:00
Marc-André Lureau
47538e44d6
memory: drop needless argument
...
The argument is unused since commit bdc44640c ("cpu: Use QTAILQ for CPU list").
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: David Hildenbrand <david@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20231009075231.150568-1-marcandre.lureau@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-10-19 23:13:27 +02:00
Marc-André Lureau
8741781157
hw/vfio: add ramfb migration support
...
Add a "VFIODisplay" subsection whenever "x-ramfb-migrate" is turned on.
Turn it off by default on machines <= 8.1 for compatibility reasons.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Acked-by: Gerd Hoffmann <kraxel@redhat.com >
[ clg: - checkpatch fixes
- improved warn_report() in vfio_realize() ]
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2023-10-18 10:10:49 +02:00
Marc-André Lureau
a1e88d2d2b
ramfb-standalone: add migration support
...
Add a "ramfb-dev" section whenever "x-migrate" is turned on. Turn it off
by default on machines <= 8.1 for compatibility reasons.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Acked-by: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2023-10-18 10:10:49 +02:00
Marc-André Lureau
303c33e606
ramfb: add migration support
...
Implementing RAMFB migration is quite straightforward. One caveat is to
treat the whole RAMFBCfg as a blob, since that's what is exposed to the
guest directly. This avoid having to fiddle with endianness issues if we
were to migrate fields individually as integers.
The devices using RAMFB will have to include ramfb_vmstate in their
migration description.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Laszlo Ersek <lersek@redhat.com >
Acked-by: Gerd Hoffmann <kraxel@redhat.com >
Signed-off-by: Cédric Le Goater <clg@redhat.com >
2023-10-18 10:10:49 +02:00
Marc-André Lureau
bf7e5215c4
hw/pc: remove needless includes
...
The include list is gigantic, make it smaller.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
2023-10-03 15:40:09 +04:00
Marc-André Lureau
314e0a84cd
hw/core: remove needless includes
...
The include list is large, make it smaller.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Acked-by: Laszlo Ersek <lersek@redhat.com >
2023-10-03 15:10:12 +04:00
Marc-André Lureau
f1de309792
analyze-migration: ignore RAM_SAVE_FLAG_MULTIFD_FLUSH
...
Traceback (most recent call last):
File "scripts/analyze-migration.py", line 605, in <module>
dump.read(dump_memory = args.memory)
File "scripts/analyze-migration.py", line 542, in read
section.read()
File "scripts/analyze-migration.py", line 214, in read
raise Exception("Unknown RAM flags: %x" % flags)
Exception: Unknown RAM flags: 200
See commit 77c259a4cb ("multifd: Create property multifd-flush-after-each-section")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Fabiano Rosas <farosas@suse.de >
2023-10-03 15:10:12 +04:00
Marc-André Lureau
9bd4d3df63
ui/gtk: fix UI info precondition
...
dpy_get_ui_info() shouldn't be called if the underlying GPU doesn't
support it.
Before the assert() was added and the regression introduced, GTK code
used to get "zero" UI info, for ex with a simple VGA device. The assert
was added to prevent from calling when there are no console too. The
other display backend that calls dpy_get_ui_info() correctly checks that
pre-condition.
Calling dpy_set_ui_info() is "safe" in this case, it will simply return
an error that can be generally ignored.
Fixes: commit a92e7bb4c ("ui: add precondition for dpy_get_ui_info()")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
2023-10-03 15:09:57 +04:00
Marc-André Lureau
75b773d84c
win32: avoid discarding the exception handler
...
In all likelihood, the compiler with lto doesn't see the function being
used, from assembly macro __try1. Help it by marking the function has
being used.
Resolves:
https://gitlab.com/qemu-project/qemu/-/issues/1904
Fixes: commit d89f30b4df ("win32: wrap socket close() with an exception handler")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
2023-10-03 15:05:20 +04:00
Marc-André Lureau
8e32ddff69
tpm: fix crash when FD >= 1024 and unnecessary errors due to EINTR
...
Replace select() with poll() to fix a crash when QEMU has a large number
of FDs. Also use RETRY_ON_EINTR to avoid unnecessary errors due to EINTR.
Cc: qemu-stable@nongnu.org
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2020133
Fixes: 56a3c24ffc ("tpm: Probe for connected TPM 1.2 or TPM 2")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru >
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com >
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com >
2023-09-13 08:42:57 -04:00
Marc-André Lureau
a92e7bb4ca
ui: add precondition for dpy_get_ui_info()
...
Ensure that it only get called when dpy_ui_info_supported(). The
function should always return a result. There should be a non-null
console or active_console.
Modify the argument to be const as well.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Albert Esteve <aesteve@redhat.com >
2023-09-12 11:14:09 +04:00
Marc-André Lureau
48a35e12fa
ui: fix crash when there are no active_console
...
Thread 1 "qemu-system-x86" received signal SIGSEGV, Segmentation fault.
0x0000555555888630 in dpy_ui_info_supported (con=0x0) at ../ui/console.c:812
812 return con->hw_ops->ui_info != NULL;
(gdb) bt
#0 0x0000555555888630 in dpy_ui_info_supported (con=0x0) at ../ui/console.c:812
#1 0x00005555558a44b1 in protocol_client_msg (vs=0x5555578c76c0, data=0x5555581e93f0 <incomplete sequence \373>, len=24) at ../ui/vnc.c:2585
#2 0x00005555558a19ac in vnc_client_read (vs=0x5555578c76c0) at ../ui/vnc.c:1607
#3 0x00005555558a1ac2 in vnc_client_io (ioc=0x5555581eb0e0, condition=G_IO_IN, opaque=0x5555578c76c0) at ../ui/vnc.c:1635
Fixes:
https://issues.redhat.com/browse/RHEL-2600
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Albert Esteve <aesteve@redhat.com >
2023-09-12 11:13:52 +04:00
Marc-André Lureau
04562ee88e
virtio-gpu/win32: set the destroy function on load
...
Don't forget to unmap the resource memory.
Fixes: commit 9462ff469 ("virtio-gpu/win32: allocate shareable 2d resources/images")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
6d8cd7c220
ui/console: move DisplaySurface to its own header
...
Mostly for readability reasons.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
6f11081991
ui/vc: split off the VC part from console.c
...
Move common declarations to console-priv.h, and add a new unit
console-vc.c which will handle VC/chardev rendering, when pixman is
available.
(if necessary, the move could be done chunk by chunks)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
f7ce755df8
ui/vc: preliminary QemuTextConsole changes before split
...
Those changes will help to split console.c unit in the following commit.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
ff174c67db
ui/console: remove redundant format field
...
It's already part of PIXMAN image.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
cc6ba2c6f5
ui/vc: rename kbd_put to qemu_text_console functions
...
They are QemuTextConsole functions, let's make it clear.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
f5360a0d28
ui/vc: remove kbd_put_keysym() and update function calls
...
The function calls to `kbd_put_keysym` have been updated to now call
`kbd_put_keysym_console` with a NULL console parameter.
Like most console functions, NULL argument is now for the active console.
This will allow to rename the text console functions in a consistent manner.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
67a6fcb2b0
vmmouse: use explicit code
...
It's weird to shift x & y without obvious reason. Let's make this more
explicit and future-proof.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
2023-09-12 10:37:02 +04:00
Marc-André Lureau
885f380f7b
vmmouse: replace DPRINTF with tracing
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-09-12 10:37:01 +04:00
Marc-André Lureau
95bef686e4
qxl: don't assert() if device isn't yet initialized
...
If the PCI BAR isn't yet mapped or was unmapped, QXL_IO_SET_MODE will
assert(). Instead, report a guest bug and keep going.
This can be reproduced with:
cat << EOF | ./qemu-system-x86_64 -vga qxl -m 2048 -nodefaults -qtest stdio
outl 0xcf8 0x8000101c
outl 0xcfc 0xc000
outl 0xcf8 0x80001001
outl 0xcfc 0x01000000
outl 0xc006 0x00
EOF
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1829
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Cc: qemu-stable@nongnu.org
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2023-09-08 13:08:52 +03:00
Marc-André Lureau
9db018ac56
ui/vc: change the argument for QemuTextConsole
...
Those functions are specifc to text/vc console, make that explicit from
the argument type.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-45-marcandre.lureau@redhat.com >
2023-09-04 14:57:44 +04:00
Marc-André Lureau
32aa1f8dee
ui/vc: do not parse VC-specific options in Spice and GTK
...
In commit 6f974c843c ("gtk: overwrite the console.c char driver"), I
shared the VC console parse handler with GTK. And later on in commit
d8aec9d9 ("display: add -display spice-app launching a Spice client"),
I also used it to handle spice-app VC.
This is not necessary, the VC console options (width/height/cols/rows)
are specific, and unused by tty-level GTK/Spice VC.
This is not a breaking change, as those options are still being parsed
by QAPI ChardevVC. Adjust the documentation about it.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-44-marcandre.lureau@redhat.com >
2023-09-04 14:57:37 +04:00
Marc-André Lureau
322dae4bc8
ui/vc: move text console invalidate in helper
...
This will allow to split the VC code in a separate unit more easily.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-43-marcandre.lureau@redhat.com >
2023-09-04 14:38:15 +04:00
Marc-André Lureau
893fe23e7d
ui/console: minor stylistic changes
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-42-marcandre.lureau@redhat.com >
2023-09-04 14:24:36 +04:00
Marc-André Lureau
9cb737b77d
ui/vc: skip text console resize when possible
...
This function is called on invalidate, on each cursor blink.
Avoid the extra copy when the console size didn't change.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-41-marcandre.lureau@redhat.com >
2023-09-04 14:24:08 +04:00
Marc-André Lureau
3f9c21325c
ui/console: fold text_console_update_cursor_timer
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230830093843.3531473-40-marcandre.lureau@redhat.com >
2023-09-04 14:03:08 +04:00
Marc-André Lureau
0a1642e7cc
ui/console: assert(surface) where appropriate
...
The QemuTextConsole code paths assume a surface is being used as
scanout, let's make this more explicit.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-39-marcandre.lureau@redhat.com >
2023-09-04 14:01:52 +04:00
Marc-André Lureau
b704a8ce0c
ui/console: rename vga_ functions with qemu_console_
...
They are not specific to VGA. Let's use the object type name as prefix
instead, to avoid confusion.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230830093843.3531473-38-marcandre.lureau@redhat.com >
2023-09-04 14:01:22 +04:00
Marc-André Lureau
1ece6777fe
ui/console: use QEMU_PIXMAN_COLOR helpers
...
QEMU_RGB macro is actually defining a pixman color. Make this explicit
in the macro name. Move it to qemu-pixman.h so it can be used elsewhere,
as done in the following patch. Finally, define
QEMU_PIXMAN_COLOR_{BLACK,GRAY}, to avoid need to look up the VGA color
table from the QemuConsole placeholder surface rendering.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230830093843.3531473-37-marcandre.lureau@redhat.com >
2023-09-04 14:00:56 +04:00
Marc-André Lureau
8c6381d846
ui/console: declare console types in console.h
...
We are going to split the console.c unit next, and implement
separately. But we need to check the underlying type in various places.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-36-marcandre.lureau@redhat.com >
2023-09-04 14:00:46 +04:00
Marc-André Lureau
742a6896ea
ui/vc: use common text console surface creation
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-35-marcandre.lureau@redhat.com >
2023-09-04 14:00:38 +04:00
Marc-André Lureau
6ce7b1fa88
ui/console: remove need for g_width/g_height
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-34-marcandre.lureau@redhat.com >
2023-09-04 14:00:31 +04:00
Marc-André Lureau
5e5a30b7d1
ui/console: simplify getting active_console size
...
We can get the active console dimension regardless of its kind, by
simply giving NULL as argument. It will fallback with the given value
when the dimensions aren't known.
This will also allow to move the code in a separate unit more easily.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-33-marcandre.lureau@redhat.com >
2023-09-04 14:00:21 +04:00
Marc-André Lureau
60cb14b4f9
ui/vc: move some text console initialization to qom handlers
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-32-marcandre.lureau@redhat.com >
2023-09-04 14:00:07 +04:00
Marc-André Lureau
98ee9dab81
ui/vc: fold text_console_do_init() in vc_chr_open()
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230830093843.3531473-31-marcandre.lureau@redhat.com >
2023-09-04 13:56:24 +04:00
Marc-André Lureau
58d5870845
ui/console: move graphic fields to QemuGraphicConsole
...
Move fields specific to graphic console to the console subclass.
qemu_console_get_head() is adapated to accomodate QemuTextConsole, and
always returns 0.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-30-marcandre.lureau@redhat.com >
2023-09-04 13:55:59 +04:00
Marc-André Lureau
b2bb9cc43d
ui/vc: move text fields to QemuTextConsole
...
Now we can instantiate the specific console with its own fields. Pass
the most appropriate type to the various functions, and cast up to
QEMU_CONSOLE as necessary.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-29-marcandre.lureau@redhat.com >
2023-09-04 13:55:56 +04:00
Marc-André Lureau
463c6b19c7
ui/console: free more QemuConsole resources
...
This code path is probably not executed at this point, since console
aren't being released.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-28-marcandre.lureau@redhat.com >
2023-09-04 13:55:36 +04:00
Marc-André Lureau
b97a76d035
ui/vc: move cursor_timer initialization to QemuTextConsole class
...
The timer is only relevant when a text console exists.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-27-marcandre.lureau@redhat.com >
2023-09-04 13:53:03 +04:00
Marc-André Lureau
cfde05d15b
ui/console: allocate ui_timer in QemuConsole
...
Although at this point only QemuGraphicConsole have hw_ops that
implements ui_info() callback, it makes sense to keep the code in the
base QemuConsole, to simplify conditions for the caller.
As of now, the code didn't reach a NULL timer because dpy_set_ui_info()
checks if dpy_ui_info_supported() (hw_ops->ui_info != NULL), which is
false for text_console_ops. This is a bit fragile, let simply allocate
and free the timer in the base class.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-26-marcandre.lureau@redhat.com >
2023-09-04 13:52:48 +04:00
Marc-André Lureau
7fa4b8041b
ui/console: update the head from unused QemuConsole
...
When recycling unused QemuConsole, we should still set the associated
head number for correct information and lookups.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-25-marcandre.lureau@redhat.com >
2023-09-04 13:52:16 +04:00
Marc-André Lureau
f9411aaebd
ui/console: specialize console_lookup_unused()
...
graphics_console_init() is expected to return a graphic console.
The function doesn't need to be exported.
We are going to specialize further QemuGraphicConsole & QemuTextConsole.
The two will not be interchangeable anymore.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-24-marcandre.lureau@redhat.com >
2023-09-04 13:48:31 +04:00
Marc-André Lureau
34b7751574
ui/console: remove new_console()
...
The constructor helper isn't of much used now.
"head" is only specified for graphic console (and default to 0), and we
are going to move it to QemuGraphicConsole next.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-23-marcandre.lureau@redhat.com >
2023-09-04 13:48:19 +04:00
Marc-André Lureau
ba0ec5c293
ui/console: register the console from qemu_console_init()
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-22-marcandre.lureau@redhat.com >
2023-09-04 13:48:10 +04:00
Marc-André Lureau
c105d60f7f
ui/console: instantiate a specific console type
...
This will allow to move code/data to the specific console types.
Replace console_type_t with object type check.
QemuConsole can be abstract.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-21-marcandre.lureau@redhat.com >
2023-09-04 13:47:58 +04:00
Marc-André Lureau
b208f745a8
ui/console: introduce different console objects
...
Boilerplate code to introduce different object types for the different
console types.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-20-marcandre.lureau@redhat.com >
2023-09-04 13:47:39 +04:00
Marc-André Lureau
098d57e7c0
ui/console: change new_console() to use object initialization
...
Object construction should be done in respective object instance and
class handlers.
Introduce qemu_console_register() to split out the registration logic.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-19-marcandre.lureau@redhat.com >
2023-09-04 13:47:36 +04:00
Marc-André Lureau
e265917c77
ui/console: use OBJECT_DEFINE_TYPE for QemuConsole
...
The following patch will move some object initialization to the
corresponding handlers.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-18-marcandre.lureau@redhat.com >
2023-09-04 13:38:06 +04:00
Marc-André Lureau
6505fd8d23
ui/vc: move VCCharDev specific fields out of QemuConsole
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-17-marcandre.lureau@redhat.com >
2023-09-04 13:37:48 +04:00
Marc-André Lureau
4c946b7f97
ui/vc: pass VCCharDev to VC-specific functions
...
Even though they actually use more of QemuConsole at this point, it
makes it clearer those functions are only used from the chardev
implementation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-16-marcandre.lureau@redhat.com >
2023-09-04 13:37:11 +04:00
Marc-André Lureau
d7c634aadf
ui/vc: fold text_update_xy()
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-15-marcandre.lureau@redhat.com >
2023-09-04 13:36:42 +04:00
Marc-André Lureau
3be82c6a3a
ui/vc: replace variable with static text attributes default
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-14-marcandre.lureau@redhat.com >
2023-09-04 13:36:32 +04:00
Marc-André Lureau
8c63667b25
ui/vc: move VCChardev declaration at the top
...
To allow easier refactoring in following patches.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-13-marcandre.lureau@redhat.com >
2023-09-04 12:38:20 +04:00
Marc-André Lureau
6657e41cde
ui/vc: VC always has a DisplayState now
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-12-marcandre.lureau@redhat.com >
2023-09-04 12:37:59 +04:00
Marc-André Lureau
dc6984bdc3
ui/console: new_console() cannot fail
...
There is no code path that could allow a NULL return there.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-11-marcandre.lureau@redhat.com >
2023-09-04 12:37:54 +04:00
Marc-André Lureau
2fd319cff0
ui/console: get the DisplayState from new_console()
...
There is no obvious reason to defer text console initialization. We can
simply take the global display state in new_console().
This simplify somewhat the code to allow moving the VC to a separate unit.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-10-marcandre.lureau@redhat.com >
2023-09-04 12:37:45 +04:00
Marc-André Lureau
cbcf0fa8fd
ui/console: drop have_gfx
...
All usages have been removed.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-9-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
bc9b8bc93c
ui/console: call dpy_gfx_update() regardless of have_gfx
...
The function will handle the case when no listeners are gfx, without
extra meaningful cost.
This allows to get rid of DisplayState dependency in VC implementation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-8-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
074b24094f
ui/console: console_select() regardless of have_gfx
...
Even if we don't have a gfx listener, we should call
displaychangelistener_display_console() which handle that case correctly.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-7-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
177422789b
ui/vc: drop have_text
...
If there are no "text" listener, the callback will simply be ignored.
The rest of text handling can be done cheaply.
This allows to remove some dependency on DisplayState from VC
implementation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-6-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
f1f7a1e2cf
ui/vc: replace vc_chr_write() with generic qemu_chr_write()
...
We shouldn't call the callback directly, but use the chardev API, unless
there is a clear reason.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230830093843.3531473-5-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
4f2c765ba6
ui/qmp: move screendump to ui-qmp-cmds.c
...
console.c unit is over-crowded. This code is specific to the handling of
the QMP screendump command, so move it in ui-qmp-cmds.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-4-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
426749a7b7
ui: remove qemu_pixman_linebuf_copy()
...
Since commit 43c7d8bd44 ("console: add qemu_pixman_linebuf_copy"), it
seems it was never used.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230830093843.3531473-3-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
90da7d552f
ui: remove qemu_pixman_color() helper
...
Usage removed in commit e27bd65a72 ("console: switch color_table_rgb to pixman_color_t")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230830093843.3531473-2-marcandre.lureau@redhat.com >
2023-09-01 17:21:04 +00:00
Marc-André Lureau
a41e2d97f9
virtio-gpu: reset gfx resources in main thread
...
Calling OpenGL from different threads can have bad consequences if not
carefully reviewed. It's not generally supported. In my case, I was
debugging a crash in glDeleteTextures from OPENGL32.DLL, where I asked
qemu for gl=es, and thus ANGLE implementation was expected. libepoxy did
resolution of the global pointer for glGenTexture to the GLES version
from the main thread. But it resolved glDeleteTextures to the GL
version, because it was done from a different thread without correct
context. Oops.
Let's stick to the main thread for GL calls by using a BH.
Note: I didn't use atomics for reset_finished check, assuming the BQL
will provide enough of sync, but I might be wrong.
Acked-by: Dongwon Kim <dongwon.kim@intel.com >
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230726173929.690601-3-marcandre.lureau@redhat.com >
2023-08-07 15:45:45 +04:00
Marc-André Lureau
957d77863e
virtio-gpu: free BHs, by implementing unrealize
...
Acked-by: Dongwon Kim <dongwon.kim@intel.com >
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230726173929.690601-2-marcandre.lureau@redhat.com >
2023-08-07 15:45:25 +04:00
Marc-André Lureau
81cd34a359
chardev: report the handshake error
...
This can help to debug connection issues.
Related to:
https://bugzilla.redhat.com/show_bug.cgi?id=2196182
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-Id: <20230510072531.3937189-1-marcandre.lureau@redhat.com >
2023-08-07 15:42:33 +04:00
Marc-André Lureau
7b4a3f8145
ui/dbus: fix clang compilation issue
...
../ui/dbus-listener.c:236:9: error: expected expression
Error *err = NULL;
See:
https://gitlab.com/qemu-project/qemu/-/issues/1782#note_1488517427
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Message-Id: <20230726151221.515761-1-marcandre.lureau@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-08-01 23:52:23 +02:00
Marc-Andre Lureau
866b24e4c3
ui/dbus: fix win32 compilation when !opengl
...
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1782
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230725112540.53284-1-marcandre.lureau@redhat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2023-08-01 23:52:23 +02:00
Marc-André Lureau
92f69a2c9b
audio/pw: improve channel position code
...
Follow PulseAudio backend comment and code, and only implement the
channels QEMU actually supports at this point, and add the same comment
about limits and future mappings. Simplify a bit the code.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-13-marcandre.lureau@redhat.com >
2023-07-17 15:23:31 +04:00
Marc-André Lureau
8297b3d3d0
audio/pw: remove wrong comment
...
The stream is actually created connected.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-12-marcandre.lureau@redhat.com >
2023-07-17 15:23:31 +04:00
Marc-André Lureau
6f1b280e44
audio/pw: simplify error reporting in stream creation
...
create_stream() now reports on all error paths.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-11-marcandre.lureau@redhat.com >
2023-07-17 15:23:31 +04:00
Marc-André Lureau
0c57a05533
audio/pw: add more error reporting
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-10-marcandre.lureau@redhat.com >
2023-07-17 15:23:31 +04:00
Marc-André Lureau
92fd78689d
audio/pw: factorize some common code
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-9-marcandre.lureau@redhat.com >
2023-07-17 15:23:28 +04:00
Marc-André Lureau
24a9095c13
audio/pw: add more details on error
...
PipeWire uses errno to report error details.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-8-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
87048d20e6
audio/pw: trace during init before calling pipewire API
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-7-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
3b2876086b
audio/pw: needless check for NULL
...
g_clear_pointer() already checks for NULL.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-6-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
2d216959e1
audio/pw: drop needless case statement
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-5-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
20c5124805
audio/pw: Pipewire->PipeWire case fix for user-visible text
...
"PipeWire" is the correct case.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Volker Rümelin <vr_qemu@t-online.de >
Message-Id: <20230506163735.3481387-4-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
62259d816c
tests/lcitool: add pipewire
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20230506163735.3481387-3-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
6200e0ff5f
libvirt-ci: update submodule to cover pipewire
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230506163735.3481387-2-marcandre.lureau@redhat.com >
2023-07-17 15:22:56 +04:00
Marc-André Lureau
9c18a9234b
virtio-gpu: fix potential divide-by-zero regression
...
Commit 9462ff4695 ("virtio-gpu/win32: allocate shareable 2d
resources/images") introduces a division, which can lead to crashes when
"height" is 0.
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1744
Reviewed-by: Alexander Bulekov <alxndr@bu.edu >
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
2023-07-17 15:20:18 +04:00
Marc-André Lureau
a95a464777
audio: dbus requires pixman
...
Commit commit 6cc5a615 ("ui/dbus: win32 support") has broken audio/dbus
compilation when pixman is not included.
Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1739
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230630214156.2181558-1-marcandre.lureau@redhat.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-01 08:26:54 +02:00
Marc-André Lureau
de1f8ce0ab
ui/dbus: use shared D3D11 Texture2D when possible
...
When the client implements "org.qemu.Display1.Listener.Win32.D3d11" and
we are running on ANGLE/win32, share the scanout texture with the peer
process, and draw with ScanoutTexture2d/UpdateTexture2d methods.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230606115658.677673-22-marcandre.lureau@redhat.com >
2023-06-27 17:08:56 +02:00
Marc-André Lureau
c1600f84ce
virtio-gpu-virgl: use D3D11_SHARE_TEXTURE when available
...
Enable D3D texture sharing when possible, and pass it to the texture
display callbacks.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230606115658.677673-21-marcandre.lureau@redhat.com >
2023-06-27 17:08:56 +02:00
Marc-André Lureau
bf41ab6190
ui: add optional d3d texture pointer to scanout texture
...
The following patch will get the underlying D3D11 Texture2D from the
virgl renderer scanout. Pass it along to the texture scanout callbacks
as a priliminary step, to simplify review.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230606115658.677673-20-marcandre.lureau@redhat.com >
2023-06-27 17:08:56 +02:00
Marc-André Lureau
06c63a34e6
ui/egl: query ANGLE d3d device
...
Check if ANGLE is being used with D3D backend.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Message-Id: <20230606115658.677673-19-marcandre.lureau@redhat.com >
2023-06-27 17:08:56 +02:00