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>,
"Max Filippov" <jcmvbkbc@gmail.com>,
"Alistair Francis" <Alistair.Francis@wdc.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Alistair Francis" <alistair@alistair23.me>,
qemu-arm@nongnu.org,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Stafford Horne" <shorne@gmail.com>,
"David Gibson" <david@gibson.dropbear.id.au>,
qemu-riscv@nongnu.org, "Thomas Huth" <huth@tuxfamily.org>,
"Bastian Koppelmann" <kbastian@mail.uni-paderborn.de>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
qemu-ppc@nongnu.org, "Paolo Bonzini" <pbonzini@redhat.com>
Subject: [RFC PATCH v2 02/23] hw/core/qdev: Add qdev_warn_deprecated_function_used() helper
Date: Sat, 4 Jul 2020 17:38:47 +0200 [thread overview]
Message-ID: <20200704153908.12118-3-philmd@redhat.com> (raw)
In-Reply-To: <20200704153908.12118-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>
---
I'd rather use --enable-qdev-debug suggested here:
https://www.mail-archive.com/qemu-devel@nongnu.org/msg719802.html
---
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 8a65240d4a..aac3dc0767 100755
--- a/configure
+++ b/configure
@@ -441,6 +441,7 @@ edk2_blobs="no"
pkgversion=""
pie=""
qom_cast_debug="yes"
+qdev_deprecation_warning="no"
trace_backends="log"
trace_file="trace"
spice=""
@@ -1124,6 +1125,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"
@@ -1915,6 +1918,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
@@ -6966,6 +6970,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"
@@ -7594,6 +7599,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 2131c7f951..1134f46631 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"
@@ -838,6 +839,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
next prev parent reply other threads:[~2020-07-04 15:41 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-04 15:38 [RFC PATCH v2 00/23] hw/qdev: Warn when using pre-qdev/QOM devices Philippe Mathieu-Daudé
2020-07-04 15:38 ` [PATCH v2 01/23] qom/object: Update documentation Philippe Mathieu-Daudé
2020-07-04 15:38 ` Philippe Mathieu-Daudé [this message]
2020-07-04 16:22 ` [RFC PATCH v2 02/23] hw/core/qdev: Add qdev_warn_deprecated_function_used() helper BALATON Zoltan
2020-07-04 15:38 ` [RFC PATCH v2 03/23] hw/arm/omap: Emit warning when old code is used Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 04/23] hw/arm/pxa2xx: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 05/23] hw/arm/nseries: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 06/23] hw/char/parallel: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 07/23] hw/display/blizzard: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 08/23] hw/display/ramfb: " Philippe Mathieu-Daudé
2020-07-06 14:15 ` Gerd Hoffmann
2020-07-06 14:18 ` Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 09/23] hw/display/tc6393xb: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 10/23] hw/display/vga-isa-mm: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 11/23] hw/dma/etraxfs_dma: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 12/23] hw/dma/soc_dma: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 13/23] hw/input/lasips2: " Philippe Mathieu-Daudé
2020-07-04 15:38 ` [RFC PATCH v2 14/23] hw/input/tsc2005: " Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 15/23] hw/m68k/mcf520x: " Philippe Mathieu-Daudé
2020-07-05 6:31 ` Thomas Huth
2020-07-04 15:39 ` [RFC PATCH v2 16/23] hw/misc/cbus: " Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 17/23] hw/nvram/eeprom93xx: " Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 18/23] hw/openrisc/cputimer: " Philippe Mathieu-Daudé
2020-07-04 15:47 ` Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 19/23] hw/ppc/ppc4xx: " Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 20/23] hw/sh4: " Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 21/23] hw/riscv: " Philippe Mathieu-Daudé
2020-07-06 16:46 ` Alistair Francis
2020-07-04 15:39 ` [RFC PATCH v2 22/23] hw/usb/hcd-musb: " Philippe Mathieu-Daudé
2020-07-04 15:39 ` [RFC PATCH v2 23/23] hw/xtensa/xtfpga: " Philippe Mathieu-Daudé
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=20200704153908.12118-3-philmd@redhat.com \
--to=philmd@redhat.com \
--cc=Alistair.Francis@wdc.com \
--cc=alistair@alistair23.me \
--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=mst@redhat.com \
--cc=palmer@dabbelt.com \
--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=sagark@eecs.berkeley.edu \
--cc=shorne@gmail.com \
--cc=ysato@users.sourceforge.jp \
/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).