[PATCH v2 1/4] hw/virtio: Support set_config() callback in vhost-user-base

Leo Yan posted 4 patches 1 year ago
Maintainers: Gerd Hoffmann <kraxel@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>
There is a newer version of this series
[PATCH v2 1/4] hw/virtio: Support set_config() callback in vhost-user-base
Posted by Leo Yan 1 year ago
The Virtio input device invokes set_config() callback for retrieving
the event configuration info, but the callback is not supported in
vhost-user-base.

This patch adds support set_config() callback in vhost-user-base.

Signed-off-by: Leo Yan <leo.yan@linaro.org>
---
 hw/virtio/vhost-user-base.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c
index 78cfa9a5bb..a83167191e 100644
--- a/hw/virtio/vhost-user-base.c
+++ b/hw/virtio/vhost-user-base.c
@@ -140,6 +140,22 @@ static void vub_get_config(VirtIODevice *vdev, uint8_t *config)
     }
 }
 
+static void vub_set_config(VirtIODevice *vdev, const uint8_t *config_data)
+{
+    VHostUserBase *vub = VHOST_USER_BASE(vdev);
+    int ret;
+
+    g_assert(vub->config_size && vub->vhost_user.supports_config == true);
+
+    ret = vhost_dev_set_config(&vub->vhost_dev, config_data,
+                               0, vub->config_size,
+                               VHOST_SET_CONFIG_TYPE_FRONTEND);
+    if (ret) {
+        error_report("vhost guest set device config space failed: %d", ret);
+        return;
+    }
+}
+
 /*
  * When the daemon signals an update to the config we just need to
  * signal the guest as we re-read the config on demand above.
@@ -337,6 +353,7 @@ static void vub_class_init(ObjectClass *klass, void *data)
     vdc->unrealize = vub_device_unrealize;
     vdc->get_features = vub_get_features;
     vdc->get_config = vub_get_config;
+    vdc->set_config = vub_set_config;
     vdc->set_status = vub_set_status;
 }
 
-- 
2.34.1
Re: [PATCH v2 1/4] hw/virtio: Support set_config() callback in vhost-user-base
Posted by Marc-André Lureau 1 year ago
On Mon, Nov 13, 2023 at 11:04 PM Leo Yan <leo.yan@linaro.org> wrote:
>
> The Virtio input device invokes set_config() callback for retrieving
> the event configuration info, but the callback is not supported in
> vhost-user-base.
>
> This patch adds support set_config() callback in vhost-user-base.
>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

> ---
>  hw/virtio/vhost-user-base.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c
> index 78cfa9a5bb..a83167191e 100644
> --- a/hw/virtio/vhost-user-base.c
> +++ b/hw/virtio/vhost-user-base.c
> @@ -140,6 +140,22 @@ static void vub_get_config(VirtIODevice *vdev, uint8_t *config)
>      }
>  }
>
> +static void vub_set_config(VirtIODevice *vdev, const uint8_t *config_data)
> +{
> +    VHostUserBase *vub = VHOST_USER_BASE(vdev);
> +    int ret;
> +
> +    g_assert(vub->config_size && vub->vhost_user.supports_config == true);
> +
> +    ret = vhost_dev_set_config(&vub->vhost_dev, config_data,
> +                               0, vub->config_size,
> +                               VHOST_SET_CONFIG_TYPE_FRONTEND);
> +    if (ret) {
> +        error_report("vhost guest set device config space failed: %d", ret);
> +        return;
> +    }
> +}
> +
>  /*
>   * When the daemon signals an update to the config we just need to
>   * signal the guest as we re-read the config on demand above.
> @@ -337,6 +353,7 @@ static void vub_class_init(ObjectClass *klass, void *data)
>      vdc->unrealize = vub_device_unrealize;
>      vdc->get_features = vub_get_features;
>      vdc->get_config = vub_get_config;
> +    vdc->set_config = vub_set_config;
>      vdc->set_status = vub_set_status;
>  }
>
> --
> 2.34.1
>
>


-- 
Marc-André Lureau