On Tue, Nov 06, 2018 at 11:23:33AM +0100, Gerd Hoffmann wrote: > Print a warning for deprecated and obsolete devices. > Also add support state to device listing. > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
Should we also add a runtime flag to block these? E.g. I can see libvirt doing that and passing the responsibility for what is reasonably supported to qemu. > --- > hw/core/qdev.c | 8 +++++++- > qdev-monitor.c | 9 +++++++++ > 2 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index 6b3cc55b27..6205522c3e 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -133,11 +133,17 @@ DeviceState *qdev_create(BusState *bus, const char > *name) > > DeviceState *qdev_try_create(BusState *bus, const char *type) > { > + ObjectClass *oc; > DeviceState *dev; > > - if (object_class_by_name(type) == NULL) { > + oc = object_class_by_name(type); > + if (oc == NULL) { > return NULL; > } > + if (qemu_is_deprecated(oc) || > + qemu_is_obsolete(oc)) { > + qemu_warn_support_state("device", type, oc); > + } > dev = DEVICE(object_new(type)); > if (!dev) { > return NULL; > diff --git a/qdev-monitor.c b/qdev-monitor.c > index 802c18a74e..80370372f9 100644 > --- a/qdev-monitor.c > +++ b/qdev-monitor.c > @@ -115,6 +115,8 @@ static void out_printf(const char *fmt, ...) > > static void qdev_print_devinfo(DeviceClass *dc) > { > + ObjectClass *oc = OBJECT_CLASS(dc); > + > out_printf("name \"%s\"", object_class_get_name(OBJECT_CLASS(dc))); > if (dc->bus_type) { > out_printf(", bus %s", dc->bus_type); > @@ -128,6 +130,9 @@ static void qdev_print_devinfo(DeviceClass *dc) > if (!dc->user_creatable) { > out_printf(", no-user"); > } > + if (oc->supported.state != SUPPORT_STATE_UNSPECIFIED) { > + out_printf(", %s", SupportState_str(oc->supported.state)); > + } > out_printf("\n"); > } > > @@ -579,6 +584,10 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error > **errp) > if (!dc) { > return NULL; > } > + if (qemu_is_deprecated(OBJECT_CLASS(dc)) || > + qemu_is_obsolete(OBJECT_CLASS(dc))) { > + qemu_warn_support_state("device", driver, OBJECT_CLASS(dc)); > + } > > /* find bus */ > path = qemu_opt_get(opts, "bus"); > -- > 2.9.3