On Wed, Aug 20, 2025 at 10:57 PM Alex Bennée <alex.ben...@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.ben...@linaro.org>
> ---

Reviewed-by: Manos Pitsidianakis <manos.pitsidiana...@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

Reply via email to