qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable
@ 2025-08-20 19:56 Alex Bennée
  2025-08-20 20:35 ` Stefan Hajnoczi
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Alex Bennée @ 2025-08-20 19:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alex Bennée, Michael S. Tsirkin, Stefano Garzarella,
	Paolo Bonzini

We didn't make the device user creatable in the first place because we
were worried users might get confused. Rename the device to make its
nature as a test device even more explicit. While we are at it add a
Kconfig variable so it can be skipped for those that want to thin out
their build configuration even further.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
 docs/system/devices/vhost-user.rst            | 20 +++++++------------
 include/hw/virtio/vhost-user-base.h           |  2 +-
 ...ice-pci.c => vhost-user-test-device-pci.c} | 17 +++++++---------
 ...user-device.c => vhost-user-test-device.c} |  9 +++------
 hw/virtio/Kconfig                             |  5 +++++
 hw/virtio/meson.build                         |  5 +++--
 6 files changed, 26 insertions(+), 32 deletions(-)
 rename hw/virtio/{vhost-user-device-pci.c => vhost-user-test-device-pci.c} (77%)
 rename hw/virtio/{vhost-user-device.c => vhost-user-test-device.c} (87%)

diff --git a/docs/system/devices/vhost-user.rst b/docs/system/devices/vhost-user.rst
index 35259d8ec7c..bddf8df5ed5 100644
--- a/docs/system/devices/vhost-user.rst
+++ b/docs/system/devices/vhost-user.rst
@@ -62,26 +62,20 @@ platform details for what sort of virtio bus to use.
 The referenced *daemons* are not exhaustive, any conforming backend
 implementing the device and using the vhost-user protocol should work.
 
-vhost-user-device
-^^^^^^^^^^^^^^^^^
+vhost-user-test-device
+^^^^^^^^^^^^^^^^^^^^^^
 
-The vhost-user-device is a generic development device intended for
-expert use while developing new backends. The user needs to specify
-all the required parameters including:
+The vhost-user-test-device is a generic development device intended
+for expert use while developing new backends. The user needs to
+specify all the required parameters including:
 
   - Device ``virtio-id``
   - The ``num_vqs`` it needs and their ``vq_size``
   - The ``config_size`` if needed
 
 .. note::
-  To prevent user confusion you cannot currently instantiate
-  vhost-user-device without first patching out::
-
-    /* Reason: stop inexperienced users confusing themselves */
-    dc->user_creatable = false;
-
-  in ``vhost-user-device.c`` and ``vhost-user-device-pci.c`` file and
-  rebuilding.
+  While this is a useful device for development it is not recommended
+  for production use.
 
 vhost-user daemon
 =================
diff --git a/include/hw/virtio/vhost-user-base.h b/include/hw/virtio/vhost-user-base.h
index 51d0968b893..387e434b804 100644
--- a/include/hw/virtio/vhost-user-base.h
+++ b/include/hw/virtio/vhost-user-base.h
@@ -44,6 +44,6 @@ struct VHostUserBaseClass {
 };
 
 
-#define TYPE_VHOST_USER_DEVICE "vhost-user-device"
+#define TYPE_VHOST_USER_TEST_DEVICE "vhost-user-test-device"
 
 #endif /* QEMU_VHOST_USER_BASE_H */
diff --git a/hw/virtio/vhost-user-device-pci.c b/hw/virtio/vhost-user-test-device-pci.c
similarity index 77%
rename from hw/virtio/vhost-user-device-pci.c
rename to hw/virtio/vhost-user-test-device-pci.c
index f10bac874e7..d6a9ca2101d 100644
--- a/hw/virtio/vhost-user-device-pci.c
+++ b/hw/virtio/vhost-user-test-device-pci.c
@@ -18,13 +18,13 @@ struct VHostUserDevicePCI {
     VHostUserBase vub;
 };
 
-#define TYPE_VHOST_USER_DEVICE_PCI "vhost-user-device-pci-base"
+#define TYPE_VHOST_USER_TEST_DEVICE_PCI "vhost-user-test-device-pci"
 
-OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_USER_DEVICE_PCI)
+OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_USER_TEST_DEVICE_PCI)
 
 static void vhost_user_device_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
 {
-    VHostUserDevicePCI *dev = VHOST_USER_DEVICE_PCI(vpci_dev);
+    VHostUserDevicePCI *dev = VHOST_USER_TEST_DEVICE_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vub);
 
     vpci_dev->nvectors = 1;
@@ -38,9 +38,6 @@ static void vhost_user_device_pci_class_init(ObjectClass *klass,
     VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
     PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
 
-    /* Reason: stop users confusing themselves */
-    dc->user_creatable = false;
-
     k->realize = vhost_user_device_pci_realize;
     set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
     pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
@@ -51,15 +48,15 @@ static void vhost_user_device_pci_class_init(ObjectClass *klass,
 
 static void vhost_user_device_pci_instance_init(Object *obj)
 {
-    VHostUserDevicePCI *dev = VHOST_USER_DEVICE_PCI(obj);
+    VHostUserDevicePCI *dev = VHOST_USER_TEST_DEVICE_PCI(obj);
 
     virtio_instance_init_common(obj, &dev->vub, sizeof(dev->vub),
-                                TYPE_VHOST_USER_DEVICE);
+                                TYPE_VHOST_USER_TEST_DEVICE);
 }
 
 static const VirtioPCIDeviceTypeInfo vhost_user_device_pci_info = {
-    .base_name = TYPE_VHOST_USER_DEVICE_PCI,
-    .non_transitional_name = "vhost-user-device-pci",
+    .base_name = TYPE_VHOST_USER_TEST_DEVICE_PCI,
+    .non_transitional_name = "vhost-user-test-device-pci",
     .instance_size = sizeof(VHostUserDevicePCI),
     .instance_init = vhost_user_device_pci_instance_init,
     .class_init = vhost_user_device_pci_class_init,
diff --git a/hw/virtio/vhost-user-device.c b/hw/virtio/vhost-user-test-device.c
similarity index 87%
rename from hw/virtio/vhost-user-device.c
rename to hw/virtio/vhost-user-test-device.c
index 3939bdf7552..1b98ea3e488 100644
--- a/hw/virtio/vhost-user-device.c
+++ b/hw/virtio/vhost-user-test-device.c
@@ -1,5 +1,5 @@
 /*
- * Generic vhost-user-device implementation for any vhost-user-backend
+ * Generic vhost-user-test-device implementation for any vhost-user-backend
  *
  * This is a concrete implementation of vhost-user-base which can be
  * configured via properties. It is useful for development and
@@ -25,7 +25,7 @@
  */
 
 static const VMStateDescription vud_vmstate = {
-    .name = "vhost-user-device",
+    .name = "vhost-user-test-device",
     .unmigratable = 1,
 };
 
@@ -41,16 +41,13 @@ static void vud_class_init(ObjectClass *klass, const void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(klass);
 
-    /* Reason: stop inexperienced users confusing themselves */
-    dc->user_creatable = false;
-
     device_class_set_props(dc, vud_properties);
     dc->vmsd = &vud_vmstate;
     set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
 }
 
 static const TypeInfo vud_info = {
-    .name = TYPE_VHOST_USER_DEVICE,
+    .name = TYPE_VHOST_USER_TEST_DEVICE,
     .parent = TYPE_VHOST_USER_BASE,
     .class_init = vud_class_init,
 };
diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig
index 7648a2d68da..10f5c53ac09 100644
--- a/hw/virtio/Kconfig
+++ b/hw/virtio/Kconfig
@@ -126,3 +126,8 @@ config VHOST_USER_SCMI
     bool
     default y
     depends on VIRTIO && VHOST_USER && ARM
+
+config VHOST_USER_TEST
+    bool
+    default y
+    depends on VIRTIO && VHOST_USER
diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build
index 3ea7b3cec83..48b9fedfa56 100644
--- a/hw/virtio/meson.build
+++ b/hw/virtio/meson.build
@@ -22,7 +22,7 @@ if have_vhost
     system_virtio_ss.add(files('vhost-user-base.c'))
 
     # MMIO Stubs
-    system_virtio_ss.add(files('vhost-user-device.c'))
+    system_virtio_ss.add(when: 'CONFIG_VHOST_USER_TEST', if_true: files('vhost-user-test-device.c'))
     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_GPIO', if_true: files('vhost-user-gpio.c'))
     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_I2C', if_true: files('vhost-user-i2c.c'))
     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RNG', if_true: files('vhost-user-rng.c'))
@@ -30,7 +30,8 @@ if have_vhost
     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))
 
     # PCI Stubs
-    system_virtio_ss.add(when: 'CONFIG_VIRTIO_PCI', if_true: files('vhost-user-device-pci.c'))
+    system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],
+                         if_true: files('vhost-user-test-device-pci.c'))
     system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_GPIO'],
                          if_true: files('vhost-user-gpio-pci.c'))
     system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_I2C'],
-- 
2.47.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable
  2025-08-20 19:56 [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable Alex Bennée
@ 2025-08-20 20:35 ` Stefan Hajnoczi
  2025-08-20 20:53 ` Manos Pitsidianakis
  2025-08-28  8:31 ` Stefano Garzarella
  2 siblings, 0 replies; 4+ messages in thread
From: Stefan Hajnoczi @ 2025-08-20 20:35 UTC (permalink / raw)
  To: Alex Bennée
  Cc: qemu-devel, Michael S. Tsirkin, Stefano Garzarella, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 1251 bytes --]

On Wed, Aug 20, 2025 at 08:56:32PM +0100, Alex Bennée wrote:
> We didn't make the device user creatable in the first place because we
> were worried users might get confused. Rename the device to make its
> nature as a test device even more explicit. While we are at it add a
> Kconfig variable so it can be skipped for those that want to thin out
> their build configuration even further.
> 
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
>  docs/system/devices/vhost-user.rst            | 20 +++++++------------
>  include/hw/virtio/vhost-user-base.h           |  2 +-
>  ...ice-pci.c => vhost-user-test-device-pci.c} | 17 +++++++---------
>  ...user-device.c => vhost-user-test-device.c} |  9 +++------
>  hw/virtio/Kconfig                             |  5 +++++
>  hw/virtio/meson.build                         |  5 +++--
>  6 files changed, 26 insertions(+), 32 deletions(-)
>  rename hw/virtio/{vhost-user-device-pci.c => vhost-user-test-device-pci.c} (77%)
>  rename hw/virtio/{vhost-user-device.c => vhost-user-test-device.c} (87%)

It's okay to rename this device since no one today can use
vhost-user-device without modifying QEMU's source code anyway.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable
  2025-08-20 19:56 [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable Alex Bennée
  2025-08-20 20:35 ` Stefan Hajnoczi
@ 2025-08-20 20:53 ` Manos Pitsidianakis
  2025-08-28  8:31 ` Stefano Garzarella
  2 siblings, 0 replies; 4+ messages in thread
From: Manos Pitsidianakis @ 2025-08-20 20:53 UTC (permalink / raw)
  To: Alex Bennée
  Cc: qemu-devel, Michael S. Tsirkin, Stefano Garzarella, Paolo Bonzini

On Wed, Aug 20, 2025 at 10:57 PM Alex Bennée <alex.bennee@linaro.org> wrote:
>
> We didn't make the device user creatable in the first place because we
> were worried users might get confused. Rename the device to make its
> nature as a test device even more explicit. While we are at it add a
> Kconfig variable so it can be skipped for those that want to thin out
> their build configuration even further.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

>  docs/system/devices/vhost-user.rst            | 20 +++++++------------
>  include/hw/virtio/vhost-user-base.h           |  2 +-
>  ...ice-pci.c => vhost-user-test-device-pci.c} | 17 +++++++---------
>  ...user-device.c => vhost-user-test-device.c} |  9 +++------
>  hw/virtio/Kconfig                             |  5 +++++
>  hw/virtio/meson.build                         |  5 +++--
>  6 files changed, 26 insertions(+), 32 deletions(-)
>  rename hw/virtio/{vhost-user-device-pci.c => vhost-user-test-device-pci.c} (77%)
>  rename hw/virtio/{vhost-user-device.c => vhost-user-test-device.c} (87%)
>
> diff --git a/docs/system/devices/vhost-user.rst b/docs/system/devices/vhost-user.rst
> index 35259d8ec7c..bddf8df5ed5 100644
> --- a/docs/system/devices/vhost-user.rst
> +++ b/docs/system/devices/vhost-user.rst
> @@ -62,26 +62,20 @@ platform details for what sort of virtio bus to use.
>  The referenced *daemons* are not exhaustive, any conforming backend
>  implementing the device and using the vhost-user protocol should work.
>
> -vhost-user-device
> -^^^^^^^^^^^^^^^^^
> +vhost-user-test-device
> +^^^^^^^^^^^^^^^^^^^^^^
>
> -The vhost-user-device is a generic development device intended for
> -expert use while developing new backends. The user needs to specify
> -all the required parameters including:
> +The vhost-user-test-device is a generic development device intended
> +for expert use while developing new backends. The user needs to
> +specify all the required parameters including:
>
>    - Device ``virtio-id``
>    - The ``num_vqs`` it needs and their ``vq_size``
>    - The ``config_size`` if needed
>
>  .. note::
> -  To prevent user confusion you cannot currently instantiate
> -  vhost-user-device without first patching out::
> -
> -    /* Reason: stop inexperienced users confusing themselves */
> -    dc->user_creatable = false;
> -
> -  in ``vhost-user-device.c`` and ``vhost-user-device-pci.c`` file and
> -  rebuilding.
> +  While this is a useful device for development it is not recommended
> +  for production use.
>
>  vhost-user daemon
>  =================
> diff --git a/include/hw/virtio/vhost-user-base.h b/include/hw/virtio/vhost-user-base.h
> index 51d0968b893..387e434b804 100644
> --- a/include/hw/virtio/vhost-user-base.h
> +++ b/include/hw/virtio/vhost-user-base.h
> @@ -44,6 +44,6 @@ struct VHostUserBaseClass {
>  };
>
>
> -#define TYPE_VHOST_USER_DEVICE "vhost-user-device"
> +#define TYPE_VHOST_USER_TEST_DEVICE "vhost-user-test-device"
>
>  #endif /* QEMU_VHOST_USER_BASE_H */
> diff --git a/hw/virtio/vhost-user-device-pci.c b/hw/virtio/vhost-user-test-device-pci.c
> similarity index 77%
> rename from hw/virtio/vhost-user-device-pci.c
> rename to hw/virtio/vhost-user-test-device-pci.c
> index f10bac874e7..d6a9ca2101d 100644
> --- a/hw/virtio/vhost-user-device-pci.c
> +++ b/hw/virtio/vhost-user-test-device-pci.c
> @@ -18,13 +18,13 @@ struct VHostUserDevicePCI {
>      VHostUserBase vub;
>  };
>
> -#define TYPE_VHOST_USER_DEVICE_PCI "vhost-user-device-pci-base"
> +#define TYPE_VHOST_USER_TEST_DEVICE_PCI "vhost-user-test-device-pci"
>
> -OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_USER_DEVICE_PCI)
> +OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_USER_TEST_DEVICE_PCI)
>
>  static void vhost_user_device_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
>  {
> -    VHostUserDevicePCI *dev = VHOST_USER_DEVICE_PCI(vpci_dev);
> +    VHostUserDevicePCI *dev = VHOST_USER_TEST_DEVICE_PCI(vpci_dev);
>      DeviceState *vdev = DEVICE(&dev->vub);
>
>      vpci_dev->nvectors = 1;
> @@ -38,9 +38,6 @@ static void vhost_user_device_pci_class_init(ObjectClass *klass,
>      VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
>      PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
>
> -    /* Reason: stop users confusing themselves */
> -    dc->user_creatable = false;
> -
>      k->realize = vhost_user_device_pci_realize;
>      set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
>      pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
> @@ -51,15 +48,15 @@ static void vhost_user_device_pci_class_init(ObjectClass *klass,
>
>  static void vhost_user_device_pci_instance_init(Object *obj)
>  {
> -    VHostUserDevicePCI *dev = VHOST_USER_DEVICE_PCI(obj);
> +    VHostUserDevicePCI *dev = VHOST_USER_TEST_DEVICE_PCI(obj);
>
>      virtio_instance_init_common(obj, &dev->vub, sizeof(dev->vub),
> -                                TYPE_VHOST_USER_DEVICE);
> +                                TYPE_VHOST_USER_TEST_DEVICE);
>  }
>
>  static const VirtioPCIDeviceTypeInfo vhost_user_device_pci_info = {
> -    .base_name = TYPE_VHOST_USER_DEVICE_PCI,
> -    .non_transitional_name = "vhost-user-device-pci",
> +    .base_name = TYPE_VHOST_USER_TEST_DEVICE_PCI,
> +    .non_transitional_name = "vhost-user-test-device-pci",
>      .instance_size = sizeof(VHostUserDevicePCI),
>      .instance_init = vhost_user_device_pci_instance_init,
>      .class_init = vhost_user_device_pci_class_init,
> diff --git a/hw/virtio/vhost-user-device.c b/hw/virtio/vhost-user-test-device.c
> similarity index 87%
> rename from hw/virtio/vhost-user-device.c
> rename to hw/virtio/vhost-user-test-device.c
> index 3939bdf7552..1b98ea3e488 100644
> --- a/hw/virtio/vhost-user-device.c
> +++ b/hw/virtio/vhost-user-test-device.c
> @@ -1,5 +1,5 @@
>  /*
> - * Generic vhost-user-device implementation for any vhost-user-backend
> + * Generic vhost-user-test-device implementation for any vhost-user-backend
>   *
>   * This is a concrete implementation of vhost-user-base which can be
>   * configured via properties. It is useful for development and
> @@ -25,7 +25,7 @@
>   */
>
>  static const VMStateDescription vud_vmstate = {
> -    .name = "vhost-user-device",
> +    .name = "vhost-user-test-device",
>      .unmigratable = 1,
>  };
>
> @@ -41,16 +41,13 @@ static void vud_class_init(ObjectClass *klass, const void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
>
> -    /* Reason: stop inexperienced users confusing themselves */
> -    dc->user_creatable = false;
> -
>      device_class_set_props(dc, vud_properties);
>      dc->vmsd = &vud_vmstate;
>      set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
>  }
>
>  static const TypeInfo vud_info = {
> -    .name = TYPE_VHOST_USER_DEVICE,
> +    .name = TYPE_VHOST_USER_TEST_DEVICE,
>      .parent = TYPE_VHOST_USER_BASE,
>      .class_init = vud_class_init,
>  };
> diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig
> index 7648a2d68da..10f5c53ac09 100644
> --- a/hw/virtio/Kconfig
> +++ b/hw/virtio/Kconfig
> @@ -126,3 +126,8 @@ config VHOST_USER_SCMI
>      bool
>      default y
>      depends on VIRTIO && VHOST_USER && ARM
> +
> +config VHOST_USER_TEST
> +    bool
> +    default y
> +    depends on VIRTIO && VHOST_USER
> diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build
> index 3ea7b3cec83..48b9fedfa56 100644
> --- a/hw/virtio/meson.build
> +++ b/hw/virtio/meson.build
> @@ -22,7 +22,7 @@ if have_vhost
>      system_virtio_ss.add(files('vhost-user-base.c'))
>
>      # MMIO Stubs
> -    system_virtio_ss.add(files('vhost-user-device.c'))
> +    system_virtio_ss.add(when: 'CONFIG_VHOST_USER_TEST', if_true: files('vhost-user-test-device.c'))
>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_GPIO', if_true: files('vhost-user-gpio.c'))
>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_I2C', if_true: files('vhost-user-i2c.c'))
>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RNG', if_true: files('vhost-user-rng.c'))
> @@ -30,7 +30,8 @@ if have_vhost
>      system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))
>
>      # PCI Stubs
> -    system_virtio_ss.add(when: 'CONFIG_VIRTIO_PCI', if_true: files('vhost-user-device-pci.c'))
> +    system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],
> +                         if_true: files('vhost-user-test-device-pci.c'))
>      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_GPIO'],
>                           if_true: files('vhost-user-gpio-pci.c'))
>      system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_I2C'],
> --
> 2.47.2
>
>

-- 
Manos Pitsidianakis
Emulation and Virtualization Engineer at Linaro Ltd


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable
  2025-08-20 19:56 [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable Alex Bennée
  2025-08-20 20:35 ` Stefan Hajnoczi
  2025-08-20 20:53 ` Manos Pitsidianakis
@ 2025-08-28  8:31 ` Stefano Garzarella
  2 siblings, 0 replies; 4+ messages in thread
From: Stefano Garzarella @ 2025-08-28  8:31 UTC (permalink / raw)
  To: Alex Bennée; +Cc: qemu-devel, Michael S. Tsirkin, Paolo Bonzini

On Wed, Aug 20, 2025 at 08:56:32PM +0100, Alex Bennée wrote:
>We didn't make the device user creatable in the first place because we
>were worried users might get confused. Rename the device to make its
>nature as a test device even more explicit. While we are at it add a

FYI I just crated this issue https://github.com/rust-vmm/vhost-device/issues/868
since in some device's README we suggest to use `-device 
vhost-user-device-pci` with QEMU (without specifing to patch QEMU to 
enable them). That said, I guess this patch is fine.
I think we can just update the README and suggest to use a new version 
of QEMU.

>Kconfig variable so it can be skipped for those that want to thin out
>their build configuration even further.
>
>Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>---
> docs/system/devices/vhost-user.rst            | 20 +++++++------------
> include/hw/virtio/vhost-user-base.h           |  2 +-
> ...ice-pci.c => vhost-user-test-device-pci.c} | 17 +++++++---------
> ...user-device.c => vhost-user-test-device.c} |  9 +++------
> hw/virtio/Kconfig                             |  5 +++++
> hw/virtio/meson.build                         |  5 +++--
> 6 files changed, 26 insertions(+), 32 deletions(-)
> rename hw/virtio/{vhost-user-device-pci.c => vhost-user-test-device-pci.c} (77%)
> rename hw/virtio/{vhost-user-device.c => vhost-user-test-device.c} (87%)

Acked-by: Stefano Garzarella <sgarzare@redhat.com>

Thanks,
Stefano

>
>diff --git a/docs/system/devices/vhost-user.rst b/docs/system/devices/vhost-user.rst
>index 35259d8ec7c..bddf8df5ed5 100644
>--- a/docs/system/devices/vhost-user.rst
>+++ b/docs/system/devices/vhost-user.rst
>@@ -62,26 +62,20 @@ platform details for what sort of virtio bus to use.
> The referenced *daemons* are not exhaustive, any conforming backend
> implementing the device and using the vhost-user protocol should work.
>
>-vhost-user-device
>-^^^^^^^^^^^^^^^^^
>+vhost-user-test-device
>+^^^^^^^^^^^^^^^^^^^^^^
>
>-The vhost-user-device is a generic development device intended for
>-expert use while developing new backends. The user needs to specify
>-all the required parameters including:
>+The vhost-user-test-device is a generic development device intended
>+for expert use while developing new backends. The user needs to
>+specify all the required parameters including:
>
>   - Device ``virtio-id``
>   - The ``num_vqs`` it needs and their ``vq_size``
>   - The ``config_size`` if needed
>
> .. note::
>-  To prevent user confusion you cannot currently instantiate
>-  vhost-user-device without first patching out::
>-
>-    /* Reason: stop inexperienced users confusing themselves */
>-    dc->user_creatable = false;
>-
>-  in ``vhost-user-device.c`` and ``vhost-user-device-pci.c`` file and
>-  rebuilding.
>+  While this is a useful device for development it is not recommended
>+  for production use.
>
> vhost-user daemon
> =================
>diff --git a/include/hw/virtio/vhost-user-base.h b/include/hw/virtio/vhost-user-base.h
>index 51d0968b893..387e434b804 100644
>--- a/include/hw/virtio/vhost-user-base.h
>+++ b/include/hw/virtio/vhost-user-base.h
>@@ -44,6 +44,6 @@ struct VHostUserBaseClass {
> };
>
>
>-#define TYPE_VHOST_USER_DEVICE "vhost-user-device"
>+#define TYPE_VHOST_USER_TEST_DEVICE "vhost-user-test-device"
>
> #endif /* QEMU_VHOST_USER_BASE_H */
>diff --git a/hw/virtio/vhost-user-device-pci.c b/hw/virtio/vhost-user-test-device-pci.c
>similarity index 77%
>rename from hw/virtio/vhost-user-device-pci.c
>rename to hw/virtio/vhost-user-test-device-pci.c
>index f10bac874e7..d6a9ca2101d 100644
>--- a/hw/virtio/vhost-user-device-pci.c
>+++ b/hw/virtio/vhost-user-test-device-pci.c
>@@ -18,13 +18,13 @@ struct VHostUserDevicePCI {
>     VHostUserBase vub;
> };
>
>-#define TYPE_VHOST_USER_DEVICE_PCI "vhost-user-device-pci-base"
>+#define TYPE_VHOST_USER_TEST_DEVICE_PCI "vhost-user-test-device-pci"
>
>-OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_USER_DEVICE_PCI)
>+OBJECT_DECLARE_SIMPLE_TYPE(VHostUserDevicePCI, VHOST_USER_TEST_DEVICE_PCI)
>
> static void vhost_user_device_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
> {
>-    VHostUserDevicePCI *dev = VHOST_USER_DEVICE_PCI(vpci_dev);
>+    VHostUserDevicePCI *dev = VHOST_USER_TEST_DEVICE_PCI(vpci_dev);
>     DeviceState *vdev = DEVICE(&dev->vub);
>
>     vpci_dev->nvectors = 1;
>@@ -38,9 +38,6 @@ static void vhost_user_device_pci_class_init(ObjectClass *klass,
>     VirtioPCIClass *k = VIRTIO_PCI_CLASS(klass);
>     PCIDeviceClass *pcidev_k = PCI_DEVICE_CLASS(klass);
>
>-    /* Reason: stop users confusing themselves */
>-    dc->user_creatable = false;
>-
>     k->realize = vhost_user_device_pci_realize;
>     set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
>     pcidev_k->vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET;
>@@ -51,15 +48,15 @@ static void vhost_user_device_pci_class_init(ObjectClass *klass,
>
> static void vhost_user_device_pci_instance_init(Object *obj)
> {
>-    VHostUserDevicePCI *dev = VHOST_USER_DEVICE_PCI(obj);
>+    VHostUserDevicePCI *dev = VHOST_USER_TEST_DEVICE_PCI(obj);
>
>     virtio_instance_init_common(obj, &dev->vub, sizeof(dev->vub),
>-                                TYPE_VHOST_USER_DEVICE);
>+                                TYPE_VHOST_USER_TEST_DEVICE);
> }
>
> static const VirtioPCIDeviceTypeInfo vhost_user_device_pci_info = {
>-    .base_name = TYPE_VHOST_USER_DEVICE_PCI,
>-    .non_transitional_name = "vhost-user-device-pci",
>+    .base_name = TYPE_VHOST_USER_TEST_DEVICE_PCI,
>+    .non_transitional_name = "vhost-user-test-device-pci",
>     .instance_size = sizeof(VHostUserDevicePCI),
>     .instance_init = vhost_user_device_pci_instance_init,
>     .class_init = vhost_user_device_pci_class_init,
>diff --git a/hw/virtio/vhost-user-device.c b/hw/virtio/vhost-user-test-device.c
>similarity index 87%
>rename from hw/virtio/vhost-user-device.c
>rename to hw/virtio/vhost-user-test-device.c
>index 3939bdf7552..1b98ea3e488 100644
>--- a/hw/virtio/vhost-user-device.c
>+++ b/hw/virtio/vhost-user-test-device.c
>@@ -1,5 +1,5 @@
> /*
>- * Generic vhost-user-device implementation for any vhost-user-backend
>+ * Generic vhost-user-test-device implementation for any vhost-user-backend
>  *
>  * This is a concrete implementation of vhost-user-base which can be
>  * configured via properties. It is useful for development and
>@@ -25,7 +25,7 @@
>  */
>
> static const VMStateDescription vud_vmstate = {
>-    .name = "vhost-user-device",
>+    .name = "vhost-user-test-device",
>     .unmigratable = 1,
> };
>
>@@ -41,16 +41,13 @@ static void vud_class_init(ObjectClass *klass, const void *data)
> {
>     DeviceClass *dc = DEVICE_CLASS(klass);
>
>-    /* Reason: stop inexperienced users confusing themselves */
>-    dc->user_creatable = false;
>-
>     device_class_set_props(dc, vud_properties);
>     dc->vmsd = &vud_vmstate;
>     set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
> }
>
> static const TypeInfo vud_info = {
>-    .name = TYPE_VHOST_USER_DEVICE,
>+    .name = TYPE_VHOST_USER_TEST_DEVICE,
>     .parent = TYPE_VHOST_USER_BASE,
>     .class_init = vud_class_init,
> };
>diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig
>index 7648a2d68da..10f5c53ac09 100644
>--- a/hw/virtio/Kconfig
>+++ b/hw/virtio/Kconfig
>@@ -126,3 +126,8 @@ config VHOST_USER_SCMI
>     bool
>     default y
>     depends on VIRTIO && VHOST_USER && ARM
>+
>+config VHOST_USER_TEST
>+    bool
>+    default y
>+    depends on VIRTIO && VHOST_USER
>diff --git a/hw/virtio/meson.build b/hw/virtio/meson.build
>index 3ea7b3cec83..48b9fedfa56 100644
>--- a/hw/virtio/meson.build
>+++ b/hw/virtio/meson.build
>@@ -22,7 +22,7 @@ if have_vhost
>     system_virtio_ss.add(files('vhost-user-base.c'))
>
>     # MMIO Stubs
>-    system_virtio_ss.add(files('vhost-user-device.c'))
>+    system_virtio_ss.add(when: 'CONFIG_VHOST_USER_TEST', if_true: files('vhost-user-test-device.c'))
>     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_GPIO', if_true: files('vhost-user-gpio.c'))
>     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_I2C', if_true: files('vhost-user-i2c.c'))
>     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_RNG', if_true: files('vhost-user-rng.c'))
>@@ -30,7 +30,8 @@ if have_vhost
>     system_virtio_ss.add(when: 'CONFIG_VHOST_USER_INPUT', if_true: files('vhost-user-input.c'))
>
>     # PCI Stubs
>-    system_virtio_ss.add(when: 'CONFIG_VIRTIO_PCI', if_true: files('vhost-user-device-pci.c'))
>+    system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_TEST'],
>+                         if_true: files('vhost-user-test-device-pci.c'))
>     system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_GPIO'],
>                          if_true: files('vhost-user-gpio-pci.c'))
>     system_virtio_ss.add(when: ['CONFIG_VIRTIO_PCI', 'CONFIG_VHOST_USER_I2C'],
>-- 
>2.47.2
>



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-08-28  8:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-20 19:56 [RFC PATCH] hw/virtio: rename vhost-user-device and make user creatable Alex Bennée
2025-08-20 20:35 ` Stefan Hajnoczi
2025-08-20 20:53 ` Manos Pitsidianakis
2025-08-28  8:31 ` Stefano Garzarella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).