[libvirt] [Qemu-devel] [PATCH 1/3] qdev: add deprecation_reason to DeviceClass
Philippe Mathieu-Daudé
philmd at redhat.com
Thu Oct 25 11:12:15 UTC 2018
Hi Gerd,
On 25/10/18 10:52, Gerd Hoffmann wrote:
> Simliar to deprecated machine types.
"Similar"
> Print a warning when creating a deprecated device.
> Add deprecation notice to -device help.
>
> TODO: add to intospection.
"introspection"
Do we want the TODO in the git history?
>
> Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> ---
> hw/core/qdev.c | 9 ++++++++-
> include/hw/qdev-core.h | 1 +
> qdev-monitor.c | 7 +++++++
> 3 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 046d8f1..3b27a74 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -133,11 +133,18 @@ DeviceState *qdev_create(BusState *bus, const char *name)
>
> DeviceState *qdev_try_create(BusState *bus, const char *type)
> {
> + DeviceClass *dc;
> DeviceState *dev;
>
> - if (object_class_by_name(type) == NULL) {
> + dc = DEVICE_CLASS(object_class_by_name(type));
> + if (dc == NULL) {
> return NULL;
> }
> + if (dc->deprecation_reason) {
> + warn_report("device %s is deprecated (%s)",
> + type, dc->deprecation_reason);
> + }
> +
> dev = DEVICE(object_new(type));
> if (!dev) {
> return NULL;
> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
> index a24d0dd..a352eaa 100644
> --- a/include/hw/qdev-core.h
> +++ b/include/hw/qdev-core.h
> @@ -105,6 +105,7 @@ typedef struct DeviceClass {
> */
> bool user_creatable;
> bool hotpluggable;
> + const char *deprecation_reason;
>
> /* callbacks */
> DeviceReset reset;
> diff --git a/qdev-monitor.c b/qdev-monitor.c
> index 802c18a..bbba2bc 100644
> --- a/qdev-monitor.c
> +++ b/qdev-monitor.c
> @@ -128,6 +128,9 @@ static void qdev_print_devinfo(DeviceClass *dc)
> if (!dc->user_creatable) {
> out_printf(", no-user");
> }
> + if (!dc->deprecation_reason) {
This is the opposite condition:
if (dc->deprecation_reason) {
out_printf(", deprecated");
With it fixed:
Reviewed-by: Philippe Mathieu-Daudé <philmd at redhat.com>
> + out_printf(", deprecated");
> + }
> out_printf("\n");
> }
>
> @@ -579,6 +582,10 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **errp)
> if (!dc) {
> return NULL;
> }
> + if (dc->deprecation_reason) {
> + warn_report("device %s is deprecated (%s)",
> + driver, dc->deprecation_reason);
> + }
>
> /* find bus */
> path = qemu_opt_get(opts, "bus");
>
More information about the libvir-list
mailing list