@@ -93,6 +93,7 @@ typedef enum VhostUserRequest {
VHOST_USER_POSTCOPY_END = 30,
VHOST_USER_INPUT_GET_CONFIG,
VHOST_USER_GPU_SET_SOCKET,
+ VHOST_USER_GPU_GET_NUM_CAPSETS,
VHOST_USER_MAX
} VhostUserRequest;
@@ -164,5 +164,6 @@ int vhost_backend_handle_iotlb_msg(struct vhost_dev *dev,
int vhost_user_input_get_config(struct vhost_dev *dev,
struct virtio_input_config **config);
int vhost_user_gpu_set_socket(struct vhost_dev *dev, int fd);
+int vhost_user_gpu_get_num_capsets(struct vhost_dev *dev, uint32_t *num);
#endif /* VHOST_BACKEND_H */
@@ -91,6 +91,7 @@ typedef enum VhostUserRequest {
VHOST_USER_POSTCOPY_END = 30,
VHOST_USER_INPUT_GET_CONFIG,
VHOST_USER_GPU_SET_SOCKET,
+ VHOST_USER_GPU_GET_NUM_CAPSETS,
VHOST_USER_MAX
} VhostUserRequest;
@@ -922,6 +923,20 @@ static int vhost_user_get_u64(struct vhost_dev *dev, int request, uint64_t *u64)
return 0;
}
+int vhost_user_gpu_get_num_capsets(struct vhost_dev *dev, uint32_t *num)
+{
+ uint64_t u64;
+
+ if (vhost_user_get_u64(dev, VHOST_USER_GPU_GET_NUM_CAPSETS, &u64) < 0) {
+ return -1;
+ }
+ if (u64 > UINT32_MAX) {
+ return -1;
+ }
+ *num = u64;
+ return 0;
+}
+
static int vhost_user_get_features(struct vhost_dev *dev, uint64_t *features)
{
return vhost_user_get_u64(dev, VHOST_USER_GET_FEATURES, features);
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- contrib/libvhost-user/libvhost-user.h | 1 + include/hw/virtio/vhost-backend.h | 1 + hw/virtio/vhost-user.c | 15 +++++++++++++++ 3 files changed, 17 insertions(+)