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