{"id":818412,"url":"http://patchwork.ozlabs.org/api/patches/818412/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/bf3dd056ce55cbea81ca762c3c40d22683a542e7.1506384414.git.alistair.francis@xilinx.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<bf3dd056ce55cbea81ca762c3c40d22683a542e7.1506384414.git.alistair.francis@xilinx.com>","list_archive_url":null,"date":"2017-09-26T00:08:52","name":"[v1,3/8] hw: Replace fprintf(stderr, \"*\\n\" with error_report()","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"6dbd312a3d9cbaa358b1ec96221689e112fe1bc2","submitter":{"id":47878,"url":"http://patchwork.ozlabs.org/api/people/47878/?format=json","name":"Alistair Francis","email":"alistair.francis@xilinx.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/bf3dd056ce55cbea81ca762c3c40d22683a542e7.1506384414.git.alistair.francis@xilinx.com/mbox/","series":[{"id":5037,"url":"http://patchwork.ozlabs.org/api/series/5037/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=5037","date":"2017-09-26T00:08:34","name":"Remove some of the fprintf(stderr, \"*","version":1,"mbox":"http://patchwork.ozlabs.org/series/5037/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/818412/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/818412/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=xilinx.onmicrosoft.com\n\theader.i=@xilinx.onmicrosoft.com header.b=\"jrVMjL/N\"; \n\tdkim-atps=neutral","spf=pass (sender IP is 149.199.60.83)\n\tsmtp.mailfrom=xilinx.com; nongnu.org; dkim=none (message not signed)\n\theader.d=none;nongnu.org; dmarc=bestguesspass action=none\n\theader.from=xilinx.com;"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1M5Y4Cg0z9sDB\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 26 Sep 2017 10:19:29 +1000 (AEST)","from localhost ([::1]:44932 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dwdax-0007Lb-Jv\n\tfor incoming@patchwork.ozlabs.org; Mon, 25 Sep 2017 20:19:27 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:56481)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <alistai@xilinx.com>) id 1dwdX2-0004lu-CB\n\tfor qemu-devel@nongnu.org; Mon, 25 Sep 2017 20:15:49 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <alistai@xilinx.com>) id 1dwdWg-00004s-B9\n\tfor qemu-devel@nongnu.org; Mon, 25 Sep 2017 20:15:24 -0400","from mail-dm3nam03on0079.outbound.protection.outlook.com\n\t([104.47.41.79]:36736\n\thelo=NAM03-DM3-obe.outbound.protection.outlook.com)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <alistai@xilinx.com>)\n\tid 1dwdUh-0005dY-7C; Mon, 25 Sep 2017 20:12:59 -0400","from BY2PR02CA0098.namprd02.prod.outlook.com (10.163.44.152) by\n\tCY1PR0201MB1931.namprd02.prod.outlook.com (10.163.56.29) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.77.7; Tue, 26 Sep 2017 00:12:51 +0000","from BL2NAM02FT038.eop-nam02.prod.protection.outlook.com\n\t(2a01:111:f400:7e46::208) by BY2PR02CA0098.outlook.office365.com\n\t(2a01:111:e400:5261::24) with Microsoft SMTP Server (version=TLS1_2, \n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.56.9 via\n\tFrontend Transport; Tue, 26 Sep 2017 00:12:50 +0000","from xsj-pvapsmtpgw01 (149.199.60.83) by\n\tBL2NAM02FT038.mail.protection.outlook.com (10.152.77.25) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.35.14\n\tvia Frontend Transport; Tue, 26 Sep 2017 00:12:49 +0000","from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01)\n\tby xsj-pvapsmtpgw01 with esmtp (Exim 4.63)\n\t(envelope-from <alistair.francis@xilinx.com>)\n\tid 1dwdUW-0007B5-Qt; Mon, 25 Sep 2017 17:12:48 -0700","from [127.0.0.1] (helo=localhost)\n\tby xsj-pvapsmtp01 with smtp (Exim 4.63)\n\t(envelope-from <alistair.francis@xilinx.com>)\n\tid 1dwdUW-0008VZ-OY; Mon, 25 Sep 2017 17:12:48 -0700","from xsj-pvapsmtp01 (smtp3.xilinx.com [149.199.38.66])\n\tby xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id\n\tv8Q0CW1C007357; Mon, 25 Sep 2017 17:12:32 -0700","from [172.19.2.220] (helo=localhost.localdomain)\n\tby xsj-pvapsmtp01 with esmtp (Exim 4.63)\n\t(envelope-from <alistair.francis@xilinx.com>)\n\tid 1dwdUG-0008U7-6M; Mon, 25 Sep 2017 17:12:32 -0700"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=xilinx.onmicrosoft.com; s=selector1-xilinx-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=0JTkhBN/MPIfjGf0MDP5kiNuMG2F915lASxs1b9lIfE=;\n\tb=jrVMjL/N3fllgf2z0IKMYAOCPZgFCUfDeGkSrzdxsq83aNpWA1Mhah/POlcqEYLlN/mMlnXrU1UCdgIZ5us9zz3cRqyZJTn7WluSdFQLZ/wmJarqYtot2FA548V9Zd+LjvoYP3W8saHqOWCgwbb2tJUaYf54afPgojkKvDu+vA0=","Received-SPF":"Pass (protection.outlook.com: domain of xilinx.com designates\n\t149.199.60.83 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=149.199.60.83; helo=xsj-pvapsmtpgw01;","From":"Alistair Francis <alistair.francis@xilinx.com>","To":"<qemu-devel@nongnu.org>","Date":"Mon, 25 Sep 2017 17:08:52 -0700","Message-ID":"<bf3dd056ce55cbea81ca762c3c40d22683a542e7.1506384414.git.alistair.francis@xilinx.com>","X-Mailer":"git-send-email 2.11.0","In-Reply-To":"<cover.1506384414.git.alistair.francis@xilinx.com>","References":"<cover.1506384414.git.alistair.francis@xilinx.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-RCIS-Action":"ALLOW","X-TM-AS-Product-Ver":"IMSS-7.1.0.1224-8.1.0.1062-23350.005","X-TM-AS-User-Approved-Sender":"Yes;Yes","X-EOPAttributedMessage":"0","X-MS-Office365-Filtering-HT":"Tenant","X-Forefront-Antispam-Report":"CIP:149.199.60.83; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(376002)(39860400002)(346002)(2980300002)(438002)(189002)(199003)(8676002)(53946003)(50226002)(23676002)(16200700003)(54906003)(2351001)(551934003)(316002)(478600001)(50986999)(76176999)(2870700001)(118296001)(50466002)(305945005)(4326008)(81166006)(7406005)(47776003)(5660300001)(39060400002)(575784001)(356003)(6306002)(33646002)(189998001)(6916009)(2906002)(5820100001)(7416002)(5890100001)(9786002)(6666003)(36756003)(2950100002)(81156014)(77096006)(36386004)(8936002)(106466001)(63266004)(8666007)(21314002)(107986001)(579004)(569006);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0201MB1931;\n\tH:xsj-pvapsmtpgw01; FPR:; SPF:Pass; PTR:unknown-60-83.xilinx.com;\n\tMX:1; A:1; LANG:en; ","X-Microsoft-Exchange-Diagnostics":["1; BL2NAM02FT038;\n\t1:ze3NFSOsovELHF3Q1H8FT8/tOrDnVJBDv0PG0kZJeCEAYjG4b4diWTrje1ZoFRd78cbu99zWIALYUFPb8QEh9YkUnqXretn35fPQYio3dZ9A1MD08KUFxcvp/O7jvPW/","1; CY1PR0201MB1931;\n\t3:rdD6Kr+B9+1hqU4tuoeP4/PwfPjIcq62CYes5oR9QCqr4rULAUcikoON5I9gndRzgjNPKPMdOlCnfLM4g89rJb3urFXVvKgA58KZJA2aUdRmElXI3YW4JHcz8QKI00sOPMmGKPRHMGrwGaK05ykhKTD/J9Y3QroEA6RklQHDX20vnAnNwCH+w3lOltVlmO6H8QodhCA3SAPzSDZgWQWLFn2wmO4H8XJdYAjLOEBVRQW9AMxkxM4WVtqxD0VXM6ZE2Y2/m+lNtKZDVTDX8wvvclRxmJy4eBrzmupOIRRISLigv1WPPuNi3F6HWSDbfFJhmYsLD8ElPiX1SEVmK2Me9vNCuA2GG1U+9m+aKrmeVM4=;\n\t25:AerXj/6KloArXe9jer8Gy6w2xI2SAjoQJeF3Wvr4qagnpdjmHzTiGQut5DNm3GV+cypnnNZKaotbBn+XpSBDv3aW/LmEPXtDUaikA/SSzzZX+7T0qSx6OVwYhzSMnZ5zwvA1X/g3cw9qyljFGGVVkHKo4YVwWRrfbRWA3o3Ua4nJtg4S6tQO+/NREBRfwSmkU9ZV9c38mrfQPA+JERm16LGYiHitgdqVIALsVeOaSZFo7JFlP6+9SCE/paycAKKorn2q5c+434qgY6WzOuZFk8jfIreoWjrYqo6SCJjIUM1hX//CdZ+IgvASdKszhioMlmxBf+TJxBwt3rRl1gct0w==","1; CY1PR0201MB1931;\n\t31:H6Flvj2+gV5A6JQdh0Zz4iPu8yQcyDepdU6fEsRkoF71535hK7Pi2ogZw+hnRNMFwPOe7O0/MZCQN3x3cIR1YRMY85nre0Iu5Eu5yAHOYZFQjeYiFNJTv27DYFH6gLe7Wzlr229K/GKSDOojDnkOQUB/6akSenPZnLbnPk/ll5fqFTjszZj3HQmO0ZmmYcioMvvMaMuoI4qajeAYxsefWj69wKuHWqYtr89D8b2BBKs=;\n\t20:FmVKal1eJ81kVlYVZJc3Y04GRWfPDCt5vGYP5Bbgg8sd2K01MWd7VFjLhQAWv+ubwvU02/1heb57rKLWURAzddvADlJvD+H8mYomsIgyJsD6jO03fb3dehCrqAo8vHcdfOmxtyHF4j+JAlqnUWbWU4q6hIm/T2X5RM/zt8yZgDiPxr++veLxWrytI+i0N9f3H83X7Xa/hRwkP0Vik3GVDM/f0GatcQP+Gbuo/eABW3vHEoz5nxolupyjRy8bGB2tlvA9lyppg9ZF5WYEZp8GNCHUTMLDoZsKKqrkF7utHfKAzPczS5MiuBEncp/M5NK5K8M9qZ7zLGlb8G18zkdAvHRV3o+dklmWrENZzXbj1OmHOBfQGZ5mutMn8FS8/Lcn8rZDnTl32mbRWWw3b96b0W7xcBzDaITKVe2M18XXkrx8eghU/A7mHZ4SS2Yab2BqyMZbrt5tQtodI0ZztQ/RoCrxNpyEU47HvfqtJMnqIGOrFvEU50NFy0nJu+RhM/P9","1; CY1PR0201MB1931;\n\t4:cVEFDCbW1wRzlkDOJYBwW0/Fuxx4i6WFITmceadNvKjl7mbi6TYtzyj3HQkxDEeNf19u85d1WxcROm/RlgiMKHBf3cqlYzZQg3KtY43qGFJXrzseg8mkH7ARWqX+qv5N/CKwYCeLnkAOzrl855acCNjg8NIEDP31AN1alTknKjwFP0mOMkRpWgg9B7mq6ZbNKHqDNYPZadFCminFIrR1mOvB/HwSW5MNQKr1kTK0s77DhUWG7+RM445k5P/aSwe2/KVrZfbytYjFEjagRmiHqk5hvKAaoAdsEy1XiwNJaKJYu6IemCaCLqFd+RrCR+7CL8nbDjvL2T9pkIfTEb7jnRbHUlfbKgSnqkWBOWXBwLSOFVVKz0630eVU3XH7XGkJ3A8ROs54arbIB0mPG3w3wTEByFMHagR6E9TMIZNVm8E3uoVcnRu8/g284fKk6Vv6EVizINdyLtXg6OEs9WV64i9jir9fpXEH2JyU6PlUp1+Nz77TxmLXp5rzo6TZshl+YaJCrk7CFemwB9aPeg5ZW5XZR/IyQeKP+8zvI9dMu/d2rcbWWCK0G2eKPLsVjkl4eZpMzmrQvqdn68PwXIqIg/eqWlNk56J7jFbt30JdrCw=","=?us-ascii?Q?1; CY1PR0201MB1931;\n\t23:PugbQgukwf/tXl6c7yZ9MlS35iOWqvx89bKgM3U?=\n\tbJ5vuvmWcqwueR9nGf6uVLv02xJc2e2ZHeF2ab6ke78Oer+d+aNrPwx0OfSZGvqoULVLrPjw1aihqbB3t1C2imoJAGKP7Bd1LEAXZ24Vib4O21sd4mvHBJaxUSvvJuXJRyK08yEVwp6ds6VeCnDJCgvLcW+kJDA2+BxIoeDNUIDXiBIscVI5fBh6NQWaAb3mkUVcMFvGxpJY2/vKgEF5MEgwIt2sLbgmqy3kgVJ6IQiZ360ocpMz61FuBZCZ6du7Ch3S4lA6mR1vDctKnx5+VY32ebJZTljPrQpXnJd4LbgteGGlotV9bkEB9raiKOnUYqqTdcAujd1cg+Dvf/IBmLwoEBG8Z7h6LB/90pHPnMY6y4X4Mz+ADFnRjr8+/axKtNa/KqZXfn1AFyypHX/mxH5msE4cMiQljPWJgwucKeaj+rgJVgVXt6QJdWQo0+FRkbo7FWy5tJH4VgbmkrcozZpedGy06qjwOomHyKV6846JXv26fpbAh+vsnSseYielPMnoo3gigXUIQtusOmj8hMUt0qkJXedceJ6da9JuuxxjVShUu0MVjm6Eb64APlqEO3nN48rrN5cJg0oQrYnT3/+6DNF12ObrVwpDFtQHfkzwuksWbVoHXBBO9/VsgYYlcGGU0CIHl4GnF2qRkR4ZXNRly/LDK5a5WaYNK1cH870o+O2G9Gh+w/50dR2jNZL2jlcpJBrydSxqrdQwW01Uho58x+1X0FQT+1fRYsHs+f9mLE4zCPiEfSUpq4tCIeuidAJynR3evPvEu5kEKzDi5y1euKAjPdHVpuc3HDhud3kYVoAIesUXpSNxczYA13IlMPljwcHIZzAYes9WKJYlwby2Vw0B/6AFYVRnbkMdrw6QrIoLbPiQXhjP7TgblbJgV80RH2q9cXVrlY3Uk5mYXI5QRSKZYy2IuQjfX9g9GMCq9Vmsb2Ut6T0xlkE4NUatZacTf3RdN8v/QB8LCKnHU3fYVKXHeqMpk7vik47is/XUq6f0jFDyztvyeGBTw67/WYHXGELYn5/7nEaKnq5tQsgkRoRFI7l7BshjR+Ytfecwtb3hjy5esX7QSPLisnv/uxI4cu1kVrGZXOGIS2biUXir+FviXY3AC1IlcY47f5SKiux9pYgxN3WVOFF/4pxLn2Ssax4u6uI80qTOQ3a3s9uGSOZCnSamz6r2l8WuskHv0MVKom3X2oAakwLgIGGq/IGDnqbeSUMU8VmARbKSqNQ+GZp7Fp70RyyI/3tG+P0imAw==","1; CY1PR0201MB1931;\n\t6:vClvaIFNPfNOm46PeuHA/gxAjQEC2iBmT4ubj2uM2mDnwWbSsSC4O4clMkZgN3XIxkgJEeVPjJUQUnHwLMDZiVRDtX4BLleopZ+wcqd42HY7SGtf4ZtWLtQIhct/m9Wki5v15Bg3UYmyesU+mbZVy+XbnVZPzvbl5ARo9zEubU8muOkaLS1ZzYp7+ODyFKEHnvpuZNyuM20K3rk86MoSR6UFKKxCSqMbbpmxMoBiulA5iaEelaMqbYfo1WwMGrDZCzp9gCdjr9U0IByG+XunWYsW76+HP1UiVjRZepaA2W572iyrrygYD2dAyUOwHKI7wFIoY8gC7rkvnaKFpe03Yw==;\n\t5:otLoKd6h7fHBS1L21zdMlHRSCGIGAGhZhBW0/jtnnD1liJmv9zzh0n4nLxCl1iFssGw8KmpJZmvq4+z+K5griAk/N4K1bNTXpp0S3Il4D+Zwj5oq30gHVTWxtU4l2hLqPoSJZ6YMbwVUcepHBReqnA==;\n\t24:HJessilumlYO4K2mAa18ZNLs4B4GNgHr0DaESFYWQ4oOscwN1V8TUQ9VtmUVhEdah3bd6dx9Z1JTzL7NNdcC2SdozGu1ogmYOddfNh1O9Mo=;\n\t7:KjBmRTEiTagY94OVY9mOBYXjCf9uW476BtEJfyNME6ar6l5rOxtDZmMwJuA6cvSIO2nOxcyksOQvfi9jft4zow1Uqm6uvmIuKhJ+yYAFdNFNZpT7NB6Wp8PnTDMqgyD2DcLc1M+Kixx39ZRtpCZdW5pSU2WPe6QiO++P16fP3KniMQxQPA/01NHtJxpNnlrt0GAhAsnnXoBQTwno6mwBBOaZc7Kp1Xf2ISakMlGB9W4="],"X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"711ec752-9c30-44af-2674-08d5047352fb","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(8251501002)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:CY1PR0201MB1931; ","X-MS-TrafficTypeDiagnostic":"CY1PR0201MB1931:","X-Exchange-Antispam-Report-Test":"UriScan:(250305191791016)(158342451672863)(142945433499172)(72170088055959)(22074186197030)(788757137089)(190383065149520)(245156298449039)(192813158149592)(70601490899591);","X-Microsoft-Antispam-PRVS":"<CY1PR0201MB1931327C1369545591E967CFDC7B0@CY1PR0201MB1931.namprd02.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93004095)(3002001)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123564025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CY1PR0201MB1931; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CY1PR0201MB1931; ","X-Forefront-PRVS":"0442E569BC","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"xilinx.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"26 Sep 2017 00:12:49.6327\n\t(UTC)","X-MS-Exchange-CrossTenant-Id":"657af505-d5df-48d0-8300-c31994686c5c","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"TenantId=657af505-d5df-48d0-8300-c31994686c5c; \n\tIp=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01]","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CY1PR0201MB1931","X-detected-operating-system":"by eggs.gnu.org: Windows 7 or 8 [fuzzy]","X-Received-From":"104.47.41.79","Subject":"[Qemu-devel] [PATCH v1 3/8] hw: Replace fprintf(stderr,\n\t\"*\\n\" with error_report()","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"Chris Wulff <crwulff@gmail.com>, \"Michael S. Tsirkin\" <mst@redhat.com>,\n\tAnthony Green <green@moxielogic.com>, Mark Cave-Ayland\n\t<mark.cave-ayland@ilande.co.uk>, armbru@redhat.com,\n\tGerd Hoffmann <kraxel@redhat.com>, Marek Vasut <marex@denx.de>,\n\tStefano Stabellini <sstabellini@kernel.org>, Jia Liu <proljc@gmail.com>,\n\tqemu-block@nongnu.org, Magnus Damm <magnus.damm@gmail.com>,\n\tAlexander Graf <agraf@suse.de>, Christian Borntraeger\n\t<borntraeger@de.ibm.com>, =?utf-8?q?Herv=C3=A9_Poussineau?=\n\t<hpoussin@reactos.org>, \tAnthony Perard <anthony.perard@citrix.com>,\n\txen-devel@lists.xenproject.org, Jason Wang <jasowang@redhat.com>, \n\tArtyom Tarasenko <atar4qemu@gmail.com>, Eduardo Habkost\n\t<ehabkost@redhat.com>, Fabien Chouteau <chouteau@adacore.com>,\n\talistair.francis@xilinx.com, Marcel Apfelbaum <marcel@redhat.com>,\n\tqemu-arm@nongnu.org, Jan Kiszka <jan.kiszka@web.de>,\n\tStefan Hajnoczi <stefanha@redhat.com>, Yongbok Kim\n\t<yongbok.kim@imgtec.com>, alistair23@gmail.com, Stafford Horne\n\t<shorne@gmail.com>, John Snow <jsnow@redhat.com>, Richard Henderson\n\t<rth@twiddle.net>, Paul Burton <paul.burton@imgtec.com>, Thomas Huth\n\t<huth@tuxfamily.org>, Cornelia Huck <cohuck@redhat.com>, Michael Walle\n\t<michael@walle.cc>, qemu-ppc@nongnu.org, Paolo Bonzini\n\t<pbonzini@redhat.com>, Aurelien Jarno <aurelien@aurel32.net>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"},"content":"Replace a large number of the fprintf(stderr, \"*\\n\" calls with\nerror_report(). The functions were renamed with these commands and then\ncompiler issues where manually fixed.\n\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\n\nSome lines where then manually tweaked to pass checkpatch.\n\nSigned-off-by: Alistair Francis <alistair.francis@xilinx.com>\nCc: Andrzej Zaborowski <balrogg@gmail.com>\nCc: Jan Kiszka <jan.kiszka@web.de>\nCc: Stefan Hajnoczi <stefanha@redhat.com>\nCc: Paolo Bonzini <pbonzini@redhat.com>\nCc: Thomas Huth <huth@tuxfamily.org>\nCc: Gerd Hoffmann <kraxel@redhat.com>\nCc: \"Michael S. Tsirkin\" <mst@redhat.com>\nCc: Richard Henderson <rth@twiddle.net>\nCc: Eduardo Habkost <ehabkost@redhat.com>\nCc: Stefano Stabellini <sstabellini@kernel.org>\nCc: Anthony Perard <anthony.perard@citrix.com>\nCc: John Snow <jsnow@redhat.com>\nCc: Christian Borntraeger <borntraeger@de.ibm.com>\nCc: Cornelia Huck <cohuck@redhat.com>\nCc: Alexander Graf <agraf@suse.de>\nCc: Michael Walle <michael@walle.cc>\nCc: Paul Burton <paul.burton@imgtec.com>\nCc: Aurelien Jarno <aurelien@aurel32.net>\nCc: Yongbok Kim <yongbok.kim@imgtec.com>\nCc: \"Hervé Poussineau\" <hpoussin@reactos.org>\nCc: Anthony Green <green@moxielogic.com>\nCc: Jason Wang <jasowang@redhat.com>\nCc: Chris Wulff <crwulff@gmail.com>\nCc: Marek Vasut <marex@denx.de>\nCc: Jia Liu <proljc@gmail.com>\nCc: Stafford Horne <shorne@gmail.com>\nCc: Marcel Apfelbaum <marcel@redhat.com>\nCc: Magnus Damm <magnus.damm@gmail.com>\nCc: Fabien Chouteau <chouteau@adacore.com>\nCc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>\nCc: Artyom Tarasenko <atar4qemu@gmail.com>\nCc: qemu-arm@nongnu.org\nCc: qemu-block@nongnu.org\nCc: xen-devel@lists.xenproject.org\nCc: qemu-ppc@nongnu.org\n---\n\n hw/arm/armv7m.c                 |  2 +-\n hw/arm/boot.c                   | 34 +++++++++----------\n hw/arm/gumstix.c                | 13 ++++----\n hw/arm/mainstone.c              |  7 ++--\n hw/arm/musicpal.c               |  2 +-\n hw/arm/omap1.c                  |  5 +--\n hw/arm/omap2.c                  | 21 ++++++------\n hw/arm/omap_sx1.c               |  6 ++--\n hw/arm/palm.c                   | 10 +++---\n hw/arm/pxa2xx.c                 |  7 ++--\n hw/arm/stellaris.c              |  3 +-\n hw/arm/tosa.c                   | 17 +++++-----\n hw/arm/versatilepb.c            |  2 +-\n hw/arm/vexpress.c               |  8 ++---\n hw/arm/z2.c                     |  6 ++--\n hw/block/dataplane/virtio-blk.c |  6 ++--\n hw/block/onenand.c              |  8 ++---\n hw/block/tc58128.c              | 44 ++++++++++++-------------\n hw/bt/core.c                    | 15 +++++----\n hw/bt/hci-csr.c                 | 17 +++++-----\n hw/bt/hci.c                     | 30 ++++++++---------\n hw/bt/hid.c                     |  2 +-\n hw/bt/l2cap.c                   | 47 ++++++++++++++-------------\n hw/bt/sdp.c                     |  7 ++--\n hw/char/exynos4210_uart.c       |  6 ++--\n hw/char/mcf_uart.c              |  5 +--\n hw/char/sh_serial.c             |  9 +++---\n hw/core/loader.c                | 31 +++++++++---------\n hw/core/ptimer.c                |  7 ++--\n hw/cris/axis_dev88.c            |  3 +-\n hw/cris/boot.c                  |  5 +--\n hw/display/blizzard.c           | 20 ++++++------\n hw/display/omap_dss.c           | 14 ++++----\n hw/display/pl110.c              |  2 +-\n hw/display/pxa2xx_lcd.c         |  2 +-\n hw/display/qxl-render.c         |  7 ++--\n hw/display/qxl.c                | 10 +++---\n hw/display/tc6393xb.c           | 36 ++++++++++++---------\n hw/display/virtio-gpu-3d.c      |  4 +--\n hw/display/vmware_vga.c         | 22 ++++++-------\n hw/dma/omap_dma.c               | 26 ++++++++-------\n hw/dma/soc_dma.c                | 37 ++++++++++-----------\n hw/gpio/omap_gpio.c             |  2 +-\n hw/i2c/omap_i2c.c               | 10 +++---\n hw/i386/kvm/apic.c              |  9 +++---\n hw/i386/kvm/clock.c             |  7 ++--\n hw/i386/kvm/i8254.c             |  7 ++--\n hw/i386/kvm/i8259.c             |  5 +--\n hw/i386/kvm/ioapic.c            |  5 +--\n hw/i386/multiboot.c             | 21 ++++++------\n hw/i386/pc.c                    | 18 +++++------\n hw/i386/pc_piix.c               |  2 +-\n hw/i386/pc_sysfw.c              |  5 +--\n hw/i386/xen/xen-hvm.c           | 32 +++++++++---------\n hw/i386/xen/xen-mapcache.c      | 12 +++----\n hw/i386/xen/xen_apic.c          |  2 +-\n hw/ide/ahci.c                   |  6 ++--\n hw/ide/core.c                   |  2 +-\n hw/input/lm832x.c               |  6 ++--\n hw/input/pckbd.c                |  3 +-\n hw/input/pxa2xx_keypad.c        |  2 +-\n hw/input/tsc2005.c              | 17 +++++-----\n hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------\n hw/input/virtio-input-hid.c     | 14 ++++----\n hw/input/virtio-input.c         |  5 +--\n hw/intc/arm_gic_kvm.c           | 12 +++----\n hw/intc/omap_intc.c             |  4 +--\n hw/intc/openpic.c               |  7 ++--\n hw/intc/openpic_kvm.c           |  8 ++---\n hw/intc/s390_flic_kvm.c         |  4 +--\n hw/ipmi/ipmi.c                  |  1 +\n hw/ipmi/ipmi_bmc_extern.c       |  5 +--\n hw/isa/isa-bus.c                |  7 ++--\n hw/lm32/lm32_boards.c           |  5 +--\n hw/lm32/milkymist.c             |  5 +--\n hw/m68k/an5206.c                |  4 +--\n hw/m68k/mcf5206.c               |  3 +-\n hw/m68k/mcf5208.c               |  7 ++--\n hw/microblaze/boot.c            |  2 +-\n hw/mips/boston.c                |  4 +--\n hw/mips/mips_fulong2e.c         |  4 +--\n hw/mips/mips_jazz.c             |  4 +--\n hw/mips/mips_malta.c            |  4 +--\n hw/mips/mips_mipssim.c          |  4 +--\n hw/mips/mips_r4k.c              |  6 ++--\n hw/misc/a9scu.c                 |  3 +-\n hw/misc/omap_gpmc.c             | 11 ++++---\n hw/misc/omap_l4.c               |  5 +--\n hw/misc/omap_sdrc.c             |  3 +-\n hw/misc/vmport.c                |  2 +-\n hw/moxie/moxiesim.c             |  7 ++--\n hw/net/fsl_etsec/etsec.c        |  2 +-\n hw/net/pcnet.c                  |  2 +-\n hw/net/smc91c111.c              |  5 +--\n hw/net/vhost_net.c              | 16 ++++-----\n hw/nios2/boot.c                 |  2 +-\n hw/nvram/eeprom93xx.c           |  5 +--\n hw/nvram/fw_cfg.c               |  4 +--\n hw/openrisc/openrisc_sim.c      |  3 +-\n hw/pci-host/bonito.c            |  6 ++--\n hw/pci/pci.c                    | 10 +++---\n hw/ppc/e500.c                   | 20 ++++++------\n hw/ppc/mac_newworld.c           |  2 +-\n hw/ppc/mac_oldworld.c           |  2 +-\n hw/ppc/mpc8544_guts.c           |  5 +--\n hw/ppc/ppc405_boards.c          |  8 ++---\n hw/ppc/ppc440_bamboo.c          | 19 +++++------\n hw/ppc/ppc4xx_pci.c             |  3 +-\n hw/ppc/prep.c                   |  4 +--\n hw/ppc/virtex_ml507.c           |  4 +--\n hw/s390x/virtio-ccw.c           |  2 +-\n hw/scsi/lsi53c895a.c            |  4 +--\n hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------\n hw/scsi/virtio-scsi-dataplane.c |  6 ++--\n hw/sd/pl181.c                   |  5 +--\n hw/sd/sd.c                      | 14 ++++----\n hw/sh4/r2d.c                    |  9 +++---\n hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------\n hw/sparc/leon3.c                |  9 +++---\n hw/sparc/sun4m.c                |  8 ++---\n hw/sparc64/niagara.c            |  2 +-\n hw/sparc64/sun4u.c              |  9 +++---\n hw/ssi/omap_spi.c               |  5 +--\n hw/timer/omap_gptimer.c         | 11 ++++---\n hw/timer/twl92230.c             |  2 +-\n hw/timer/xilinx_timer.c         |  8 ++---\n hw/usb/core.c                   | 15 +++++----\n hw/usb/desc.c                   |  4 +--\n hw/usb/dev-audio.c              | 29 +++++++++--------\n hw/usb/dev-bluetooth.c          |  4 +--\n hw/usb/dev-mtp.c                |  9 +++---\n hw/usb/dev-network.c            | 20 ++++++------\n hw/usb/hcd-ehci.c               | 32 +++++++++---------\n hw/usb/hcd-musb.c               |  4 +--\n hw/usb/hcd-xhci.c               |  3 +-\n hw/usb/host-legacy.c            |  2 +-\n hw/watchdog/watchdog.c          |  9 +++---\n hw/watchdog/wdt_i6300esb.c      |  8 +++--\n hw/xen/xen-common.c             | 10 +++---\n hw/xen/xen_pt.c                 |  4 +--\n hw/xenpv/xen_domainbuild.c      | 24 +++++++-------\n hw/xenpv/xen_machine_pv.c       |  8 ++---\n 142 files changed, 769 insertions(+), 705 deletions(-)","diff":"diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c\nindex bb2dfc942b..56770a7048 100644\n--- a/hw/arm/armv7m.c\n+++ b/hw/arm/armv7m.c\n@@ -278,7 +278,7 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size)\n #endif\n \n     if (!kernel_filename && !qtest_enabled()) {\n-        fprintf(stderr, \"Guest image must be specified (using -kernel)\\n\");\n+        error_report(\"Guest image must be specified (using -kernel)\");\n         exit(1);\n     }\n \ndiff --git a/hw/arm/boot.c b/hw/arm/boot.c\nindex c2720c8046..5b2d17f08a 100644\n--- a/hw/arm/boot.c\n+++ b/hw/arm/boot.c\n@@ -8,6 +8,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include <libfdt.h>\n #include \"hw/hw.h\"\n@@ -418,13 +419,13 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n         char *filename;\n         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, binfo->dtb_filename);\n         if (!filename) {\n-            fprintf(stderr, \"Couldn't open dtb file %s\\n\", binfo->dtb_filename);\n+            error_report(\"Couldn't open dtb file %s\", binfo->dtb_filename);\n             goto fail;\n         }\n \n         fdt = load_device_tree(filename, &size);\n         if (!fdt) {\n-            fprintf(stderr, \"Couldn't open dtb file %s\\n\", filename);\n+            error_report(\"Couldn't open dtb file %s\", filename);\n             g_free(filename);\n             goto fail;\n         }\n@@ -432,7 +433,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n     } else {\n         fdt = binfo->get_dtb(binfo, &size);\n         if (!fdt) {\n-            fprintf(stderr, \"Board was unable to create a dtb blob\\n\");\n+            error_report(\"Board was unable to create a dtb blob\");\n             goto fail;\n         }\n     }\n@@ -451,7 +452,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n     scells = qemu_fdt_getprop_cell(fdt, \"/\", \"#size-cells\",\n                                    NULL, &error_fatal);\n     if (acells == 0 || scells == 0) {\n-        fprintf(stderr, \"dtb file invalid (#address-cells or #size-cells 0)\\n\");\n+        error_report(\"dtb file invalid (#address-cells or #size-cells 0)\");\n         goto fail;\n     }\n \n@@ -459,8 +460,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n         /* This is user error so deserves a friendlier error message\n          * than the failure of setprop_sized_cells would provide\n          */\n-        fprintf(stderr, \"qemu: dtb file not compatible with \"\n-                \"RAM size > 4GB\\n\");\n+        error_report(\"qemu: dtb file not compatible with RAM size > 4GB\");\n         goto fail;\n     }\n \n@@ -480,7 +480,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n                                               acells, mem_base,\n                                               scells, mem_len);\n             if (rc < 0) {\n-                fprintf(stderr, \"couldn't set %s/reg for node %d\\n\", nodename,\n+                error_report(\"couldn't set %s/reg for node %d\", nodename,\n                         i);\n                 goto fail;\n             }\n@@ -505,7 +505,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n                                           acells, binfo->loader_start,\n                                           scells, binfo->ram_size);\n         if (rc < 0) {\n-            fprintf(stderr, \"couldn't set /memory/reg\\n\");\n+            error_report(\"couldn't set /memory/reg\");\n             goto fail;\n         }\n     }\n@@ -519,7 +519,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n         rc = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\",\n                                      binfo->kernel_cmdline);\n         if (rc < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+            error_report(\"couldn't set /chosen/bootargs\");\n             goto fail;\n         }\n     }\n@@ -528,14 +528,14 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,\n         rc = qemu_fdt_setprop_cell(fdt, \"/chosen\", \"linux,initrd-start\",\n                                    binfo->initrd_start);\n         if (rc < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/linux,initrd-start\\n\");\n+            error_report(\"couldn't set /chosen/linux,initrd-start\");\n             goto fail;\n         }\n \n         rc = qemu_fdt_setprop_cell(fdt, \"/chosen\", \"linux,initrd-end\",\n                                    binfo->initrd_start + binfo->initrd_size);\n         if (rc < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/linux,initrd-end\\n\");\n+            error_report(\"couldn't set /chosen/linux,initrd-end\");\n             goto fail;\n         }\n     }\n@@ -690,7 +690,7 @@ static void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16_t size_key,\n         gsize length;\n \n         if (!g_file_get_contents(image_name, &contents, &length, NULL)) {\n-            fprintf(stderr, \"failed to load \\\"%s\\\"\\n\", image_name);\n+            error_report(\"failed to load \\\"%s\\\"\", image_name);\n             exit(1);\n         }\n         size = length;\n@@ -956,7 +956,7 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)\n         is_linux = 1;\n     }\n     if (kernel_size < 0) {\n-        fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+        error_report(\"qemu: could not load kernel '%s'\",\n                 info->kernel_filename);\n         exit(1);\n     }\n@@ -976,7 +976,7 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)\n                                                   info->initrd_start);\n             }\n             if (initrd_size < 0) {\n-                fprintf(stderr, \"qemu: could not load initrd '%s'\\n\",\n+                error_report(\"qemu: could not load initrd '%s'\",\n                         info->initrd_filename);\n                 exit(1);\n             }\n@@ -1021,9 +1021,9 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)\n         } else {\n             fixupcontext[FIXUP_ARGPTR] = info->loader_start + KERNEL_ARGS_ADDR;\n             if (info->ram_size >= (1ULL << 32)) {\n-                fprintf(stderr, \"qemu: RAM size must be less than 4GB to boot\"\n-                        \" Linux kernel using ATAGS (try passing a device tree\"\n-                        \" using -dtb)\\n\");\n+                error_report(\"qemu: RAM size must be less than 4GB to boot\"\n+                            \" Linux kernel using ATAGS (try passing a device tree\"\n+                            \" using -dtb)\");\n                 exit(1);\n             }\n         }\ndiff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c\nindex bba9e9f57a..8bd34956b7 100644\n--- a/hw/arm/gumstix.c\n+++ b/hw/arm/gumstix.c\n@@ -35,6 +35,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/arm/pxa.h\"\n #include \"net/net.h\"\n@@ -62,8 +63,8 @@ static void connex_init(MachineState *machine)\n \n     dinfo = drive_get(IF_PFLASH, 0, 0);\n     if (!dinfo && !qtest_enabled()) {\n-        fprintf(stderr, \"A flash image must be given with the \"\n-                \"'pflash' parameter\\n\");\n+        error_report(\"A flash image must be given with the \"\n+                     \"'pflash' parameter\");\n         exit(1);\n     }\n \n@@ -76,7 +77,7 @@ static void connex_init(MachineState *machine)\n                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,\n                                sector_len, connex_rom / sector_len,\n                                2, 0, 0, 0, 0, be)) {\n-        fprintf(stderr, \"qemu: Error registering flash memory.\\n\");\n+        error_report(\"qemu: Error registering flash memory.\");\n         exit(1);\n     }\n \n@@ -99,8 +100,8 @@ static void verdex_init(MachineState *machine)\n \n     dinfo = drive_get(IF_PFLASH, 0, 0);\n     if (!dinfo && !qtest_enabled()) {\n-        fprintf(stderr, \"A flash image must be given with the \"\n-                \"'pflash' parameter\\n\");\n+        error_report(\"A flash image must be given with the \"\n+                     \"'pflash' parameter\");\n         exit(1);\n     }\n \n@@ -113,7 +114,7 @@ static void verdex_init(MachineState *machine)\n                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,\n                                sector_len, verdex_rom / sector_len,\n                                2, 0, 0, 0, 0, be)) {\n-        fprintf(stderr, \"qemu: Error registering flash memory.\\n\");\n+        error_report(\"qemu: Error registering flash memory.\");\n         exit(1);\n     }\n \ndiff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c\nindex d07972a966..5c454c7109 100644\n--- a/hw/arm/mainstone.c\n+++ b/hw/arm/mainstone.c\n@@ -12,6 +12,7 @@\n  * GNU GPL, version 2 or (at your option) any later version.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"hw/hw.h\"\n #include \"hw/arm/pxa.h\"\n@@ -143,8 +144,8 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,\n             if (qtest_enabled()) {\n                 break;\n             }\n-            fprintf(stderr, \"Two flash images must be given with the \"\n-                    \"'pflash' parameter\\n\");\n+            error_report(\"Two flash images must be given with the \"\n+                         \"'pflash' parameter\");\n             exit(1);\n         }\n \n@@ -154,7 +155,7 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,\n                                    blk_by_legacy_dinfo(dinfo),\n                                    sector_len, MAINSTONE_FLASH / sector_len,\n                                    4, 0, 0, 0, 0, be)) {\n-            fprintf(stderr, \"qemu: Error registering flash memory.\\n\");\n+            error_report(\"qemu: Error registering flash memory.\");\n             exit(1);\n         }\n     }\ndiff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c\nindex b648770882..06127a873d 100644\n--- a/hw/arm/musicpal.c\n+++ b/hw/arm/musicpal.c\n@@ -1626,7 +1626,7 @@ static void musicpal_init(MachineState *machine)\n         flash_size = blk_getlength(blk);\n         if (flash_size != 8*1024*1024 && flash_size != 16*1024*1024 &&\n             flash_size != 32*1024*1024) {\n-            fprintf(stderr, \"Invalid flash image size\\n\");\n+            error_report(\"Invalid flash image size\");\n             exit(1);\n         }\n \ndiff --git a/hw/arm/omap1.c b/hw/arm/omap1.c\nindex 1388200191..821ee69441 100644\n--- a/hw/arm/omap1.c\n+++ b/hw/arm/omap1.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -2313,7 +2314,7 @@ void omap_uwire_attach(struct omap_uwire_s *s,\n                 uWireSlave *slave, int chipselect)\n {\n     if (chipselect < 0 || chipselect > 3) {\n-        fprintf(stderr, \"%s: Bad chipselect %i\\n\", __func__, chipselect);\n+        error_report(\"%s: Bad chipselect %i\", __func__, chipselect);\n         exit(-1);\n     }\n \n@@ -3989,7 +3990,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *system_memory,\n \n     dinfo = drive_get(IF_SD, 0, 0);\n     if (!dinfo) {\n-        fprintf(stderr, \"qemu: missing SecureDigital device\\n\");\n+        error_report(\"qemu: missing SecureDigital device\");\n         exit(1);\n     }\n     s->mmc = omap_mmc_init(0xfffb7800, system_memory,\ndiff --git a/hw/arm/omap2.c b/hw/arm/omap2.c\nindex b53878b8b9..cbbb3ec05f 100644\n--- a/hw/arm/omap2.c\n+++ b/hw/arm/omap2.c\n@@ -19,6 +19,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -1311,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)\n     /* TODO: update clocks */\n \n     if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)\n-        fprintf(stderr, \"%s: bad EN_54M_PLL or bad EN_96M_PLL\\n\",\n+        error_report(\"%s: bad EN_54M_PLL or bad EN_96M_PLL\",\n                         __func__);\n }\n \n@@ -1331,7 +1332,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)\n     s->dpll_lock = 0;\n     switch (mode) {\n     case 0:\n-        fprintf(stderr, \"%s: bad EN_DPLL\\n\", __func__);\n+        error_report(\"%s: bad EN_DPLL\", __func__);\n         break;\n     case 1:\t/* Low-power bypass mode (Default) */\n     case 2:\t/* Fast-relock bypass mode */\n@@ -1358,7 +1359,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)\n         omap_clk_reparent(core, dpll_x2);\n         break;\n     case 3:\n-        fprintf(stderr, \"%s: bad CORE_CLK_SRC\\n\", __func__);\n+        error_report(\"%s: bad CORE_CLK_SRC\", __func__);\n         break;\n     }\n }\n@@ -1627,8 +1628,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,\n \n     case 0x500:\t/* CM_CLKEN_PLL */\n         if (value & 0xffffff30)\n-            fprintf(stderr, \"%s: write 0s in CM_CLKEN_PLL for \"\n-                            \"future compatibility\\n\", __func__);\n+            error_report(\"%s: write 0s in CM_CLKEN_PLL for \"\n+                         \"future compatibility\", __func__);\n         if ((s->clken[9] ^ value) & 0xcc) {\n             s->clken[9] &= ~0xcc;\n             s->clken[9] |= value & 0xcc;\n@@ -1646,8 +1647,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,\n         break;\n     case 0x540:\t/* CM_CLKSEL1_PLL */\n         if (value & 0xfc4000d7)\n-            fprintf(stderr, \"%s: write 0s in CM_CLKSEL1_PLL for \"\n-                            \"future compatibility\\n\", __func__);\n+            error_report(\"%s: write 0s in CM_CLKSEL1_PLL for \"\n+                         \"future compatibility\", __func__);\n         if ((s->clksel[5] ^ value) & 0x003fff00) {\n             s->clksel[5] = value & 0x03bfff28;\n             omap_prcm_dpll_update(s);\n@@ -1658,8 +1659,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,\n         break;\n     case 0x544:\t/* CM_CLKSEL2_PLL */\n         if (value & ~3)\n-            fprintf(stderr, \"%s: write 0s in CM_CLKSEL2_PLL[31:2] for \"\n-                            \"future compatibility\\n\", __func__);\n+            error_report(\"%s: write 0s in CM_CLKSEL2_PLL[31:2] for \"\n+                         \"future compatibility\", __func__);\n         if (s->clksel[6] != (value & 3)) {\n             s->clksel[6] = value & 3;\n             omap_prcm_dpll_update(s);\n@@ -2486,7 +2487,7 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem,\n \n     dinfo = drive_get(IF_SD, 0, 0);\n     if (!dinfo) {\n-        fprintf(stderr, \"qemu: missing SecureDigital device\\n\");\n+        error_report(\"qemu: missing SecureDigital device\");\n         exit(1);\n     }\n     s->mmc = omap2_mmc_init(omap_l4tao(s->l4, 9),\ndiff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c\nindex 9a14270795..6eb56ae744 100644\n--- a/hw/arm/omap_sx1.c\n+++ b/hw/arm/omap_sx1.c\n@@ -158,7 +158,7 @@ static void sx1_init(MachineState *machine, const int version)\n                                    blk_by_legacy_dinfo(dinfo),\n                                    sector_size, flash_size / sector_size,\n                                    4, 0, 0, 0, 0, be)) {\n-            fprintf(stderr, \"qemu: Error registering flash memory %d.\\n\",\n+            error_report(\"qemu: Error registering flash memory %d.\",\n                            fl_idx);\n         }\n         fl_idx++;\n@@ -182,7 +182,7 @@ static void sx1_init(MachineState *machine, const int version)\n                                    blk_by_legacy_dinfo(dinfo),\n                                    sector_size, flash1_size / sector_size,\n                                    4, 0, 0, 0, 0, be)) {\n-            fprintf(stderr, \"qemu: Error registering flash memory %d.\\n\",\n+            error_report(\"qemu: Error registering flash memory %d.\",\n                            fl_idx);\n         }\n         fl_idx++;\n@@ -194,7 +194,7 @@ static void sx1_init(MachineState *machine, const int version)\n     }\n \n     if (!machine->kernel_filename && !fl_idx && !qtest_enabled()) {\n-        fprintf(stderr, \"Kernel or Flash image must be specified\\n\");\n+        error_report(\"Kernel or Flash image must be specified\");\n         exit(1);\n     }\n \ndiff --git a/hw/arm/palm.c b/hw/arm/palm.c\nindex 285f43709d..7f3637041a 100644\n--- a/hw/arm/palm.c\n+++ b/hw/arm/palm.c\n@@ -233,8 +233,8 @@ static void palmte_init(MachineState *machine)\n     if (nb_option_roms) {\n         rom_size = get_image_size(option_rom[0].name);\n         if (rom_size > flash_size) {\n-            fprintf(stderr, \"%s: ROM image too big (%x > %x)\\n\",\n-                            __func__, rom_size, flash_size);\n+            error_report(\"%s: ROM image too big (%x > %x)\",\n+                         __func__, rom_size, flash_size);\n             rom_size = 0;\n         }\n         if (rom_size > 0) {\n@@ -243,13 +243,13 @@ static void palmte_init(MachineState *machine)\n             rom_loaded = 1;\n         }\n         if (rom_size < 0) {\n-            fprintf(stderr, \"%s: error loading '%s'\\n\",\n-                            __func__, option_rom[0].name);\n+            error_report(\"%s: error loading '%s'\",\n+                         __func__, option_rom[0].name);\n         }\n     }\n \n     if (!rom_loaded && !kernel_filename && !qtest_enabled()) {\n-        fprintf(stderr, \"Kernel or ROM image must be specified\\n\");\n+        fprintf(stderr, \"Kernel or ROM image must be specified\");\n         exit(1);\n     }\n \ndiff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c\nindex 078006f390..c46b65d5d2 100644\n--- a/hw/arm/pxa2xx.c\n+++ b/hw/arm/pxa2xx.c\n@@ -8,6 +8,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -2060,7 +2061,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,\n     s = g_new0(PXA2xxState, 1);\n \n     if (strncmp(cpu_type, \"pxa27\", 5)) {\n-        fprintf(stderr, \"Machine requires a PXA27x processor.\\n\");\n+        error_report(\"Machine requires a PXA27x processor.\");\n         exit(1);\n     }\n \n@@ -2093,7 +2094,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,\n \n     dinfo = drive_get(IF_SD, 0, 0);\n     if (!dinfo) {\n-        fprintf(stderr, \"qemu: missing SecureDigital device\\n\");\n+        error_report(\"qemu: missing SecureDigital device\");\n         exit(1);\n     }\n     s->mmc = pxa2xx_mmci_init(address_space, 0x41100000,\n@@ -2218,7 +2219,7 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)\n \n     dinfo = drive_get(IF_SD, 0, 0);\n     if (!dinfo) {\n-        fprintf(stderr, \"qemu: missing SecureDigital device\\n\");\n+        error_report(\"qemu: missing SecureDigital device\");\n         exit(1);\n     }\n     s->mmc = pxa2xx_mmci_init(address_space, 0x41100000,\ndiff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c\nindex de7c0fc4a6..f6f295b363 100644\n--- a/hw/arm/stellaris.c\n+++ b/hw/arm/stellaris.c\n@@ -8,6 +8,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"hw/sysbus.h\"\n #include \"hw/ssi/ssi.h\"\n@@ -559,7 +560,7 @@ static void ssys_write(void *opaque, hwaddr offset,\n     case 0x040: /* SRCR0 */\n     case 0x044: /* SRCR1 */\n     case 0x048: /* SRCR2 */\n-        fprintf(stderr, \"Peripheral reset not implemented\\n\");\n+        error_report(\"Peripheral reset not implemented\");\n         break;\n     case 0x054: /* IMC */\n         s->int_mask = value & 0x7f;\ndiff --git a/hw/arm/tosa.c b/hw/arm/tosa.c\nindex a55b1a369c..a069c95f1c 100644\n--- a/hw/arm/tosa.c\n+++ b/hw/arm/tosa.c\n@@ -12,6 +12,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"hw/hw.h\"\n #include \"hw/arm/pxa.h\"\n@@ -70,19 +71,19 @@ static void tosa_out_switch(void *opaque, int line, int level)\n {\n     switch (line) {\n         case 0:\n-            fprintf(stderr, \"blue LED %s.\\n\", level ? \"on\" : \"off\");\n+            error_report(\"blue LED %s.\", level ? \"on\" : \"off\");\n             break;\n         case 1:\n-            fprintf(stderr, \"green LED %s.\\n\", level ? \"on\" : \"off\");\n+            error_report(\"green LED %s.\", level ? \"on\" : \"off\");\n             break;\n         case 2:\n-            fprintf(stderr, \"amber LED %s.\\n\", level ? \"on\" : \"off\");\n+            error_report(\"amber LED %s.\", level ? \"on\" : \"off\");\n             break;\n         case 3:\n-            fprintf(stderr, \"wlan LED %s.\\n\", level ? \"on\" : \"off\");\n+            fprintf(stderr, \"wlan LED %s.\", level ? \"on\" : \"off\");\n             break;\n         default:\n-            fprintf(stderr, \"Uhandled out event: %d = %d\\n\", line, level);\n+            fprintf(stderr, \"Uhandled out event: %d = %d\", line, level);\n             break;\n     }\n }\n@@ -133,7 +134,7 @@ static void tosa_gpio_setup(PXA2xxState *cpu,\n \n static uint32_t tosa_ssp_tansfer(SSISlave *dev, uint32_t value)\n {\n-    fprintf(stderr, \"TG: %d %02x\\n\", value >> 5, value & 0x1f);\n+    error_report(\"TG: %d %02x\", value >> 5, value & 0x1f);\n     return 0;\n }\n \n@@ -159,13 +160,13 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data)\n     s->buf[s->len] = data;\n     if (s->len ++ > 2) {\n #ifdef VERBOSE\n-        fprintf(stderr, \"%s: message too long (%i bytes)\\n\", __func__, s->len);\n+        error_report(\"%s: message too long (%i bytes)\", __func__, s->len);\n #endif\n         return 1;\n     }\n \n     if (s->len == 2) {\n-        fprintf(stderr, \"dac: channel %d value 0x%02x\\n\",\n+        error_report(\"dac: channel %d value 0x%02x\",\n                 s->buf[0], s->buf[1]);\n     }\n \ndiff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c\nindex 418792cd02..f0ae069172 100644\n--- a/hw/arm/versatilepb.c\n+++ b/hw/arm/versatilepb.c\n@@ -364,7 +364,7 @@ static void versatile_init(MachineState *machine, int board_id)\n                           VERSATILE_FLASH_SECT_SIZE,\n                           VERSATILE_FLASH_SIZE / VERSATILE_FLASH_SECT_SIZE,\n                           4, 0x0089, 0x0018, 0x0000, 0x0, 0)) {\n-        fprintf(stderr, \"qemu: Error registering flash memory.\\n\");\n+        error_report(\"qemu: Error registering flash memory.\");\n     }\n \n     versatile_binfo.ram_size = machine->ram_size;\ndiff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c\nindex efb5a29475..508629dfe9 100644\n--- a/hw/arm/vexpress.c\n+++ b/hw/arm/vexpress.c\n@@ -266,7 +266,7 @@ static void a9_daughterboard_init(const VexpressMachineState *vms,\n \n     if (ram_size > 0x40000000) {\n         /* 1GB is the maximum the address space permits */\n-        fprintf(stderr, \"vexpress-a9: cannot model more than 1GB RAM\\n\");\n+        error_report(\"vexpress-a9: cannot model more than 1GB RAM\");\n         exit(1);\n     }\n \n@@ -355,7 +355,7 @@ static void a15_daughterboard_init(const VexpressMachineState *vms,\n          */\n         uint64_t rsz = ram_size;\n         if (rsz > (30ULL * 1024 * 1024 * 1024)) {\n-            fprintf(stderr, \"vexpress-a15: cannot model more than 30GB RAM\\n\");\n+            error_report(\"vexpress-a15: cannot model more than 30GB RAM\");\n             exit(1);\n         }\n     }\n@@ -640,7 +640,7 @@ static void vexpress_common_init(MachineState *machine)\n     pflash0 = ve_pflash_cfi01_register(map[VE_NORFLASH0], \"vexpress.flash0\",\n                                        dinfo);\n     if (!pflash0) {\n-        fprintf(stderr, \"vexpress: error registering flash 0.\\n\");\n+        error_report(\"vexpress: error registering flash 0.\");\n         exit(1);\n     }\n \n@@ -655,7 +655,7 @@ static void vexpress_common_init(MachineState *machine)\n     dinfo = drive_get_next(IF_PFLASH);\n     if (!ve_pflash_cfi01_register(map[VE_NORFLASH1], \"vexpress.flash1\",\n                                   dinfo)) {\n-        fprintf(stderr, \"vexpress: error registering flash 1.\\n\");\n+        error_report(\"vexpress: error registering flash 1.\");\n         exit(1);\n     }\n \ndiff --git a/hw/arm/z2.c b/hw/arm/z2.c\nindex 60561c7b7c..5048439799 100644\n--- a/hw/arm/z2.c\n+++ b/hw/arm/z2.c\n@@ -319,8 +319,8 @@ static void z2_init(MachineState *machine)\n #endif\n     dinfo = drive_get(IF_PFLASH, 0, 0);\n     if (!dinfo && !qtest_enabled()) {\n-        fprintf(stderr, \"Flash image must be given with the \"\n-                \"'pflash' parameter\\n\");\n+        error_report(\"Flash image must be given with the \"\n+                     \"'pflash' parameter\");\n         exit(1);\n     }\n \n@@ -329,7 +329,7 @@ static void z2_init(MachineState *machine)\n                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,\n                                sector_len, Z2_FLASH_SIZE / sector_len,\n                                4, 0, 0, 0, 0, be)) {\n-        fprintf(stderr, \"qemu: Error registering flash memory.\\n\");\n+        error_report(\"qemu: Error registering flash memory.\");\n         exit(1);\n     }\n \ndiff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c\nindex 5556f0e64e..69dfd49191 100644\n--- a/hw/block/dataplane/virtio-blk.c\n+++ b/hw/block/dataplane/virtio-blk.c\n@@ -178,8 +178,8 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev)\n     /* Set up guest notifier (irq) */\n     r = k->set_guest_notifiers(qbus->parent, nvqs, true);\n     if (r != 0) {\n-        fprintf(stderr, \"virtio-blk failed to set guest notifier (%d), \"\n-                \"ensure -enable-kvm is set\\n\", r);\n+        error_report(\"virtio-blk failed to set guest notifier (%d), \"\n+                \"ensure -enable-kvm is set\", r);\n         goto fail_guest_notifiers;\n     }\n \n@@ -187,7 +187,7 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev)\n     for (i = 0; i < nvqs; i++) {\n         r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, true);\n         if (r != 0) {\n-            fprintf(stderr, \"virtio-blk failed to set host notifier (%d)\\n\", r);\n+            error_report(\"virtio-blk failed to set host notifier (%d)\", r);\n             while (i--) {\n                 virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false);\n             }\ndiff --git a/hw/block/onenand.c b/hw/block/onenand.c\nindex 224daf7ccf..8bcd67688b 100644\n--- a/hw/block/onenand.c\n+++ b/hw/block/onenand.c\n@@ -598,7 +598,7 @@ static void onenand_command(OneNANDState *s)\n     default:\n         s->status |= ONEN_ERR_CMD;\n         s->intstatus |= ONEN_INT;\n-        fprintf(stderr, \"%s: unknown OneNAND command %x\\n\",\n+        error_report(\"%s: unknown OneNAND command %x\",\n                         __func__, s->command);\n     }\n \n@@ -665,7 +665,7 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,\n         return 0x0000;\n     }\n \n-    fprintf(stderr, \"%s: unknown OneNAND register %x\\n\",\n+    error_report(\"%s: unknown OneNAND register %x\",\n                     __func__, offset);\n     return 0;\n }\n@@ -710,7 +710,7 @@ static void onenand_write(void *opaque, hwaddr addr,\n             break;\n \n         default:\n-            fprintf(stderr, \"%s: unknown OneNAND boot command %\"PRIx64\"\\n\",\n+            error_report(\"%s: unknown OneNAND boot command %\"PRIx64\"\",\n                             __func__, value);\n         }\n         break;\n@@ -761,7 +761,7 @@ static void onenand_write(void *opaque, hwaddr addr,\n         break;\n \n     default:\n-        fprintf(stderr, \"%s: unknown OneNAND register %x\\n\",\n+        error_report(\"%s: unknown OneNAND register %x\",\n                         __func__, offset);\n     }\n }\ndiff --git a/hw/block/tc58128.c b/hw/block/tc58128.c\nindex 1d9f7ee000..d274c9aafe 100644\n--- a/hw/block/tc58128.c\n+++ b/hw/block/tc58128.c\n@@ -50,8 +50,8 @@ static void init_dev(tc58128_dev * dev, const char *filename)\n \t    dev->flash_contents[1] = (blocks >> 8) & 0xff;\n \t    dev->flash_contents[2] = (blocks >> 16) & 0xff;\n \t    dev->flash_contents[3] = (blocks >> 24) & 0xff;\n-\t    fprintf(stderr, \"loaded %d bytes for %s into flash\\n\", ret,\n-\t\t    filename);\n+        error_report(\"loaded %d bytes for %s into flash\", ret,\n+                     filename);\n \t}\n     }\n }\n@@ -60,26 +60,26 @@ static void handle_command(tc58128_dev * dev, uint8_t command)\n {\n     switch (command) {\n     case 0xff:\n-\tfprintf(stderr, \"reset flash device\\n\");\n-\tdev->state = WAIT;\n-\tbreak;\n+        error_report(\"reset flash device\");\n+        dev->state = WAIT;\n+        break;\n     case 0x00:\n-\tfprintf(stderr, \"read mode 1\\n\");\n-\tdev->state = READ1;\n-\tdev->address_cycle = 0;\n-\tbreak;\n+        error_report(\"read mode 1\");\n+        dev->state = READ1;\n+        dev->address_cycle = 0;\n+        break;\n     case 0x01:\n-\tfprintf(stderr, \"read mode 2\\n\");\n-\tdev->state = READ2;\n-\tdev->address_cycle = 0;\n-\tbreak;\n+        error_report(\"read mode 2\");\n+        dev->state = READ2;\n+        dev->address_cycle = 0;\n+        break;\n     case 0x50:\n-\tfprintf(stderr, \"read mode 3\\n\");\n-\tdev->state = READ3;\n-\tdev->address_cycle = 0;\n-\tbreak;\n+        error_report(\"read mode 3\");\n+        dev->state = READ3;\n+        dev->address_cycle = 0;\n+        break;\n     default:\n-\tfprintf(stderr, \"unknown flash command 0x%02x\\n\", command);\n+        error_report(\"unknown flash command 0x%02x\", command);\n         abort();\n     }\n }\n@@ -103,8 +103,8 @@ static void handle_address(tc58128_dev * dev, uint8_t data)\n \t    break;\n \tcase 2:\n \t    dev->address += data * 528;\n-\t    fprintf(stderr, \"address pointer in flash: 0x%08x\\n\",\n-\t\t    dev->address);\n+        error_report(\"address pointer in flash: 0x%08x\",\n+                     dev->address);\n \t    break;\n \tdefault:\n \t    /* Invalid data */\n@@ -119,10 +119,6 @@ static void handle_address(tc58128_dev * dev, uint8_t data)\n \n static uint8_t handle_read(tc58128_dev * dev)\n {\n-#if 0\n-    if (dev->address % 0x100000 == 0)\n-\tfprintf(stderr, \"reading flash at address 0x%08x\\n\", dev->address);\n-#endif\n     return dev->flash_contents[dev->address++];\n }\n \ndiff --git a/hw/bt/core.c b/hw/bt/core.c\nindex c1806b71a3..a6e9bf2a3e 100644\n--- a/hw/bt/core.c\n+++ b/hw/bt/core.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"sysemu/bt.h\"\n #include \"hw/bt.h\"\n@@ -31,24 +32,24 @@ static void bt_dummy_lmp_mode_change(struct bt_link_s *link)\n static void bt_dummy_lmp_connection_complete(struct bt_link_s *link)\n {\n     if (link->slave->reject_reason)\n-        fprintf(stderr, \"%s: stray LMP_not_accepted received, fixme\\n\",\n-                        __func__);\n+        error_report(\"%s: stray LMP_not_accepted received, fixme\",\n+                     __func__);\n     else\n-        fprintf(stderr, \"%s: stray LMP_accepted received, fixme\\n\",\n-                        __func__);\n+        error_report(\"%s: stray LMP_accepted received, fixme\",\n+                     __func__);\n     exit(-1);\n }\n \n static void bt_dummy_lmp_disconnect_master(struct bt_link_s *link)\n {\n-    fprintf(stderr, \"%s: stray LMP_detach received, fixme\\n\", __func__);\n+    fprintf(stderr, \"%s: stray LMP_detach received, fixme\", __func__);\n     exit(-1);\n }\n \n static void bt_dummy_lmp_acl_resp(struct bt_link_s *link,\n                 const uint8_t *data, int start, int len)\n {\n-    fprintf(stderr, \"%s: stray ACL response PDU, fixme\\n\", __func__);\n+    error_report(\"%s: stray ACL response PDU, fixme\", __func__);\n     exit(-1);\n }\n \n@@ -113,7 +114,7 @@ void bt_device_done(struct bt_device_s *dev)\n     while (*p && *p != dev)\n         p = &(*p)->next;\n     if (*p != dev) {\n-        fprintf(stderr, \"%s: bad bt device \\\"%s\\\"\\n\", __func__,\n+        error_report(\"%s: bad bt device \\\"%s\\\"\", __func__,\n                         dev->lmp_name ?: \"(null)\");\n         exit(-1);\n     }\ndiff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c\nindex ac067b81f6..6a171a54b7 100644\n--- a/hw/bt/hci-csr.c\n+++ b/hw/bt/hci-csr.c\n@@ -19,6 +19,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"chardev/char-serial.h\"\n #include \"qemu/timer.h\"\n@@ -111,14 +112,14 @@ static uint8_t *csrhci_out_packet(struct csrhci_s *s, int len)\n \n     if (off < FIFO_LEN) {\n         if (off + len > FIFO_LEN && (s->out_size = off + len) > FIFO_LEN * 2) {\n-            fprintf(stderr, \"%s: can't alloc %i bytes\\n\", __func__, len);\n+            error_report(\"%s: can't alloc %i bytes\", __func__, len);\n             exit(-1);\n         }\n         return s->outfifo + off;\n     }\n \n     if (s->out_len > s->out_size) {\n-        fprintf(stderr, \"%s: can't alloc %i bytes\\n\", __func__, len);\n+        error_report(\"%s: can't alloc %i bytes\", __func__, len);\n         exit(-1);\n     }\n \n@@ -168,8 +169,8 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,\n             s->bd_addr.b[5] = data[offset + 2];\n \n             s->hci->bdaddr_set(s->hci, s->bd_addr.b);\n-            fprintf(stderr, \"%s: bd_address loaded from firmware: \"\n-                            \"%02x:%02x:%02x:%02x:%02x:%02x\\n\", __func__,\n+            error_report(\"%s: bd_address loaded from firmware: \"\n+                            \"%02x:%02x:%02x:%02x:%02x:%02x\", __func__,\n                             s->bd_addr.b[0], s->bd_addr.b[1], s->bd_addr.b[2],\n                             s->bd_addr.b[3], s->bd_addr.b[4], s->bd_addr.b[5]);\n         }\n@@ -181,7 +182,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,\n         break;\n \n     default:\n-        fprintf(stderr, \"%s: got a bad CMD packet\\n\", __func__);\n+        error_report(\"%s: got a bad CMD packet\", __func__);\n         return;\n     }\n \n@@ -226,7 +227,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)\n     case H4_NEG_PKT:\n         if (s->in_hdr != sizeof(csrhci_neg_packet) ||\n                         memcmp(pkt - 1, csrhci_neg_packet, s->in_hdr)) {\n-            fprintf(stderr, \"%s: got a bad NEG packet\\n\", __func__);\n+            error_report(\"%s: got a bad NEG packet\", __func__);\n             return;\n         }\n         pkt += 2;\n@@ -241,7 +242,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)\n \n     case H4_ALIVE_PKT:\n         if (s->in_hdr != 4 || pkt[1] != 0x55 || pkt[2] != 0x00) {\n-            fprintf(stderr, \"%s: got a bad ALIVE packet\\n\", __func__);\n+            error_report(\"%s: got a bad ALIVE packet\", __func__);\n             return;\n         }\n \n@@ -254,7 +255,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)\n     default:\n     bad_pkt:\n         /* TODO: error out */\n-        fprintf(stderr, \"%s: got a bad packet\\n\", __func__);\n+        error_report(\"%s: got a bad packet\", __func__);\n         break;\n     }\n \ndiff --git a/hw/bt/hci.c b/hw/bt/hci.c\nindex df05f07887..ac9394daf0 100644\n--- a/hw/bt/hci.c\n+++ b/hw/bt/hci.c\n@@ -19,6 +19,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"qemu/timer.h\"\n@@ -457,7 +458,7 @@ static inline uint8_t *bt_hci_event_start(struct bt_hci_s *hci,\n     int mask_byte;\n \n     if (len > 255) {\n-        fprintf(stderr, \"%s: HCI event params too long (%ib)\\n\",\n+        error_report(\"%s: HCI event params too long (%ib)\",\n                         __func__, len);\n         exit(-1);\n     }\n@@ -589,7 +590,7 @@ static void bt_hci_inquiry_result(struct bt_hci_s *hci,\n         bt_hci_inquiry_result_with_rssi(hci, slave);\n         return;\n     default:\n-        fprintf(stderr, \"%s: bad inquiry mode %02x\\n\", __func__,\n+        error_report(\"%s: bad inquiry mode %02x\", __func__,\n                         hci->lm.inquiry_mode);\n         exit(-1);\n     }\n@@ -1971,7 +1972,7 @@ static void bt_submit_hci(struct HCIInfo *info,\n         break;\n \n     short_hci:\n-        fprintf(stderr, \"%s: HCI packet too short (%iB)\\n\",\n+        error_report(\"%s: HCI packet too short (%iB)\",\n                         __func__, length);\n         bt_hci_event_status(hci, HCI_INVALID_PARAMETERS);\n         break;\n@@ -1991,7 +1992,7 @@ static inline void bt_hci_lmp_acl_data(struct bt_hci_s *hci, uint16_t handle,\n     /* TODO: avoid memcpy'ing */\n \n     if (len + HCI_ACL_HDR_SIZE > sizeof(hci->acl_buf)) {\n-        fprintf(stderr, \"%s: can't take ACL packets %i bytes long\\n\",\n+        error_report(\"%s: can't take ACL packets %i bytes long\",\n                         __func__, len);\n         return;\n     }\n@@ -2029,7 +2030,7 @@ static void bt_submit_acl(struct HCIInfo *info,\n     struct bt_link_s *link;\n \n     if (length < HCI_ACL_HDR_SIZE) {\n-        fprintf(stderr, \"%s: ACL packet too short (%iB)\\n\",\n+        error_report(\"%s: ACL packet too short (%iB)\",\n                         __func__, length);\n         return;\n     }\n@@ -2041,15 +2042,15 @@ static void bt_submit_acl(struct HCIInfo *info,\n     length -= HCI_ACL_HDR_SIZE;\n \n     if (bt_hci_handle_bad(hci, handle)) {\n-        fprintf(stderr, \"%s: invalid ACL handle %03x\\n\",\n-                        __func__, handle);\n+        error_report(\"%s: invalid ACL handle %03x\",\n+                     __func__, handle);\n         /* TODO: signal an error */\n         return;\n     }\n     handle &= ~HCI_HANDLE_OFFSET;\n \n     if (datalen > length) {\n-        fprintf(stderr, \"%s: ACL packet too short (%iB < %iB)\\n\",\n+        fprintf(stderr, \"%s: ACL packet too short (%iB < %iB)\",\n                         __func__, length, datalen);\n         return;\n     }\n@@ -2060,7 +2061,7 @@ static void bt_submit_acl(struct HCIInfo *info,\n         if (!hci->asb_handle)\n             hci->asb_handle = handle;\n         else if (handle != hci->asb_handle) {\n-            fprintf(stderr, \"%s: Bad handle %03x in Active Slave Broadcast\\n\",\n+            error_report(\"%s: Bad handle %03x in Active Slave Broadcast\",\n                             __func__, handle);\n             /* TODO: signal an error */\n             return;\n@@ -2073,7 +2074,7 @@ static void bt_submit_acl(struct HCIInfo *info,\n         if (!hci->psb_handle)\n             hci->psb_handle = handle;\n         else if (handle != hci->psb_handle) {\n-            fprintf(stderr, \"%s: Bad handle %03x in Parked Slave Broadcast\\n\",\n+            error_report(\"%s: Bad handle %03x in Parked Slave Broadcast\",\n                             __func__, handle);\n             /* TODO: signal an error */\n             return;\n@@ -2105,14 +2106,13 @@ static void bt_submit_sco(struct HCIInfo *info,\n     length -= 3;\n \n     if (bt_hci_handle_bad(hci, handle)) {\n-        fprintf(stderr, \"%s: invalid SCO handle %03x\\n\",\n-                        __func__, handle);\n+        error_report(\"%s: invalid SCO handle %03x\", __func__, handle);\n         return;\n     }\n \n     if (datalen > length) {\n-        fprintf(stderr, \"%s: SCO packet too short (%iB < %iB)\\n\",\n-                        __func__, length, datalen);\n+        error_report(\"%s: SCO packet too short (%iB < %iB)\",\n+                     __func__, length, datalen);\n         return;\n     }\n \n@@ -2223,7 +2223,7 @@ struct HCIInfo *hci_init(const char *str)\n            return bt_new_hci(vlan);\n     }\n \n-    fprintf(stderr, \"qemu: Unknown bluetooth HCI `%s'.\\n\", str);\n+    error_report(\"qemu: Unknown bluetooth HCI `%s'.\", str);\n \n     return 0;\n }\ndiff --git a/hw/bt/hid.c b/hw/bt/hid.c\nindex 09d17322e4..056291f9b5 100644\n--- a/hw/bt/hid.c\n+++ b/hw/bt/hid.c\n@@ -419,7 +419,7 @@ static void bt_hid_interrupt_sdu(void *opaque, const uint8_t *data, int len)\n \n     return;\n bad:\n-    fprintf(stderr, \"%s: bad transaction on Interrupt channel.\\n\",\n+    error_report(\"%s: bad transaction on Interrupt channel.\",\n                     __func__);\n }\n \ndiff --git a/hw/bt/l2cap.c b/hw/bt/l2cap.c\nindex 3e53dd082d..9cf27f0df6 100644\n--- a/hw/bt/l2cap.c\n+++ b/hw/bt/l2cap.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"qemu/timer.h\"\n #include \"qemu/bswap.h\"\n@@ -467,8 +468,8 @@ static void l2cap_channel_close(struct l2cap_instance_s *l2cap,\n \n     if (likely(ch)) {\n         if (ch->remote_cid != source_cid) {\n-            fprintf(stderr, \"%s: Ignoring a Disconnection Request with the \"\n-                            \"invalid SCID %04x.\\n\", __func__, source_cid);\n+            error_report(\"%s: Ignoring a Disconnection Request with the \"\n+                            \"invalid SCID %04x.\", __func__, source_cid);\n             return;\n         }\n \n@@ -790,7 +791,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n #if 0\n     /* TODO: do the IDs really have to be in sequence?  */\n     if (!id || (id != l2cap->last_id && id != l2cap->next_id)) {\n-        fprintf(stderr, \"%s: out of sequence command packet ignored.\\n\",\n+        error_report(\"%s: out of sequence command packet ignored.\",\n                         __func__);\n         return;\n     }\n@@ -813,9 +814,9 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n         }\n \n         /* We never issue commands other than Command Reject currently.  */\n-        fprintf(stderr, \"%s: stray Command Reject (%02x, %04x) \"\n-                        \"packet, ignoring.\\n\", __func__, id,\n-                        le16_to_cpu(((l2cap_cmd_rej *) params)->reason));\n+        error_report(\"%s: stray Command Reject (%02x, %04x) \"\n+                     \"packet, ignoring.\", __func__, id,\n+                     le16_to_cpu(((l2cap_cmd_rej *) params)->reason));\n         break;\n \n     case L2CAP_CONN_REQ:\n@@ -836,8 +837,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n         }\n \n         /* We never issue Connection Requests currently. TODO  */\n-        fprintf(stderr, \"%s: unexpected Connection Response (%02x) \"\n-                        \"packet, ignoring.\\n\", __func__, id);\n+        error_report(\"%s: unexpected Connection Response (%02x) \"\n+                     \"packet, ignoring.\", __func__, id);\n         break;\n \n     case L2CAP_CONF_REQ:\n@@ -865,8 +866,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n                         le16_to_cpu(((l2cap_conf_rsp *) params)->scid),\n                         ((l2cap_conf_rsp *) params)->data,\n                         len - L2CAP_CONF_RSP_SIZE(0)))\n-            fprintf(stderr, \"%s: unexpected Configure Response (%02x) \"\n-                            \"packet, ignoring.\\n\", __func__, id);\n+            error_report(\"%s: unexpected Configure Response (%02x) \"\n+                         \"packet, ignoring.\", __func__, id);\n         break;\n \n     case L2CAP_DISCONN_REQ:\n@@ -887,8 +888,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n         }\n \n         /* We never issue Disconnection Requests currently. TODO  */\n-        fprintf(stderr, \"%s: unexpected Disconnection Response (%02x) \"\n-                        \"packet, ignoring.\\n\", __func__, id);\n+        error_report(\"%s: unexpected Disconnection Response (%02x) \"\n+                     \"packet, ignoring.\", __func__, id);\n         break;\n \n     case L2CAP_ECHO_REQ:\n@@ -897,8 +898,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n \n     case L2CAP_ECHO_RSP:\n         /* We never issue Echo Requests currently. TODO  */\n-        fprintf(stderr, \"%s: unexpected Echo Response (%02x) \"\n-                        \"packet, ignoring.\\n\", __func__, id);\n+        error_report(\"%s: unexpected Echo Response (%02x) \"\n+                     \"packet, ignoring.\", __func__, id);\n         break;\n \n     case L2CAP_INFO_REQ:\n@@ -917,8 +918,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,\n         }\n \n         /* We never issue Information Requests currently. TODO  */\n-        fprintf(stderr, \"%s: unexpected Information Response (%02x) \"\n-                        \"packet, ignoring.\\n\", __func__, id);\n+        error_report(\"%s: unexpected Information Response (%02x) \"\n+                     \"packet, ignoring.\", __func__, id);\n         break;\n \n     default:\n@@ -1066,8 +1067,8 @@ static void l2cap_frame_in(struct l2cap_instance_s *l2cap,\n     uint16_t len = le16_to_cpu(frame->len);\n \n     if (unlikely(cid >= L2CAP_CID_MAX || !l2cap->cid[cid])) {\n-        fprintf(stderr, \"%s: frame addressed to a non-existent L2CAP \"\n-                        \"channel %04x received.\\n\", __func__, cid);\n+        error_report(\"%s: frame addressed to a non-existent L2CAP \"\n+                     \"channel %04x received.\", __func__, cid);\n         return;\n     }\n \n@@ -1128,9 +1129,9 @@ static uint8_t *l2cap_bframe_out(struct bt_l2cap_conn_params_s *parm, int len)\n     struct l2cap_chan_s *chan = (struct l2cap_chan_s *) parm;\n \n     if (len > chan->params.remote_mtu) {\n-        fprintf(stderr, \"%s: B-Frame for CID %04x longer than %i octets.\\n\",\n-                        __func__,\n-                        chan->remote_cid, chan->params.remote_mtu);\n+        error_report(\"%s: B-Frame for CID %04x longer than %i octets.\",\n+                     __func__,\n+                     chan->remote_cid, chan->params.remote_mtu);\n         exit(-1);\n     }\n \n@@ -1353,8 +1354,8 @@ void bt_l2cap_psm_register(struct bt_l2cap_device_s *dev, int psm, int min_mtu,\n     struct bt_l2cap_psm_s *new_psm = l2cap_psm(dev, psm);\n \n     if (new_psm) {\n-        fprintf(stderr, \"%s: PSM %04x already registered for device `%s'.\\n\",\n-                        __func__, psm, dev->device.lmp_name);\n+        error_report(\"%s: PSM %04x already registered for device `%s'.\",\n+                     __func__, psm, dev->device.lmp_name);\n         exit(-1);\n     }\n \ndiff --git a/hw/bt/sdp.c b/hw/bt/sdp.c\nindex 7c0d38b504..f4aba9d74f 100644\n--- a/hw/bt/sdp.c\n+++ b/hw/bt/sdp.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"qemu/host-utils.h\"\n #include \"hw/bt.h\"\n@@ -506,7 +507,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)\n     int rsp_len = 0;\n \n     if (len < 5) {\n-        fprintf(stderr, \"%s: short SDP PDU (%iB).\\n\", __func__, len);\n+        error_report(\"%s: short SDP PDU (%iB).\", __func__, len);\n         return;\n     }\n \n@@ -517,7 +518,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)\n     len -= 5;\n \n     if (len != plen) {\n-        fprintf(stderr, \"%s: wrong SDP PDU length (%iB != %iB).\\n\",\n+        error_report(\"%s: wrong SDP PDU length (%iB != %iB).\",\n                         __func__, plen, len);\n         err = SDP_INVALID_PDU_SIZE;\n         goto respond;\n@@ -544,7 +545,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)\n     case SDP_SVC_SEARCH_RSP:\n     case SDP_SVC_SEARCH_ATTR_RSP:\n     default:\n-        fprintf(stderr, \"%s: unexpected SDP PDU ID %02x.\\n\",\n+        error_report(\"%s: unexpected SDP PDU ID %02x.\",\n                         __func__, pdu_id);\n         err = SDP_INVALID_SYNTAX;\n         break;\ndiff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c\nindex 3957e78abf..a388f01a23 100644\n--- a/hw/char/exynos4210_uart.c\n+++ b/hw/char/exynos4210_uart.c\n@@ -296,7 +296,7 @@ static void exynos4210_uart_update_irq(Exynos4210UartState *s)\n         qemu_irq_raise(s->irq);\n \n #if DEBUG_IRQ\n-        fprintf(stderr, \"UART%d: IRQ has been raised: %08x\\n\",\n+        error_report(\"UART%d: IRQ has been raised: %08x\",\n                 s->channel, s->reg[I_(UINTP)]);\n #endif\n \n@@ -388,7 +388,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr offset,\n              * qemu_chr_fe_write and background I/O callbacks */\n             qemu_chr_fe_write_all(&s->chr, &ch, 1);\n #if DEBUG_Tx_DATA\n-            fprintf(stderr, \"%c\", ch);\n+            error_report(\"%c\", ch);\n #endif\n             s->reg[I_(UTRSTAT)] |= UTRSTAT_TRANSMITTER_EMPTY |\n                     UTRSTAT_Tx_BUFFER_EMPTY;\n@@ -400,7 +400,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr offset,\n     case UINTP:\n         s->reg[I_(UINTP)] &= ~val;\n         s->reg[I_(UINTSP)] &= ~val;\n-        PRINT_DEBUG(\"UART%d: UINTP [%04x] have been cleared: %08x\\n\",\n+        PRINT_DEBUG(\"UART%d: UINTP [%04x] have been cleared: %08x\",\n                     s->channel, offset, s->reg[I_(UINTP)]);\n         exynos4210_uart_update_irq(s);\n         break;\ndiff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c\nindex 56fa402b58..14cb051be9 100644\n--- a/hw/char/mcf_uart.c\n+++ b/hw/char/mcf_uart.c\n@@ -6,6 +6,7 @@\n  * This code is licensed under the GPL\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/sysbus.h\"\n #include \"hw/m68k/mcf.h\"\n@@ -174,7 +175,7 @@ static void mcf_do_command(mcf_uart_state *s, uint8_t cmd)\n         mcf_uart_do_tx(s);\n         break;\n     case 3: /* Reserved.  */\n-        fprintf(stderr, \"mcf_uart: Bad TX command\\n\");\n+        error_report(\"mcf_uart: Bad TX command\");\n         break;\n     }\n \n@@ -189,7 +190,7 @@ static void mcf_do_command(mcf_uart_state *s, uint8_t cmd)\n         s->rx_enabled = 0;\n         break;\n     case 3: /* Reserved.  */\n-        fprintf(stderr, \"mcf_uart: Bad RX command\\n\");\n+        error_report(\"mcf_uart: Bad RX command\");\n         break;\n     }\n }\ndiff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c\nindex 835b5378a0..7bb3f3c70b 100644\n--- a/hw/char/sh_serial.c\n+++ b/hw/char/sh_serial.c\n@@ -25,6 +25,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/sh4/sh.h\"\n #include \"chardev/char-fe.h\"\n@@ -190,8 +191,8 @@ static void sh_serial_write(void *opaque, hwaddr offs,\n         }\n     }\n \n-    fprintf(stderr, \"sh_serial: unsupported write to 0x%02\"\n-            HWADDR_PRIx \"\\n\", offs);\n+    error_report(\"sh_serial: unsupported write to 0x%02\"\n+                 HWADDR_PRIx \"\", offs);\n     abort();\n }\n \n@@ -290,8 +291,8 @@ static uint64_t sh_serial_read(void *opaque, hwaddr offs,\n #endif\n \n     if (ret & ~((1 << 16) - 1)) {\n-        fprintf(stderr, \"sh_serial: unsupported read from 0x%02\"\n-                HWADDR_PRIx \"\\n\", offs);\n+        error_report(\"sh_serial: unsupported read from 0x%02\"\n+                     HWADDR_PRIx \"\", offs);\n         abort();\n     }\n \ndiff --git a/hw/core/loader.c b/hw/core/loader.c\nindex 4593061445..95bdcbbe36 100644\n--- a/hw/core/loader.c\n+++ b/hw/core/loader.c\n@@ -43,6 +43,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"hw/hw.h\"\n #include \"disas/disas.h\"\n@@ -82,7 +83,7 @@ int load_image(const char *filename, uint8_t *addr)\n         return -1;\n     size = lseek(fd, 0, SEEK_END);\n     if (size == -1) {\n-        fprintf(stderr, \"file %-20s: get size error: %s\\n\",\n+        error_report(\"file %-20s: get size error: %s\",\n                 filename, strerror(errno));\n         close(fd);\n         return -1;\n@@ -623,7 +624,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,\n         goto out;\n \n     if (hdr->ih_type != image_type) {\n-        fprintf(stderr, \"Wrong image type %d, expected %d\\n\", hdr->ih_type,\n+        error_report(\"Wrong image type %d, expected %d\", hdr->ih_type,\n                 image_type);\n         goto out;\n     }\n@@ -670,14 +671,14 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,\n         address = *loadaddr;\n         break;\n     default:\n-        fprintf(stderr, \"Unsupported u-boot image type %d\\n\", hdr->ih_type);\n+        error_report(\"Unsupported u-boot image type %d\", hdr->ih_type);\n         goto out;\n     }\n \n     data = g_malloc(hdr->ih_size);\n \n     if (read(fd, data, hdr->ih_size) != hdr->ih_size) {\n-        fprintf(stderr, \"Error reading file\\n\");\n+        error_report(\"Error reading file\");\n         goto out;\n     }\n \n@@ -693,7 +694,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,\n         bytes = gunzip(data, max_bytes, compressed_data, hdr->ih_size);\n         g_free(compressed_data);\n         if (bytes < 0) {\n-            fprintf(stderr, \"Unable to decompress gzipped image!\\n\");\n+            error_report(\"Unable to decompress gzipped image!\");\n             goto out;\n         }\n         hdr->ih_size = bytes;\n@@ -763,7 +764,7 @@ int load_image_gzipped_buffer(const char *filename, uint64_t max_sz,\n     data = g_malloc(max_sz);\n     bytes = gunzip(data, max_sz, compressed_data, len);\n     if (bytes < 0) {\n-        fprintf(stderr, \"%s: unable to decompress gzipped kernel file\\n\",\n+        error_report(\"%s: unable to decompress gzipped kernel file\",\n                 filename);\n         goto out;\n     }\n@@ -893,8 +894,8 @@ int rom_add_file(const char *file, const char *fw_dir,\n     char devpath[100];\n \n     if (as && mr) {\n-        fprintf(stderr, \"Specifying an Address Space and Memory Region is \" \\\n-                \"not valid when loading a rom\\n\");\n+        error_report(\"Specifying an Address Space and Memory Region is \" \\\n+                     \"not valid when loading a rom\");\n         /* We haven't allocated anything so we don't need any cleanup */\n         return -1;\n     }\n@@ -909,7 +910,7 @@ int rom_add_file(const char *file, const char *fw_dir,\n \n     fd = open(rom->path, O_RDONLY | O_BINARY);\n     if (fd == -1) {\n-        fprintf(stderr, \"Could not open option rom '%s': %s\\n\",\n+        error_report(\"Could not open option rom '%s': %s\",\n                 rom->path, strerror(errno));\n         goto err;\n     }\n@@ -921,7 +922,7 @@ int rom_add_file(const char *file, const char *fw_dir,\n     rom->addr     = addr;\n     rom->romsize  = lseek(fd, 0, SEEK_END);\n     if (rom->romsize == -1) {\n-        fprintf(stderr, \"rom: file %-20s: get size error: %s\\n\",\n+        error_report(\"rom: file %-20s: get size error: %s\",\n                 rom->name, strerror(errno));\n         goto err;\n     }\n@@ -931,7 +932,7 @@ int rom_add_file(const char *file, const char *fw_dir,\n     lseek(fd, 0, SEEK_SET);\n     rc = read(fd, rom->data, rom->datasize);\n     if (rc != rom->datasize) {\n-        fprintf(stderr, \"rom: file %-20s: read error: rc=%d (expected %zd)\\n\",\n+        error_report(\"rom: file %-20s: read error: rc=%d (expected %zd)\",\n                 rom->name, rc, rom->datasize);\n         goto err;\n     }\n@@ -1105,10 +1106,10 @@ int rom_check_and_register_reset(void)\n             continue;\n         }\n         if ((addr > rom->addr) && (as == rom->as)) {\n-            fprintf(stderr, \"rom: requested regions overlap \"\n-                    \"(rom %s. free=0x\" TARGET_FMT_plx\n-                    \", addr=0x\" TARGET_FMT_plx \")\\n\",\n-                    rom->name, addr, rom->addr);\n+            error_report(\"rom: requested regions overlap \"\n+                         \"(rom %s. free=0x\" TARGET_FMT_plx\n+                         \", addr=0x\" TARGET_FMT_plx \")\",\n+                         rom->name, addr, rom->addr);\n             return -1;\n         }\n         addr  = rom->addr;\ndiff --git a/hw/core/ptimer.c b/hw/core/ptimer.c\nindex 7221c68a98..514e177de2 100644\n--- a/hw/core/ptimer.c\n+++ b/hw/core/ptimer.c\n@@ -6,6 +6,7 @@\n  * This code is licensed under the GNU LGPL.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"qemu/timer.h\"\n #include \"hw/ptimer.h\"\n@@ -56,7 +57,7 @@ static void ptimer_reload(ptimer_state *s, int delta_adjust)\n \n     if (s->period == 0) {\n         if (!qtest_enabled()) {\n-            fprintf(stderr, \"Timer with period zero, disabling\\n\");\n+            error_report(\"Timer with period zero, disabling\");\n         }\n         timer_del(s->timer);\n         s->enabled = 0;\n@@ -89,7 +90,7 @@ static void ptimer_reload(ptimer_state *s, int delta_adjust)\n \n     if (delta == 0) {\n         if (!qtest_enabled()) {\n-            fprintf(stderr, \"Timer with delta zero, disabling\\n\");\n+            error_report(\"Timer with delta zero, disabling\");\n         }\n         timer_del(s->timer);\n         s->enabled = 0;\n@@ -263,7 +264,7 @@ void ptimer_run(ptimer_state *s, int oneshot)\n \n     if (was_disabled && s->period == 0) {\n         if (!qtest_enabled()) {\n-            fprintf(stderr, \"Timer with period zero, disabling\\n\");\n+            error_report(\"Timer with period zero, disabling\");\n         }\n         return;\n     }\ndiff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c\nindex 5eb552bce2..d121836b69 100644\n--- a/hw/cris/axis_dev88.c\n+++ b/hw/cris/axis_dev88.c\n@@ -23,6 +23,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -349,7 +350,7 @@ void axisdev88_init(MachineState *machine)\n         li.cmdline = kernel_cmdline;\n         cris_load_image(cpu, &li);\n     } else if (!qtest_enabled()) {\n-        fprintf(stderr, \"Kernel image must be specified\\n\");\n+        error_report(\"Kernel image must be specified\");\n         exit(1);\n     }\n }\ndiff --git a/hw/cris/boot.c b/hw/cris/boot.c\nindex f896ed7f86..f199a13a82 100644\n--- a/hw/cris/boot.c\n+++ b/hw/cris/boot.c\n@@ -23,6 +23,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/hw.h\"\n@@ -86,14 +87,14 @@ void cris_load_image(CRISCPU *cpu, struct cris_load_info *li)\n     }\n \n     if (image_size < 0) {\n-        fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+        error_report(\"qemu: could not load kernel '%s'\",\n                 li->image_filename);\n         exit(1);\n     }\n \n     if (li->cmdline && (kcmdline_len = strlen(li->cmdline))) {\n         if (kcmdline_len > 256) {\n-            fprintf(stderr, \"Too long CRIS kernel cmdline (max 256)\\n\");\n+            error_report(\"Too long CRIS kernel cmdline (max 256)\");\n             exit(1);\n         }\n         pstrcpy_targphys(\"cmdline\", 0x40000000, 256, li->cmdline);\ndiff --git a/hw/display/blizzard.c b/hw/display/blizzard.c\nindex 291abe6fca..0d12e078c4 100644\n--- a/hw/display/blizzard.c\n+++ b/hw/display/blizzard.c\n@@ -474,7 +474,7 @@ static uint16_t blizzard_reg_read(void *opaque, uint8_t reg)\n         return s->gpio_pdown;\n \n     default:\n-        fprintf(stderr, \"%s: unknown register %02x\\n\", __func__, reg);\n+        error_report(\"%s: unknown register %02x\", __func__, reg);\n         return 0;\n     }\n }\n@@ -501,7 +501,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n     case 0x0c:\t/* PLL Mode Control 0 */\n         s->pll_mode = value & 0x77;\n         if ((value & 3) == 0 || (value & 3) == 3)\n-            fprintf(stderr, \"%s: wrong PLL Control bits (%i)\\n\",\n+            error_report(\"%s: wrong PLL Control bits (%i)\",\n                     __func__, value & 3);\n         break;\n \n@@ -541,7 +541,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n     case 0x28:\t/* LCD Panel Configuration */\n         s->lcd_config = value & 0xff;\n         if (value & (1 << 7))\n-            fprintf(stderr, \"%s: data swap not supported!\\n\", __func__);\n+            error_report(\"%s: data swap not supported!\", __func__);\n         break;\n \n     case 0x2a:\t/* LCD Horizontal Display Width */\n@@ -585,7 +585,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n     case 0x40:\t/* High-speed Serial Interface Tx Configuration Port 1 */\n         s->hssi_config[1] = value;\n         if (((value >> 4) & 3) == 3)\n-            fprintf(stderr, \"%s: Illegal active-data-links value\\n\",\n+            error_report(\"%s: Illegal active-data-links value\",\n                             __func__);\n         break;\n     case 0x42:\t/* High-speed Serial Interface Tx Mode */\n@@ -641,7 +641,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n         s->enable = value & 1;\n         s->blank = (value >> 1) & 1;\n         if (value & (1 << 4))\n-            fprintf(stderr, \"%s: Macrovision enable attempt!\\n\", __func__);\n+            error_report(\"%s: Macrovision enable attempt!\", __func__);\n         break;\n \n     case 0x6a:\t/* Special Effects */\n@@ -717,7 +717,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n         s->iformat = value & 0xf;\n         s->bpp = blizzard_iformat_bpp[s->iformat];\n         if (!s->bpp)\n-            fprintf(stderr, \"%s: Illegal or unsupported input format %x\\n\",\n+            error_report(\"%s: Illegal or unsupported input format %x\",\n                             __func__, s->iformat);\n         break;\n     case 0x8e:\t/* Data Source Select */\n@@ -729,7 +729,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n                                         s->iy[1] != s->oy[1])) ||\n                         !((s->ix[1] - s->ix[0]) & (s->iy[1] - s->iy[0]) &\n                           (s->ox[1] - s->ox[0]) & (s->oy[1] - s->oy[0]) & 1))\n-            fprintf(stderr, \"%s: Illegal input/output window positions\\n\",\n+            error_report(\"%s: Illegal input/output window positions\",\n                             __func__);\n \n         blizzard_transfer_setup(s);\n@@ -783,8 +783,8 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n     case 0xe6:\t/* Power-save */\n         s->pm = value & 0x83;\n         if (value & s->mode & 1)\n-            fprintf(stderr, \"%s: The display must be disabled before entering \"\n-                            \"Standby Mode\\n\", __func__);\n+            error_report(\"%s: The display must be disabled before entering \"\n+                         \"Standby Mode\", __func__);\n         break;\n     case 0xe8:\t/* Non-display Period Control / Status */\n         s->status = value & 0x1b;\n@@ -815,7 +815,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)\n         break;\n \n     default:\n-        fprintf(stderr, \"%s: unknown register %02x\\n\", __func__, reg);\n+        error_report(\"%s: unknown register %02x\", __func__, reg);\n         break;\n     }\n }\ndiff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c\nindex 601f178fdd..52d6e753d3 100644\n--- a/hw/display/omap_dss.c\n+++ b/hw/display/omap_dss.c\n@@ -406,10 +406,10 @@ static void omap_disc_write(void *opaque, hwaddr addr,\n         s->lcd.enable = (value >> 0) & 1;\n         if (value & (1 << 12))\t\t\t/* OVERLAY_OPTIMIZATION */\n             if (!((s->dispc.l[1].attr | s->dispc.l[2].attr) & 1)) {\n-                fprintf(stderr, \"%s: Overlay Optimization when no overlay \"\n-                        \"region effectively exists leads to \"\n-                        \"unpredictable behaviour!\\n\", __func__);\n-            }\n+                error_report(\"%s: Overlay Optimization when no overlay \"\n+                             \"region effectively exists leads to \"\n+                             \"unpredictable behaviour!\", __func__);\n+           }\n         if (value & (1 << 6)) {\t\t\t\t/* GODIGITAL */\n             /* XXX: Shadowed fields are:\n              * s->dispc.config\n@@ -525,8 +525,8 @@ static void omap_disc_write(void *opaque, hwaddr addr,\n     case 0x0a0:\t/* DISPC_GFX_ATTRIBUTES */\n         s->dispc.l[0].attr = value & 0x7ff;\n         if (value & (3 << 9))\n-            fprintf(stderr, \"%s: Big-endian pixel format not supported\\n\",\n-                            __func__);\n+            error_report(\"%s: Big-endian pixel format not supported\",\n+                         __func__);\n         s->dispc.l[0].enable = value & 1;\n         s->dispc.l[0].bpp = (value >> 1) & 0xf;\n         s->dispc.invalidate = 1;\n@@ -617,7 +617,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s)\n     if (s->rfbi.control & (1 << 1)) {\t\t\t\t/* BYPASS */\n         /* TODO: in non-Bypass mode we probably need to just assert the\n          * DRQ and wait for DMA to write the pixels.  */\n-        fprintf(stderr, \"%s: Bypass mode unimplemented\\n\", __func__);\n+        error_report(\"%s: Bypass mode unimplemented\", __func__);\n         return;\n     }\n \ndiff --git a/hw/display/pl110.c b/hw/display/pl110.c\nindex 8c7dcc6f0a..b8b7903d36 100644\n--- a/hw/display/pl110.c\n+++ b/hw/display/pl110.c\n@@ -174,7 +174,7 @@ static void pl110_update_display(void *opaque)\n         dest_width = 4;\n         break;\n     default:\n-        fprintf(stderr, \"pl110: Bad color depth\\n\");\n+        error_report(\"pl110: Bad color depth\");\n         exit(1);\n     }\n     if (s->cr & PL110_CR_BGR)\ndiff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c\nindex b83f80753a..ae3a365849 100644\n--- a/hw/display/pxa2xx_lcd.c\n+++ b/hw/display/pxa2xx_lcd.c\n@@ -1050,7 +1050,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,\n         s->dest_width = 4;\n         break;\n     default:\n-        fprintf(stderr, \"%s: Bad color depth\\n\", __func__);\n+        error_report(\"%s: Bad color depth\", __func__);\n         exit(1);\n     }\n \ndiff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c\nindex e7ac4f8789..0cd07028a4 100644\n--- a/hw/display/qxl-render.c\n+++ b/hw/display/qxl-render.c\n@@ -78,7 +78,7 @@ void qxl_render_resize(PCIQXLDevice *qxl)\n         qxl->guest_primary.bits_pp = 32;\n         break;\n     default:\n-        fprintf(stderr, \"%s: unhandled format: %x\\n\", __func__,\n+        error_report(\"%s: unhandled format: %x\", __func__,\n                 qxl->guest_primary.surface.format);\n         qxl->guest_primary.bytes_pp = 4;\n         qxl->guest_primary.bits_pp = 32;\n@@ -247,7 +247,7 @@ static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor,\n         }\n         break;\n     default:\n-        fprintf(stderr, \"%s: not implemented: type %d\\n\",\n+        error_report(\"%s: not implemented: type %d\",\n                 __func__, cursor->header.type);\n         goto fail;\n     }\n@@ -275,9 +275,8 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)\n     }\n \n     if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) {\n-        fprintf(stderr, \"%s\", __func__);\n+        error_report(\"%s\", __func__);\n         qxl_log_cmd_cursor(qxl, cmd, ext->group_id);\n-        fprintf(stderr, \"\\n\");\n     }\n     switch (cmd->type) {\n     case QXL_CURSOR_SET:\ndiff --git a/hw/display/qxl.c b/hw/display/qxl.c\nindex ae3677fd1e..0163a18bbb 100644\n--- a/hw/display/qxl.c\n+++ b/hw/display/qxl.c\n@@ -875,7 +875,7 @@ static void interface_notify_update(QXLInstance *sin, uint32_t update_id)\n      * Probably was at some earlier version that is prior to git start (2009),\n      * and is still guest trigerrable.\n      */\n-    fprintf(stderr, \"%s: deprecated\\n\", __func__);\n+    error_report(\"%s: deprecated\", __func__);\n }\n \n /* called from spice server thread context only */\n@@ -905,7 +905,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)\n \n     trace_qxl_interface_async_complete_io(qxl->id, current_async, cookie);\n     if (!cookie) {\n-        fprintf(stderr, \"qxl: %s: error, cookie is NULL\\n\", __func__);\n+        error_report(\"qxl: %s: error, cookie is NULL\", __func__);\n         return;\n     }\n     if (cookie && current_async != cookie->io) {\n@@ -930,7 +930,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)\n         qxl_spice_destroy_surface_wait_complete(qxl, cookie->u.surface_id);\n         break;\n     default:\n-        fprintf(stderr, \"qxl: %s: unexpected current_async %d\\n\", __func__,\n+        error_report(\"qxl: %s: unexpected current_async %d\", __func__,\n                 current_async);\n     }\n     qxl_send_events(qxl, QXL_INTERRUPT_IO_CMD);\n@@ -998,7 +998,7 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)\n     case QXL_COOKIE_TYPE_POST_LOAD_MONITORS_CONFIG:\n         break;\n     default:\n-        fprintf(stderr, \"qxl: %s: unexpected cookie type %d\\n\",\n+        error_report(\"qxl: %s: unexpected cookie type %d\",\n                 __func__, cookie->type);\n         g_free(cookie);\n     }\n@@ -1875,7 +1875,7 @@ static void qxl_send_events(PCIQXLDevice *d, uint32_t events)\n     trace_qxl_send_events(d->id, events);\n     if (!qemu_spice_display_is_running(&d->ssd)) {\n         /* spice-server tracks guest running state and should not do this */\n-        fprintf(stderr, \"%s: spice-server bug: guest stopped, ignoring\\n\",\n+        error_report(\"%s: spice-server bug: guest stopped, ignoring\",\n                 __func__);\n         trace_qxl_send_events_vm_stopped(d->id, events);\n         return;\ndiff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c\nindex 79f161740a..8b708a858b 100644\n--- a/hw/display/tc6393xb.c\n+++ b/hw/display/tc6393xb.c\n@@ -159,7 +159,7 @@ void tc6393xb_gpio_out_set(TC6393xbState *s, int line,\n                     qemu_irq handler)\n {\n     if (line >= TC6393XB_GPIOS) {\n-        fprintf(stderr, \"TC6393xb: no GPIO pin %d\\n\", line);\n+        error_report(\"TC6393xb: no GPIO pin %d\", line);\n         return;\n     }\n \n@@ -190,7 +190,7 @@ static void tc6393xb_l3v(void *opaque, int line, int level)\n {\n     TC6393xbState *s = opaque;\n     s->blank = !level;\n-    fprintf(stderr, \"L3V: %d\\n\", level);\n+    error_report(\"L3V: %d\", level);\n }\n \n static void tc6393xb_sub_irq(void *opaque, int line, int level) {\n@@ -257,7 +257,7 @@ static uint32_t tc6393xb_scr_readb(TC6393xbState *s, hwaddr addr)\n         SCR_REG_B(CONFIG);\n         SCR_REG_B(DEBUG);\n     }\n-    fprintf(stderr, \"tc6393xb_scr: unhandled read at %08x\\n\", (uint32_t) addr);\n+    error_report(\"tc6393xb_scr: unhandled read at %08x\", (uint32_t) addr);\n     return 0;\n }\n #undef SCR_REG_B\n@@ -318,8 +318,8 @@ static void tc6393xb_scr_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)\n         SCR_REG_B(CONFIG);\n         SCR_REG_B(DEBUG);\n     }\n-    fprintf(stderr, \"tc6393xb_scr: unhandled write at %08x: %02x\\n\",\n-\t\t\t\t\t(uint32_t) addr, value & 0xff);\n+    error_report(\"tc6393xb_scr: unhandled write at %08x: %02x\",\n+                 (uint32_t) addr, value & 0xff);\n }\n #undef SCR_REG_B\n #undef SCR_REG_W\n@@ -341,7 +341,7 @@ static uint32_t tc6393xb_nand_cfg_readb(TC6393xbState *s, hwaddr addr) {\n         case NAND_CFG_BASE + 3:\n             return s->nand_phys >> (addr - NAND_CFG_BASE);\n     }\n-    fprintf(stderr, \"tc6393xb_nand_cfg: unhandled read at %08x\\n\", (uint32_t) addr);\n+    error_report(\"tc6393xb_nand_cfg: unhandled read at %08x\", (uint32_t) addr);\n     return 0;\n }\n static void tc6393xb_nand_cfg_writeb(TC6393xbState *s, hwaddr addr, uint32_t value) {\n@@ -357,7 +357,7 @@ static void tc6393xb_nand_cfg_writeb(TC6393xbState *s, hwaddr addr, uint32_t val\n             s->nand_phys |= (value & 0xff) << ((addr - NAND_CFG_BASE) * 8);\n             return;\n     }\n-    fprintf(stderr, \"tc6393xb_nand_cfg: unhandled write at %08x: %02x\\n\",\n+    error_report(\"tc6393xb_nand_cfg: unhandled write at %08x: %02x\",\n \t\t\t\t\t(uint32_t) addr, value & 0xff);\n }\n \n@@ -377,12 +377,14 @@ static uint32_t tc6393xb_nand_readb(TC6393xbState *s, hwaddr addr) {\n         case NAND_IMR:\n             return s->nand.imr;\n     }\n-    fprintf(stderr, \"tc6393xb_nand: unhandled read at %08x\\n\", (uint32_t) addr);\n+    error_report(\"tc6393xb_nand: unhandled read at %08x\", (uint32_t) addr);\n     return 0;\n }\n-static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value) {\n-//    fprintf(stderr, \"tc6393xb_nand: write at %08x: %02x\\n\",\n-//\t\t\t\t\t(uint32_t) addr, value & 0xff);\n+static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)\n+{\n+    /* error_report(\"tc6393xb_nand: write at %08x: %02x\",\n+     *              (uint32_t) addr, value & 0xff);\n+     */\n     switch (addr) {\n         case NAND_DATA + 0:\n         case NAND_DATA + 1:\n@@ -420,7 +422,7 @@ static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)\n             tc6393xb_nand_irq(s);\n             return;\n     }\n-    fprintf(stderr, \"tc6393xb_nand: unhandled write at %08x: %02x\\n\",\n+    error_report(\"tc6393xb_nand: unhandled write at %08x: %02x\",\n \t\t\t\t\t(uint32_t) addr, value & 0xff);\n }\n \n@@ -522,13 +524,15 @@ static uint64_t tc6393xb_readb(void *opaque, hwaddr addr,\n     };\n \n     if ((addr &~0xff) == s->nand_phys && s->nand_enable) {\n-//        return tc6393xb_nand_readb(s, addr & 0xff);\n+        /* return tc6393xb_nand_readb(s, addr & 0xff); */\n         uint8_t d = tc6393xb_nand_readb(s, addr & 0xff);\n-//        fprintf(stderr, \"tc6393xb_nand: read at %08x: %02hhx\\n\", (uint32_t) addr, d);\n+        /* error_report(\"tc6393xb_nand: read at %08x: %02hhx\",\n+         *              (uint32_t) addr, d);\n+         */\n         return d;\n     }\n \n-//    fprintf(stderr, \"tc6393xb: unhandled read at %08x\\n\", (uint32_t) addr);\n+    /* error_report(\"tc6393xb: unhandled read at %08x\", (uint32_t) addr); */\n     return 0;\n }\n \n@@ -548,7 +552,7 @@ static void tc6393xb_writeb(void *opaque, hwaddr addr,\n     if ((addr &~0xff) == s->nand_phys && s->nand_enable)\n         tc6393xb_nand_writeb(s, addr & 0xff, value);\n     else\n-        fprintf(stderr, \"tc6393xb: unhandled write at %08x: %02x\\n\",\n+        error_report(\"tc6393xb: unhandled write at %08x: %02x\",\n                 (uint32_t) addr, (int)value & 0xff);\n }\n \ndiff --git a/hw/display/virtio-gpu-3d.c b/hw/display/virtio-gpu-3d.c\nindex 8c106a662d..88bc1c84a6 100644\n--- a/hw/display/virtio-gpu-3d.c\n+++ b/hw/display/virtio-gpu-3d.c\n@@ -473,7 +473,7 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,\n         return;\n     }\n     if (cmd->error) {\n-        fprintf(stderr, \"%s: ctrl 0x%x, error 0x%x\\n\", __func__,\n+        error_report(\"%s: ctrl 0x%x, error 0x%x\", __func__,\n                 cmd->cmd_hdr.type, cmd->error);\n         virtio_gpu_ctrl_response_nodata(g, cmd, cmd->error);\n         return;\n@@ -556,7 +556,7 @@ static void virtio_gpu_print_stats(void *opaque)\n     VirtIOGPU *g = opaque;\n \n     if (g->stats.requests) {\n-        fprintf(stderr, \"stats: vq req %4d, %3d -- 3D %4d (%5d)\\n\",\n+        error_report(\"stats: vq req %4d, %3d -- 3D %4d (%5d)\",\n                 g->stats.requests,\n                 g->stats.max_inflight,\n                 g->stats.req_3d,\ndiff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c\nindex 4a64b41259..44d425e1f6 100644\n--- a/hw/display/vmware_vga.c\n+++ b/hw/display/vmware_vga.c\n@@ -293,45 +293,45 @@ static inline bool vmsvga_verify_rect(DisplaySurface *surface,\n                                       int x, int y, int w, int h)\n {\n     if (x < 0) {\n-        fprintf(stderr, \"%s: x was < 0 (%d)\\n\", name, x);\n+        error_report(\"%s: x was < 0 (%d)\", name, x);\n         return false;\n     }\n     if (x > SVGA_MAX_WIDTH) {\n-        fprintf(stderr, \"%s: x was > %d (%d)\\n\", name, SVGA_MAX_WIDTH, x);\n+        error_report(\"%s: x was > %d (%d)\", name, SVGA_MAX_WIDTH, x);\n         return false;\n     }\n     if (w < 0) {\n-        fprintf(stderr, \"%s: w was < 0 (%d)\\n\", name, w);\n+        error_report(\"%s: w was < 0 (%d)\", name, w);\n         return false;\n     }\n     if (w > SVGA_MAX_WIDTH) {\n-        fprintf(stderr, \"%s: w was > %d (%d)\\n\", name, SVGA_MAX_WIDTH, w);\n+        error_report(\"%s: w was > %d (%d)\", name, SVGA_MAX_WIDTH, w);\n         return false;\n     }\n     if (x + w > surface_width(surface)) {\n-        fprintf(stderr, \"%s: width was > %d (x: %d, w: %d)\\n\",\n+        error_report(\"%s: width was > %d (x: %d, w: %d)\",\n                 name, surface_width(surface), x, w);\n         return false;\n     }\n \n     if (y < 0) {\n-        fprintf(stderr, \"%s: y was < 0 (%d)\\n\", name, y);\n+        error_report(\"%s: y was < 0 (%d)\", name, y);\n         return false;\n     }\n     if (y > SVGA_MAX_HEIGHT) {\n-        fprintf(stderr, \"%s: y was > %d (%d)\\n\", name, SVGA_MAX_HEIGHT, y);\n+        error_report(\"%s: y was > %d (%d)\", name, SVGA_MAX_HEIGHT, y);\n         return false;\n     }\n     if (h < 0) {\n-        fprintf(stderr, \"%s: h was < 0 (%d)\\n\", name, h);\n+        error_report(\"%s: h was < 0 (%d)\", name, h);\n         return false;\n     }\n     if (h > SVGA_MAX_HEIGHT) {\n-        fprintf(stderr, \"%s: h was > %d (%d)\\n\", name, SVGA_MAX_HEIGHT, h);\n+        error_report(\"%s: h was > %d (%d)\", name, SVGA_MAX_HEIGHT, h);\n         return false;\n     }\n     if (y + h > surface_height(surface)) {\n-        fprintf(stderr, \"%s: update height > %d (y: %d, h: %d)\\n\",\n+        error_report(\"%s: update height > %d (y: %d, h: %d)\",\n                 name, surface_height(surface), y, h);\n         return false;\n     }\n@@ -529,7 +529,7 @@ static inline void vmsvga_cursor_define(struct vmsvga_state_s *s,\n #endif\n         break;\n     default:\n-        fprintf(stderr, \"%s: unhandled bpp %d, using fallback cursor\\n\",\n+        error_report(\"%s: unhandled bpp %d, using fallback cursor\",\n                 __func__, c->bpp);\n         cursor_put(qc);\n         qc = cursor_builtin_left_ptr();\ndiff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c\nindex abd18c67ea..5d7fe06d98 100644\n--- a/hw/dma/omap_dma.c\n+++ b/hw/dma/omap_dma.c\n@@ -18,6 +18,7 @@\n  * with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"qemu/timer.h\"\n #include \"hw/arm/omap.h\"\n@@ -1898,13 +1899,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,\n             omap_dma_reset(s->dma);\n         s->ocp = value & 0x3321;\n         if (((s->ocp >> 12) & 3) == 3)\t\t\t\t/* MIDLEMODE */\n-            fprintf(stderr, \"%s: invalid DMA power mode\\n\", __func__);\n+            error_report(\"%s: invalid DMA power mode\", __func__);\n         return;\n \n     case 0x78:\t/* DMA4_GCR */\n         s->gcr = value & 0x00ff00ff;\n \tif ((value & 0xff) == 0x00)\t\t/* MAX_CHANNEL_FIFO_DEPTH */\n-            fprintf(stderr, \"%s: wrong FIFO depth in GCR\\n\", __func__);\n+            error_report(\"%s: wrong FIFO depth in GCR\", __func__);\n         return;\n \n     case 0x80 ... 0xfff:\n@@ -1934,8 +1935,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,\n         ch->buf_disable = (value >> 25) & 1;\n         ch->src_sync = (value >> 24) & 1;\t/* XXX For CamDMA must be 1 */\n         if (ch->buf_disable && !ch->src_sync)\n-            fprintf(stderr, \"%s: Buffering disable is not allowed in \"\n-                            \"destination synchronised mode\\n\", __func__);\n+            error_report(\"%s: Buffering disable is not allowed in \"\n+                         \"destination synchronised mode\", __func__);\n         ch->prefetch = (value >> 23) & 1;\n         ch->bs = (value >> 18) & 1;\n         ch->transparent_copy = (value >> 17) & 1;\n@@ -1946,8 +1947,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,\n         ch->priority = (value & 0x0040) >> 6;\n         ch->fs = (value & 0x0020) >> 5;\n         if (ch->fs && ch->bs && ch->mode[0] && ch->mode[1])\n-            fprintf(stderr, \"%s: For a packet transfer at least one port \"\n-                            \"must be constant-addressed\\n\", __func__);\n+            error_report(\"%s: For a packet transfer at least one port \"\n+                         \"must be constant-addressed\", __func__);\n         ch->sync = (value & 0x001f) | ((value >> 14) & 0x0060);\n         /* XXX must be 0x01 for CamDMA */\n \n@@ -1977,8 +1978,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,\n         ch->endian[1] =(value >> 19) & 1;\n         ch->endian_lock[1] =(value >> 18) & 1;\n         if (ch->endian[0] != ch->endian[1])\n-            fprintf(stderr, \"%s: DMA endianness conversion enable attempt\\n\",\n-                            __func__);\n+            error_report(\"%s: DMA endianness conversion enable attempt\",\n+                          __func__);\n         ch->write_mode = (value >> 16) & 3;\n         ch->burst[1] = (value & 0xc000) >> 14;\n         ch->pack[1] = (value & 0x2000) >> 13;\n@@ -1986,12 +1987,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,\n         ch->burst[0] = (value & 0x0180) >> 7;\n         ch->pack[0] = (value & 0x0040) >> 6;\n         ch->translate[0] = (value & 0x003c) >> 2;\n-        if (ch->translate[0] | ch->translate[1])\n-            fprintf(stderr, \"%s: bad MReqAddressTranslate sideband signal\\n\",\n-                            __func__);\n+        if (ch->translate[0] | ch->translate[1]) {\n+            error_report(\"%s: bad MReqAddressTranslate sideband signal\",\n+                         __func__);\n+        }\n         ch->data_type = 1 << (value & 3);\n         if ((value & 3) == 3) {\n-            printf(\"%s: bad data_type for DMA channel\\n\", __func__);\n+            error_report(\"%s: bad data_type for DMA channel\", __func__);\n             ch->data_type >>= 1;\n         }\n         break;\ndiff --git a/hw/dma/soc_dma.c b/hw/dma/soc_dma.c\nindex 9bb499bf9c..7339a3ec95 100644\n--- a/hw/dma/soc_dma.c\n+++ b/hw/dma/soc_dma.c\n@@ -18,6 +18,7 @@\n  * with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"qemu/timer.h\"\n #include \"hw/arm/soc_dma.h\"\n@@ -270,11 +271,11 @@ void soc_dma_port_add_fifo(struct soc_dma_s *soc, hwaddr virt_base,\n         if (entry->type == soc_dma_port_mem) {\n             if (entry->addr <= virt_base &&\n                             entry->addr + entry->u.mem.size > virt_base) {\n-                fprintf(stderr, \"%s: FIFO at %\"PRIx64\n-                                \" collides with RAM region at %\"PRIx64\n-                                \"-%\"PRIx64 \"\\n\", __func__,\n-                                virt_base, entry->addr,\n-                                (entry->addr + entry->u.mem.size));\n+                error_report(\"%s: FIFO at %\"PRIx64\n+                             \" collides with RAM region at %\"PRIx64\n+                             \"-%\"PRIx64 \"\", __func__,\n+                             virt_base, entry->addr,\n+                             (entry->addr + entry->u.mem.size));\n                 exit(-1);\n             }\n \n@@ -284,9 +285,9 @@ void soc_dma_port_add_fifo(struct soc_dma_s *soc, hwaddr virt_base,\n             while (entry < dma->memmap + dma->memmap_size &&\n                             entry->addr <= virt_base) {\n                 if (entry->addr == virt_base && entry->u.fifo.out == out) {\n-                    fprintf(stderr, \"%s: FIFO at %\"PRIx64\n-                                    \" collides FIFO at %\"PRIx64 \"\\n\",\n-                                    __func__, virt_base, entry->addr);\n+                    error_report(\"%s: FIFO at %\"PRIx64\n+                                 \" collides FIFO at %\"PRIx64 \"\",\n+                                 __func__, virt_base, entry->addr);\n                     exit(-1);\n                 }\n \n@@ -321,11 +322,11 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,\n             if ((entry->addr >= virt_base && entry->addr < virt_base + size) ||\n                             (entry->addr <= virt_base &&\n                              entry->addr + entry->u.mem.size > virt_base)) {\n-                fprintf(stderr, \"%s: RAM at %\"PRIx64 \"-%\"PRIx64\n-                                \" collides with RAM region at %\"PRIx64\n-                                \"-%\"PRIx64 \"\\n\", __func__,\n-                                virt_base, virt_base + size,\n-                                entry->addr, entry->addr + entry->u.mem.size);\n+                error_report(\"%s: RAM at %\"PRIx64 \"-%\"PRIx64\n+                             \" collides with RAM region at %\"PRIx64\n+                             \"-%\"PRIx64 \"\", __func__,\n+                             virt_base, virt_base + size,\n+                             entry->addr, entry->addr + entry->u.mem.size);\n                 exit(-1);\n             }\n \n@@ -334,11 +335,11 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,\n         } else {\n             if (entry->addr >= virt_base &&\n                             entry->addr < virt_base + size) {\n-                fprintf(stderr, \"%s: RAM at %\"PRIx64 \"-%\"PRIx64\n-                                \" collides with FIFO at %\"PRIx64\n-                                \"\\n\", __func__,\n-                                virt_base, virt_base + size,\n-                                entry->addr);\n+                error_report(\"%s: RAM at %\"PRIx64 \"-%\"PRIx64\n+                             \" collides with FIFO at %\"PRIx64\n+                             \"\", __func__,\n+                             virt_base, virt_base + size,\n+                             entry->addr);\n                 exit(-1);\n             }\n \ndiff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c\nindex 08472193b5..57aa2e54f5 100644\n--- a/hw/gpio/omap_gpio.c\n+++ b/hw/gpio/omap_gpio.c\n@@ -399,7 +399,7 @@ static void omap2_gpio_module_write(void *opaque, hwaddr addr,\n \n     case 0x10:\t/* GPIO_SYSCONFIG */\n         if (((value >> 3) & 3) == 3)\n-            fprintf(stderr, \"%s: bad IDLEMODE value\\n\", __func__);\n+            error_report(\"%s: bad IDLEMODE value\", __func__);\n         if (value & 2)\n             omap2_gpio_module_reset(s);\n         s->config[0] = value & 0x1d;\ndiff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c\nindex 26e3e5ebf6..c89664f342 100644\n--- a/hw/i2c/omap_i2c.c\n+++ b/hw/i2c/omap_i2c.c\n@@ -340,13 +340,13 @@ static void omap_i2c_write(void *opaque, hwaddr addr,\n             break;\n         }\n         if ((value & (1 << 15)) && !(value & (1 << 10))) {\t/* MST */\n-            fprintf(stderr, \"%s: I^2C slave mode not supported\\n\",\n-                            __func__);\n+            error_report(\"%s: I^2C slave mode not supported\",\n+                         __func__);\n             break;\n         }\n         if ((value & (1 << 15)) && value & (1 << 8)) {\t\t/* XA */\n-            fprintf(stderr, \"%s: 10-bit addressing mode not supported\\n\",\n-                            __func__);\n+            error_report(\"%s: 10-bit addressing mode not supported\",\n+                         __func__);\n             break;\n         }\n         if ((value & (1 << 15)) && value & (1 << 0)) {\t\t/* STT */\n@@ -393,7 +393,7 @@ static void omap_i2c_write(void *opaque, hwaddr addr,\n                 omap_i2c_interrupts_update(s);\n             }\n         if (value & (1 << 15))\t\t\t\t\t/* ST_EN */\n-            fprintf(stderr, \"%s: System Test not supported\\n\", __func__);\n+            error_report(\"%s: System Test not supported\", __func__);\n         break;\n \n     default:\ndiff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c\nindex 1df6d26816..e90a1b9b3b 100644\n--- a/hw/i386/kvm/apic.c\n+++ b/hw/i386/kvm/apic.c\n@@ -10,6 +10,7 @@\n  * See the COPYING file in the top-level directory.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/i386/apic_internal.h\"\n@@ -128,7 +129,7 @@ static void kvm_apic_vapic_base_update(APICCommonState *s)\n \n     ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_VAPIC_ADDR, &vapid_addr);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM: setting VAPIC address failed (%s)\\n\",\n+        error_report(\"KVM: setting VAPIC address failed (%s)\",\n                 strerror(-ret));\n         abort();\n     }\n@@ -145,7 +146,7 @@ static void kvm_apic_put(CPUState *cs, run_on_cpu_data data)\n \n     ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_LAPIC, &kapic);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM_SET_LAPIC failed: %s\\n\", strerror(ret));\n+        error_report(\"KVM_SET_LAPIC failed: %s\", strerror(ret));\n         abort();\n     }\n }\n@@ -167,7 +168,7 @@ static void do_inject_external_nmi(CPUState *cpu, run_on_cpu_data data)\n     if (!(lvt & APIC_LVT_MASKED) && ((lvt >> 8) & 7) == APIC_DM_NMI) {\n         ret = kvm_vcpu_ioctl(cpu, KVM_NMI);\n         if (ret < 0) {\n-            fprintf(stderr, \"KVM: injection failed, NMI lost (%s)\\n\",\n+            error_report(\"KVM: injection failed, NMI lost (%s)\",\n                     strerror(-ret));\n         }\n     }\n@@ -184,7 +185,7 @@ static void kvm_send_msi(MSIMessage *msg)\n \n     ret = kvm_irqchip_send_msi(kvm_state, *msg);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM: injection failed, MSI lost (%s)\\n\",\n+        error_report(\"KVM: injection failed, MSI lost (%s)\",\n                 strerror(-ret));\n     }\n }\ndiff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c\nindex 363d1b5743..e05c1587ce 100644\n--- a/hw/i386/kvm/clock.c\n+++ b/hw/i386/kvm/clock.c\n@@ -14,6 +14,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"qemu/host-utils.h\"\n@@ -99,7 +100,7 @@ static void kvm_update_clock(KVMClockState *s)\n \n     ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM_GET_CLOCK failed: %s\\n\", strerror(ret));\n+        error_report(\"KVM_GET_CLOCK failed: %s\", strerror(ret));\n                 abort();\n     }\n     s->clock = data.clock;\n@@ -174,7 +175,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,\n         data.clock = s->clock;\n         ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);\n         if (ret < 0) {\n-            fprintf(stderr, \"KVM_SET_CLOCK failed: %s\\n\", strerror(ret));\n+            error_report(\"KVM_SET_CLOCK failed: %s\", strerror(ret));\n             abort();\n         }\n \n@@ -185,7 +186,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,\n             ret = kvm_vcpu_ioctl(cpu, KVM_KVMCLOCK_CTRL, 0);\n             if (ret) {\n                 if (ret != -EINVAL) {\n-                    fprintf(stderr, \"%s: %s\\n\", __func__, strerror(-ret));\n+                    error_report(\"%s: %s\", __func__, strerror(-ret));\n                 }\n                 return;\n             }\ndiff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c\nindex 521a58498a..27f24b1090 100644\n--- a/hw/i386/kvm/i8254.c\n+++ b/hw/i386/kvm/i8254.c\n@@ -24,6 +24,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include <linux/kvm.h>\n #include \"qapi/error.h\"\n #include \"qemu/timer.h\"\n@@ -101,7 +102,7 @@ static void kvm_pit_get(PITCommonState *pit)\n     if (kvm_has_pit_state2()) {\n         ret = kvm_vm_ioctl(kvm_state, KVM_GET_PIT2, &kpit);\n         if (ret < 0) {\n-            fprintf(stderr, \"KVM_GET_PIT2 failed: %s\\n\", strerror(ret));\n+            error_report(\"KVM_GET_PIT2 failed: %s\", strerror(ret));\n             abort();\n         }\n         pit->channels[0].irq_disabled = kpit.flags & KVM_PIT_FLAGS_HPET_LEGACY;\n@@ -112,7 +113,7 @@ static void kvm_pit_get(PITCommonState *pit)\n          */\n         ret = kvm_vm_ioctl(kvm_state, KVM_GET_PIT, &kpit);\n         if (ret < 0) {\n-            fprintf(stderr, \"KVM_GET_PIT failed: %s\\n\", strerror(ret));\n+            error_report(\"KVM_GET_PIT failed: %s\", strerror(ret));\n             abort();\n         }\n     }\n@@ -175,7 +176,7 @@ static void kvm_pit_put(PITCommonState *pit)\n                        kvm_has_pit_state2() ? KVM_SET_PIT2 : KVM_SET_PIT,\n                        &kpit);\n     if (ret < 0) {\n-        fprintf(stderr, \"%s failed: %s\\n\",\n+        error_report(\"%s failed: %s\",\n                 kvm_has_pit_state2() ? \"KVM_SET_PIT2\" : \"KVM_SET_PIT\",\n                 strerror(ret));\n         abort();\ndiff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c\nindex 11d1b726b6..770a934552 100644\n--- a/hw/i386/kvm/i8259.c\n+++ b/hw/i386/kvm/i8259.c\n@@ -10,6 +10,7 @@\n  * See the COPYING file in the top-level directory.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/isa/i8259_internal.h\"\n #include \"hw/i386/apic_internal.h\"\n #include \"sysemu/kvm.h\"\n@@ -39,7 +40,7 @@ static void kvm_pic_get(PICCommonState *s)\n     chip.chip_id = s->master ? KVM_IRQCHIP_PIC_MASTER : KVM_IRQCHIP_PIC_SLAVE;\n     ret = kvm_vm_ioctl(kvm_state, KVM_GET_IRQCHIP, &chip);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM_GET_IRQCHIP failed: %s\\n\", strerror(ret));\n+        error_report(\"KVM_GET_IRQCHIP failed: %s\", strerror(ret));\n         abort();\n     }\n \n@@ -92,7 +93,7 @@ static void kvm_pic_put(PICCommonState *s)\n \n     ret = kvm_vm_ioctl(kvm_state, KVM_SET_IRQCHIP, &chip);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM_SET_IRQCHIP failed: %s\\n\", strerror(ret));\n+        error_report(\"KVM_SET_IRQCHIP failed: %s\", strerror(ret));\n         abort();\n     }\n }\ndiff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c\nindex 98ca480792..a31bcd2658 100644\n--- a/hw/i386/kvm/ioapic.c\n+++ b/hw/i386/kvm/ioapic.c\n@@ -11,6 +11,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"monitor/monitor.h\"\n #include \"hw/i386/pc.h\"\n #include \"hw/i386/ioapic_internal.h\"\n@@ -74,7 +75,7 @@ static void kvm_ioapic_get(IOAPICCommonState *s)\n     chip.chip_id = KVM_IRQCHIP_IOAPIC;\n     ret = kvm_vm_ioctl(kvm_state, KVM_GET_IRQCHIP, &chip);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM_GET_IRQCHIP failed: %s\\n\", strerror(ret));\n+        error_report(\"KVM_GET_IRQCHIP failed: %s\", strerror(ret));\n         abort();\n     }\n \n@@ -107,7 +108,7 @@ static void kvm_ioapic_put(IOAPICCommonState *s)\n \n     ret = kvm_vm_ioctl(kvm_state, KVM_SET_IRQCHIP, &chip);\n     if (ret < 0) {\n-        fprintf(stderr, \"KVM_GET_IRQCHIP failed: %s\\n\", strerror(ret));\n+        error_report(\"KVM_GET_IRQCHIP failed: %s\", strerror(ret));\n         abort();\n     }\n }\ndiff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c\nindex c7b70c91d5..d297a88f9d 100644\n--- a/hw/i386/multiboot.c\n+++ b/hw/i386/multiboot.c\n@@ -23,6 +23,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/hw.h\"\n@@ -184,7 +185,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n     memset(&mbs, 0, sizeof(mbs));\n \n     if (flags & 0x00000004) { /* MULTIBOOT_HEADER_HAS_VBE */\n-        fprintf(stderr, \"qemu: multiboot knows VBE. we don't.\\n\");\n+        error_report(\"qemu: multiboot knows VBE. we don't.\");\n     }\n     if (!(flags & 0x00010000)) { /* MULTIBOOT_HEADER_HAS_ADDR */\n         uint64_t elf_entry;\n@@ -193,7 +194,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n         fclose(f);\n \n         if (((struct elf64_hdr*)header)->e_machine == EM_X86_64) {\n-            fprintf(stderr, \"Cannot load x86-64 image, give a 32bit one.\\n\");\n+            error_report(\"Cannot load x86-64 image, give a 32bit one.\");\n             exit(1);\n         }\n \n@@ -201,7 +202,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n                                &elf_low, &elf_high, 0, I386_ELF_MACHINE,\n                                0, 0);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"Error while loading elf kernel\\n\");\n+            error_report(\"Error while loading elf kernel\");\n             exit(1);\n         }\n         mh_load_addr = elf_low;\n@@ -210,7 +211,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n \n         mbs.mb_buf = g_malloc(mb_kernel_size);\n         if (rom_copy(mbs.mb_buf, mh_load_addr, mb_kernel_size) != mb_kernel_size) {\n-            fprintf(stderr, \"Error while fetching elf kernel from rom\\n\");\n+            error_report(\"Error while fetching elf kernel from rom\");\n             exit(1);\n         }\n \n@@ -224,7 +225,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n \n         mh_load_addr = ldl_p(header+i+16);\n         if (mh_header_addr < mh_load_addr) {\n-            fprintf(stderr, \"invalid mh_load_addr address\\n\");\n+            error_report(\"invalid mh_load_addr address\");\n             exit(1);\n         }\n \n@@ -234,19 +235,19 @@ int load_multiboot(FWCfgState *fw_cfg,\n \n         if (mh_load_end_addr) {\n             if (mh_bss_end_addr < mh_load_addr) {\n-                fprintf(stderr, \"invalid mh_bss_end_addr address\\n\");\n+                error_report(\"invalid mh_bss_end_addr address\");\n                 exit(1);\n             }\n             mb_kernel_size = mh_bss_end_addr - mh_load_addr;\n \n             if (mh_load_end_addr < mh_load_addr) {\n-                fprintf(stderr, \"invalid mh_load_end_addr address\\n\");\n+                error_report(\"invalid mh_load_end_addr address\");\n                 exit(1);\n             }\n             mb_load_size = mh_load_end_addr - mh_load_addr;\n         } else {\n             if (kernel_file_size < mb_kernel_text_offset) {\n-                fprintf(stderr, \"invalid kernel_file_size\\n\");\n+                error_report(\"invalid kernel_file_size\");\n                 exit(1);\n             }\n             mb_kernel_size = kernel_file_size - mb_kernel_text_offset;\n@@ -269,7 +270,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n         mbs.mb_buf = g_malloc(mb_kernel_size);\n         fseek(f, mb_kernel_text_offset, SEEK_SET);\n         if (fread(mbs.mb_buf, 1, mb_load_size, f) != mb_load_size) {\n-            fprintf(stderr, \"fread() failed\\n\");\n+            error_report(\"fread() failed\");\n             exit(1);\n         }\n         memset(mbs.mb_buf + mb_load_size, 0, mb_kernel_size - mb_load_size);\n@@ -326,7 +327,7 @@ int load_multiboot(FWCfgState *fw_cfg,\n             mb_debug(\"multiboot loading module: %s\\n\", tmpbuf);\n             mb_mod_length = get_image_size(tmpbuf);\n             if (mb_mod_length < 0) {\n-                fprintf(stderr, \"Failed to open file '%s'\\n\", tmpbuf);\n+                error_report(\"Failed to open file '%s'\", tmpbuf);\n                 exit(1);\n             }\n \ndiff --git a/hw/i386/pc.c b/hw/i386/pc.c\nindex 05985d4927..ca25424c09 100644\n--- a/hw/i386/pc.c\n+++ b/hw/i386/pc.c\n@@ -856,14 +856,14 @@ static void load_linux(PCMachineState *pcms,\n     if (!f || !(kernel_size = get_file_size(f)) ||\n         fread(header, 1, MIN(ARRAY_SIZE(header), kernel_size), f) !=\n         MIN(ARRAY_SIZE(header), kernel_size)) {\n-        fprintf(stderr, \"qemu: could not load kernel '%s': %s\\n\",\n+        error_report(\"qemu: could not load kernel '%s': %s\",\n                 kernel_filename, strerror(errno));\n         exit(1);\n     }\n \n     /* kernel protocol version */\n #if 0\n-    fprintf(stderr, \"header magic: %#x\\n\", ldl_p(header+0x202));\n+    error_report(\"header magic: %#x\", ldl_p(header + 0x202));\n #endif\n     if (ldl_p(header+0x202) == 0x53726448) {\n         protocol = lduw_p(header+0x206);\n@@ -960,13 +960,13 @@ static void load_linux(PCMachineState *pcms,\n     /* load initrd */\n     if (initrd_filename) {\n         if (protocol < 0x200) {\n-            fprintf(stderr, \"qemu: linux kernel too old to load a ram disk\\n\");\n+            error_report(\"qemu: linux kernel too old to load a ram disk\");\n             exit(1);\n         }\n \n         initrd_size = get_image_size(initrd_filename);\n         if (initrd_size < 0) {\n-            fprintf(stderr, \"qemu: error reading initrd %s: %s\\n\",\n+            error_report(\"qemu: error reading initrd %s: %s\",\n                     initrd_filename, strerror(errno));\n             exit(1);\n         }\n@@ -991,7 +991,7 @@ static void load_linux(PCMachineState *pcms,\n     }\n     setup_size = (setup_size+1)*512;\n     if (setup_size > kernel_size) {\n-        fprintf(stderr, \"qemu: invalid kernel header\\n\");\n+        error_report(\"qemu: invalid kernel header\");\n         exit(1);\n     }\n     kernel_size -= setup_size;\n@@ -1000,11 +1000,11 @@ static void load_linux(PCMachineState *pcms,\n     kernel = g_malloc(kernel_size);\n     fseek(f, 0, SEEK_SET);\n     if (fread(setup, 1, setup_size, f) != setup_size) {\n-        fprintf(stderr, \"fread() failed\\n\");\n+        error_report(\"fread() failed\");\n         exit(1);\n     }\n     if (fread(kernel, 1, kernel_size, f) != kernel_size) {\n-        fprintf(stderr, \"fread() failed\\n\");\n+        error_report(\"fread() failed\");\n         exit(1);\n     }\n     fclose(f);\n@@ -1012,13 +1012,13 @@ static void load_linux(PCMachineState *pcms,\n     /* append dtb to kernel */\n     if (dtb_filename) {\n         if (protocol < 0x209) {\n-            fprintf(stderr, \"qemu: Linux kernel too old to load a dtb\\n\");\n+            error_report(\"qemu: Linux kernel too old to load a dtb\");\n             exit(1);\n         }\n \n         dtb_size = get_image_size(dtb_filename);\n         if (dtb_size <= 0) {\n-            fprintf(stderr, \"qemu: error reading dtb %s: %s\\n\",\n+            error_report(\"qemu: error reading dtb %s: %s\",\n                     dtb_filename, strerror(errno));\n             exit(1);\n         }\ndiff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c\nindex 9ff79b1fd9..1796db1e36 100644\n--- a/hw/i386/pc_piix.c\n+++ b/hw/i386/pc_piix.c\n@@ -1090,7 +1090,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id)\n      * Note that vendor id is always PCI_VENDOR_ID_INTEL.\n      */\n     if (!bridge_dev) {\n-        fprintf(stderr, \"set igd-passthrough-isa-bridge failed!\\n\");\n+        error_report(\"set igd-passthrough-isa-bridge failed!\");\n         return;\n     }\n     pci_config_set_device_id(bridge_dev->config, pch_dev_id);\ndiff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c\nindex 6b183747fc..b6c10a509f 100644\n--- a/hw/i386/pc_sysfw.c\n+++ b/hw/i386/pc_sysfw.c\n@@ -201,7 +201,7 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)\n     ret = rom_add_file_fixed(bios_name, (uint32_t)(-bios_size), -1);\n     if (ret != 0) {\n     bios_error:\n-        fprintf(stderr, \"qemu: could not load PC BIOS '%s'\\n\", bios_name);\n+        error_report(\"qemu: could not load PC BIOS '%s'\", bios_name);\n         exit(1);\n     }\n     g_free(filename);\n@@ -243,7 +243,8 @@ void pc_system_firmware_init(MemoryRegion *rom_memory, bool isapc_ram_fw)\n     if (kvm_enabled() && !kvm_readonly_mem_enabled()) {\n         /* Older KVM cannot execute from device memory. So, flash memory\n          * cannot be used unless the readonly memory kvm capability is present. */\n-        fprintf(stderr, \"qemu: pflash with kvm requires KVM readonly memory support\\n\");\n+        error_report(\"qemu: pflash with kvm requires KVM readonly memory\"\n+                     \" support\");\n         exit(1);\n     }\n \ndiff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c\nindex d9ccd5d0d6..f8e3e0507b 100644\n--- a/hw/i386/xen/xen-hvm.c\n+++ b/hw/i386/xen/xen-hvm.c\n@@ -246,9 +246,10 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,\n \n     if (runstate_check(RUN_STATE_INMIGRATE)) {\n         /* RAM already populated in Xen */\n-        fprintf(stderr, \"%s: do not alloc \"RAM_ADDR_FMT\n-                \" bytes of ram at \"RAM_ADDR_FMT\" when runstate is INMIGRATE\\n\",\n-                __func__, size, ram_addr); \n+        error_report(\"%s: do not alloc \"RAM_ADDR_FMT\n+                     \" bytes of ram at \"RAM_ADDR_FMT\" when runstate is \"\n+                     \" INMIGRATE\",\n+                     __func__, size, ram_addr);\n         return;\n     }\n \n@@ -444,8 +445,9 @@ static int xen_remove_from_physmap(XenIOState *state,\n \n         rc = xen_xc_domain_add_to_physmap(xen_xc, xen_domid, XENMAPSPACE_gmfn, idx, gpfn);\n         if (rc) {\n-            fprintf(stderr, \"add_to_physmap MFN %\"PRI_xen_pfn\" to PFN %\"\n-                    PRI_xen_pfn\" failed: %d (errno: %d)\\n\", idx, gpfn, rc, errno);\n+            error_report(\"add_to_physmap MFN %\"PRI_xen_pfn\" to PFN %\"\n+                         PRI_xen_pfn\" failed: %d (errno: %d)\", idx,\n+                         gpfn, rc, errno);\n             return -rc;\n         }\n     }\n@@ -1090,11 +1092,11 @@ static void cpu_handle_ioreq(void *opaque)\n         req->data = copy.data;\n \n         if (req->state != STATE_IOREQ_INPROCESS) {\n-            fprintf(stderr, \"Badness in I/O request ... not in service?!: \"\n-                    \"%x, ptr: %x, port: %\"PRIx64\", \"\n-                    \"data: %\"PRIx64\", count: %u, size: %u, type: %u\\n\",\n-                    req->state, req->data_is_ptr, req->addr,\n-                    req->data, req->count, req->size, req->type);\n+            error_report(\"Badness in I/O request ... not in service?!: \"\n+                         \"%x, ptr: %x, port: %\"PRIx64\", \"\n+                         \"data: %\"PRIx64\", count: %u, size: %u, type: %u\",\n+                         req->state, req->data_is_ptr, req->addr,\n+                         req->data, req->count, req->size, req->type);\n             destroy_hvm_domain(false);\n             return;\n         }\n@@ -1397,16 +1399,16 @@ void destroy_hvm_domain(bool reboot)\n \n     xc_handle = xc_interface_open(0, 0, 0);\n     if (xc_handle == NULL) {\n-        fprintf(stderr, \"Cannot acquire xenctrl handle\\n\");\n+        error_report(\"Cannot acquire xenctrl handle\");\n     } else {\n         sts = xc_domain_shutdown(xc_handle, xen_domid,\n                                  reboot ? SHUTDOWN_reboot : SHUTDOWN_poweroff);\n         if (sts != 0) {\n-            fprintf(stderr, \"xc_domain_shutdown failed to issue %s, \"\n-                    \"sts %d, %s\\n\", reboot ? \"reboot\" : \"poweroff\",\n+            error_report(\"xc_domain_shutdown failed to issue %s, \"\n+                    \"sts %d, %s\", reboot ? \"reboot\" : \"poweroff\",\n                     sts, strerror(errno));\n         } else {\n-            fprintf(stderr, \"Issued domain %d %s\\n\", xen_domid,\n+            error_report(\"Issued domain %d %s\", xen_domid,\n                     reboot ? \"reboot\" : \"poweroff\");\n         }\n         xc_interface_close(xc_handle);\n@@ -1425,7 +1427,7 @@ void xen_shutdown_fatal_error(const char *fmt, ...)\n     va_start(ap, fmt);\n     vfprintf(stderr, fmt, ap);\n     va_end(ap);\n-    fprintf(stderr, \"Will destroy the domain.\\n\");\n+    error_report(\"Will destroy the domain.\");\n     /* destroy the domain */\n     qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_ERROR);\n }\ndiff --git a/hw/i386/xen/xen-mapcache.c b/hw/i386/xen/xen-mapcache.c\nindex baab93b614..4062af0900 100644\n--- a/hw/i386/xen/xen-mapcache.c\n+++ b/hw/i386/xen/xen-mapcache.c\n@@ -377,7 +377,7 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)\n         }\n     }\n     if (!found) {\n-        fprintf(stderr, \"%s, could not find %p\\n\", __func__, ptr);\n+        error_report(\"%s, could not find %p\", __func__, ptr);\n         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {\n             DPRINTF(\"   \"TARGET_FMT_plx\" -> %p is present\\n\", reventry->paddr_index,\n                     reventry->vaddr_req);\n@@ -477,9 +477,9 @@ void xen_invalidate_map_cache(void)\n         if (!reventry->dma) {\n             continue;\n         }\n-        fprintf(stderr, \"Locked DMA mapping while invalidating mapcache!\"\n-                \" \"TARGET_FMT_plx\" -> %p is present\\n\",\n-                reventry->paddr_index, reventry->vaddr_req);\n+        error_report(\"Locked DMA mapping while invalidating mapcache!\"\n+                     \" \"TARGET_FMT_plx\" -> %p is present\",\n+                     reventry->paddr_index, reventry->vaddr_req);\n     }\n \n     for (i = 0; i < mapcache->nr_buckets; i++) {\n@@ -545,8 +545,8 @@ static uint8_t *xen_replace_cache_entry_unlocked(hwaddr old_phys_addr,\n     address_index  = new_phys_addr >> MCACHE_BUCKET_SHIFT;\n     address_offset = new_phys_addr & (MCACHE_BUCKET_SIZE - 1);\n \n-    fprintf(stderr, \"Replacing a dummy mapcache entry for \"TARGET_FMT_plx \\\n-            \" with \"TARGET_FMT_plx\"\\n\", old_phys_addr, new_phys_addr);\n+    error_report(\"Replacing a dummy mapcache entry for \"TARGET_FMT_plx \\\n+                 \" with \"TARGET_FMT_plx\"\", old_phys_addr, new_phys_addr);\n \n     xen_remap_bucket(entry, entry->vaddr_base,\n                      cache_size, address_index, false);\ndiff --git a/hw/i386/xen/xen_apic.c b/hw/i386/xen/xen_apic.c\nindex 55769eba7e..9e19ef94a2 100644\n--- a/hw/i386/xen/xen_apic.c\n+++ b/hw/i386/xen/xen_apic.c\n@@ -24,7 +24,7 @@ static void xen_apic_mem_write(void *opaque, hwaddr addr,\n                                uint64_t data, unsigned size)\n {\n     if (size != sizeof(uint32_t)) {\n-        fprintf(stderr, \"Xen: APIC write data size = %d, invalid\\n\", size);\n+        error_report(\"Xen: APIC write data size = %d, invalid\", size);\n         return;\n     }\n \ndiff --git a/hw/ide/ahci.c b/hw/ide/ahci.c\nindex c25e293d88..2ed015285a 100644\n--- a/hw/ide/ahci.c\n+++ b/hw/ide/ahci.c\n@@ -410,8 +410,8 @@ static void ahci_mem_write(void *opaque, hwaddr addr,\n \n     /* Only aligned reads are allowed on AHCI */\n     if (addr & 3) {\n-        fprintf(stderr, \"ahci: Mis-aligned write to addr 0x\"\n-                TARGET_FMT_plx \"\\n\", addr);\n+        error_report(\"ahci: Mis-aligned write to addr 0x\"\n+                     TARGET_FMT_plx \"\", addr);\n         return;\n     }\n \n@@ -1053,7 +1053,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,\n     g_assert(is_ncq(ncq_fis->command));\n     if (ncq_tfs->used) {\n         /* error - already in use */\n-        fprintf(stderr, \"%s: tag %d already used\\n\", __func__, tag);\n+        error_report(\"%s: tag %d already used\", __func__, tag);\n         return;\n     }\n \ndiff --git a/hw/ide/core.c b/hw/ide/core.c\nindex d63eb4a72e..d46936193a 100644\n--- a/hw/ide/core.c\n+++ b/hw/ide/core.c\n@@ -2762,7 +2762,7 @@ static void ide_drive_pio_pre_save(void *opaque)\n \n     idx = transfer_end_table_idx(s->end_transfer_func);\n     if (idx == -1) {\n-        fprintf(stderr, \"%s: invalid end_transfer_func for DRQ_STAT\\n\",\n+        error_report(\"%s: invalid end_transfer_func for DRQ_STAT\",\n                         __func__);\n         s->end_transfer_fn_idx = 2;\n     } else {\ndiff --git a/hw/input/lm832x.c b/hw/input/lm832x.c\nindex d39953126b..caeeda47f2 100644\n--- a/hw/input/lm832x.c\n+++ b/hw/input/lm832x.c\n@@ -239,7 +239,7 @@ static uint8_t lm_kbd_read(LM823KbdState *s, int reg, int byte)\n \n     default:\n         lm_kbd_error(s, ERR_CMDUNK);\n-        fprintf(stderr, \"%s: unknown command %02x\\n\", __func__, reg);\n+        error_report(\"%s: unknown command %02x\", __func__, reg);\n         return 0x00;\n     }\n \n@@ -330,7 +330,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)\n         s->reg = LM832x_GENERAL_ERROR;\n         if ((value & 3) && (value & 3) != 3) {\n             lm_kbd_error(s, ERR_BADPAR);\n-            fprintf(stderr, \"%s: invalid clock setting in RCPWM\\n\",\n+            error_report(\"%s: invalid clock setting in RCPWM\",\n                             __func__);\n         }\n         /* TODO: Validate that the command is only issued once */\n@@ -378,7 +378,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)\n         break;\n     default:\n         lm_kbd_error(s, ERR_CMDUNK);\n-        fprintf(stderr, \"%s: unknown command %02x\\n\", __func__, reg);\n+        error_report(\"%s: unknown command %02x\", __func__, reg);\n         break;\n     }\n }\ndiff --git a/hw/input/pckbd.c b/hw/input/pckbd.c\nindex c479f827b6..ff4f03e4c3 100644\n--- a/hw/input/pckbd.c\n+++ b/hw/input/pckbd.c\n@@ -22,6 +22,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/isa/isa.h\"\n #include \"hw/i386/pc.h\"\n@@ -307,7 +308,7 @@ static void kbd_write_command(void *opaque, hwaddr addr,\n         /* ignore that */\n         break;\n     default:\n-        fprintf(stderr, \"qemu: unsupported keyboard cmd=0x%02x\\n\", (int)val);\n+        error_report(\"qemu: unsupported keyboard cmd=0x%02x\", (int)val);\n         break;\n     }\n }\ndiff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c\nindex 93db9ed25b..0a594c30fc 100644\n--- a/hw/input/pxa2xx_keypad.c\n+++ b/hw/input/pxa2xx_keypad.c\n@@ -326,7 +326,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp,\n                             const struct keymap *map, int size)\n {\n     if(!map || size < 0x80) {\n-        fprintf(stderr, \"%s - No PXA keypad map defined\\n\", __func__);\n+        error_report(\"%s - No PXA keypad map defined\", __func__);\n         exit(-1);\n     }\n \ndiff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c\nindex 7990954b6c..f5057e8eeb 100644\n--- a/hw/input/tsc2005.c\n+++ b/hw/input/tsc2005.c\n@@ -200,17 +200,17 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)\n         s->host_mode = (data >> 15) != 0;\n         if (s->enabled != !(data & 0x4000)) {\n             s->enabled = !(data & 0x4000);\n-            fprintf(stderr, \"%s: touchscreen sense %sabled\\n\",\n-                            __func__, s->enabled ? \"en\" : \"dis\");\n+            error_report(\"%s: touchscreen sense %sabled\",\n+                         __func__, s->enabled ? \"en\" : \"dis\");\n             if (s->busy && !s->enabled)\n                 timer_del(s->timer);\n             s->busy = s->busy && s->enabled;\n         }\n         s->nextprecision = (data >> 13) & 1;\n         s->timing[0] = data & 0x1fff;\n-        if ((s->timing[0] >> 11) == 3)\n-            fprintf(stderr, \"%s: illegal conversion clock setting\\n\",\n-                            __func__);\n+        if ((s->timing[0] >> 11) == 3) {\n+            error_report(\"%s: illegal conversion clock setting\", __func__);\n+        }\n         break;\n     case 0xd:\t/* CFR1 */\n         s->timing[1] = data & 0xf07;\n@@ -221,8 +221,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)\n         break;\n \n     default:\n-        fprintf(stderr, \"%s: write into read-only register %x\\n\",\n-                        __func__, reg);\n+        error_report(\"%s: write into read-only register %x\", __func__, reg);\n     }\n }\n \n@@ -337,8 +336,8 @@ static uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)\n                 s->nextprecision = (value >> 2) & 1;\n                 if (s->enabled != !(value & 1)) {\n                     s->enabled = !(value & 1);\n-                    fprintf(stderr, \"%s: touchscreen sense %sabled\\n\",\n-                                    __func__, s->enabled ? \"en\" : \"dis\");\n+                    error_report(\"%s: touchscreen sense %sabled\",\n+                                 __func__, s->enabled ? \"en\" : \"dis\");\n                     if (s->busy && !s->enabled)\n                         timer_del(s->timer);\n                     s->busy = s->busy && s->enabled;\ndiff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c\nindex d4b19c1825..c685221842 100644\n--- a/hw/input/tsc210x.c\n+++ b/hw/input/tsc210x.c\n@@ -396,8 +396,8 @@ static uint16_t tsc2102_data_register_read(TSC210xState *s, int reg)\n \n     default:\n #ifdef TSC_VERBOSE\n-        fprintf(stderr, \"tsc2102_data_register_read: \"\n-                        \"no such register: 0x%02x\\n\", reg);\n+        error_report(\"tsc2102_data_register_read: \"\n+                     \"no such register: 0x%02x\", reg);\n #endif\n         return 0xffff;\n     }\n@@ -447,8 +447,8 @@ static uint16_t tsc2102_control_register_read(\n     default:\n     bad_reg:\n #ifdef TSC_VERBOSE\n-        fprintf(stderr, \"tsc2102_control_register_read: \"\n-                        \"no such register: 0x%02x\\n\", reg);\n+        error_report(\"tsc2102_control_register_read: \"\n+                     \"no such register: 0x%02x\", reg);\n #endif\n         return 0xffff;\n     }\n@@ -528,8 +528,8 @@ static uint16_t tsc2102_audio_register_read(TSC210xState *s, int reg)\n \n     default:\n #ifdef TSC_VERBOSE\n-        fprintf(stderr, \"tsc2102_audio_register_read: \"\n-                        \"no such register: 0x%02x\\n\", reg);\n+        error_report(\"tsc2102_audio_register_read: \"\n+                     \"no such register: 0x%02x\", reg);\n #endif\n         return 0xffff;\n     }\n@@ -553,8 +553,8 @@ static void tsc2102_data_register_write(\n \n     default:\n #ifdef TSC_VERBOSE\n-        fprintf(stderr, \"tsc2102_data_register_write: \"\n-                        \"no such register: 0x%02x\\n\", reg);\n+        error_report(\"tsc2102_data_register_write: \"\n+                     \"no such register: 0x%02x\", reg);\n #endif\n     }\n }\n@@ -606,8 +606,8 @@ static void tsc2102_control_register_write(\n             tsc210x_reset(s);\n #ifdef TSC_VERBOSE\n         } else {\n-            fprintf(stderr, \"tsc2102_control_register_write: \"\n-                            \"wrong value written into RESET\\n\");\n+            error_report(\"tsc2102_control_register_write: \"\n+                         \"wrong value written into RESET\");\n #endif\n         }\n         return;\n@@ -616,8 +616,8 @@ static void tsc2102_control_register_write(\n         s->timing = value & 0x3f;\n #ifdef TSC_VERBOSE\n         if (value & ~0x3f)\n-            fprintf(stderr, \"tsc2102_control_register_write: \"\n-                            \"wrong value written into CONFIG\\n\");\n+            error_report(\"tsc2102_control_register_write: \"\n+                         \"wrong value written into CONFIG\");\n #endif\n         return;\n \n@@ -637,8 +637,8 @@ static void tsc2102_control_register_write(\n     default:\n     bad_reg:\n #ifdef TSC_VERBOSE\n-        fprintf(stderr, \"tsc2102_control_register_write: \"\n-                        \"no such register: 0x%02x\\n\", reg);\n+        error_report(\"tsc2102_control_register_write: \"\n+                     \"no such register: 0x%02x\", reg);\n #endif\n     }\n }\n@@ -651,8 +651,8 @@ static void tsc2102_audio_register_write(\n         s->audio_ctrl1 = value & 0x0f3f;\n #ifdef TSC_VERBOSE\n         if ((value & ~0x0f3f) || ((value & 7) != ((value >> 3) & 7)))\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into Audio 1\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into Audio 1\");\n #endif\n         tsc2102_audio_rate_update(s);\n         tsc2102_audio_output_update(s);\n@@ -661,8 +661,8 @@ static void tsc2102_audio_register_write(\n     case 0x01:\n #ifdef TSC_VERBOSE\n         if (value != 0xff00)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into reg 0x01\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into reg 0x01\");\n #endif\n         return;\n \n@@ -674,8 +674,8 @@ static void tsc2102_audio_register_write(\n     case 0x03:\n #ifdef TSC_VERBOSE\n         if (value != 0x8b00)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into reg 0x03\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into reg 0x03\");\n #endif\n         return;\n \n@@ -683,8 +683,8 @@ static void tsc2102_audio_register_write(\n         s->audio_ctrl2 = value & 0xf7f2;\n #ifdef TSC_VERBOSE\n         if (value & ~0xf7fd)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into Audio 2\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into Audio 2\");\n #endif\n         return;\n \n@@ -695,8 +695,8 @@ static void tsc2102_audio_register_write(\n         s->dac_power = value & 0x9543;\n #ifdef TSC_VERBOSE\n         if ((value & ~0x9543) != 0x2aa0)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into Power\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into Power\");\n #endif\n         tsc2102_audio_rate_update(s);\n         tsc2102_audio_output_update(s);\n@@ -707,8 +707,8 @@ static void tsc2102_audio_register_write(\n         s->audio_ctrl3 |= value & 0xf800;\n #ifdef TSC_VERBOSE\n         if (value & ~0xf8c7)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into Audio 3\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into Audio 3\");\n #endif\n         tsc2102_audio_output_update(s);\n         return;\n@@ -740,8 +740,8 @@ static void tsc2102_audio_register_write(\n         s->pll[0] = value & 0xfffc;\n #ifdef TSC_VERBOSE\n         if (value & ~0xfffc)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into PLL 1\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into PLL 1\");\n #endif\n         return;\n \n@@ -749,8 +749,8 @@ static void tsc2102_audio_register_write(\n         s->pll[1] = value & 0xfffc;\n #ifdef TSC_VERBOSE\n         if (value & ~0xfffc)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into PLL 2\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into PLL 2\");\n #endif\n         return;\n \n@@ -758,15 +758,15 @@ static void tsc2102_audio_register_write(\n         s->softstep = !(value & 0x4000);\n #ifdef TSC_VERBOSE\n         if (value & ~0x4000)\n-            fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                            \"wrong value written into Audio 4\\n\");\n+            error_report(\"tsc2102_audio_register_write: \"\n+                         \"wrong value written into Audio 4\");\n #endif\n         return;\n \n     default:\n #ifdef TSC_VERBOSE\n-        fprintf(stderr, \"tsc2102_audio_register_write: \"\n-                        \"no such register: 0x%02x\\n\", reg);\n+        error_report(\"tsc2102_audio_register_write: \"\n+                     \"no such register: 0x%02x\", reg);\n #endif\n     }\n }\n@@ -847,7 +847,7 @@ static uint16_t tsc210x_read(TSC210xState *s)\n     uint16_t ret = 0x0000;\n \n     if (!s->command)\n-        fprintf(stderr, \"tsc210x_read: SPI underrun!\\n\");\n+        error_report(\"tsc210x_read: SPI underrun!\");\n \n     switch (s->page) {\n     case TSC_DATA_REGISTERS_PAGE:\n@@ -886,7 +886,7 @@ static void tsc210x_write(TSC210xState *s, uint16_t value)\n         s->state = true;\n     } else {\n         if (s->command)\n-            fprintf(stderr, \"tsc210x_write: SPI overrun!\\n\");\n+            error_report(\"tsc210x_write: SPI overrun!\");\n         else\n             switch (s->page) {\n             case TSC_DATA_REGISTERS_PAGE:\ndiff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c\nindex 4d3afc1b14..bf1ed7b18e 100644\n--- a/hw/input/virtio-input-hid.c\n+++ b/hw/input/virtio-input-hid.c\n@@ -208,8 +208,8 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,\n             virtio_input_send(vinput, &event);\n         } else {\n             if (key->down) {\n-                fprintf(stderr, \"%s: unmapped key: %d [%s]\\n\", __func__,\n-                        qcode, QKeyCode_str(qcode));\n+                error_report(\"%s: unmapped key: %d [%s]\", __func__,\n+                             qcode, QKeyCode_str(qcode));\n             }\n         }\n         break;\n@@ -222,9 +222,9 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,\n             virtio_input_send(vinput, &event);\n         } else {\n             if (btn->down) {\n-                fprintf(stderr, \"%s: unmapped button: %d [%s]\\n\", __func__,\n-                        btn->button,\n-                        InputButton_str(btn->button));\n+                error_report(\"%s: unmapped button: %d [%s]\", __func__,\n+                             btn->button,\n+                             InputButton_str(btn->button));\n             }\n         }\n         break;\n@@ -310,8 +310,8 @@ static void virtio_input_hid_handle_status(VirtIOInput *vinput,\n         kbd_put_ledstate(vhid->ledstate);\n         break;\n     default:\n-        fprintf(stderr, \"%s: unknown type %d\\n\", __func__,\n-                le16_to_cpu(event->type));\n+        error_report(\"%s: unknown type %d\", __func__,\n+                     le16_to_cpu(event->type));\n         break;\n     }\n }\ndiff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c\nindex 0e42f0d02c..fb5fa0a280 100644\n--- a/hw/input/virtio-input.c\n+++ b/hw/input/virtio-input.c\n@@ -5,6 +5,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu/iov.h\"\n #include \"trace.h\"\n@@ -121,8 +122,8 @@ void virtio_input_add_config(VirtIOInput *vinput,\n \n     if (virtio_input_find_config(vinput, config->select, config->subsel)) {\n         /* should not happen */\n-        fprintf(stderr, \"%s: duplicate config: %d/%d\\n\",\n-                __func__, config->select, config->subsel);\n+        error_report(\"%s: duplicate config: %d/%d\",\n+                     __func__, config->select, config->subsel);\n         abort();\n     }\n \ndiff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c\nindex ae095d08a3..a5478d3e20 100644\n--- a/hw/intc/arm_gic_kvm.c\n+++ b/hw/intc/arm_gic_kvm.c\n@@ -316,12 +316,12 @@ static void kvm_arm_gic_put(GICState *s)\n     num_cpu = ((reg & 0xe0) >> 5) + 1;\n \n     if (num_irq < s->num_irq) {\n-            fprintf(stderr, \"Restoring %u IRQs, but kernel supports max %d\\n\",\n-                    s->num_irq, num_irq);\n+            error_report(\"Restoring %u IRQs, but kernel supports max %d\",\n+                         s->num_irq, num_irq);\n             abort();\n     } else if (num_cpu != s->num_cpu) {\n-            fprintf(stderr, \"Restoring %u CPU interfaces, kernel only has %d\\n\",\n-                    s->num_cpu, num_cpu);\n+            error_report(\"Restoring %u CPU interfaces, kernel only has %d\",\n+                         s->num_cpu, num_cpu);\n             /* Did we not create the VCPUs in the kernel yet? */\n             abort();\n     }\n@@ -411,8 +411,8 @@ static void kvm_arm_gic_get(GICState *s)\n     s->num_cpu = ((reg & 0xe0) >> 5) + 1;\n \n     if (s->num_irq > GIC_MAXIRQ) {\n-            fprintf(stderr, \"Too many IRQs reported from the kernel: %d\\n\",\n-                    s->num_irq);\n+            error_report(\"Too many IRQs reported from the kernel: %d\",\n+                         s->num_irq);\n             abort();\n     }\n \ndiff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c\nindex 6844c1aa83..7fc239715a 100644\n--- a/hw/intc/omap_intc.c\n+++ b/hw/intc/omap_intc.c\n@@ -539,8 +539,8 @@ static void omap2_inth_write(void *opaque, hwaddr addr,\n         /* TODO: Make a bitmap (or sizeof(char)map) of access privileges\n          * for every register, see Chapter 3 and 4 for privileged mode.  */\n         if (value & 1)\n-            fprintf(stderr, \"%s: protection mode enable attempt\\n\",\n-                            __func__);\n+            error_report(\"%s: protection mode enable attempt\",\n+                          __func__);\n         return;\n \n     case 0x50:\t/* INTC_IDLE */\ndiff --git a/hw/intc/openpic.c b/hw/intc/openpic.c\nindex 9dd285b923..dfaefbf575 100644\n--- a/hw/intc/openpic.c\n+++ b/hw/intc/openpic.c\n@@ -34,6 +34,7 @@\n  *\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/ppc/mac.h\"\n #include \"hw/pci/pci.h\"\n@@ -162,7 +163,7 @@ static int inttgt_to_output(int inttgt)\n         }\n     }\n \n-    fprintf(stderr, \"%s: unsupported inttgt %d\\n\", __func__, inttgt);\n+    error_report(\"%s: unsupported inttgt %d\", __func__, inttgt);\n     return OPENPIC_OUTPUT_INT;\n }\n \n@@ -534,7 +535,7 @@ static void openpic_set_irq(void *opaque, int n_IRQ, int level)\n     IRQSource *src;\n \n     if (n_IRQ >= OPENPIC_MAX_IRQ) {\n-        fprintf(stderr, \"%s: IRQ %d out of range\\n\", __func__, n_IRQ);\n+        error_report(\"%s: IRQ %d out of range\", __func__, n_IRQ);\n         abort();\n     }\n \n@@ -1208,7 +1209,7 @@ static uint32_t openpic_iack(OpenPICState *opp, IRQDest *dst, int cpu)\n     src = &opp->src[irq];\n     if (!(src->ivpr & IVPR_ACTIVITY_MASK) ||\n             !(IVPR_PRIORITY(src->ivpr) > dst->ctpr)) {\n-        fprintf(stderr, \"%s: bad raised IRQ %d ctpr %d ivpr 0x%08x\\n\",\n+        error_report(\"%s: bad raised IRQ %d ctpr %d ivpr 0x%08x\",\n                 __func__, irq, dst->ctpr, src->ivpr);\n         openpic_update_irq(opp, irq);\n         retval = opp->spve;\ndiff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c\nindex fa83420254..60c784ae86 100644\n--- a/hw/intc/openpic_kvm.c\n+++ b/hw/intc/openpic_kvm.c\n@@ -150,8 +150,8 @@ static void kvm_openpic_region_add(MemoryListener *listener,\n \n     ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);\n     if (ret < 0) {\n-        fprintf(stderr, \"%s: %s %\" PRIx64 \"\\n\", __func__,\n-                strerror(errno), reg_base);\n+        error_report(\"%s: %s %\" PRIx64 \"\", __func__,\n+                     strerror(errno), reg_base);\n     }\n }\n \n@@ -184,8 +184,8 @@ static void kvm_openpic_region_del(MemoryListener *listener,\n \n     ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);\n     if (ret < 0) {\n-        fprintf(stderr, \"%s: %s %\" PRIx64 \"\\n\", __func__,\n-                strerror(errno), reg_base);\n+        error_report(\"%s: %s %\" PRIx64 \"\", __func__,\n+                     strerror(errno), reg_base);\n     }\n }\n \ndiff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c\nindex 7ead17ac3e..3774b1a2f0 100644\n--- a/hw/intc/s390_flic_kvm.c\n+++ b/hw/intc/s390_flic_kvm.c\n@@ -83,7 +83,7 @@ static void flic_enable_pfault(KVMS390FLICState *flic)\n     rc = ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr);\n \n     if (rc) {\n-        fprintf(stderr, \"flic: couldn't enable pfault\\n\");\n+        error_report(\"flic: couldn't enable pfault\");\n     }\n }\n \n@@ -97,7 +97,7 @@ static void flic_disable_wait_pfault(KVMS390FLICState *flic)\n     rc = ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr);\n \n     if (rc) {\n-        fprintf(stderr, \"flic: couldn't disable pfault\\n\");\n+        error_report(\"flic: couldn't disable pfault\");\n     }\n }\n \ndiff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c\nindex b27babd504..81c62920de 100644\n--- a/hw/ipmi/ipmi.c\n+++ b/hw/ipmi/ipmi.c\n@@ -23,6 +23,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/ipmi/ipmi.h\"\n #include \"sysemu/sysemu.h\"\ndiff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c\nindex abab3bba4f..8c0535d3dd 100644\n--- a/hw/ipmi/ipmi_bmc_extern.c\n+++ b/hw/ipmi/ipmi_bmc_extern.c\n@@ -28,6 +28,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu/timer.h\"\n #include \"chardev/char-fe.h\"\n@@ -194,8 +195,8 @@ static void ipmi_bmc_extern_handle_command(IPMIBmc *b,\n \n     if (ibe->outlen) {\n         /* We already have a command queued.  Shouldn't ever happen. */\n-        fprintf(stderr, \"IPMI KCS: Got command when not finished with the\"\n-                \" previous command\\n\");\n+        error_report(\"IPMI KCS: Got command when not finished with the\"\n+                     \" previous command\");\n         abort();\n     }\n \ndiff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c\nindex 348e0eab9d..0f2e426d02 100644\n--- a/hw/isa/isa-bus.c\n+++ b/hw/isa/isa-bus.c\n@@ -17,6 +17,7 @@\n  * License along with this library; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"hw/hw.h\"\n #include \"monitor/monitor.h\"\n@@ -186,15 +187,15 @@ ISADevice *isa_vga_init(ISABus *bus)\n     case VGA_CIRRUS:\n         return isa_create_simple(bus, \"isa-cirrus-vga\");\n     case VGA_QXL:\n-        fprintf(stderr, \"%s: qxl: no PCI bus\\n\", __func__);\n+        error_report(\"%s: qxl: no PCI bus\", __func__);\n         return NULL;\n     case VGA_STD:\n         return isa_create_simple(bus, \"isa-vga\");\n     case VGA_VMWARE:\n-        fprintf(stderr, \"%s: vmware_vga: no PCI bus\\n\", __func__);\n+        error_report(\"%s: vmware_vga: no PCI bus\", __func__);\n         return NULL;\n     case VGA_VIRTIO:\n-        fprintf(stderr, \"%s: virtio-vga: no PCI bus\\n\", __func__);\n+        error_report(\"%s: virtio-vga: no PCI bus\", __func__);\n         return NULL;\n     case VGA_NONE:\n     default:\ndiff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c\nindex b0bb3ef58a..d739acf476 100644\n--- a/hw/lm32/lm32_boards.c\n+++ b/hw/lm32/lm32_boards.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/sysbus.h\"\n@@ -152,7 +153,7 @@ static void lm32_evr_init(MachineState *machine)\n         }\n \n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\n@@ -250,7 +251,7 @@ static void lm32_uclinux_init(MachineState *machine)\n         }\n \n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\ndiff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c\nindex 4db4d2d533..caa6cf4e0f 100644\n--- a/hw/lm32/milkymist.c\n+++ b/hw/lm32/milkymist.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/sysbus.h\"\n@@ -149,7 +150,7 @@ milkymist_init(MachineState *machine)\n \n     /* if no kernel is given no valid bios rom is a fatal error */\n     if (!kernel_filename && !dinfo && !bios_filename && !qtest_enabled()) {\n-        fprintf(stderr, \"qemu: could not load Milkymist One bios '%s'\\n\",\n+        error_report(\"qemu: could not load Milkymist One bios '%s'\",\n                 bios_name);\n         exit(1);\n     }\n@@ -188,7 +189,7 @@ milkymist_init(MachineState *machine)\n         }\n \n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\ndiff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c\nindex 9002c460e5..bdab620a02 100644\n--- a/hw/m68k/an5206.c\n+++ b/hw/m68k/an5206.c\n@@ -66,7 +66,7 @@ static void an5206_init(MachineState *machine)\n         if (qtest_enabled()) {\n             return;\n         }\n-        fprintf(stderr, \"Kernel image must be specified\\n\");\n+        error_report(\"Kernel image must be specified\");\n         exit(1);\n     }\n \n@@ -83,7 +83,7 @@ static void an5206_init(MachineState *machine)\n         entry = KERNEL_LOAD_ADDR;\n     }\n     if (kernel_size < 0) {\n-        fprintf(stderr, \"qemu: could not load kernel '%s'\\n\", kernel_filename);\n+        error_report(\"qemu: could not load kernel '%s'\", kernel_filename);\n         exit(1);\n     }\n \ndiff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c\nindex b81901fdfd..fbf3f0f074 100644\n--- a/hw/m68k/mcf5206.c\n+++ b/hw/m68k/mcf5206.c\n@@ -6,6 +6,7 @@\n  * This code is licensed under the GPL\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/hw.h\"\n@@ -220,7 +221,7 @@ static void m5206_mbar_update(m5206_mbar_state *s)\n                 break;\n             default:\n                 /* Unknown vector.  */\n-                fprintf(stderr, \"Unhandled vector for IRQ %d\\n\", irq);\n+                error_report(\"Unhandled vector for IRQ %d\", irq);\n                 vector = 0xf;\n                 break;\n             }\ndiff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c\nindex b9dde75106..2fb5037b72 100644\n--- a/hw/m68k/mcf5208.c\n+++ b/hw/m68k/mcf5208.c\n@@ -6,6 +6,7 @@\n  * This code is licensed under the GPL\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -257,7 +258,7 @@ static void mcf5208evb_init(MachineState *machine)\n     mcf5208_sys_init(address_space_mem, pic);\n \n     if (nb_nics > 1) {\n-        fprintf(stderr, \"Too many NICs\\n\");\n+        error_report(\"Too many NICs\");\n         exit(1);\n     }\n     if (nd_table[0].used) {\n@@ -292,7 +293,7 @@ static void mcf5208evb_init(MachineState *machine)\n         if (qtest_enabled()) {\n             return;\n         }\n-        fprintf(stderr, \"Kernel image must be specified\\n\");\n+        error_report(\"Kernel image must be specified\");\n         exit(1);\n     }\n \n@@ -309,7 +310,7 @@ static void mcf5208evb_init(MachineState *machine)\n         entry = 0x40000000;\n     }\n     if (kernel_size < 0) {\n-        fprintf(stderr, \"qemu: could not load kernel '%s'\\n\", kernel_filename);\n+        error_report(\"qemu: could not load kernel '%s'\", kernel_filename);\n         exit(1);\n     }\n \ndiff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c\nindex 457a08a2fe..31466050de 100644\n--- a/hw/microblaze/boot.c\n+++ b/hw/microblaze/boot.c\n@@ -86,7 +86,7 @@ static int microblaze_load_dtb(hwaddr addr,\n         r = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\",\n                                     kernel_cmdline);\n         if (r < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+            error_report(\"couldn't set /chosen/bootargs\");\n         }\n     }\n \ndiff --git a/hw/mips/boston.c b/hw/mips/boston.c\nindex 776ee283e1..ee82968ea7 100644\n--- a/hw/mips/boston.c\n+++ b/hw/mips/boston.c\n@@ -353,7 +353,7 @@ static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,\n \n     err = fdt_open_into(fdt_orig, fdt, fdt_sz);\n     if (err) {\n-        fprintf(stderr, \"unable to open FDT\\n\");\n+        error_report(\"unable to open FDT\");\n         return NULL;\n     }\n \n@@ -361,7 +361,7 @@ static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,\n             ? machine->kernel_cmdline : \" \";\n     err = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\", cmdline);\n     if (err < 0) {\n-        fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+        error_report(\"couldn't set /chosen/bootargs\");\n         return NULL;\n     }\n \ndiff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c\nindex 75318680e1..34710a466c 100644\n--- a/hw/mips/mips_fulong2e.c\n+++ b/hw/mips/mips_fulong2e.c\n@@ -143,7 +143,7 @@ static int64_t load_kernel (CPUMIPSState *env)\n                                      initrd_offset, ram_size - initrd_offset);\n         }\n         if (initrd_size == (target_ulong) -1) {\n-            fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n+            error_report(\"qemu: could not load initial ram disk '%s'\",\n                     loaderparams.initrd_filename);\n             exit(1);\n         }\n@@ -342,7 +342,7 @@ static void mips_fulong2e_init(MachineState *machine)\n \n     isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0));\n     if (!isa_bus) {\n-        fprintf(stderr, \"vt82c686b_init error\\n\");\n+        error_report(\"vt82c686b_init error\");\n         exit(1);\n     }\n \ndiff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c\nindex 7e6626dc88..6c91a940be 100644\n--- a/hw/mips/mips_jazz.c\n+++ b/hw/mips/mips_jazz.c\n@@ -271,10 +271,10 @@ static void mips_jazz_init(MachineState *machine,\n             sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 4));\n             break;\n         } else if (is_help_option(nd->model)) {\n-            fprintf(stderr, \"qemu: Supported NICs: dp83932\\n\");\n+            error_report(\"qemu: Supported NICs: dp83932\");\n             exit(1);\n         } else {\n-            fprintf(stderr, \"qemu: Unsupported NIC: %s\\n\", nd->model);\n+            error_report(\"qemu: Unsupported NIC: %s\", nd->model);\n             exit(1);\n         }\n     }\ndiff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c\nindex 2adb9bcf89..d457adfa69 100644\n--- a/hw/mips/mips_malta.c\n+++ b/hw/mips/mips_malta.c\n@@ -856,8 +856,8 @@ static int64_t load_kernel (void)\n                                               ram_size - initrd_offset);\n         }\n         if (initrd_size == (target_ulong) -1) {\n-            fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                    loaderparams.initrd_filename);\n+            error_report(\"qemu: could not load initial ram disk '%s'\",\n+                         loaderparams.initrd_filename);\n             exit(1);\n         }\n     }\ndiff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c\nindex a092072e2a..a3d9406610 100644\n--- a/hw/mips/mips_mipssim.c\n+++ b/hw/mips/mips_mipssim.c\n@@ -101,8 +101,8 @@ static int64_t load_kernel(void)\n                 initrd_offset, loaderparams.ram_size - initrd_offset);\n         }\n         if (initrd_size == (target_ulong) -1) {\n-            fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                    loaderparams.initrd_filename);\n+            error_report(\"qemu: could not load initial ram disk '%s'\",\n+                         loaderparams.initrd_filename);\n             exit(1);\n         }\n     }\ndiff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c\nindex 1272d4ef9d..e54ce918a7 100644\n--- a/hw/mips/mips_r4k.c\n+++ b/hw/mips/mips_r4k.c\n@@ -121,8 +121,8 @@ static int64_t load_kernel(void)\n                                               ram_size - initrd_offset);\n         }\n         if (initrd_size == (target_ulong) -1) {\n-            fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                    loaderparams.initrd_filename);\n+            error_report(\"qemu: could not load initial ram disk '%s'\",\n+                         loaderparams.initrd_filename);\n             exit(1);\n         }\n     }\n@@ -246,7 +246,7 @@ void mips_r4k_init(MachineState *machine)\n                                    blk_by_legacy_dinfo(dinfo),\n                                    sector_len, mips_rom / sector_len,\n                                    4, 0, 0, 0, 0, be)) {\n-            fprintf(stderr, \"qemu: Error registering flash memory.\\n\");\n+            error_report(\"qemu: Error registering flash memory.\");\n \t}\n     } else if (!qtest_enabled()) {\n         /* not fatal */\ndiff --git a/hw/misc/a9scu.c b/hw/misc/a9scu.c\nindex 3e8ad8cd73..21b8e49b6c 100644\n--- a/hw/misc/a9scu.c\n+++ b/hw/misc/a9scu.c\n@@ -9,6 +9,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/misc/a9scu.h\"\n \n static uint64_t a9_scu_read(void *opaque, hwaddr offset,\n@@ -59,7 +60,7 @@ static void a9_scu_write(void *opaque, hwaddr offset,\n         mask = 0xffffffff;\n         break;\n     default:\n-        fprintf(stderr, \"Invalid size %u in write to a9 scu register %x\\n\",\n+        error_report(\"Invalid size %u in write to a9 scu register %x\",\n                 size, (unsigned)offset);\n         return;\n     }\ndiff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c\nindex 84f9e4c612..e3b30e90ea 100644\n--- a/hw/misc/omap_gpmc.c\n+++ b/hw/misc/omap_gpmc.c\n@@ -19,6 +19,7 @@\n  * with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/block/flash.h\"\n #include \"hw/arm/omap.h\"\n@@ -408,7 +409,7 @@ static void omap_gpmc_cs_map(struct omap_gpmc_s *s, int cs)\n     /* TODO: check for overlapping regions and report access errors */\n     if (mask != 0x8 && mask != 0xc && mask != 0xe && mask != 0xf\n          && !(s->accept_256 && !mask)) {\n-        fprintf(stderr, \"%s: invalid chip-select mask address (0x%x)\\n\",\n+        error_report(\"%s: invalid chip-select mask address (0x%x)\",\n                  __func__, mask);\n     }\n \n@@ -642,7 +643,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,\n \n     case 0x010:\t/* GPMC_SYSCONFIG */\n         if ((value >> 3) == 0x3)\n-            fprintf(stderr, \"%s: bad SDRAM idle mode %\"PRIi64\"\\n\",\n+            error_report(\"%s: bad SDRAM idle mode %\"PRIi64\"\",\n                             __func__, value >> 3);\n         if (value & 2)\n             omap_gpmc_reset(s);\n@@ -806,7 +807,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,\n         break;\n     case 0x230:\t/* GPMC_TESTMODE_CTRL */\n         if (value & 7)\n-            fprintf(stderr, \"%s: test mode enable attempt\\n\", __func__);\n+            error_report(\"%s: test mode enable attempt\", __func__);\n         break;\n \n     default:\n@@ -864,7 +865,7 @@ void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem)\n     assert(iomem);\n \n     if (cs < 0 || cs >= 8) {\n-        fprintf(stderr, \"%s: bad chip-select %i\\n\", __func__, cs);\n+        error_report(\"%s: bad chip-select %i\", __func__, cs);\n         exit(-1);\n     }\n     f = &s->cs_file[cs];\n@@ -881,7 +882,7 @@ void omap_gpmc_attach_nand(struct omap_gpmc_s *s, int cs, DeviceState *nand)\n     assert(nand);\n \n     if (cs < 0 || cs >= 8) {\n-        fprintf(stderr, \"%s: bad chip-select %i\\n\", __func__, cs);\n+        error_report(\"%s: bad chip-select %i\", __func__, cs);\n         exit(-1);\n     }\n     f = &s->cs_file[cs];\ndiff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c\nindex 96fc057b4e..47d9c10aeb 100644\n--- a/hw/misc/omap_l4.c\n+++ b/hw/misc/omap_l4.c\n@@ -18,6 +18,7 @@\n  * with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/arm/omap.h\"\n \n@@ -126,7 +127,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus,\n             break;\n         }\n     if (!ta) {\n-        fprintf(stderr, \"%s: bad target agent (%i)\\n\", __func__, cs);\n+        error_report(\"%s: bad target agent (%i)\", __func__, cs);\n         exit(-1);\n     }\n \n@@ -151,7 +152,7 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta,\n     hwaddr base;\n \n     if (region < 0 || region >= ta->regions) {\n-        fprintf(stderr, \"%s: bad io region (%i)\\n\", __func__, region);\n+        error_report(\"%s: bad io region (%i)\", __func__, region);\n         exit(-1);\n     }\n \ndiff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c\nindex 7b38c5568c..3dcabc1e00 100644\n--- a/hw/misc/omap_sdrc.c\n+++ b/hw/misc/omap_sdrc.c\n@@ -18,6 +18,7 @@\n  * with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/arm/omap.h\"\n \n@@ -108,7 +109,7 @@ static void omap_sdrc_write(void *opaque, hwaddr addr,\n \n     case 0x10:\t/* SDRC_SYSCONFIG */\n         if ((value >> 3) != 0x2)\n-            fprintf(stderr, \"%s: bad SDRAM idle mode %i\\n\",\n+            error_report(\"%s: bad SDRAM idle mode %i\",\n                     __func__, (unsigned)value >> 3);\n         if (value & 2)\n             omap_sdrc_reset(s);\ndiff --git a/hw/misc/vmport.c b/hw/misc/vmport.c\nindex 165500223f..55369bd180 100644\n--- a/hw/misc/vmport.c\n+++ b/hw/misc/vmport.c\n@@ -80,7 +80,7 @@ static uint64_t vmport_ioport_read(void *opaque, hwaddr addr,\n     if (!s->func[command])\n     {\n #ifdef VMPORT_DEBUG\n-        fprintf(stderr, \"vmport: unknown command %x\\n\", command);\n+        error_report(\"vmport: unknown command %x\", command);\n #endif\n         return eax;\n     }\ndiff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c\nindex 5ea8dd3a93..5916f86c68 100644\n--- a/hw/moxie/moxiesim.c\n+++ b/hw/moxie/moxiesim.c\n@@ -25,6 +25,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -61,7 +62,7 @@ static void load_kernel(MoxieCPU *cpu, LoaderParams *loader_params)\n                            0, 0);\n \n     if (kernel_size <= 0) {\n-        fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+        error_report(\"qemu: could not load kernel '%s'\",\n                 loader_params->kernel_filename);\n         exit(1);\n     }\n@@ -85,8 +86,8 @@ static void load_kernel(MoxieCPU *cpu, LoaderParams *loader_params)\n                                               ram_size);\n         }\n         if (initrd_size == (target_ulong)-1) {\n-            fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                    loader_params->initrd_filename);\n+            error_report(\"qemu: could not load initial ram disk '%s'\",\n+                         loader_params->initrd_filename);\n             exit(1);\n         }\n     }\ndiff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c\nindex 9da1932970..965effa314 100644\n--- a/hw/net/fsl_etsec/etsec.c\n+++ b/hw/net/fsl_etsec/etsec.c\n@@ -347,7 +347,7 @@ static ssize_t etsec_receive(NetClientState *nc,\n     eTSEC *etsec = qemu_get_nic_opaque(nc);\n \n #if defined(HEX_DUMP)\n-    fprintf(stderr, \"%s receive size:%zd\\n\", nc->name, size);\n+    error_report(\"%s receive size:%zd\", nc->name, size);\n     qemu_hexdump((void *)buf, stderr, \"\", size);\n #endif\n     /* Flush is unnecessary as are already in receiving path */\ndiff --git a/hw/net/pcnet.c b/hw/net/pcnet.c\nindex 654455355f..5f2b5fe046 100644\n--- a/hw/net/pcnet.c\n+++ b/hw/net/pcnet.c\n@@ -1070,7 +1070,7 @@ ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_)\n             if (!s->looptest) {\n                 if (size > 4092) {\n #ifdef PCNET_DEBUG_RMD\n-                    fprintf(stderr, \"pcnet: truncates rx packet.\\n\");\n+                    error_report(\"pcnet: truncates rx packet.\");\n #endif\n                     size = 4092;\n                 }\ndiff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c\nindex 3b16dcf5a1..ae40fd6e6e 100644\n--- a/hw/net/smc91c111.c\n+++ b/hw/net/smc91c111.c\n@@ -8,6 +8,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/sysbus.h\"\n #include \"net/net.h\"\n #include \"hw/devices.h\"\n@@ -362,9 +363,9 @@ static void smc91c111_writeb(void *opaque, hwaddr offset,\n             return;\n         case 12: /* Control */\n             if (value & 1)\n-                fprintf(stderr, \"smc91c111:EEPROM store not implemented\\n\");\n+                error_report(\"smc91c111:EEPROM store not implemented\");\n             if (value & 2)\n-                fprintf(stderr, \"smc91c111:EEPROM reload not implemented\\n\");\n+                error_report(\"smc91c111:EEPROM reload not implemented\");\n             value &= ~3;\n             SET_LOW(ctr, value);\n             return;\ndiff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c\nindex e037db63a3..37d0cce560 100644\n--- a/hw/net/vhost_net.c\n+++ b/hw/net/vhost_net.c\n@@ -135,7 +135,7 @@ static int vhost_net_get_fd(NetClientState *backend)\n     case NET_CLIENT_DRIVER_TAP:\n         return tap_get_fd(backend);\n     default:\n-        fprintf(stderr, \"vhost-net requires tap backend\\n\");\n+        error_report(\"vhost-net requires tap backend\");\n         return -EBADFD;\n     }\n }\n@@ -148,7 +148,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)\n     uint64_t features = 0;\n \n     if (!options->net_backend) {\n-        fprintf(stderr, \"vhost-net requires net backend to be setup\\n\");\n+        error_report(\"vhost-net requires net backend to be setup\");\n         goto fail;\n     }\n     net->nc = options->net_backend;\n@@ -186,8 +186,8 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)\n             net->dev.features &= ~(1ULL << VIRTIO_NET_F_MRG_RXBUF);\n         }\n         if (~net->dev.features & net->dev.backend_features) {\n-            fprintf(stderr, \"vhost lacks feature mask %\" PRIu64\n-                   \" for backend\\n\",\n+            error_report(\"vhost lacks feature mask %\" PRIu64\n+                   \" for backend\",\n                    (uint64_t)(~net->dev.features & net->dev.backend_features));\n             goto fail;\n         }\n@@ -197,8 +197,8 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)\n     if (net->nc->info->type == NET_CLIENT_DRIVER_VHOST_USER) {\n         features = vhost_user_get_acked_features(net->nc);\n         if (~net->dev.features & features) {\n-            fprintf(stderr, \"vhost lacks feature mask %\" PRIu64\n-                    \" for backend\\n\",\n+            error_report(\"vhost lacks feature mask %\" PRIu64\n+                    \" for backend\",\n                     (uint64_t)(~net->dev.features & features));\n             goto fail;\n         }\n@@ -349,7 +349,7 @@ err_start:\n     }\n     e = k->set_guest_notifiers(qbus->parent, total_queues * 2, false);\n     if (e < 0) {\n-        fprintf(stderr, \"vhost guest notifier cleanup failed: %d\\n\", e);\n+        error_report(\"vhost guest notifier cleanup failed: %d\", e);\n         fflush(stderr);\n     }\n err:\n@@ -370,7 +370,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,\n \n     r = k->set_guest_notifiers(qbus->parent, total_queues * 2, false);\n     if (r < 0) {\n-        fprintf(stderr, \"vhost guest notifier cleanup failed: %d\\n\", r);\n+        error_report(\"vhost guest notifier cleanup failed: %d\", r);\n         fflush(stderr);\n     }\n     assert(r >= 0);\ndiff --git a/hw/nios2/boot.c b/hw/nios2/boot.c\nindex 2b31f5b844..c896e8007b 100644\n--- a/hw/nios2/boot.c\n+++ b/hw/nios2/boot.c\n@@ -96,7 +96,7 @@ static int nios2_load_dtb(struct nios2_boot_info bi, const uint32_t ramsize,\n         r = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\",\n                                     kernel_cmdline);\n         if (r < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+            error_report(\"couldn't set /chosen/bootargs\");\n         }\n     }\n \ndiff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c\nindex 2fd0e3c29f..5cad031eba 100644\n--- a/hw/nvram/eeprom93xx.c\n+++ b/hw/nvram/eeprom93xx.c\n@@ -36,6 +36,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/nvram/eeprom93xx.h\"\n \n@@ -105,8 +106,8 @@ static int get_uint16_from_uint8(QEMUFile *f, void *pv, size_t size,\n static int put_unused(QEMUFile *f, void *pv, size_t size, VMStateField *field,\n                       QJSON *vmdesc)\n {\n-    fprintf(stderr, \"uint16_from_uint8 is used only for backwards compatibility.\\n\");\n-    fprintf(stderr, \"Never should be used to write a new state.\\n\");\n+    error_report(\"uint16_from_uint8 is used only for backwards compatibility.\");\n+    error_report(\"Never should be used to write a new state.\");\n     exit(0);\n \n     return 0;\ndiff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c\nindex e3bd626b8c..cf9a816c0e 100644\n--- a/hw/nvram/fw_cfg.c\n+++ b/hw/nvram/fw_cfg.c\n@@ -515,8 +515,8 @@ static int get_uint32_as_uint16(QEMUFile *f, void *pv, size_t size,\n static int put_unused(QEMUFile *f, void *pv, size_t size, VMStateField *field,\n                       QJSON *vmdesc)\n {\n-    fprintf(stderr, \"uint32_as_uint16 is only used for backward compatibility.\\n\");\n-    fprintf(stderr, \"This functions shouldn't be called.\\n\");\n+    error_report(\"uint32_as_uint16 is only used for backward compatibility.\");\n+    error_report(\"This functions shouldn't be called.\");\n \n     return 0;\n }\ndiff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c\nindex 86bf2849c4..44a6d115dd 100644\n--- a/hw/openrisc/openrisc_sim.c\n+++ b/hw/openrisc/openrisc_sim.c\n@@ -19,6 +19,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -87,7 +88,7 @@ static void cpu_openrisc_load_kernel(ram_addr_t ram_size,\n         }\n \n         if (kernel_size < 0) {\n-            fprintf(stderr, \"QEMU: couldn't load the kernel '%s'\\n\",\n+            error_report(\"QEMU: couldn't load the kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\ndiff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c\nindex 1767d2af61..48fef86c05 100644\n--- a/hw/pci-host/bonito.c\n+++ b/hw/pci-host/bonito.c\n@@ -38,7 +38,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n-\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/pci/pci.h\"\n #include \"hw/i386/pc.h\"\n@@ -449,8 +449,8 @@ static uint32_t bonito_sbridge_pciaddr(void *opaque, hwaddr addr)\n     regno = (cfgaddr & BONITO_PCICONF_REG_MASK) >> BONITO_PCICONF_REG_OFFSET;\n \n     if (idsel == 0) {\n-        fprintf(stderr, \"error in bonito pci config address \" TARGET_FMT_plx\n-            \",pcimap_cfg=%x\\n\", addr, s->regs[BONITO_PCIMAP_CFG]);\n+        error_report(\"error in bonito pci config address \" TARGET_FMT_plx\n+            \",pcimap_cfg=%x\", addr, s->regs[BONITO_PCIMAP_CFG]);\n         exit(1);\n     }\n     pciaddr = PCI_ADDR(pci_bus_num(phb->bus), devno, funno, regno);\ndiff --git a/hw/pci/pci.c b/hw/pci/pci.c\nindex 1e6fb88eba..1c8395d319 100644\n--- a/hw/pci/pci.c\n+++ b/hw/pci/pci.c\n@@ -515,7 +515,7 @@ static int get_pci_irq_state(QEMUFile *f, void *pv, size_t size,\n     for (i = 0; i < PCI_NUM_PINS; ++i) {\n         irq_state[i] = qemu_get_be32(f);\n         if (irq_state[i] != 0x1 && irq_state[i] != 0) {\n-            fprintf(stderr, \"irq state %d: must be 0 or 1.\\n\",\n+            error_report(\"irq state %d: must be 0 or 1.\",\n                     irq_state[i]);\n             return -EINVAL;\n         }\n@@ -678,7 +678,7 @@ static PCIBus *pci_get_bus_devfn(int *devfnp, PCIBus *root,\n     unsigned slot;\n \n     if (!root) {\n-        fprintf(stderr, \"No primary PCI bus\\n\");\n+        error_report(\"No primary PCI bus\");\n         return NULL;\n     }\n \n@@ -694,7 +694,7 @@ static PCIBus *pci_get_bus_devfn(int *devfnp, PCIBus *root,\n     }\n \n     if (dom != 0) {\n-        fprintf(stderr, \"No support for non-zero PCI domains\\n\");\n+        error_report(\"No support for non-zero PCI domains\");\n         return NULL;\n     }\n \n@@ -1118,8 +1118,8 @@ void pci_register_bar(PCIDevice *pci_dev, int region_num,\n     assert(region_num >= 0);\n     assert(region_num < PCI_NUM_REGIONS);\n     if (size & (size-1)) {\n-        fprintf(stderr, \"ERROR: PCI region size must be pow2 \"\n-                    \"type=0x%x, size=0x%\"FMT_PCIBUS\"\\n\", type, size);\n+        error_report(\"ERROR: PCI region size must be pow2 \"\n+                    \"type=0x%x, size=0x%\"FMT_PCIBUS\"\", type, size);\n         exit(1);\n     }\n \ndiff --git a/hw/ppc/e500.c b/hw/ppc/e500.c\nindex db0e49ab8f..8a5350161f 100644\n--- a/hw/ppc/e500.c\n+++ b/hw/ppc/e500.c\n@@ -333,13 +333,13 @@ static int ppce500_load_device_tree(MachineState *machine,\n         ret = qemu_fdt_setprop_cell(fdt, \"/chosen\", \"linux,initrd-start\",\n                                     initrd_base);\n         if (ret < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/linux,initrd-start\\n\");\n+            error_report(\"couldn't set /chosen/linux,initrd-start\");\n         }\n \n         ret = qemu_fdt_setprop_cell(fdt, \"/chosen\", \"linux,initrd-end\",\n                                     (initrd_base + initrd_size));\n         if (ret < 0) {\n-            fprintf(stderr, \"couldn't set /chosen/linux,initrd-end\\n\");\n+            error_report(\"couldn't set /chosen/linux,initrd-end\");\n         }\n \n     }\n@@ -353,7 +353,7 @@ static int ppce500_load_device_tree(MachineState *machine,\n     ret = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\",\n                                       machine->kernel_cmdline);\n     if (ret < 0)\n-        fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+        error_report(\"couldn't set /chosen/bootargs\");\n \n     if (kvm_enabled()) {\n         /* Read out host's frequencies */\n@@ -720,7 +720,7 @@ static DeviceState *ppce500_init_mpic_kvm(PPCE500Params *params,\n \n     CPU_FOREACH(cs) {\n         if (kvm_openpic_connect_vcpu(dev, cs)) {\n-            fprintf(stderr, \"%s: failed to connect vcpu to irqchip\\n\",\n+            error_report(\"%s: failed to connect vcpu to irqchip\",\n                     __func__);\n             abort();\n         }\n@@ -821,7 +821,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)\n         cs = CPU(cpu);\n \n         if (env->mmu_model != POWERPC_MMU_BOOKE206) {\n-            fprintf(stderr, \"MMU model %i not supported by this machine.\\n\",\n+            error_report(\"MMU model %i not supported by this machine.\",\n                 env->mmu_model);\n             exit(1);\n         }\n@@ -967,7 +967,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)\n                                           cur_base,\n                                           ram_size - cur_base);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     machine->kernel_filename);\n             exit(1);\n         }\n@@ -982,8 +982,8 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)\n                                           ram_size - initrd_base);\n \n         if (initrd_size < 0) {\n-            fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                    machine->initrd_filename);\n+            error_report(\"qemu: could not load initial ram disk '%s'\",\n+                         machine->initrd_filename);\n             exit(1);\n         }\n \n@@ -1024,7 +1024,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)\n         kernel_size = load_uimage(filename, &bios_entry, &loadaddr, NULL,\n                                   NULL, NULL);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load firmware '%s'\\n\", filename);\n+            error_report(\"qemu: could not load firmware '%s'\", filename);\n             exit(1);\n         }\n     }\n@@ -1037,7 +1037,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)\n                                        initrd_base, initrd_size,\n                                        kernel_base, kernel_size);\n     if (dt_size < 0) {\n-        fprintf(stderr, \"couldn't load device tree\\n\");\n+        error_report(\"couldn't load device tree\");\n         exit(1);\n     }\n     assert(dt_size < DTB_MAX_SIZE);\ndiff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c\nindex 33b46cb50b..c0edf22352 100644\n--- a/hw/ppc/mac_newworld.c\n+++ b/hw/ppc/mac_newworld.c\n@@ -283,7 +283,7 @@ static void ppc_core99_init(MachineState *machine)\n             }\n         }\n         if (ppc_boot_device == '\\0') {\n-            fprintf(stderr, \"No valid boot device for Mac99 machine\\n\");\n+            error_report(\"No valid boot device for Mac99 machine\");\n             exit(1);\n         }\n     }\ndiff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c\nindex 193b9047d9..02f03650af 100644\n--- a/hw/ppc/mac_oldworld.c\n+++ b/hw/ppc/mac_oldworld.c\n@@ -226,7 +226,7 @@ static void ppc_heathrow_init(MachineState *machine)\n #endif\n         }\n         if (ppc_boot_device == '\\0') {\n-            fprintf(stderr, \"No valid boot device for G3 Beige machine\\n\");\n+            error_report(\"No valid boot device for G3 Beige machine\");\n             exit(1);\n         }\n     }\ndiff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c\nindex ce1254b5d4..3a2c49e3fd 100644\n--- a/hw/ppc/mpc8544_guts.c\n+++ b/hw/ppc/mpc8544_guts.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/hw.h\"\n@@ -83,7 +84,7 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr,\n         value = env->spr[SPR_E500_SVR];\n         break;\n     default:\n-        fprintf(stderr, \"guts: Unknown register read: %x\\n\", (int)addr);\n+        error_report(\"guts: Unknown register read: %x\", (int)addr);\n         break;\n     }\n \n@@ -102,7 +103,7 @@ static void mpc8544_guts_write(void *opaque, hwaddr addr,\n         }\n         break;\n     default:\n-        fprintf(stderr, \"guts: Unknown register write: %x = %x\\n\",\n+        error_report(\"guts: Unknown register write: %x = %x\",\n                 (int)addr, (unsigned)value);\n         break;\n     }\ndiff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c\nindex e92db2c66a..0a31a1c116 100644\n--- a/hw/ppc/ppc405_boards.c\n+++ b/hw/ppc/ppc405_boards.c\n@@ -324,7 +324,7 @@ static void ref405ep_init(MachineState *machine)\n         kernel_size = load_image_targphys(kernel_filename, kernel_base,\n                                           ram_size - kernel_base);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\n@@ -336,8 +336,8 @@ static void ref405ep_init(MachineState *machine)\n             initrd_size = load_image_targphys(initrd_filename, initrd_base,\n                                               ram_size - initrd_base);\n             if (initrd_size < 0) {\n-                fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                        initrd_filename);\n+                error_report(\"qemu: could not load initial ram disk '%s'\",\n+                             initrd_filename);\n                 exit(1);\n             }\n         } else {\n@@ -607,7 +607,7 @@ static void taihu_405ep_init(MachineState *machine)\n         kernel_size = load_image_targphys(kernel_filename, kernel_base,\n                                           ram_size - kernel_base);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\ndiff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c\nindex f92d47f28d..77b74dfe9e 100644\n--- a/hw/ppc/ppc440_bamboo.c\n+++ b/hw/ppc/ppc440_bamboo.c\n@@ -12,6 +12,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"net/net.h\"\n #include \"hw/hw.h\"\n@@ -80,22 +81,22 @@ static int bamboo_load_device_tree(hwaddr addr,\n     ret = qemu_fdt_setprop(fdt, \"/memory\", \"reg\", mem_reg_property,\n                            sizeof(mem_reg_property));\n     if (ret < 0)\n-        fprintf(stderr, \"couldn't set /memory/reg\\n\");\n+        error_report(\"couldn't set /memory/reg\");\n \n     ret = qemu_fdt_setprop_cell(fdt, \"/chosen\", \"linux,initrd-start\",\n                                 initrd_base);\n     if (ret < 0)\n-        fprintf(stderr, \"couldn't set /chosen/linux,initrd-start\\n\");\n+        error_report(\"couldn't set /chosen/linux,initrd-start\");\n \n     ret = qemu_fdt_setprop_cell(fdt, \"/chosen\", \"linux,initrd-end\",\n                                 (initrd_base + initrd_size));\n     if (ret < 0)\n-        fprintf(stderr, \"couldn't set /chosen/linux,initrd-end\\n\");\n+        error_report(\"couldn't set /chosen/linux,initrd-end\");\n \n     ret = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\",\n                                   kernel_cmdline);\n     if (ret < 0)\n-        fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+        error_report(\"couldn't set /chosen/bootargs\");\n \n     /* Copy data from the host device tree into the guest. Since the guest can\n      * directly access the timebase without host involvement, we must expose\n@@ -190,7 +191,7 @@ static void bamboo_init(MachineState *machine)\n     env = &cpu->env;\n \n     if (env->mmu_model != POWERPC_MMU_BOOKE) {\n-        fprintf(stderr, \"MMU model %i not supported by this machine.\\n\",\n+        error_report(\"MMU model %i not supported by this machine.\",\n             env->mmu_model);\n         exit(1);\n     }\n@@ -224,7 +225,7 @@ static void bamboo_init(MachineState *machine)\n                                 NULL);\n     pcibus = (PCIBus *)qdev_get_child_bus(dev, \"pci.0\");\n     if (!pcibus) {\n-        fprintf(stderr, \"couldn't create PCI controller!\\n\");\n+        error_report(\"couldn't create PCI controller!\");\n         exit(1);\n     }\n \n@@ -265,7 +266,7 @@ static void bamboo_init(MachineState *machine)\n         }\n         /* XXX try again as binary */\n         if (success < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\n@@ -277,7 +278,7 @@ static void bamboo_init(MachineState *machine)\n                                           ram_size - RAMDISK_ADDR);\n \n         if (initrd_size < 0) {\n-            fprintf(stderr, \"qemu: could not load ram disk '%s' at %x\\n\",\n+            error_report(\"qemu: could not load ram disk '%s' at %x\",\n                     initrd_filename, RAMDISK_ADDR);\n             exit(1);\n         }\n@@ -287,7 +288,7 @@ static void bamboo_init(MachineState *machine)\n     if (kernel_filename) {\n         if (bamboo_load_device_tree(FDT_ADDR, ram_size, RAMDISK_ADDR,\n                                     initrd_size, kernel_cmdline) < 0) {\n-            fprintf(stderr, \"couldn't load device tree\\n\");\n+            error_report(\"couldn't load device tree\");\n             exit(1);\n         }\n     }\ndiff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c\nindex 6953f8b9ac..0b91d22253 100644\n--- a/hw/ppc/ppc4xx_pci.c\n+++ b/hw/ppc/ppc4xx_pci.c\n@@ -20,6 +20,7 @@\n  * 4xx SoCs, such as the 440EP. */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/ppc/ppc.h\"\n #include \"hw/ppc/ppc4xx.h\"\n@@ -254,7 +255,7 @@ static void ppc4xx_pci_set_irq(void *opaque, int irq_num, int level)\n \n     trace_ppc4xx_pci_set_irq(irq_num);\n     if (irq_num < 0) {\n-        fprintf(stderr, \"%s: PCI irq %d\\n\", __func__, irq_num);\n+        error_report(\"%s: PCI irq %d\", __func__, irq_num);\n         return;\n     }\n     qemu_set_irq(pci_irqs[irq_num], level);\ndiff --git a/hw/ppc/prep.c b/hw/ppc/prep.c\nindex 94138a4e8c..7551d53fa5 100644\n--- a/hw/ppc/prep.c\n+++ b/hw/ppc/prep.c\n@@ -576,7 +576,7 @@ static void ppc_prep_init(MachineState *machine)\n             }\n         }\n         if (ppc_boot_device == '\\0') {\n-            fprintf(stderr, \"No valid boot device for Mac99 machine\\n\");\n+            error_report(\"No valid boot device for Mac99 machine\");\n             exit(1);\n         }\n     }\n@@ -597,7 +597,7 @@ static void ppc_prep_init(MachineState *machine)\n     qdev_init_nofail(dev);\n     pci_bus = (PCIBus *)qdev_get_child_bus(dev, \"pci.0\");\n     if (pci_bus == NULL) {\n-        fprintf(stderr, \"Couldn't create PCI host controller.\\n\");\n+        error_report(\"Couldn't create PCI host controller.\");\n         exit(1);\n     }\n     sysctrl->contiguous_map_irq = qdev_get_gpio_in(dev, 0);\ndiff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c\nindex ed9b406fd3..7641737f81 100644\n--- a/hw/ppc/virtex_ml507.c\n+++ b/hw/ppc/virtex_ml507.c\n@@ -187,7 +187,7 @@ static int xilinx_load_device_tree(hwaddr addr,\n \n     r = qemu_fdt_setprop_string(fdt, \"/chosen\", \"bootargs\", kernel_cmdline);\n     if (r < 0)\n-        fprintf(stderr, \"couldn't set /chosen/bootargs\\n\");\n+        error_report(\"couldn't set /chosen/bootargs\");\n     cpu_physical_memory_write(addr, fdt, fdt_size);\n     return fdt_size;\n }\n@@ -219,7 +219,7 @@ static void virtex_init(MachineState *machine)\n     env = &cpu->env;\n \n     if (env->mmu_model != POWERPC_MMU_BOOKE) {\n-        fprintf(stderr, \"MMU model %i not supported by this machine.\\n\",\n+        error_report(\"MMU model %i not supported by this machine.\",\n             env->mmu_model);\n         exit(1);\n     }\ndiff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c\nindex ff1bb1534c..d3c46bc01f 100644\n--- a/hw/s390x/virtio-ccw.c\n+++ b/hw/s390x/virtio-ccw.c\n@@ -466,7 +466,7 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)\n                  * passes us zeroes for those we don't support.\n                  */\n                 if (features.features) {\n-                    fprintf(stderr, \"Guest bug: features[%i]=%x (expected 0)\\n\",\n+                    error_report(\"Guest bug: features[%i]=%x (expected 0)\",\n                             features.index, features.features);\n                     /* XXX: do a unit check here? */\n                 }\ndiff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c\nindex 3e56ab267c..3e2b24e67d 100644\n--- a/hw/scsi/lsi53c895a.c\n+++ b/hw/scsi/lsi53c895a.c\n@@ -14,7 +14,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n-\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/pci/pci.h\"\n #include \"hw/scsi/scsi.h\"\n@@ -1501,7 +1501,7 @@ again:\n            This is apparently sufficient to beat the drivers into submission.\n          */\n         if (!(s->sien0 & LSI_SIST0_UDC))\n-            fprintf(stderr, \"inf. loop with UDC masked\\n\");\n+            error_report(\"inf. loop with UDC masked\");\n         lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);\n         lsi_disconnect(s);\n     } else if (s->istat1 & LSI_ISTAT1_SRUN && !s->waiting) {\ndiff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c\nindex 360db53ac8..8c4eabcf3d 100644\n--- a/hw/scsi/spapr_vscsi.c\n+++ b/hw/scsi/spapr_vscsi.c\n@@ -32,6 +32,7 @@\n  *  - Maybe do autosense (PAPR seems to mandate it, linux doesn't care)\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n #include \"hw/hw.h\"\n@@ -179,7 +180,7 @@ static int vscsi_send_iu(VSCSIState *s, vscsi_req *req,\n     rc = spapr_vio_dma_write(&s->vdev, req->crq.s.IU_data_ptr,\n                              &req->iu, length);\n     if (rc) {\n-        fprintf(stderr, \"vscsi_send_iu: DMA write failure !\\n\");\n+        error_report(\"vscsi_send_iu: DMA write failure !\");\n     }\n \n     req->crq.s.valid = 0x80;\n@@ -197,7 +198,7 @@ static int vscsi_send_iu(VSCSIState *s, vscsi_req *req,\n \n     rc1 = spapr_vio_send_crq(&s->vdev, req->crq.raw);\n     if (rc1) {\n-        fprintf(stderr, \"vscsi_send_iu: Error sending response\\n\");\n+        error_report(\"vscsi_send_iu: Error sending response\");\n         return rc1;\n     }\n \n@@ -330,7 +331,7 @@ static int vscsi_fetch_desc(VSCSIState *s, struct vscsi_req *req,\n         break;\n     }\n     default:\n-        fprintf(stderr, \"VSCSI:   Unknown format %x\\n\", req->dma_fmt);\n+        error_report(\"VSCSI:   Unknown format %x\", req->dma_fmt);\n         return -1;\n     }\n \n@@ -518,7 +519,7 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len)\n \n     trace_spapr_vscsi_transfer_data(sreq->tag, len, req);\n     if (req == NULL) {\n-        fprintf(stderr, \"VSCSI: Can't find request for tag 0x%x\\n\", sreq->tag);\n+        error_report(\"VSCSI: Can't find request for tag 0x%x\", sreq->tag);\n         return;\n     }\n \n@@ -527,7 +528,7 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len)\n         rc = vscsi_srp_transfer_data(s, req, req->writing, buf, len);\n     }\n     if (rc < 0) {\n-        fprintf(stderr, \"VSCSI: RDMA error rc=%d!\\n\", rc);\n+        error_report(\"VSCSI: RDMA error rc=%d!\", rc);\n         req->dma_error = true;\n         scsi_req_cancel(req->sreq);\n         return;\n@@ -547,7 +548,7 @@ static void vscsi_command_complete(SCSIRequest *sreq, uint32_t status, size_t re\n \n     trace_spapr_vscsi_command_complete(sreq->tag, status, req);\n     if (req == NULL) {\n-        fprintf(stderr, \"VSCSI: Can't find request for tag 0x%x\\n\", sreq->tag);\n+        error_report(\"VSCSI: Can't find request for tag 0x%x\", sreq->tag);\n         return;\n     }\n \n@@ -639,7 +640,7 @@ static void *vscsi_load_request(QEMUFile *f, SCSIRequest *sreq)\n     memset(req, 0, sizeof(*req));\n     rc = vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1);\n     if (rc) {\n-        fprintf(stderr, \"VSCSI: failed loading request tag#%u\\n\", sreq->tag);\n+        error_report(\"VSCSI: failed loading request tag#%u\", sreq->tag);\n         return NULL;\n     }\n     assert(req->active);\n@@ -827,7 +828,7 @@ static int vscsi_process_tsk_mgmt(VSCSIState *s, vscsi_req *req)\n     uint64_t tag = iu->srp.rsp.tag;\n     uint8_t sol_not = iu->srp.cmd.sol_not;\n \n-    fprintf(stderr, \"vscsi_process_tsk_mgmt %02x\\n\",\n+    error_report(\"vscsi_process_tsk_mgmt %02x\",\n             iu->srp.tsk_mgmt.tsk_mgmt_func);\n \n     d = vscsi_device_find(&s->bus, be64_to_cpu(req->iu.srp.tsk_mgmt.lun), &lun);\n@@ -932,10 +933,10 @@ static int vscsi_handle_srp_req(VSCSIState *s, vscsi_req *req)\n     case SRP_CRED_RSP:\n     case SRP_AER_REQ:\n     case SRP_AER_RSP:\n-        fprintf(stderr, \"VSCSI: Unsupported opcode %02x\\n\", opcode);\n+        error_report(\"VSCSI: Unsupported opcode %02x\", opcode);\n         break;\n     default:\n-        fprintf(stderr, \"VSCSI: Unknown type %02x\\n\", opcode);\n+        error_report(\"VSCSI: Unknown type %02x\", opcode);\n     }\n \n     return done;\n@@ -953,7 +954,7 @@ static int vscsi_send_adapter_info(VSCSIState *s, vscsi_req *req)\n     rc = spapr_vio_dma_read(&s->vdev, be64_to_cpu(sinfo->buffer),\n                             &info, be16_to_cpu(sinfo->common.length));\n     if (rc) {\n-        fprintf(stderr, \"vscsi_send_adapter_info: DMA read failure !\\n\");\n+        error_report(\"vscsi_send_adapter_info: DMA read failure !\");\n     }\n #endif\n     memset(&info, 0, sizeof(info));\n@@ -967,7 +968,7 @@ static int vscsi_send_adapter_info(VSCSIState *s, vscsi_req *req)\n     rc = spapr_vio_dma_write(&s->vdev, be64_to_cpu(sinfo->buffer),\n                              &info, be16_to_cpu(sinfo->common.length));\n     if (rc)  {\n-        fprintf(stderr, \"vscsi_send_adapter_info: DMA write failure !\\n\");\n+        error_report(\"vscsi_send_adapter_info: DMA write failure !\");\n     }\n \n     sinfo->common.status = rc ? cpu_to_be32(1) : 0;\n@@ -987,7 +988,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)\n     req_len = len = be16_to_cpu(vcap->common.length);\n     buffer = be64_to_cpu(vcap->buffer);\n     if (len > sizeof(cap)) {\n-        fprintf(stderr, \"vscsi_send_capabilities: capabilities size mismatch !\\n\");\n+        error_report(\"vscsi_send_capabilities: capabilities size mismatch !\");\n \n         /*\n          * Just read and populate the structure that is known.\n@@ -997,7 +998,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)\n     }\n     rc = spapr_vio_dma_read(&s->vdev, buffer, &cap, len);\n     if (rc)  {\n-        fprintf(stderr, \"vscsi_send_capabilities: DMA read failure !\\n\");\n+        error_report(\"vscsi_send_capabilities: DMA read failure !\");\n     }\n \n     /*\n@@ -1013,7 +1014,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)\n \n     rc = spapr_vio_dma_write(&s->vdev, buffer, &cap, len);\n     if (rc)  {\n-        fprintf(stderr, \"vscsi_send_capabilities: DMA write failure !\\n\");\n+        error_report(\"vscsi_send_capabilities: DMA write failure !\");\n     }\n     if (req_len > len) {\n         /*\n@@ -1034,11 +1035,11 @@ static int vscsi_handle_mad_req(VSCSIState *s, vscsi_req *req)\n \n     switch (be32_to_cpu(mad->empty_iu.common.type)) {\n     case VIOSRP_EMPTY_IU_TYPE:\n-        fprintf(stderr, \"Unsupported EMPTY MAD IU\\n\");\n+        error_report(\"Unsupported EMPTY MAD IU\");\n         retlen = sizeof(mad->empty_iu);\n         break;\n     case VIOSRP_ERROR_LOG_TYPE:\n-        fprintf(stderr, \"Unsupported ERROR LOG MAD IU\\n\");\n+        error_report(\"Unsupported ERROR LOG MAD IU\");\n         retlen = sizeof(mad->error_log);\n         break;\n     case VIOSRP_ADAPTER_INFO_TYPE:\n@@ -1053,7 +1054,7 @@ static int vscsi_handle_mad_req(VSCSIState *s, vscsi_req *req)\n         request_handled = true;\n         break;\n     default:\n-        fprintf(stderr, \"VSCSI: Unknown MAD type %02x\\n\",\n+        error_report(\"VSCSI: Unknown MAD type %02x\",\n                 be32_to_cpu(mad->empty_iu.common.type));\n         /*\n          * PAPR+ says that \"The length field is set to the length\n@@ -1078,7 +1079,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)\n \n     req = vscsi_get_req(s);\n     if (req == NULL) {\n-        fprintf(stderr, \"VSCSI: Failed to get a request !\\n\");\n+        error_report(\"VSCSI: Failed to get a request !\");\n         return;\n     }\n \n@@ -1088,7 +1089,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)\n      * of the structure.\n      */\n     if (crq->s.IU_length > sizeof(union viosrp_iu)) {\n-        fprintf(stderr, \"VSCSI: SRP IU too long (%d bytes) !\\n\",\n+        error_report(\"VSCSI: SRP IU too long (%d bytes) !\",\n                 crq->s.IU_length);\n         vscsi_put_req(req);\n         return;\n@@ -1097,7 +1098,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)\n     /* XXX Handle failure differently ? */\n     if (spapr_vio_dma_read(&s->vdev, crq->s.IU_data_ptr, &req->iu,\n                            crq->s.IU_length)) {\n-        fprintf(stderr, \"vscsi_got_payload: DMA read failure !\\n\");\n+        error_report(\"vscsi_got_payload: DMA read failure !\");\n         vscsi_put_req(req);\n         return;\n     }\n@@ -1158,16 +1159,16 @@ static int vscsi_do_crq(struct VIOsPAPRDevice *dev, uint8_t *crq_data)\n         case VIOSRP_AIX_FORMAT:\n         case VIOSRP_LINUX_FORMAT:\n         case VIOSRP_INLINE_FORMAT:\n-            fprintf(stderr, \"vscsi_do_srq: Unsupported payload format %02x\\n\",\n+            error_report(\"vscsi_do_srq: Unsupported payload format %02x\",\n                     crq.s.format);\n             break;\n         default:\n-            fprintf(stderr, \"vscsi_do_srq: Unknown payload format %02x\\n\",\n+            error_report(\"vscsi_do_srq: Unknown payload format %02x\",\n                     crq.s.format);\n         }\n         break;\n     default:\n-        fprintf(stderr, \"vscsi_do_crq: unknown CRQ %02x %02x ...\\n\",\n+        error_report(\"vscsi_do_crq: unknown CRQ %02x %02x ...\",\n                 crq.raw[0], crq.raw[1]);\n     };\n \ndiff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c\nindex add4b3f4a4..e047361310 100644\n--- a/hw/scsi/virtio-scsi-dataplane.c\n+++ b/hw/scsi/virtio-scsi-dataplane.c\n@@ -97,7 +97,7 @@ static int virtio_scsi_vring_init(VirtIOSCSI *s, VirtQueue *vq, int n,\n     /* Set up virtqueue notify */\n     rc = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), n, true);\n     if (rc != 0) {\n-        fprintf(stderr, \"virtio-scsi: Failed to set host notifier (%d)\\n\",\n+        error_report(\"virtio-scsi: Failed to set host notifier (%d)\",\n                 rc);\n         s->dataplane_fenced = true;\n         return rc;\n@@ -141,8 +141,8 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev)\n     /* Set up guest notifier (irq) */\n     rc = k->set_guest_notifiers(qbus->parent, vs->conf.num_queues + 2, true);\n     if (rc != 0) {\n-        fprintf(stderr, \"virtio-scsi: Failed to set guest notifiers (%d), \"\n-                \"ensure -enable-kvm is set\\n\", rc);\n+        error_report(\"virtio-scsi: Failed to set guest notifiers (%d), \"\n+                \"ensure -enable-kvm is set\", rc);\n         goto fail_guest_notifiers;\n     }\n \ndiff --git a/hw/sd/pl181.c b/hw/sd/pl181.c\nindex 55c8098ecd..2b878a0c5e 100644\n--- a/hw/sd/pl181.c\n+++ b/hw/sd/pl181.c\n@@ -8,6 +8,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"sysemu/block-backend.h\"\n #include \"sysemu/blockdev.h\"\n #include \"hw/sysbus.h\"\n@@ -146,7 +147,7 @@ static void pl181_fifo_push(PL181State *s, uint32_t value)\n     int n;\n \n     if (s->fifo_len == PL181_FIFO_LEN) {\n-        fprintf(stderr, \"pl181: FIFO overflow\\n\");\n+        error_report(\"pl181: FIFO overflow\");\n         return;\n     }\n     n = (s->fifo_pos + s->fifo_len) & (PL181_FIFO_LEN - 1);\n@@ -160,7 +161,7 @@ static uint32_t pl181_fifo_pop(PL181State *s)\n     uint32_t value;\n \n     if (s->fifo_len == 0) {\n-        fprintf(stderr, \"pl181: FIFO underflow\\n\");\n+        error_report(\"pl181: FIFO underflow\");\n         return 0;\n     }\n     value = s->fifo[s->fifo_pos];\ndiff --git a/hw/sd/sd.c b/hw/sd/sd.c\nindex ba47bff4db..e467d74fc8 100644\n--- a/hw/sd/sd.c\n+++ b/hw/sd/sd.c\n@@ -700,7 +700,7 @@ static void sd_lock_command(SDState *sd)\n         sd->card_status &= ~CARD_IS_LOCKED;\n         sd->pwd_len = 0;\n         /* Erasing the entire card here! */\n-        fprintf(stderr, \"SD: Card force-erased by CMD42\\n\");\n+        error_report(\"SD: Card force-erased by CMD42\");\n         return;\n     }\n \n@@ -1282,7 +1282,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,\n         return sd_r1;\n \n     case 56:\t/* CMD56:  GEN_CMD */\n-        fprintf(stderr, \"SD: GEN_CMD 0x%08x\\n\", req.arg);\n+        error_report(\"SD: GEN_CMD 0x%08x\", req.arg);\n \n         switch (sd->state) {\n         case sd_transfer_state:\n@@ -1565,10 +1565,10 @@ send_response:\n         int i;\n         DPRINTF(\"Response:\");\n         for (i = 0; i < rsplen; i++)\n-            fprintf(stderr, \" %02x\", response[i]);\n-        fprintf(stderr, \" state %d\\n\", sd->state);\n+            error_report(\" %02x\", response[i]);\n+        error_report(\" state %d\", sd->state);\n     } else {\n-        DPRINTF(\"No response %d\\n\", sd->state);\n+        DPRINTF(\"No response %d\", sd->state);\n     }\n #endif\n \n@@ -1580,14 +1580,14 @@ static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len)\n     DPRINTF(\"sd_blk_read: addr = 0x%08llx, len = %d\\n\",\n             (unsigned long long) addr, len);\n     if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) {\n-        fprintf(stderr, \"sd_blk_read: read error on host side\\n\");\n+        error_report(\"sd_blk_read: read error on host side\");\n     }\n }\n \n static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len)\n {\n     if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) {\n-        fprintf(stderr, \"sd_blk_write: write error on host side\\n\");\n+        error_report(\"sd_blk_write: write error on host side\");\n     }\n }\n \ndiff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c\nindex 16b9ed2db2..a010f559e2 100644\n--- a/hw/sh4/r2d.c\n+++ b/hw/sh4/r2d.c\n@@ -24,6 +24,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -319,8 +320,8 @@ static void r2d_init(MachineState *machine)\n                                           SDRAM_BASE + LINUX_LOAD_OFFSET,\n                                           INITRD_LOAD_OFFSET - LINUX_LOAD_OFFSET);\n         if (kernel_size < 0) {\n-          fprintf(stderr, \"qemu: could not load kernel '%s'\\n\", kernel_filename);\n-          exit(1);\n+            error_report(\"qemu: could not load kernel '%s'\", kernel_filename);\n+            exit(1);\n         }\n \n         /* initialization which should be done by firmware */\n@@ -339,8 +340,8 @@ static void r2d_init(MachineState *machine)\n                                           SDRAM_SIZE - INITRD_LOAD_OFFSET);\n \n         if (initrd_size < 0) {\n-          fprintf(stderr, \"qemu: could not load initrd '%s'\\n\", initrd_filename);\n-          exit(1);\n+            error_report(\"qemu: could not load initrd '%s'\", initrd_filename);\n+            exit(1);\n         }\n \n         /* initialization which should be done by firmware */\ndiff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c\nindex 166e4bd947..64ffc4c1d2 100644\n--- a/hw/sh4/sh7750.c\n+++ b/hw/sh4/sh7750.c\n@@ -23,6 +23,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/sh4/sh.h\"\n #include \"sysemu/sysemu.h\"\n@@ -147,9 +148,9 @@ static void porta_changed(SH7750State * s, uint16_t prev)\n     int i, r = 0;\n \n #if 0\n-    fprintf(stderr, \"porta changed from 0x%04x to 0x%04x\\n\",\n+    error_report(\"porta changed from 0x%04x to 0x%04x\",\n \t    prev, porta_lines(s));\n-    fprintf(stderr, \"pdtra=0x%04x, pctra=0x%08x\\n\", s->pdtra, s->pctra);\n+    error_report(\"pdtra=0x%04x, pctra=0x%08x\", s->pdtra, s->pctra);\n #endif\n     currenta = porta_lines(s);\n     if (currenta == prev)\n@@ -200,13 +201,13 @@ static void portb_changed(SH7750State * s, uint16_t prev)\n \n static void error_access(const char *kind, hwaddr addr)\n {\n-    fprintf(stderr, \"%s to %s (0x\" TARGET_FMT_plx \") not supported\\n\",\n+    error_report(\"%s to %s (0x\" TARGET_FMT_plx \") not supported\",\n \t    kind, regname(addr), addr);\n }\n \n static void ignore_access(const char *kind, hwaddr addr)\n {\n-    fprintf(stderr, \"%s to %s (0x\" TARGET_FMT_plx \") ignored\\n\",\n+    error_report(\"%s to %s (0x\" TARGET_FMT_plx \") ignored\",\n \t    kind, regname(addr), addr);\n }\n \n@@ -326,47 +327,48 @@ static void sh7750_mem_writew(void *opaque, hwaddr addr,\n     uint16_t temp;\n \n     switch (addr) {\n-\t/* SDRAM controller */\n+    /* SDRAM controller */\n     case SH7750_BCR2_A7:\n         s->bcr2 = mem_value;\n         return;\n     case SH7750_BCR3_A7:\n-\tif(!has_bcr3_and_bcr4(s))\n-\t    error_access(\"word write\", addr);\n-\ts->bcr3 = mem_value;\n-\treturn;\n+        if (!has_bcr3_and_bcr4(s)) {\n+            error_access(\"word write\", addr);\n+        }\n+        s->bcr3 = mem_value;\n+        return;\n     case SH7750_PCR_A7:\n-\ts->pcr = mem_value;\n-\treturn;\n+        s->pcr = mem_value;\n+        return;\n     case SH7750_RTCNT_A7:\n     case SH7750_RTCOR_A7:\n     case SH7750_RTCSR_A7:\n-\tignore_access(\"word write\", addr);\n-\treturn;\n-\t/* IO ports */\n+        ignore_access(\"word write\", addr);\n+        return;\n+        /* IO ports */\n     case SH7750_PDTRA_A7:\n-\ttemp = porta_lines(s);\n-\ts->pdtra = mem_value;\n-\tporta_changed(s, temp);\n-\treturn;\n+        temp = porta_lines(s);\n+        s->pdtra = mem_value;\n+        porta_changed(s, temp);\n+        return;\n     case SH7750_PDTRB_A7:\n-\ttemp = portb_lines(s);\n-\ts->pdtrb = mem_value;\n-\tportb_changed(s, temp);\n-\treturn;\n+        temp = portb_lines(s);\n+        s->pdtrb = mem_value;\n+        portb_changed(s, temp);\n+        return;\n     case SH7750_RFCR_A7:\n-\tfprintf(stderr, \"Write access to refresh count register\\n\");\n-\ts->rfcr = mem_value;\n-\treturn;\n+        error_report(\"Write access to refresh count register\");\n+        s->rfcr = mem_value;\n+        return;\n     case SH7750_GPIOIC_A7:\n-\ts->gpioic = mem_value;\n-\tif (mem_value != 0) {\n-\t    fprintf(stderr, \"I/O interrupts not implemented\\n\");\n+        s->gpioic = mem_value;\n+        if (mem_value != 0) {\n+            error_report(\"I/O interrupts not implemented\");\n             abort();\n-\t}\n-\treturn;\n+        }\n+        return;\n     default:\n-\terror_access(\"word write\", addr);\n+        error_access(\"word write\", addr);\n         abort();\n     }\n }\ndiff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c\nindex ec2816bf94..d434edec92 100644\n--- a/hw/sparc/leon3.c\n+++ b/hw/sparc/leon3.c\n@@ -22,6 +22,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -172,7 +173,7 @@ static void leon3_generic_hw_init(MachineState *machine)\n     }\n \n     if (bios_size > prom_size) {\n-        fprintf(stderr, \"qemu: could not load prom '%s': file too big\\n\",\n+        error_report(\"qemu: could not load prom '%s': file too big\",\n                 filename);\n         exit(1);\n     }\n@@ -180,11 +181,11 @@ static void leon3_generic_hw_init(MachineState *machine)\n     if (bios_size > 0) {\n         ret = load_image_targphys(filename, 0x00000000, bios_size);\n         if (ret < 0 || ret > prom_size) {\n-            fprintf(stderr, \"qemu: could not load prom '%s'\\n\", filename);\n+            error_report(\"qemu: could not load prom '%s'\", filename);\n             exit(1);\n         }\n     } else if (kernel_filename == NULL && !qtest_enabled()) {\n-        fprintf(stderr, \"Can't read bios image %s\\n\", filename);\n+        error_report(\"Can't read bios image %s\", filename);\n         exit(1);\n     }\n     g_free(filename);\n@@ -197,7 +198,7 @@ static void leon3_generic_hw_init(MachineState *machine)\n         kernel_size = load_elf(kernel_filename, NULL, NULL, &entry, NULL, NULL,\n                                1 /* big endian */, EM_SPARC, 0, 0);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\ndiff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c\nindex e1bdd4828d..7a2812aaa4 100644\n--- a/hw/sparc/sun4m.c\n+++ b/hw/sparc/sun4m.c\n@@ -261,7 +261,7 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,\n                                               KERNEL_LOAD_ADDR,\n                                               RAM_size - KERNEL_LOAD_ADDR);\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\n@@ -273,8 +273,8 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,\n                                               INITRD_LOAD_ADDR,\n                                               RAM_size - INITRD_LOAD_ADDR);\n             if (initrd_size < 0) {\n-                fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                        initrd_filename);\n+                error_report(\"qemu: could not load initial ram disk '%s'\",\n+                             initrd_filename);\n                 exit(1);\n             }\n         }\n@@ -688,7 +688,7 @@ static void prom_init(hwaddr addr, const char *bios_name)\n         ret = -1;\n     }\n     if (ret < 0 || ret > PROM_SIZE_MAX) {\n-        fprintf(stderr, \"qemu: could not load prom '%s'\\n\", bios_name);\n+        error_report(\"qemu: could not load prom '%s'\", bios_name);\n         exit(1);\n     }\n }\ndiff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c\nindex 9a8d6109d4..60799220f3 100644\n--- a/hw/sparc64/niagara.c\n+++ b/hw/sparc64/niagara.c\n@@ -153,7 +153,7 @@ static void niagara_init(MachineState *machine)\n             dinfo->is_default = 1;\n             rom_add_file_fixed(blk_bs(blk)->filename, NIAGARA_VDISK_BASE, -1);\n         } else {\n-            fprintf(stderr, \"qemu: could not load ram disk '%s'\\n\",\n+            error_report(\"qemu: could not load ram disk '%s'\",\n                     blk_bs(blk)->filename);\n             exit(1);\n         }\ndiff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c\nindex c3280aaf38..070d9b94f9 100644\n--- a/hw/sparc64/sun4u.c\n+++ b/hw/sparc64/sun4u.c\n@@ -22,6 +22,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include \"qemu-common.h\"\n #include \"cpu.h\"\n@@ -165,7 +166,7 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,\n                                               RAM_size - KERNEL_LOAD_ADDR);\n         }\n         if (kernel_size < 0) {\n-            fprintf(stderr, \"qemu: could not load kernel '%s'\\n\",\n+            error_report(\"qemu: could not load kernel '%s'\",\n                     kernel_filename);\n             exit(1);\n         }\n@@ -178,8 +179,8 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,\n                                                *initrd_addr,\n                                                RAM_size - *initrd_addr);\n             if ((int)*initrd_size < 0) {\n-                fprintf(stderr, \"qemu: could not load initial ram disk '%s'\\n\",\n-                        initrd_filename);\n+                error_report(\"qemu: could not load initial ram disk '%s'\",\n+                             initrd_filename);\n                 exit(1);\n             }\n         }\n@@ -322,7 +323,7 @@ static void prom_init(hwaddr addr, const char *bios_name)\n         ret = -1;\n     }\n     if (ret < 0 || ret > PROM_SIZE_MAX) {\n-        fprintf(stderr, \"qemu: could not load prom '%s'\\n\", bios_name);\n+        error_report(\"qemu: could not load prom '%s'\", bios_name);\n         exit(1);\n     }\n }\ndiff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c\nindex 34163e5646..98242d1e8b 100644\n--- a/hw/ssi/omap_spi.c\n+++ b/hw/ssi/omap_spi.c\n@@ -20,6 +20,7 @@\n  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"hw/arm/omap.h\"\n \n@@ -295,9 +296,9 @@ static void omap_mcspi_write(void *opaque, hwaddr addr,\n         if ((value ^ s->ch[ch].config) & (3 << 14))\t/* DMAR | DMAW */\n             omap_mcspi_dmarequest_update(s->ch + ch);\n         if (((value >> 12) & 3) == 3)\t\t\t/* TRM */\n-            fprintf(stderr, \"%s: invalid TRM value (3)\\n\", __func__);\n+            error_report(\"%s: invalid TRM value (3)\", __func__);\n         if (((value >> 7) & 0x1f) < 3)\t\t\t/* WL */\n-            fprintf(stderr, \"%s: invalid WL value (%\" PRIx64 \")\\n\",\n+            error_report(\"%s: invalid WL value (%\" PRIx64 \")\",\n                             __func__, (value >> 7) & 0x1f);\n         s->ch[ch].config = value & 0x7fffff;\n         break;\ndiff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c\nindex ae2dc99832..0f064241d3 100644\n--- a/hw/timer/omap_gptimer.c\n+++ b/hw/timer/omap_gptimer.c\n@@ -18,6 +18,7 @@\n  * with this program; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"qemu/timer.h\"\n #include \"hw/arm/omap.h\"\n@@ -356,7 +357,7 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,\n     case 0x10:\t/* TIOCP_CFG */\n         s->config = value & 0x33d;\n         if (((value >> 3) & 3) == 3)\t\t\t\t/* IDLEMODE */\n-            fprintf(stderr, \"%s: illegal IDLEMODE value in TIOCP_CFG\\n\",\n+            error_report(\"%s: illegal IDLEMODE value in TIOCP_CFG\",\n                             __func__);\n         if (value & 2)\t\t\t\t\t\t/* SOFTRESET */\n             omap_gp_timer_reset(s);\n@@ -394,11 +395,11 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,\n         s->ar = (value >> 1) & 1;\n         s->st = (value >> 0) & 1;\n         if (s->inout && s->trigger != gpt_trigger_none)\n-            fprintf(stderr, \"%s: GP timer pin must be an output \"\n-                            \"for this trigger mode\\n\", __func__);\n+            error_report(\"%s: GP timer pin must be an output \"\n+                         \"for this trigger mode\", __func__);\n         if (!s->inout && s->capture != gpt_capture_none)\n-            fprintf(stderr, \"%s: GP timer pin must be an input \"\n-                            \"for this capture mode\\n\", __func__);\n+            error_report(\"%s: GP timer pin must be an input \"\n+                         \"for this capture mode\", __func__);\n         if (s->trigger == gpt_trigger_none)\n             omap_gp_timer_out(s, s->scpwm);\n         /* TODO: make sure this doesn't overflow 32-bits */\ndiff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c\nindex 87e334af24..3ade0ba929 100644\n--- a/hw/timer/twl92230.c\n+++ b/hw/timer/twl92230.c\n@@ -614,7 +614,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)\n             break;\n         rtc_badness:\n         default:\n-            fprintf(stderr, \"%s: bad RTC_UPDATE value %02x\\n\",\n+            error_report(\"%s: bad RTC_UPDATE value %02x\",\n                             __func__, value);\n             s->status |= 1 << 10;\t\t\t\t/* RTCERR */\n             menelaus_update(s);\ndiff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c\nindex 59439c05be..a80bba846b 100644\n--- a/hw/timer/xilinx_timer.c\n+++ b/hw/timer/xilinx_timer.c\n@@ -127,7 +127,7 @@ timer_read(void *opaque, hwaddr addr, unsigned int size)\n             break;\n \n     }\n-    D(fprintf(stderr, \"%s timer=%d %x=%x\\n\", __func__, timer, addr * 4, r));\n+    D(error_report(\"%s timer=%d %x=%x\", __func__, timer, addr * 4, r));\n     return r;\n }\n \n@@ -135,7 +135,7 @@ static void timer_enable(struct xlx_timer *xt)\n {\n     uint64_t count;\n \n-    D(fprintf(stderr, \"%s timer=%d down=%d\\n\", __func__,\n+    D(error_report(\"%s timer=%d down=%d\", __func__,\n               xt->nr, xt->regs[R_TCSR] & TCSR_UDT));\n \n     ptimer_stop(xt->ptimer);\n@@ -160,7 +160,7 @@ timer_write(void *opaque, hwaddr addr,\n     addr >>= 2;\n     timer = timer_from_addr(addr);\n     xt = &t->timers[timer];\n-    D(fprintf(stderr, \"%s addr=%x val=%x (timer=%d off=%d)\\n\",\n+    D(error_report(\"%s addr=%x val=%x (timer=%d off=%d)\",\n              __func__, addr * 4, value, timer, addr & 3));\n     /* Further decoding to address a specific timers reg.  */\n     addr &= 3;\n@@ -197,7 +197,7 @@ static void timer_hit(void *opaque)\n {\n     struct xlx_timer *xt = opaque;\n     struct timerblock *t = xt->parent;\n-    D(fprintf(stderr, \"%s %d\\n\", __func__, xt->nr));\n+    D(error_report(\"%s %d\", __func__, xt->nr));\n     xt->regs[R_TCSR] |= TCSR_TINT;\n \n     if (xt->regs[R_TCSR] & TCSR_ARHT)\ndiff --git a/hw/usb/core.c b/hw/usb/core.c\nindex 241ae66b15..9ffdef055c 100644\n--- a/hw/usb/core.c\n+++ b/hw/usb/core.c\n@@ -24,6 +24,7 @@\n  * THE SOFTWARE.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"hw/usb.h\"\n #include \"qemu/iov.h\"\n@@ -599,7 +600,7 @@ void usb_packet_copy(USBPacket *p, void *ptr, size_t bytes)\n         iov_from_buf(iov->iov, iov->niov, p->actual_length, ptr, bytes);\n         break;\n     default:\n-        fprintf(stderr, \"%s: invalid pid: %x\\n\", __func__, p->pid);\n+        error_report(\"%s: invalid pid: %x\", __func__, p->pid);\n         abort();\n     }\n     p->actual_length += bytes;\n@@ -681,7 +682,7 @@ void usb_ep_dump(USBDevice *dev)\n     };\n     int ifnum, ep, first;\n \n-    fprintf(stderr, \"Device \\\"%s\\\", config %d\\n\",\n+    error_report(\"Device \\\"%s\\\", config %d\",\n             dev->product_desc, dev->configuration);\n     for (ifnum = 0; ifnum < 16; ifnum++) {\n         first = 1;\n@@ -690,10 +691,10 @@ void usb_ep_dump(USBDevice *dev)\n                 dev->ep_in[ep].ifnum == ifnum) {\n                 if (first) {\n                     first = 0;\n-                    fprintf(stderr, \"  Interface %d, alternative %d\\n\",\n+                    error_report(\"  Interface %d, alternative %d\",\n                             ifnum, dev->altsetting[ifnum]);\n                 }\n-                fprintf(stderr, \"    Endpoint %d, IN, %s, %d max\\n\", ep,\n+                error_report(\"    Endpoint %d, IN, %s, %d max\", ep,\n                         tname[dev->ep_in[ep].type],\n                         dev->ep_in[ep].max_packet_size);\n             }\n@@ -701,16 +702,16 @@ void usb_ep_dump(USBDevice *dev)\n                 dev->ep_out[ep].ifnum == ifnum) {\n                 if (first) {\n                     first = 0;\n-                    fprintf(stderr, \"  Interface %d, alternative %d\\n\",\n+                    error_report(\"  Interface %d, alternative %d\",\n                             ifnum, dev->altsetting[ifnum]);\n                 }\n-                fprintf(stderr, \"    Endpoint %d, OUT, %s, %d max\\n\", ep,\n+                error_report(\"    Endpoint %d, OUT, %s, %d max\", ep,\n                         tname[dev->ep_out[ep].type],\n                         dev->ep_out[ep].max_packet_size);\n             }\n         }\n     }\n-    fprintf(stderr, \"--\\n\");\n+    error_report(\"--\");\n }\n \n struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)\ndiff --git a/hw/usb/desc.c b/hw/usb/desc.c\nindex 85c15addc5..afae910f8e 100644\n--- a/hw/usb/desc.c\n+++ b/hw/usb/desc.c\n@@ -1,5 +1,5 @@\n #include \"qemu/osdep.h\"\n-\n+#include \"qemu/error-report.h\"\n #include \"hw/usb.h\"\n #include \"hw/usb/desc.h\"\n #include \"trace.h\"\n@@ -688,7 +688,7 @@ int usb_desc_get_descriptor(USBDevice *dev, USBPacket *p,\n         break;\n \n     default:\n-        fprintf(stderr, \"%s: %d unknown type %d (len %zd)\\n\", __func__,\n+        error_report(\"%s: %d unknown type %d (len %zd)\", __func__,\n                 dev->addr, type, len);\n         break;\n     }\ndiff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c\nindex 343345235c..43fc20469a 100644\n--- a/hw/usb/dev-audio.c\n+++ b/hw/usb/dev-audio.c\n@@ -30,6 +30,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"hw/usb.h\"\n #include \"hw/usb/desc.h\"\n@@ -398,7 +399,7 @@ static int usb_audio_set_output_altset(USBAudioState *s, int altset)\n     }\n \n     if (s->debug) {\n-        fprintf(stderr, \"usb-audio: set interface %d\\n\", altset);\n+        error_report(\"usb-audio: set interface %d\", altset);\n     }\n     s->out.altset = altset;\n     return 0;\n@@ -478,7 +479,7 @@ static int usb_audio_set_control(USBAudioState *s, uint8_t attrib,\n             uint16_t vol = data[0] + (data[1] << 8);\n \n             if (s->debug) {\n-                fprintf(stderr, \"usb-audio: vol %04x\\n\", (uint16_t)vol);\n+                error_report(\"usb-audio: vol %04x\", (uint16_t)vol);\n             }\n \n             vol -= 0x8000;\n@@ -496,7 +497,7 @@ static int usb_audio_set_control(USBAudioState *s, uint8_t attrib,\n \n     if (set_vol) {\n         if (s->debug) {\n-            fprintf(stderr, \"usb-audio: mute %d, lvol %3d, rvol %3d\\n\",\n+            error_report(\"usb-audio: mute %d, lvol %3d, rvol %3d\",\n                     s->out.mute, s->out.vol[0], s->out.vol[1]);\n         }\n         AUD_set_volume_out(s->out.voice, s->out.mute,\n@@ -514,8 +515,8 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,\n     int ret = 0;\n \n     if (s->debug) {\n-        fprintf(stderr, \"usb-audio: control transaction: \"\n-                \"request 0x%04x value 0x%04x index 0x%04x length 0x%04x\\n\",\n+        error_report(\"usb-audio: control transaction: \"\n+                \"request 0x%04x value 0x%04x index 0x%04x length 0x%04x\",\n                 request, value, index, length);\n     }\n \n@@ -533,7 +534,7 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,\n                                     length, data);\n         if (ret < 0) {\n             if (s->debug) {\n-                fprintf(stderr, \"usb-audio: fail: get control\\n\");\n+                error_report(\"usb-audio: fail: get control\");\n             }\n             goto fail;\n         }\n@@ -548,7 +549,7 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,\n                                     length, data);\n         if (ret < 0) {\n             if (s->debug) {\n-                fprintf(stderr, \"usb-audio: fail: set control\\n\");\n+                error_report(\"usb-audio: fail: set control\");\n             }\n             goto fail;\n         }\n@@ -557,8 +558,8 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,\n     default:\n fail:\n         if (s->debug) {\n-            fprintf(stderr, \"usb-audio: failed control transaction: \"\n-                    \"request 0x%04x value 0x%04x index 0x%04x length 0x%04x\\n\",\n+            error_report(\"usb-audio: failed control transaction: \"\n+                    \"request 0x%04x value 0x%04x index 0x%04x length 0x%04x\",\n                     request, value, index, length);\n         }\n         p->status = USB_RET_STALL;\n@@ -581,7 +582,7 @@ static void usb_audio_handle_reset(USBDevice *dev)\n     USBAudioState *s = USB_AUDIO(dev);\n \n     if (s->debug) {\n-        fprintf(stderr, \"usb-audio: reset\\n\");\n+        error_report(\"usb-audio: reset\");\n     }\n     usb_audio_set_output_altset(s, ALTSET_OFF);\n }\n@@ -595,7 +596,7 @@ static void usb_audio_handle_dataout(USBAudioState *s, USBPacket *p)\n \n     streambuf_put(&s->out.buf, p);\n     if (p->actual_length < p->iov.size && s->debug > 1) {\n-        fprintf(stderr, \"usb-audio: output overrun (%zd bytes)\\n\",\n+        error_report(\"usb-audio: output overrun (%zd bytes)\",\n                 p->iov.size - p->actual_length);\n     }\n }\n@@ -611,8 +612,8 @@ static void usb_audio_handle_data(USBDevice *dev, USBPacket *p)\n \n     p->status = USB_RET_STALL;\n     if (s->debug) {\n-        fprintf(stderr, \"usb-audio: failed data transaction: \"\n-                        \"pid 0x%x ep 0x%x len 0x%zx\\n\",\n+        error_report(\"usb-audio: failed data transaction: \"\n+                        \"pid 0x%x ep 0x%x len 0x%zx\",\n                         p->pid, p->ep->nr, p->iov.size);\n     }\n }\n@@ -622,7 +623,7 @@ static void usb_audio_unrealize(USBDevice *dev, Error **errp)\n     USBAudioState *s = USB_AUDIO(dev);\n \n     if (s->debug) {\n-        fprintf(stderr, \"usb-audio: destroy\\n\");\n+        error_report(\"usb-audio: destroy\");\n     }\n \n     usb_audio_set_output_altset(s, ALTSET_OFF);\ndiff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c\nindex 0bbceaea0b..dfef258dca 100644\n--- a/hw/usb/dev-bluetooth.c\n+++ b/hw/usb/dev-bluetooth.c\n@@ -274,13 +274,13 @@ static void usb_bt_fifo_enqueue(struct usb_hci_in_fifo_s *fifo,\n     if (off <= DFIFO_LEN_MASK) {\n         if (off + len > DFIFO_LEN_MASK + 1 &&\n                         (fifo->dsize = off + len) > (DFIFO_LEN_MASK + 1) * 2) {\n-            fprintf(stderr, \"%s: can't alloc %i bytes\\n\", __func__, len);\n+            error_report(\"%s: can't alloc %i bytes\", __func__, len);\n             exit(-1);\n         }\n         buf = fifo->data + off;\n     } else {\n         if (fifo->dlen > fifo->dsize) {\n-            fprintf(stderr, \"%s: can't alloc %i bytes\\n\", __func__, len);\n+            error_report(\"%s: can't alloc %i bytes\", __func__, len);\n             exit(-1);\n         }\n         buf = fifo->data + off - fifo->dsize;\ndiff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c\nindex 94c2e94f10..7e1782b8fc 100644\n--- a/hw/usb/dev-mtp.c\n+++ b/hw/usb/dev-mtp.c\n@@ -10,6 +10,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qapi/error.h\"\n #include <wchar.h>\n #include <dirent.h>\n@@ -546,7 +547,7 @@ static void inotify_watchfn(void *arg)\n                 break;\n \n             default:\n-                fprintf(stderr, \"usb-mtp: failed to parse inotify event\\n\");\n+                error_report(\"usb-mtp: failed to parse inotify event\");\n                 continue;\n             }\n \n@@ -617,7 +618,7 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)\n #ifdef CONFIG_INOTIFY1\n     int watchfd = usb_mtp_add_watch(s->inotifyfd, o->path);\n     if (watchfd == -1) {\n-        fprintf(stderr, \"usb-mtp: failed to add watch for %s\\n\", o->path);\n+        error_report(\"usb-mtp: failed to add watch for %s\", o->path);\n     } else {\n         trace_usb_mtp_inotify_event(s->dev.addr, o->path,\n                                     0, \"Watch Added\");\n@@ -1144,7 +1145,7 @@ static void usb_mtp_command(MTPState *s, MTPControl *c)\n         usb_mtp_object_alloc(s, s->next_handle++, NULL, s->root);\n #ifdef CONFIG_INOTIFY1\n         if (usb_mtp_inotify_init(s)) {\n-            fprintf(stderr, \"usb-mtp: file monitoring init failed\\n\");\n+            error_report(\"usb-mtp: file monitoring init failed\");\n         }\n #endif\n         break;\n@@ -1348,7 +1349,7 @@ static void usb_mtp_handle_control(USBDevice *dev, USBPacket *p,\n static void usb_mtp_cancel_packet(USBDevice *dev, USBPacket *p)\n {\n     /* we don't use async packets, so this should never be called */\n-    fprintf(stderr, \"%s\\n\", __func__);\n+    error_report(\"%s\", __func__);\n }\n \n static void usb_mtp_handle_data(USBDevice *dev, USBPacket *p)\ndiff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c\nindex 85fc81bf43..9dd4af5e34 100644\n--- a/hw/usb/dev-network.c\n+++ b/hw/usb/dev-network.c\n@@ -815,7 +815,7 @@ static int ndis_query(USBNetState *s, uint32_t oid,\n         return sizeof(le32);\n \n     default:\n-        fprintf(stderr, \"usbnet: unknown OID 0x%08x\\n\", oid);\n+        error_report(\"usbnet: unknown OID 0x%08x\", oid);\n         return 0;\n     }\n     return -1;\n@@ -1084,9 +1084,9 @@ static void usb_net_handle_control(USBDevice *dev, USBPacket *p,\n             for (i = 0; i < length; i++) {\n                 if (!(i & 15))\n                     fprintf(stderr, \"\\n%04x:\", i);\n-                fprintf(stderr, \" %02x\", data[i]);\n+                error_report(\" %02x\", data[i]);\n             }\n-            fprintf(stderr, \"\\n\\n\");\n+            fprintf(stderr, \"\\n\");\n         }\n #endif\n         ret = rndis_parse(s, data, length);\n@@ -1111,17 +1111,17 @@ static void usb_net_handle_control(USBDevice *dev, USBPacket *p,\n             for (i = 0; i < p->actual_length; i++) {\n                 if (!(i & 15))\n                     fprintf(stderr, \"\\n%04x:\", i);\n-                fprintf(stderr, \" %02x\", data[i]);\n+                error_report(\" %02x\", data[i]);\n             }\n-            fprintf(stderr, \"\\n\\n\");\n+            fprintf(stderr, \"\\n\");\n         }\n #endif\n         break;\n \n     default:\n     fail:\n-        fprintf(stderr, \"usbnet: failed control transaction: \"\n-                        \"request 0x%x value 0x%x index 0x%x length 0x%x\\n\",\n+        error_report(\"usbnet: failed control transaction: \"\n+                        \"request 0x%x value 0x%x index 0x%x length 0x%x\",\n                         request, value, index, length);\n         p->status = USB_RET_STALL;\n         break;\n@@ -1190,7 +1190,7 @@ static void usb_net_handle_dataout(USBNetState *s, USBPacket *p)\n     uint32_t len;\n \n #ifdef TRAFFIC_DEBUG\n-    fprintf(stderr, \"usbnet: data out len %zu\\n\", p->iov.size);\n+    error_report(\"usbnet: data out len %zu\", p->iov.size);\n     iov_hexdump(p->iov.iov, p->iov.niov, stderr, \"usbnet\", p->iov.size);\n #endif\n \n@@ -1260,8 +1260,8 @@ static void usb_net_handle_data(USBDevice *dev, USBPacket *p)\n     }\n \n     if (p->status == USB_RET_STALL) {\n-        fprintf(stderr, \"usbnet: failed data transaction: \"\n-                        \"pid 0x%x ep 0x%x len 0x%zx\\n\",\n+        error_report(\"usbnet: failed data transaction: \"\n+                        \"pid 0x%x ep 0x%x len 0x%zx\",\n                         p->pid, p->ep->nr, p->iov.size);\n     }\n }\ndiff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c\nindex 46fd30b075..d6c8a56aec 100644\n--- a/hw/usb/hcd-ehci.c\n+++ b/hw/usb/hcd-ehci.c\n@@ -419,7 +419,7 @@ static int ehci_get_pid(EHCIqtd *qtd)\n     case 2:\n         return USB_TOKEN_SETUP;\n     default:\n-        fprintf(stderr, \"bad token\\n\");\n+        error_report(\"bad token\");\n         return 0;\n     }\n }\n@@ -1033,7 +1033,7 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,\n \n         /* not supporting dynamic frame list size at the moment */\n         if ((val & USBCMD_FLS) && !(s->usbcmd & USBCMD_FLS)) {\n-            fprintf(stderr, \"attempt to set frame list size -- value %d\\n\",\n+            error_report(\"attempt to set frame list size -- value %d\",\n                     (int)val & USBCMD_FLS);\n             val &= ~USBCMD_FLS;\n         }\n@@ -1190,7 +1190,7 @@ static int ehci_init_transfer(EHCIPacket *p)\n \n     while (bytes > 0) {\n         if (cpage > 4) {\n-            fprintf(stderr, \"cpage out of range (%d)\\n\", cpage);\n+            error_report(\"cpage out of range (%d)\", cpage);\n             qemu_sglist_destroy(&p->sgl);\n             return -1;\n         }\n@@ -1296,7 +1296,7 @@ static void ehci_execute_complete(EHCIQueue *q)\n         break;\n     default:\n         /* should not be triggerable */\n-        fprintf(stderr, \"USB invalid response %d\\n\", p->packet.status);\n+        error_report(\"USB invalid response %d\", p->packet.status);\n         g_assert_not_reached();\n         break;\n     }\n@@ -1345,7 +1345,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)\n            p->async == EHCI_ASYNC_INITIALIZED);\n \n     if (!(p->qtd.token & QTD_TOKEN_ACTIVE)) {\n-        fprintf(stderr, \"Attempting to execute inactive qtd\\n\");\n+        error_report(\"Attempting to execute inactive qtd\");\n         return -1;\n     }\n \n@@ -1383,7 +1383,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)\n             p->packet.actual_length);\n \n     if (p->packet.actual_length > BUFF_SIZE) {\n-        fprintf(stderr, \"ret from usb_handle_packet > BUFF_SIZE\\n\");\n+        error_report(\"ret from usb_handle_packet > BUFF_SIZE\");\n         return -1;\n     }\n \n@@ -1461,7 +1461,7 @@ static int ehci_process_itd(EHCIState *ehci,\n             case USB_RET_SUCCESS:\n                 break;\n             default:\n-                fprintf(stderr, \"Unexpected iso usb result: %d\\n\",\n+                error_report(\"Unexpected iso usb result: %d\",\n                         ehci->ipacket.status);\n                 /* Fall through */\n             case USB_RET_IOERROR:\n@@ -1564,7 +1564,7 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)\n \n     /* section 4.8, only QH in async schedule */\n     if (async && (NLPTR_TYPE_GET(entry) != NLPTR_TYPE_QH)) {\n-        fprintf(stderr, \"non queue head request in async schedule\\n\");\n+        error_report(\"non queue head request in async schedule\");\n         return -1;\n     }\n \n@@ -1586,8 +1586,8 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)\n \n     default:\n         /* TODO: handle FSTN type */\n-        fprintf(stderr, \"FETCHENTRY: entry at %X is of type %d \"\n-                \"which is not supported yet\\n\", entry, NLPTR_TYPE_GET(entry));\n+        error_report(\"FETCHENTRY: entry at %X is of type %d \"\n+                \"which is not supported yet\", entry, NLPTR_TYPE_GET(entry));\n         return -1;\n     }\n \n@@ -2086,7 +2086,7 @@ static void ehci_advance_state(EHCIState *ehci, int async)\n             break;\n \n         default:\n-            fprintf(stderr, \"Bad state!\\n\");\n+            error_report(\"Bad state!\");\n             again = -1;\n             g_assert_not_reached();\n             break;\n@@ -2094,7 +2094,7 @@ static void ehci_advance_state(EHCIState *ehci, int async)\n \n         if (again < 0 || itd_count > 16) {\n             /* TODO: notify guest (raise HSE irq?) */\n-            fprintf(stderr, \"processing error - resetting ehci HC\\n\");\n+            error_report(\"processing error - resetting ehci HC\");\n             ehci_reset(ehci);\n             again = 0;\n         }\n@@ -2151,8 +2151,8 @@ static void ehci_advance_async_state(EHCIState *ehci)\n \n     default:\n         /* this should only be due to a developer mistake */\n-        fprintf(stderr, \"ehci: Bad asynchronous state %d. \"\n-                \"Resetting to active\\n\", ehci->astate);\n+        error_report(\"ehci: Bad asynchronous state %d. \"\n+                \"Resetting to active\", ehci->astate);\n         g_assert_not_reached();\n     }\n }\n@@ -2201,8 +2201,8 @@ static void ehci_advance_periodic_state(EHCIState *ehci)\n \n     default:\n         /* this should only be due to a developer mistake */\n-        fprintf(stderr, \"ehci: Bad periodic state %d. \"\n-                \"Resetting to active\\n\", ehci->pstate);\n+        error_report(\"ehci: Bad periodic state %d. \"\n+                \"Resetting to active\", ehci->pstate);\n         g_assert_not_reached();\n     }\n }\ndiff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c\nindex d70a91a58c..4729926124 100644\n--- a/hw/usb/hcd-musb.c\n+++ b/hw/usb/hcd-musb.c\n@@ -253,8 +253,8 @@\n /* #define MUSB_DEBUG */\n \n #ifdef MUSB_DEBUG\n-#define TRACE(fmt, ...) fprintf(stderr, \"%s@%d: \" fmt \"\\n\", __func__, \\\n-                                __LINE__, ##__VA_ARGS__)\n+#define TRACE(fmt, ...) error_report(\"%s@%d: \" fmt \"\", __func__, \\\n+                                     __LINE__, ##__VA_ARGS__)\n #else\n #define TRACE(...)\n #endif\ndiff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c\nindex d75c085d94..6cc1be09a2 100644\n--- a/hw/usb/hcd-xhci.c\n+++ b/hw/usb/hcd-xhci.c\n@@ -19,6 +19,7 @@\n  * License along with this library; if not, see <http://www.gnu.org/licenses/>.\n  */\n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"hw/hw.h\"\n #include \"qemu/timer.h\"\n #include \"qemu/queue.h\"\n@@ -39,7 +40,7 @@\n #else\n #define DPRINTF(...) do {} while (0)\n #endif\n-#define FIXME(_msg) do { fprintf(stderr, \"FIXME %s:%d %s\\n\", \\\n+#define FIXME(_msg) do { error_report(\"FIXME %s:%d %s\", \\\n                                  __func__, __LINE__, _msg); abort(); } while (0)\n \n #define TRB_LINK_LIMIT  32\ndiff --git a/hw/usb/host-legacy.c b/hw/usb/host-legacy.c\nindex 3b57e21b52..f0c81e5309 100644\n--- a/hw/usb/host-legacy.c\n+++ b/hw/usb/host-legacy.c\n@@ -86,7 +86,7 @@ static int parse_filter(const char *spec, struct USBAutoFilter *f)\n     }\n \n     if (i < DEV) {\n-        fprintf(stderr, \"husb: invalid auto filter spec %s\\n\", spec);\n+        error_report(\"husb: invalid auto filter spec %s\", spec);\n         return -1;\n     }\n \ndiff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c\nindex 0c5c9cde1c..76ae5d2fe5 100644\n--- a/hw/watchdog/watchdog.c\n+++ b/hw/watchdog/watchdog.c\n@@ -20,6 +20,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"qemu/option.h\"\n #include \"qemu/config-file.h\"\n #include \"qemu/queue.h\"\n@@ -51,7 +52,7 @@ int select_watchdog(const char *p)\n     /* -watchdog ? lists available devices and exits cleanly. */\n     if (is_help_option(p)) {\n         QLIST_FOREACH(model, &watchdog_list, entry) {\n-            fprintf(stderr, \"\\t%s\\t%s\\n\",\n+            error_report(\"\\t%s\\t%s\",\n                      model->wdt_name, model->wdt_description);\n         }\n         return 2;\n@@ -67,9 +68,9 @@ int select_watchdog(const char *p)\n         }\n     }\n \n-    fprintf(stderr, \"Unknown -watchdog device. Supported devices are:\\n\");\n+    error_report(\"Unknown -watchdog device. Supported devices are:\");\n     QLIST_FOREACH(model, &watchdog_list, entry) {\n-        fprintf(stderr, \"\\t%s\\t%s\\n\",\n+        error_report(\"\\t%s\\t%s\",\n                  model->wdt_name, model->wdt_description);\n     }\n     return 1;\n@@ -133,7 +134,7 @@ void watchdog_perform_action(void)\n \n     case WDT_DEBUG:\n         qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_DEBUG, &error_abort);\n-        fprintf(stderr, \"watchdog: timer fired\\n\");\n+        error_report(\"watchdog: timer fired\");\n         break;\n \n     case WDT_NONE:\ndiff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c\nindex 49b3cd188a..f596f70a3b 100644\n--- a/hw/watchdog/wdt_i6300esb.c\n+++ b/hw/watchdog/wdt_i6300esb.c\n@@ -20,7 +20,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n-\n+#include \"qemu/error-report.h\"\n #include \"qemu-common.h\"\n #include \"qemu/timer.h\"\n #include \"sysemu/watchdog.h\"\n@@ -186,10 +186,12 @@ static void i6300esb_timer_expired(void *vp)\n         /* What to do at the end of stage 1? */\n         switch (d->int_type) {\n         case INT_TYPE_IRQ:\n-            fprintf(stderr, \"i6300esb_timer_expired: I would send APIC 1 INT 10 here if I knew how (XXX)\\n\");\n+            error_report(\"i6300esb_timer_expired: I would send APIC 1 INT 10\"\n+                          \"here if I knew how (XXX)\");\n             break;\n         case INT_TYPE_SMI:\n-            fprintf(stderr, \"i6300esb_timer_expired: I would send SMI here if I knew how (XXX)\\n\");\n+            error_report(\"i6300esb_timer_expired: I would send SMI here if I\"\n+                         \"knew how (XXX)\");\n             break;\n         }\n \ndiff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c\nindex 632a938dcc..a7c821cfcf 100644\n--- a/hw/xen/xen-common.c\n+++ b/hw/xen/xen-common.c\n@@ -47,19 +47,19 @@ static int store_dev_info(int domid, Chardev *cs, const char *string)\n     /* We now have everything we need to set the xenstore entry. */\n     xs = xs_open(0);\n     if (xs == NULL) {\n-        fprintf(stderr, \"Could not contact XenStore\\n\");\n+        error_report(\"Could not contact XenStore\");\n         goto out;\n     }\n \n     path = xs_get_domain_path(xs, domid);\n     if (path == NULL) {\n-        fprintf(stderr, \"xs_get_domain_path() error\\n\");\n+        error_report(\"xs_get_domain_path() error\");\n         goto out;\n     }\n     newpath = realloc(path, (strlen(path) + strlen(string) +\n                 strlen(\"/tty\") + 1));\n     if (newpath == NULL) {\n-        fprintf(stderr, \"realloc error\\n\");\n+        error_report(\"realloc error\");\n         goto out;\n     }\n     path = newpath;\n@@ -96,13 +96,13 @@ static void xenstore_record_dm_state(struct xs_handle *xs, const char *state)\n     char path[50];\n \n     if (xs == NULL) {\n-        fprintf(stderr, \"xenstore connection not initialized\\n\");\n+        error_report(\"xenstore connection not initialized\");\n         exit(1);\n     }\n \n     snprintf(path, sizeof (path), \"device-model/%u/state\", xen_domid);\n     if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {\n-        fprintf(stderr, \"error recording dm state\\n\");\n+        error_report(\"error recording dm state\");\n         exit(1);\n     }\n }\ndiff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c\nindex 375efa68f6..e86d380d02 100644\n--- a/hw/xen/xen_pt.c\n+++ b/hw/xen/xen_pt.c\n@@ -73,7 +73,7 @@ void xen_pt_log(const PCIDevice *d, const char *f, ...)\n \n     va_start(ap, f);\n     if (d) {\n-        fprintf(stderr, \"[%02x:%02x.%d] \", pci_bus_num(d->bus),\n+        error_report(\"[%02x:%02x.%d] \", pci_bus_num(d->bus),\n                 PCI_SLOT(d->devfn), PCI_FUNC(d->devfn));\n     }\n     vfprintf(stderr, f, ap);\n@@ -87,7 +87,7 @@ static int xen_pt_pci_config_access_check(PCIDevice *d, uint32_t addr, int len)\n     /* check offset range */\n     if (addr > 0xFF) {\n         XEN_PT_ERR(d, \"Failed to access register with offset exceeding 0xFF. \"\n-                   \"(addr: 0x%02x, len: %d)\\n\", addr, len);\n+                   \"(addr: 0x%02x, len: %d)\", addr, len);\n         return -1;\n     }\n \ndiff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c\nindex 027f76fad1..f5514ffec2 100644\n--- a/hw/xenpv/xen_domainbuild.c\n+++ b/hw/xenpv/xen_domainbuild.c\n@@ -25,22 +25,22 @@ static int xenstore_domain_mkdir(char *path)\n     int i;\n \n     if (!xs_mkdir(xenstore, 0, path)) {\n-        fprintf(stderr, \"%s: xs_mkdir %s: failed\\n\", __func__, path);\n-\treturn -1;\n+        error_report(\"%s: xs_mkdir %s: failed\", __func__, path);\n+        return -1;\n     }\n     if (!xs_set_permissions(xenstore, 0, path, perms_ro, 2)) {\n-        fprintf(stderr, \"%s: xs_set_permissions failed\\n\", __func__);\n-\treturn -1;\n+        error_report(\"%s: xs_set_permissions failed\", __func__);\n+        return -1;\n     }\n \n     for (i = 0; writable[i]; i++) {\n         snprintf(subpath, sizeof(subpath), \"%s/%s\", path, writable[i]);\n         if (!xs_mkdir(xenstore, 0, subpath)) {\n-            fprintf(stderr, \"%s: xs_mkdir %s: failed\\n\", __func__, subpath);\n+            error_report(\"%s: xs_mkdir %s: failed\", __func__, subpath);\n             return -1;\n         }\n         if (!xs_set_permissions(xenstore, 0, subpath, perms_rw, 2)) {\n-            fprintf(stderr, \"%s: xs_set_permissions failed\\n\", __func__);\n+            error_report(\"%s: xs_set_permissions failed\", __func__);\n             return -1;\n         }\n     }\n@@ -235,7 +235,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,\n     memcpy(uuid, &qemu_uuid, sizeof(uuid));\n     rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid);\n     if (rc < 0) {\n-        fprintf(stderr, \"xen: xc_domain_create() failed\\n\");\n+        error_report(\"xen: xc_domain_create() failed\");\n         goto err;\n     }\n     qemu_log(\"xen: created domain %d\\n\", xen_domid);\n@@ -248,21 +248,21 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,\n \n     rc = xc_domain_max_vcpus(xen_xc, xen_domid, smp_cpus);\n     if (rc < 0) {\n-        fprintf(stderr, \"xen: xc_domain_max_vcpus() failed\\n\");\n+        error_report(\"xen: xc_domain_max_vcpus() failed\");\n         goto err;\n     }\n \n #if 0\n     rc = xc_domain_setcpuweight(xen_xc, xen_domid, 256);\n     if (rc < 0) {\n-        fprintf(stderr, \"xen: xc_domain_setcpuweight() failed\\n\");\n+        error_report(\"xen: xc_domain_setcpuweight() failed\");\n         goto err;\n     }\n #endif\n \n     rc = xc_domain_setmaxmem(xen_xc, xen_domid, ram_size >> 10);\n     if (rc < 0) {\n-        fprintf(stderr, \"xen: xc_domain_setmaxmem() failed\\n\");\n+        error_report(\"xen: xc_domain_setmaxmem() failed\");\n         goto err;\n     }\n \n@@ -275,7 +275,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,\n                         xenstore_port, &xenstore_mfn,\n                         console_port, &console_mfn);\n     if (rc < 0) {\n-        fprintf(stderr, \"xen: xc_linux_build() failed\\n\");\n+        error_report(\"xen: xc_linux_build() failed\");\n         goto err;\n     }\n \n@@ -285,7 +285,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,\n     qemu_log(\"xen: unpausing domain %d\\n\", xen_domid);\n     rc = xc_domain_unpause(xen_xc, xen_domid);\n     if (rc < 0) {\n-        fprintf(stderr, \"xen: xc_domain_unpause() failed\\n\");\n+        error_report(\"xen: xc_domain_unpause() failed\");\n         goto err;\n     }\n \ndiff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c\nindex 69a52a9f93..ac419e164b 100644\n--- a/hw/xenpv/xen_machine_pv.c\n+++ b/hw/xenpv/xen_machine_pv.c\n@@ -36,7 +36,7 @@ static void xen_init_pv(MachineState *machine)\n \n     /* Initialize backend core & drivers */\n     if (xen_be_init() != 0) {\n-        fprintf(stderr, \"%s: xen backend core setup failed\\n\", __func__);\n+        error_report(\"%s: xen backend core setup failed\", __func__);\n         exit(1);\n     }\n \n@@ -51,18 +51,18 @@ static void xen_init_pv(MachineState *machine)\n         const char *initrd_filename = machine->initrd_filename;\n         if (xen_domain_build_pv(kernel_filename, initrd_filename,\n                                 kernel_cmdline) < 0) {\n-            fprintf(stderr, \"xen pv domain creation failed\\n\");\n+            error_report(\"xen pv domain creation failed\");\n             exit(1);\n         }\n         break;\n     }\n #endif\n     case XEN_EMULATE:\n-        fprintf(stderr, \"xen emulation not implemented (yet)\\n\");\n+        error_report(\"xen emulation not implemented (yet)\");\n         exit(1);\n         break;\n     default:\n-        fprintf(stderr, \"unhandled xen_mode %d\\n\", xen_mode);\n+        error_report(\"unhandled xen_mode %d\", xen_mode);\n         exit(1);\n         break;\n     }\n","prefixes":["v1","3/8"]}