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%)
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
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
>
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
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>
© 2016 - 2025 Red Hat, Inc.