qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Sagar Karandikar" <sagark@eecs.berkeley.edu>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"Max Filippov" <jcmvbkbc@gmail.com>,
	"Alistair Francis" <Alistair.Francis@wdc.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Paul Durrant" <paul@xen.org>,
	"Magnus Damm" <magnus.damm@gmail.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Anthony Perard" <anthony.perard@citrix.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"David Gibson" <david@gibson.dropbear.id.au>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Alistair Francis" <alistair@alistair23.me>,
	qemu-arm@nongnu.org, xen-devel@lists.xenproject.org,
	qemu-riscv@nongnu.org, "Stafford Horne" <shorne@gmail.com>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"Richard Henderson" <rth@twiddle.net>,
	"Daniel P . Berrange" <berrange@redhat.com>,
	"Thomas Huth" <huth@tuxfamily.org>,
	"Bastian Koppelmann" <kbastian@mail.uni-paderborn.de>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Michael Walle" <michael@walle.cc>,
	qemu-ppc@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Aurelien Jarno" <aurelien@aurel32.net>
Subject: [RFC PATCH 02/35] hw/core/qdev: Add qdev_warn_deprecated_function_used() helper
Date: Mon,  8 Jun 2020 18:00:11 +0200	[thread overview]
Message-ID: <20200608160044.15531-3-philmd@redhat.com> (raw)
In-Reply-To: <20200608160044.15531-1-philmd@redhat.com>

When built with --enable-qdev-deprecation-warning, calling
qdev_warn_deprecated_function_used() will emit a warning such:

  $ qemu-system-arm -M verdex ...
  qemu-system-arm: warning: use of deprecated non-qdev/non-qom code in pxa2xx_lcdc_init()
  qemu-system-arm: warning: use of deprecated non-qdev/non-qom code in pxa2xx_i2s_init()
  qemu-system-arm: warning: use of deprecated non-qdev/non-qom code in pxa27x_keypad_init()

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 configure                    |  8 ++++++++
 include/hw/qdev-deprecated.h | 26 ++++++++++++++++++++++++++
 hw/core/qdev.c               |  8 ++++++++
 3 files changed, 42 insertions(+)
 create mode 100644 include/hw/qdev-deprecated.h

diff --git a/configure b/configure
index 597e909b53..9b7a8927c6 100755
--- a/configure
+++ b/configure
@@ -434,6 +434,7 @@ edk2_blobs="no"
 pkgversion=""
 pie=""
 qom_cast_debug="yes"
+qdev_deprecation_warning="no"
 trace_backends="log"
 trace_file="trace"
 spice=""
@@ -1114,6 +1115,8 @@ for opt do
   ;;
   --enable-qom-cast-debug) qom_cast_debug="yes"
   ;;
+  --enable-qdev-deprecation-warning) qdev_deprecation_warning="yes"
+  ;;
   --disable-virtfs) virtfs="no"
   ;;
   --enable-virtfs) virtfs="yes"
@@ -1882,6 +1885,7 @@ disabled with --disable-FEATURE, default is enabled if available:
   virglrenderer   virgl rendering support
   xfsctl          xfsctl support
   qom-cast-debug  cast debugging support
+  qdev-deprecation-warning display qdev deprecation warnings
   tools           build qemu-io, qemu-nbd and qemu-img tools
   vxhs            Veritas HyperScale vDisk backend support
   bochs           bochs image format support
@@ -6723,6 +6727,7 @@ echo "gcov enabled      $gcov"
 echo "TPM support       $tpm"
 echo "libssh support    $libssh"
 echo "QOM debugging     $qom_cast_debug"
+echo "QDEV deprecation warnings $qdev_deprecation_warning"
 echo "Live block migration $live_block_migration"
 echo "lzo support       $lzo"
 echo "snappy support    $snappy"
@@ -7345,6 +7350,9 @@ fi
 if test "$qom_cast_debug" = "yes" ; then
   echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
 fi
+if test "$qdev_deprecation_warning" = "yes" ; then
+  echo "CONFIG_QDEV_DEPRECATION_WARNING=y" >> $config_host_mak
+fi
 if test "$rbd" = "yes" ; then
   echo "CONFIG_RBD=m" >> $config_host_mak
   echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
diff --git a/include/hw/qdev-deprecated.h b/include/hw/qdev-deprecated.h
new file mode 100644
index 0000000000..b815f62dae
--- /dev/null
+++ b/include/hw/qdev-deprecated.h
@@ -0,0 +1,26 @@
+/*
+ * QEMU QOM qdev deprecation helpers
+ *
+ * Copyright (c) 2020 Red Hat, Inc.
+ *
+ * Author:
+ *   Philippe Mathieu-Daudé <philmd@redhat.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+#ifndef HW_QDEV_DEPRECATED_H
+#define HW_QDEV_DEPRECATED_H
+
+/**
+ * qdev_warn_deprecated_function_used:
+ *
+ * Display a warning that deprecated code is used.
+ */
+#define qdev_warn_deprecated_function_used() \
+    qdev_warn_deprecated_function(__func__)
+void qdev_warn_deprecated_function(const char *function);
+
+#endif
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 9e5538aeae..901fa93657 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -35,6 +35,7 @@
 #include "hw/hotplug.h"
 #include "hw/irq.h"
 #include "hw/qdev-properties.h"
+#include "hw/qdev-deprecated.h"
 #include "hw/boards.h"
 #include "hw/sysbus.h"
 #include "hw/qdev-clock.h"
@@ -819,6 +820,13 @@ void qdev_alias_all_properties(DeviceState *target, Object *source)
     } while (class != object_class_by_name(TYPE_DEVICE));
 }
 
+void qdev_warn_deprecated_function(const char *function)
+{
+#ifdef CONFIG_QDEV_DEPRECATION_WARNING
+    warn_report("use of deprecated non-qdev/non-qom code in %s()", function);
+#endif
+}
+
 static bool device_get_realized(Object *obj, Error **errp)
 {
     DeviceState *dev = DEVICE(obj);
-- 
2.21.3



  parent reply	other threads:[~2020-06-08 16:06 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-08 16:00 [RFC PATCH 00/35] hw/qdev: Warn when using pre-qdev/QOM devices Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 01/35] qom/object: Update documentation Philippe Mathieu-Daudé
2020-06-08 16:00 ` Philippe Mathieu-Daudé [this message]
2020-06-08 16:00 ` [RFC PATCH 03/35] hw/arm/omap: Emit warning when old code is used Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 04/35] hw/arm/pxa2xx: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 05/35] hw/arm/nseries: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 06/35] hw/timer/arm_timer: " Philippe Mathieu-Daudé
2020-06-09 11:10   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 07/35] hw/char/parallel: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 08/35] hw/display/blizzard: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 09/35] hw/display/ramfb: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 10/35] hw/display/tc6393xb: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 11/35] hw/display/vga-isa-mm: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 12/35] hw/dma/etraxfs_dma: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 13/35] hw/dma/soc_dma: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 14/35] hw/i386/pc: " Philippe Mathieu-Daudé
2020-06-09 11:08   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 15/35] hw/i386/xen/xen-hvm: " Philippe Mathieu-Daudé
2020-06-08 16:54   ` Paul Durrant
2020-06-08 17:37     ` Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 16/35] hw/input/lasips2: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 17/35] hw/input/pckbd: " Philippe Mathieu-Daudé
2020-06-09 11:07   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 18/35] hw/input/ps2: " Philippe Mathieu-Daudé
2020-06-09 11:06   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 19/35] hw/input/tsc2005: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 20/35] hw/intc/i8259: " Philippe Mathieu-Daudé
2020-06-09 11:10   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 21/35] hw/lm32/lm32_hwsetup: " Philippe Mathieu-Daudé
2020-06-09 11:11   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 22/35] hw/m68k/mcf520x: " Philippe Mathieu-Daudé
2020-06-08 19:54   ` Thomas Huth
2020-06-08 16:00 ` [RFC PATCH 23/35] hw/misc/applesmc: " Philippe Mathieu-Daudé
2020-06-09 11:05   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 24/35] hw/misc/cbus: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 25/35] hw/nvram/eeprom93xx: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 26/35] hw/openrisc/cputimer: " Philippe Mathieu-Daudé
2020-06-09 11:13   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 27/35] hw/ppc/ppc: " Philippe Mathieu-Daudé
2020-06-09 11:12   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 28/35] hw/ppc/ppc4xx: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 29/35] hw/ppc/ppc_booke: " Philippe Mathieu-Daudé
2020-06-09 11:12   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 30/35] hw/ppc/virtex_ml507: " Philippe Mathieu-Daudé
2020-06-09 11:12   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 31/35] hw/sh4: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 32/35] hw/riscv: " Philippe Mathieu-Daudé
2020-06-09 11:04   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 33/35] hw/timer/slavio_timer: " Philippe Mathieu-Daudé
2020-06-09 11:03   ` Paolo Bonzini
2020-06-08 16:00 ` [RFC PATCH 34/35] hw/usb/hcd-musb: " Philippe Mathieu-Daudé
2020-06-08 16:00 ` [RFC PATCH 35/35] hw/xtensa/xtfpga: " Philippe Mathieu-Daudé
2020-06-08 16:14 ` [RFC PATCH 00/35] hw/qdev: Warn when using pre-qdev/QOM devices Peter Maydell
2020-06-08 16:17   ` Philippe Mathieu-Daudé
2020-06-09 11:14     ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200608160044.15531-3-philmd@redhat.com \
    --to=philmd@redhat.com \
    --cc=Alistair.Francis@wdc.com \
    --cc=alistair@alistair23.me \
    --cc=anthony.perard@citrix.com \
    --cc=armbru@redhat.com \
    --cc=aurelien@aurel32.net \
    --cc=berrange@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=edgar.iglesias@gmail.com \
    --cc=ehabkost@redhat.com \
    --cc=huth@tuxfamily.org \
    --cc=jcmvbkbc@gmail.com \
    --cc=kbastian@mail.uni-paderborn.de \
    --cc=kraxel@redhat.com \
    --cc=magnus.damm@gmail.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=michael@walle.cc \
    --cc=mst@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=paul@xen.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=sagark@eecs.berkeley.edu \
    --cc=shorne@gmail.com \
    --cc=sstabellini@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).