Move chardev qdev property definitions from children into
VHostUserBase. This reduces code duplication and allows children
to simply inherit the property during initialization.
Signed-off-by: Connor Kite <connorkite@gmail.com>
---
hw/virtio/vhost-user-base.c | 9 +++++++++
hw/virtio/vhost-user-gpio.c | 4 ----
hw/virtio/vhost-user-i2c.c | 5 -----
hw/virtio/vhost-user-input.c | 5 -----
hw/virtio/vhost-user-rng.c | 5 -----
hw/virtio/vhost-user-rtc.c | 4 ----
hw/virtio/vhost-user-snd.c | 1 -
hw/virtio/vhost-user-spi.c | 5 -----
hw/virtio/vhost-user-test-device.c | 1 -
9 files changed, 9 insertions(+), 30 deletions(-)
diff --git a/hw/virtio/vhost-user-base.c b/hw/virtio/vhost-user-base.c
index 01ab9ca56b..a3d5a9cd99 100644
--- a/hw/virtio/vhost-user-base.c
+++ b/hw/virtio/vhost-user-base.c
@@ -353,9 +353,16 @@ static void vub_device_unrealize(DeviceState *dev)
do_vhost_user_cleanup(vdev, vub);
}
+/*Define common qdev properties. Inherited by all children*/
+static const Property vub_properties[] = {
+ DEFINE_PROP_CHR("chardev", VHostUserBase, chardev)
+};
+
+
static void vub_class_init(ObjectClass *klass, const void *data)
{
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
+ DeviceClass *dc = DEVICE_CLASS(klass);
vdc->realize = vub_device_realize;
vdc->unrealize = vub_device_unrealize;
@@ -363,6 +370,8 @@ static void vub_class_init(ObjectClass *klass, const void *data)
vdc->get_config = vub_get_config;
vdc->set_config = vub_set_config;
vdc->set_status = vub_set_status;
+
+ device_class_set_props(dc, vub_properties);
}
static const TypeInfo vub_types[] = {
diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
index d473f87077..33b8752282 100644
--- a/hw/virtio/vhost-user-gpio.c
+++ b/hw/virtio/vhost-user-gpio.c
@@ -14,9 +14,6 @@
#include "standard-headers/linux/virtio_ids.h"
#include "standard-headers/linux/virtio_gpio.h"
-static const Property vgpio_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
-};
static void vgpio_realize(DeviceState *dev, Error **errp)
{
@@ -42,7 +39,6 @@ static void vu_gpio_class_init(ObjectClass *klass, const void *data)
VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);
dc->vmsd = &vu_gpio_vmstate;
- device_class_set_props(dc, vgpio_properties);
device_class_set_parent_realize(dc, vgpio_realize,
&vubc->parent_realize);
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c
index 152b1f6740..3f5427b5b2 100644
--- a/hw/virtio/vhost-user-i2c.c
+++ b/hw/virtio/vhost-user-i2c.c
@@ -14,10 +14,6 @@
#include "qemu/error-report.h"
#include "standard-headers/linux/virtio_ids.h"
-static const Property vi2c_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
-};
-
static void vi2c_realize(DeviceState *dev, Error **errp)
{
VHostUserBase *vub = VHOST_USER_BASE(dev);
@@ -42,7 +38,6 @@ static void vu_i2c_class_init(ObjectClass *klass, const void *data)
VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);
dc->vmsd = &vu_i2c_vmstate;
- device_class_set_props(dc, vi2c_properties);
device_class_set_parent_realize(dc, vi2c_realize,
&vubc->parent_realize);
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
diff --git a/hw/virtio/vhost-user-input.c b/hw/virtio/vhost-user-input.c
index 5cfc5bbb56..8fe6349ffc 100644
--- a/hw/virtio/vhost-user-input.c
+++ b/hw/virtio/vhost-user-input.c
@@ -7,10 +7,6 @@
#include "qemu/osdep.h"
#include "hw/virtio/virtio-input.h"
-static const Property vinput_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
-};
-
static void vinput_realize(DeviceState *dev, Error **errp)
{
VHostUserBase *vub = VHOST_USER_BASE(dev);
@@ -36,7 +32,6 @@ static void vhost_input_class_init(ObjectClass *klass, const void *data)
DeviceClass *dc = DEVICE_CLASS(klass);
dc->vmsd = &vmstate_vhost_input;
- device_class_set_props(dc, vinput_properties);
device_class_set_parent_realize(dc, vinput_realize,
&vubc->parent_realize);
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c
index 106c8f211a..664aee403d 100644
--- a/hw/virtio/vhost-user-rng.c
+++ b/hw/virtio/vhost-user-rng.c
@@ -20,10 +20,6 @@ static const VMStateDescription vu_rng_vmstate = {
.unmigratable = 1,
};
-static const Property vrng_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
-};
-
static void vu_rng_base_realize(DeviceState *dev, Error **errp)
{
VHostUserBase *vub = VHOST_USER_BASE(dev);
@@ -43,7 +39,6 @@ static void vu_rng_class_init(ObjectClass *klass, const void *data)
VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);
dc->vmsd = &vu_rng_vmstate;
- device_class_set_props(dc, vrng_properties);
device_class_set_parent_realize(dc, vu_rng_base_realize,
&vubc->parent_realize);
diff --git a/hw/virtio/vhost-user-rtc.c b/hw/virtio/vhost-user-rtc.c
index 88b0c70b90..6d80cb6263 100644
--- a/hw/virtio/vhost-user-rtc.c
+++ b/hw/virtio/vhost-user-rtc.c
@@ -19,9 +19,6 @@ static const VMStateDescription vu_rtc_vmstate = {
.unmigratable = 1,
};
-static const Property vrtc_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
-};
static void vu_rtc_base_realize(DeviceState *dev, Error **errp)
{
@@ -42,7 +39,6 @@ static void vu_rtc_class_init(ObjectClass *klass, const void *data)
VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);
dc->vmsd = &vu_rtc_vmstate;
- device_class_set_props(dc, vrtc_properties);
device_class_set_parent_realize(dc, vu_rtc_base_realize,
&vubc->parent_realize);
diff --git a/hw/virtio/vhost-user-snd.c b/hw/virtio/vhost-user-snd.c
index 7129b77d9c..3663450aed 100644
--- a/hw/virtio/vhost-user-snd.c
+++ b/hw/virtio/vhost-user-snd.c
@@ -34,7 +34,6 @@ static const VMStateDescription vu_snd_vmstate = {
};
static const Property vsnd_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
DEFINE_PROP_BIT64("controls", VHostUserBase,
parent_obj.host_features, VIRTIO_SND_F_CTLS, false),
};
diff --git a/hw/virtio/vhost-user-spi.c b/hw/virtio/vhost-user-spi.c
index 707f96c250..fb6168d391 100644
--- a/hw/virtio/vhost-user-spi.c
+++ b/hw/virtio/vhost-user-spi.c
@@ -15,10 +15,6 @@
#include "standard-headers/linux/virtio_ids.h"
#include "standard-headers/linux/virtio_spi.h"
-static const Property vspi_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
-};
-
static void vspi_realize(DeviceState *dev, Error **errp)
{
VHostUserBase *vub = VHOST_USER_BASE(dev);
@@ -44,7 +40,6 @@ static void vu_spi_class_init(ObjectClass *klass, const void *data)
VHostUserBaseClass *vubc = VHOST_USER_BASE_CLASS(klass);
dc->vmsd = &vu_spi_vmstate;
- device_class_set_props(dc, vspi_properties);
device_class_set_parent_realize(dc, vspi_realize,
&vubc->parent_realize);
set_bit(DEVICE_CATEGORY_INPUT, dc->categories);
diff --git a/hw/virtio/vhost-user-test-device.c b/hw/virtio/vhost-user-test-device.c
index a2f963fdf6..91e23bf07a 100644
--- a/hw/virtio/vhost-user-test-device.c
+++ b/hw/virtio/vhost-user-test-device.c
@@ -30,7 +30,6 @@ static const VMStateDescription vud_vmstate = {
};
static const Property vud_properties[] = {
- DEFINE_PROP_CHR("chardev", VHostUserBase, chardev),
DEFINE_PROP_UINT16("virtio-id", VHostUserBase, virtio_id, 0),
DEFINE_PROP_UINT32("vq_size", VHostUserBase, vq_size, 64),
DEFINE_PROP_UINT32("num_vqs", VHostUserBase, num_vqs, 1),
--
2.43.0
On Wed, Jun 3, 2026 at 6:34 PM ConKite <connorkite@gmail.com> wrote: > > Move chardev qdev property definitions from children into > VHostUserBase. This reduces code duplication and allows children > to simply inherit the property during initialization. > > Signed-off-by: Connor Kite <connorkite@gmail.com> > > --- > hw/virtio/vhost-user-base.c | 9 +++++++++ > hw/virtio/vhost-user-gpio.c | 4 ---- > hw/virtio/vhost-user-i2c.c | 5 ----- > hw/virtio/vhost-user-input.c | 5 ----- > hw/virtio/vhost-user-rng.c | 5 ----- > hw/virtio/vhost-user-rtc.c | 4 ---- > hw/virtio/vhost-user-snd.c | 1 - > hw/virtio/vhost-user-spi.c | 5 ----- > hw/virtio/vhost-user-test-device.c | 1 - > 9 files changed, 9 insertions(+), 30 deletions(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
© 2016 - 2026 Red Hat, Inc.