[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 23/27] vhost-user: add VHOST_USER_GPU_QEMU_DBUS_LISTENER
From: |
marcandre . lureau |
Subject: |
[PATCH 23/27] vhost-user: add VHOST_USER_GPU_QEMU_DBUS_LISTENER |
Date: |
Fri, 12 Mar 2021 14:01:04 +0400 |
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Add a new feature & message to register a QEMU DBus console listener.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
docs/interop/vhost-user.rst | 10 ++++++++++
include/hw/virtio/vhost-backend.h | 2 ++
subprojects/libvhost-user/libvhost-user.h | 5 +++++
hw/virtio/vhost-user.c | 23 +++++++++++++++++++++++
4 files changed, 40 insertions(+)
diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst
index d6085f7045..13515fb948 100644
--- a/docs/interop/vhost-user.rst
+++ b/docs/interop/vhost-user.rst
@@ -834,6 +834,7 @@ Protocol features
#define VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS 14
#define VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS 15
#define VHOST_USER_PROTOCOL_F_STATUS 16
+ #define VHOST_USER_PROTOCOL_F_GPU_QEMU_DBUS_LISTENER 17
Master message types
--------------------
@@ -1347,6 +1348,15 @@ Master message types
query the backend for its device status as defined in the Virtio
specification.
+``VHOST_USER_GPU_QEMU_DBUS_LISTENER``
+ :id: 41
+ :equivalent ioctl: N/A
+ :request payload: ``u32`` the scanout to listen for
+
+ When the ``VHOST_USER_PROTOCOL_F_GPU_QEMU_DBUS_LISTENER`` protocol feature
has
+ been successfully negotiated, this message is submitted by the frontend to
+ register a graphical listener using a currently private QEMU DBus protocol.
+
Slave message types
-------------------
diff --git a/include/hw/virtio/vhost-backend.h
b/include/hw/virtio/vhost-backend.h
index 8a6f8e2a7a..a64b92b863 100644
--- a/include/hw/virtio/vhost-backend.h
+++ b/include/hw/virtio/vhost-backend.h
@@ -190,5 +190,7 @@ int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev,
struct vhost_iotlb_msg *imsg);
int vhost_user_gpu_set_socket(struct vhost_dev *dev, int fd);
+int vhost_user_gpu_register_dbus_listener(struct vhost_dev *dev,
+ uint8_t idx, int fd);
#endif /* VHOST_BACKEND_H */
diff --git a/subprojects/libvhost-user/libvhost-user.h
b/subprojects/libvhost-user/libvhost-user.h
index 3d13dfadde..d4152acde1 100644
--- a/subprojects/libvhost-user/libvhost-user.h
+++ b/subprojects/libvhost-user/libvhost-user.h
@@ -64,6 +64,8 @@ enum VhostUserProtocolFeature {
VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD = 12,
VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS = 14,
VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS = 15,
+ VHOST_USER_PROTOCOL_F_STATUS = 16,
+ VHOST_USER_PROTOCOL_F_GPU_QEMU_DBUS_LISTENER = 17,
VHOST_USER_PROTOCOL_F_MAX
};
@@ -109,6 +111,9 @@ typedef enum VhostUserRequest {
VHOST_USER_GET_MAX_MEM_SLOTS = 36,
VHOST_USER_ADD_MEM_REG = 37,
VHOST_USER_REM_MEM_REG = 38,
+ VHOST_USER_SET_STATUS = 39,
+ VHOST_USER_GET_STATUS = 40,
+ VHOST_USER_GPU_QEMU_DBUS_LISTENER = 41,
VHOST_USER_MAX
} VhostUserRequest;
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index 2fdd5daf74..45758c84f9 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -79,6 +79,8 @@ enum VhostUserProtocolFeature {
VHOST_USER_PROTOCOL_F_RESET_DEVICE = 13,
/* Feature 14 reserved for VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS. */
VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS = 15,
+ VHOST_USER_PROTOCOL_F_STATUS = 16,
+ VHOST_USER_PROTOCOL_F_GPU_QEMU_DBUS_LISTENER = 17,
VHOST_USER_PROTOCOL_F_MAX
};
@@ -124,6 +126,9 @@ typedef enum VhostUserRequest {
VHOST_USER_GET_MAX_MEM_SLOTS = 36,
VHOST_USER_ADD_MEM_REG = 37,
VHOST_USER_REM_MEM_REG = 38,
+ VHOST_USER_SET_STATUS = 39,
+ VHOST_USER_GET_STATUS = 40,
+ VHOST_USER_GPU_QEMU_DBUS_LISTENER = 41,
VHOST_USER_MAX
} VhostUserRequest;
@@ -407,6 +412,24 @@ int vhost_user_gpu_set_socket(struct vhost_dev *dev, int
fd)
return vhost_user_write(dev, &msg, &fd, 1);
}
+int vhost_user_gpu_register_dbus_listener(struct vhost_dev *dev, uint8_t idx,
int fd)
+{
+ VhostUserMsg msg = {
+ .hdr.request = VHOST_USER_GPU_QEMU_DBUS_LISTENER,
+ .hdr.flags = VHOST_USER_VERSION,
+ .payload.u64 = idx,
+ .hdr.size = sizeof(msg.payload.u64),
+ };
+
+ if (!(dev->protocol_features &
+ (1ULL << VHOST_USER_PROTOCOL_F_GPU_QEMU_DBUS_LISTENER))) {
+ return -1;
+ }
+
+ return vhost_user_write(dev, &msg, &fd, 1);
+}
+
+
static int vhost_user_set_log_base(struct vhost_dev *dev, uint64_t base,
struct vhost_log *log)
{
--
2.29.0
- Re: [PATCH 14/27] ui: add a D-Bus display backend, (continued)
- [PATCH 15/27] audio: add dbusaudio backend, marcandre . lureau, 2021/03/12
- [PATCH 16/27] vhost-user-gpu: add vg_send_disable_scanout(), marcandre . lureau, 2021/03/12
- [PATCH 17/27] vhost-user-gpu: add vg_send_scanout_dmabuf(), marcandre . lureau, 2021/03/12
- [PATCH 18/27] vhost-user-gpu: add vg_send_dmabuf_update(), marcandre . lureau, 2021/03/12
- [PATCH 19/27] vhost-user-gpu: add vg_send_scanout(), marcandre . lureau, 2021/03/12
- [PATCH 20/27] vhost-user-gpu: add vg_send_cursor_update(), marcandre . lureau, 2021/03/12
- [PATCH 21/27] vhost-user-gpu: add vg_send_cursor_pos(), marcandre . lureau, 2021/03/12
- [PATCH 22/27] vhost-user-gpu: add vg_send_update(), marcandre . lureau, 2021/03/12
- [PATCH 23/27] vhost-user: add VHOST_USER_GPU_QEMU_DBUS_LISTENER,
marcandre . lureau <=
- [PATCH 24/27] ui: add GraphicHwOps.register_dbus_listener(), marcandre . lureau, 2021/03/12
- [PATCH 25/27] vhost-user-gpu: implement register_dbus_listener(), marcandre . lureau, 2021/03/12
- [PATCH 26/27] vhost-user-gpu: check the PIXMAN format is supported, marcandre . lureau, 2021/03/12
- [PATCH 27/27] vhost-user-gpu: implement GPU_QEMU_DBUS_LISTENER, marcandre . lureau, 2021/03/12
- Re: [PATCH 00/27] Add D-Bus display backend, no-reply, 2021/03/12
- Re: [PATCH 00/27] Add D-Bus display backend, Gerd Hoffmann, 2021/03/12