mbox series

[v2,00/19] UI-related fixes & shareable 2d memory with -display dbus

Message ID 20241008125028.1177932-1-marcandre.lureau@redhat.com (mailing list archive)
Headers show
Series UI-related fixes & shareable 2d memory with -display dbus | expand

Message

Marc-André Lureau Oct. 8, 2024, 12:50 p.m. UTC
From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

This series adds Listener.Unix.Map interface to -display dbus, to allow shared
memory for the display (similar to Listener.Win32.Map interface).

While working on it, I collected a few fixes. I can re-send them in a different
series or queue them once they are reviewed.

thanks

v2 (after Akhiko Odaki review):
 - rebased
 - introduce qemu_pixman_shareable, to reduce #ifdef usage
 - fixed bad mmap testing
 - fixed mingw cross-compilation

Marc-André Lureau (19):
  hw/audio/hda: free timer on exit
  hw/audio/hda: fix memory leak on audio setup
  ui/dbus: fix leak on message filtering
  ui/win32: fix potential use-after-free with dbus shared memory
  ui/dbus: fix filtering all update messages
  ui/dbus: discard display messages on disable
  ui/dbus: discard pending CursorDefine on new one
  util/memfd: report potential errors on free
  ui/pixman: generalize shared_image_destroy
  ui/dbus: do not limit to one listener per connection / bus name
  ui/dbus: add trace for can_share_map
  ui/surface: allocate shared memory on !win32
  meson: find_program('gdbus-codegen') directly
  ui/dbus: make Listener.Win32.Map win32-specific
  ui/dbus: add Listener.Unix.Map interface XML
  ui/dbus: implement Unix.Map
  virtio-gpu: allocate shareable 2d resources on !win32
  ui: refactor using a common qemu_pixman_shareable
  tests: add basic -display dbus Map.Unix test

 meson.build                     |   2 +-
 include/hw/virtio/virtio-gpu.h  |   4 +-
 include/ui/qemu-pixman.h        |  24 +++++
 include/ui/surface.h            |  14 ++-
 hw/audio/hda-codec.c            |  33 ++++---
 hw/display/virtio-gpu.c         |  69 ++++----------
 tests/qtest/dbus-display-test.c |  72 ++++++++++++++-
 ui/console.c                    |  78 ++++++----------
 ui/dbus-console.c               |  23 +----
 ui/dbus-listener.c              | 159 ++++++++++++++++++++++++++++----
 ui/qemu-pixman.c                |  71 ++++++++++++++
 util/memfd.c                    |   9 +-
 ui/dbus-display1.xml            |  49 ++++++++++
 ui/trace-events                 |   1 +
 14 files changed, 440 insertions(+), 168 deletions(-)

Comments

Akihiko Odaki Oct. 12, 2024, 7 a.m. UTC | #1
On 2024/10/08 21:50, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Hi,
> 
> This series adds Listener.Unix.Map interface to -display dbus, to allow shared
> memory for the display (similar to Listener.Win32.Map interface).
> 
> While working on it, I collected a few fixes. I can re-send them in a different
> series or queue them once they are reviewed.
> 
> thanks
> 
> v2 (after Akhiko Odaki review):
>   - rebased
>   - introduce qemu_pixman_shareable, to reduce #ifdef usage
>   - fixed bad mmap testing
>   - fixed mingw cross-compilation
> 
> Marc-André Lureau (19):
>    hw/audio/hda: free timer on exit
>    hw/audio/hda: fix memory leak on audio setup
>    ui/dbus: fix leak on message filtering
>    ui/win32: fix potential use-after-free with dbus shared memory
>    ui/dbus: fix filtering all update messages
>    ui/dbus: discard display messages on disable
>    ui/dbus: discard pending CursorDefine on new one
>    util/memfd: report potential errors on free
>    ui/pixman: generalize shared_image_destroy
>    ui/dbus: do not limit to one listener per connection / bus name
>    ui/dbus: add trace for can_share_map
>    ui/surface: allocate shared memory on !win32
>    meson: find_program('gdbus-codegen') directly
>    ui/dbus: make Listener.Win32.Map win32-specific
>    ui/dbus: add Listener.Unix.Map interface XML
>    ui/dbus: implement Unix.Map
>    virtio-gpu: allocate shareable 2d resources on !win32
>    ui: refactor using a common qemu_pixman_shareable
>    tests: add basic -display dbus Map.Unix test
> 
>   meson.build                     |   2 +-
>   include/hw/virtio/virtio-gpu.h  |   4 +-
>   include/ui/qemu-pixman.h        |  24 +++++
>   include/ui/surface.h            |  14 ++-
>   hw/audio/hda-codec.c            |  33 ++++---
>   hw/display/virtio-gpu.c         |  69 ++++----------
>   tests/qtest/dbus-display-test.c |  72 ++++++++++++++-
>   ui/console.c                    |  78 ++++++----------
>   ui/dbus-console.c               |  23 +----
>   ui/dbus-listener.c              | 159 ++++++++++++++++++++++++++++----
>   ui/qemu-pixman.c                |  71 ++++++++++++++
>   util/memfd.c                    |   9 +-
>   ui/dbus-display1.xml            |  49 ++++++++++
>   ui/trace-events                 |   1 +
>   14 files changed, 440 insertions(+), 168 deletions(-)
> 

For the whole series:
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Michael Tokarev Oct. 15, 2024, 5:36 p.m. UTC | #2
On 08.10.2024 15:50, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Hi,
> 
> This series adds Listener.Unix.Map interface to -display dbus, to allow shared
> memory for the display (similar to Listener.Win32.Map interface).
> 
> While working on it, I collected a few fixes. I can re-send them in a different
> series or queue them once they are reviewed.
> 
> thanks
> 
> v2 (after Akhiko Odaki review):
>   - rebased
>   - introduce qemu_pixman_shareable, to reduce #ifdef usage
>   - fixed bad mmap testing
>   - fixed mingw cross-compilation
> 
> Marc-André Lureau (19):
>    hw/audio/hda: free timer on exit
>    hw/audio/hda: fix memory leak on audio setup
>    ui/dbus: fix leak on message filtering
>    ui/win32: fix potential use-after-free with dbus shared memory
>    ui/dbus: fix filtering all update messages
>    ui/dbus: discard display messages on disable
>    ui/dbus: discard pending CursorDefine on new one
>    util/memfd: report potential errors on free
>    ui/pixman: generalize shared_image_destroy
>    ui/dbus: do not limit to one listener per connection / bus name
>    ui/dbus: add trace for can_share_map
>    ui/surface: allocate shared memory on !win32
>    meson: find_program('gdbus-codegen') directly
>    ui/dbus: make Listener.Win32.Map win32-specific
>    ui/dbus: add Listener.Unix.Map interface XML
>    ui/dbus: implement Unix.Map
>    virtio-gpu: allocate shareable 2d resources on !win32
>    ui: refactor using a common qemu_pixman_shareable
>    tests: add basic -display dbus Map.Unix test

Is there something for qemu-stable in there?

Thanks,

/mjt