> +#define TYPE_VHOST_USER_INPUT_PCI "vhost-user-input-pci" Patch $subject mismatch.
> +struct VHostUserInput { > + VirtIOInput parent_obj; > + > + VhostUserBackend *vhost; > +}; Nothing input specific here ... > +static void vhost_input_change_active(VirtIOInput *vinput) > +{ > + VHostUserInput *vhi = VHOST_USER_INPUT(vinput); > + > + if (!vhi->vhost) { > + return; > + } > + > + if (vinput->active) { > + vhost_user_backend_start(vhi->vhost); > + } else { > + vhost_user_backend_stop(vhi->vhost); > + } > +} ... and here ... > +static const VMStateDescription vmstate_vhost_input = { > + .name = "vhost-user-input", > + .unmigratable = 1, > +}; ... and here ... > +static void vhost_input_is_busy(const Object *obj, const char *name, > + Object *val, Error **errp) > +{ > + VHostUserInput *vhi = VHOST_USER_INPUT(obj); > + > + if (vhi->vhost) { > + error_setg(errp, "can't use already busy vhost-user"); > + } else { > + qdev_prop_allow_set_link_before_realize(obj, name, val, errp); > + } > +} ... likewise ... So, maybe it makes sense to have a abstact base class for vhost-user devices? And possibly move the vhost-backend code to the base class then? cheers, Gerd