From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59437) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQG3F-0003Xr-Js for qemu-devel@nongnu.org; Tue, 24 Feb 2015 09:01:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YQG31-0007Yc-2l for qemu-devel@nongnu.org; Tue, 24 Feb 2015 09:01:29 -0500 Received: from cantor2.suse.de ([195.135.220.15]:44164 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQG30-0007Wu-S8 for qemu-devel@nongnu.org; Tue, 24 Feb 2015 09:01:15 -0500 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Tue, 24 Feb 2015 14:58:23 +0100 Message-Id: <1424786311-22387-4-git-send-email-afaerber@suse.de> In-Reply-To: <1424786311-22387-1-git-send-email-afaerber@suse.de> References: <1424786311-22387-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULL 03/10] qdev: Improve qdev_init_nofail()'s error reporting List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Markus Armbruster , =?UTF-8?q?Andreas=20F=C3=A4rber?= From: Markus Armbruster We get two error messages: a specific one from qdev_init(), and a generic one from qdev_init_nofail(). The specific one gets suppressed in QMP context. qdev_init_nofail() failing there is a bug, though. Cut out the qdev_init() middle-man: realize the device, and on error exit with a single error message. Signed-off-by: Markus Armbruster Signed-off-by: Andreas F=C3=A4rber --- hw/core/qdev.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index ff81f67..10bf086 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -373,10 +373,15 @@ void qdev_simple_device_unplug_cb(HotplugHandler *h= otplug_dev, way is somewhat unclean, and best avoided. */ void qdev_init_nofail(DeviceState *dev) { - const char *typename =3D object_get_typename(OBJECT(dev)); + Error *err =3D NULL; + + assert(!dev->realized); =20 - if (qdev_init(dev) < 0) { - error_report("Initialization of device %s failed", typename); + object_property_set_bool(OBJECT(dev), true, "realized", &err); + if (err) { + error_report("Initialization of device %s failed: %s", + object_get_typename(OBJECT(dev)), + error_get_pretty(err)); exit(1); } } --=20 2.1.4