From patchwork Tue Jul 11 12:07:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 786582 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3x6LbK0cWTz9s7g for ; Tue, 11 Jul 2017 22:13:49 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="wExnJlQG"; dkim-atps=neutral Received: from localhost ([::1]:46030 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUu31-0006Sj-10 for incoming@patchwork.ozlabs.org; Tue, 11 Jul 2017 08:13:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dUu02-0004X1-63 for qemu-devel@nongnu.org; Tue, 11 Jul 2017 08:10:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dUtzy-0005vW-Mv for qemu-devel@nongnu.org; Tue, 11 Jul 2017 08:10:41 -0400 Received: from mail-cys01nam02on0065.outbound.protection.outlook.com ([104.47.37.65]:35025 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dUtzy-0005rV-8f for qemu-devel@nongnu.org; Tue, 11 Jul 2017 08:10:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=F7HFgrxNyS3X/I7g5Ylvic+cUagtuZ2xybMVuorQXr8=; b=wExnJlQG5VVMwZJAwE4yMnCn4FAwEt9LLVmgrzq/bfsYLBAGVjQwJv743u/7G9n5sMP2PqxHytiikQC+AFZHXHHdGM/pJLIG1ztKMihjIrcSsXEf1TAfq4e3XawRPMjIZZRrAwWDXhUidcxGLArb+iHE4GlnoXGKpLeyqKXMeig= Received: from MWHPR02CA0022.namprd02.prod.outlook.com (10.168.209.160) by DM5PR02MB2732.namprd02.prod.outlook.com (10.175.85.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.13; Tue, 11 Jul 2017 12:10:35 +0000 Received: from SN1NAM02FT046.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e44::208) by MWHPR02CA0022.outlook.office365.com (2603:10b6:300:4b::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.13 via Frontend Transport; Tue, 11 Jul 2017 12:10:34 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by SN1NAM02FT046.mail.protection.outlook.com (10.152.72.191) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1220.9 via Frontend Transport; Tue, 11 Jul 2017 12:10:34 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1dUtzt-0005NR-PT; Tue, 11 Jul 2017 05:10:33 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1dUtzt-0001q2-Lb; Tue, 11 Jul 2017 05:10:33 -0700 Received: from xsj-pvapsmtp01 (xsj-smtp.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id v6BCAU1p031766; Tue, 11 Jul 2017 05:10:30 -0700 Received: from [172.19.2.220] (helo=localhost.localdomain) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1dUtzq-0001pE-1j; Tue, 11 Jul 2017 05:10:30 -0700 From: Alistair Francis To: Date: Tue, 11 Jul 2017 05:07:19 -0700 Message-ID: X-Mailer: git-send-email 2.11.0 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-23188.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; SFV:NSPM; SFS:(10009020)(6009001)(39410400002)(39400400002)(39850400002)(39860400002)(39840400002)(39450400003)(2980300002)(438002)(189002)(199003)(9170700003)(305945005)(36756003)(478600001)(5660300001)(39060400002)(2351001)(110136004)(118296001)(50226002)(76176999)(63266004)(189998001)(33646002)(9786002)(106466001)(50986999)(2906002)(38730400002)(2950100002)(5003940100001)(8936002)(6666003)(77096006)(36386004)(81166006)(626005)(48376002)(54906002)(8676002)(47776003)(15650500001)(356003)(4326008)(6916009)(50466002)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR02MB2732; H:xsj-pvapsmtpgw01; FPR:; SPF:Pass; MLV:ovrnspm; PTR:unknown-60-83.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02FT046; 1:LjpP2rKiLG9QrrSg/m3Krf3MUryHpmwpoU627hIkSj6KA3YUrvFjWeoy9aE955qcu8lnW1xBpMZvTFQVebCGF+a5kvuKxeqO+NOZicfVCvG+YcwVEvRGLYrXXrXKb5V8avwpTkh3CFqn7WcnIKNF8HiSZnrLI6jTjEy+pGmdBzhLIR5iYBbfXpGXXPoBLlLoHpTKI0lZZSnDE9gZNEml4csJPZmn4ASny6bVIJsSKVN8m06D9ERFg6D2FR9CTW1wa5TCJ/+1nr7hmCCcB89ziD5YRID+YXShkZ+4EczW0KbH+5f1hztm0pYNY8IshF2bDbx67bwirO9v6PNFmUtPnO7npeVzAKTz8zvkX9/ZPP62bE+6s+V/eXAEoBYWeq6clteNqSqF1FrCIQdWhqRMUpG7WtrTAa3QuFCLycuD02rz+uou1YNkKQ9zgO7iM8Y+h4tFtcOcd775vlpAOCkquU5i27YhXoCZX+tpafAoW1Q14dcnZnDghrRPoOq5buw5cEOP+CQ5ip1pqLWctCt+bXDo3ie9DObppxadJfYOZQ6/6p44GBilQD0o7j/IdJ/ElA0yC7HVPXQNDLnzdO10JTS9KigGnF89lWPcZXQaWZEd9m71UooXZY52uIztq6V8JoD9RY9z3CNyDhf3SppnHjjxTBaY4kQtJeTByxbTm7kShm+he8KUTb5d9inJrPLaYM9bhrFXA34FSJEz+ZNELzx2zNgms5VUdG06cR20fD0GsYGiIywu0xDbWmcsxlQ6CCoQbnpKRbmRt5epxynvPkb6GLgkiB8a5ZNCREDl5lVEEycMqgyuFhqttn3w08U8hpZZRIx565qdngHNPOMnocfpiIfbq/F9TpdjIqb+xSlfPbQvNeFkTGCTX+0amSKCu4M48g+KEEcVxP65OHiTkg== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 45f35fb0-c53c-499f-9b00-08d4c855d568 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(8251501002)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR02MB2732; X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB2732; 3:dhz7Dvq/g+E7jAgjdyAV7gWJUcfYH2dIb1k2l0RrQlcoyX4zrEH888OgU3CP6RDgEnpgDqq/npUJH7bNDd0x40v+6XRMEoC5WzhhPean14fe9FUImDA3nmc86aBRF5HOmeJKqT6Ue3OPH6R+j6wW/WZOXWaW8cmmWej7RnCGN3pgIblr5/BCcaFxuNr3h1ssog3OJWoDqzuCd/q2C3Orl/zoC29VTR7PEcnkKtn9bWNyK7sA7kyQgEC6dKg02Z1MJaovKUNd+eUTydQSEDabxvO9VhK+7WpQ53YpH1d9U0Wdl1EKrhG+5zfvNNwjs1255QyHED3nYR8SyQqtkGXVFJvChmg0dHzvbTNmNaFHGWfWmlvvVlnEzvKblsVhudDe6xsOHlgT54f437msPZjgPDM5pw0tGrQq6+jvzaBoHWx1TGLzCKIXQaIn7oLNSQuDBZmAgU8foHoU1//dpy9keDod70LnVSicnuH1Zv1VpXFISOJfj7izEj/Dx6haH1rDKNSQXbGD1/qgw6HgmSClm3r8XfhI976ufzjItPBuqRNiPbDzvZgRiUj9xiL0b5vymBSmLPxvh2btYlVAirSYp8eikVMOX8IbuE61W3RbjbrPwpDdS9wwUxES9Fvw/SdQxcgcYQUez090TkUOOmVpESQWYhQiD7ffb4c3fjSzMnxR7xiz5hzrPTT70X3V9r+TA0+zbMrdpKy2ZvwU9gCotqa6gke/YKtFHBOV31ZbLZnS2Or65DgLgeO1ivC+G8zfd2Lk05xhIEBRSCJqhb1hGkOz5RgQGAZhkwj4z9VKj6iGfLiIMd7c3YpWmbApmp9cklLTh3pWBV6jGphNP6G0Zw6uashpmBZIe3xgaWV6049n7lC20szUPY4B2OAeO5hFAEREV3PYs3Zm3UAO7nD/DAvO8nh6OI04fY8oeWkJjrg= X-MS-TrafficTypeDiagnostic: DM5PR02MB2732: X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB2732; 25:GdU+9qDRDw7cDsVntxCQ+C6w1Jzme2oq2LWNZuSPwWn714RFnFsF+Lj+SyLIS4k4kqN8LxXCHfAMHMurYMOLe5Q1ZZvaTgVGDFfoQKGWI8upnrjAtUF02jN37QOE8RgO8HVBo5w4aA22E9q5O4C/zN5LkkHjPJK7cIiuCVB5jIyqH7i4Lg5xxR314hOLAmC95KdFC6+V4Ljx6Fwn/PkciN/epRR5oucNGTmumnusxl033NK7H3WSYZTgKF1tfhiX1ljf52BCdrXZNdE0Or+IvcBGmfATpNP6xGW3h9DbLR04o+q96BpoACud6AR4FY11Kl+HrrQE8mMJCWUtcGUKp1TTUtCZgSmpgmz5XNkogLvJ/g53/tWUtpBDjioxLDFzCQt/X+sVBHAte5gzG4lp73FjyxflBsVT6cXNc9uUARqdXOCB4i4x32xhbwS8M8iINiN41ZsDR6drxIeFbuIheYIjD2MPMjDdluJxF6b645s8sZJvscbf23ISmNxxdvKuR+bddl/JX8bcJBkthCxRMN58KOhBZCtFfbbIc2rmNfg4Cn+HhUMZy/1piV45LtxdtHaybQughkW0zgmcT8QLf/qAJhQX7vOZfVxZe8vDQ94x2bTDRxXCmfDkKjbQvs0ygLcXgZ0jwiMzK6hPDHTIhwLNz/So4YI8AcLZ8WjVaxef8lU74GlEdbfOIaX5w9Q6vwFocbt6otW1Va+4Y5aSwEdoBXynMUMedHiM9lId1AgSSRdO9JNpkY6EBVx1z4sCVNldDs07cgk05B9xlGiDUzei4Ks8U5T6DunySboUC2d6twJcbB70QX6zyzsXFv4LpkqTTP3KzV179CQreopIJkr5/3EUsJewJJSf2cQYfRLBGU1CkkAJClwwmxFP3BdIpHIAPbXxbudT+5VzbHpSp2UOIScRmEZZrJ/UzaFEY0s= X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB2732; 31:OGvNbFMiJgPynFmXIGcJ5qhbg2IVDuoUbiQKLkLd9sUCFYgxxH6Mqt0cfT3yDMarpymnv77QDqXF4aFX/lOwnFMM5n2HjMuYo9U+xxFxXmXNc2Trq4mcH39AZjx74T0XcXoR93SOqGUDlJnd8nlI8JNae4jeltPwsqugyu4vPkf79u1lenkAD+7uI2R1mSJk9Jcg2nz9H1oNxB0QLKpz2hrSZkYYMBM07s3LXO5KGcNzDqccnuO/trkhvneFC+iZO4XNNB5EfrQxiLe6bOfqZkok8NQfOiizFclrskXZMu7X+1mSlCUWB35qWSVIwGozh+UGaxHoId6ocP9J/YXB6nZn5uGpfYokTG6pHmtkjwU8cMEAycGG61PPa43oEtqnqRNRjN0M5DFG2/ANkQiDFnTw3W4ei7g9710reiowJeeTefm83tXckmkyhY18gBS8c85Ac7ymOPXgm8grxy+aJvKavqfAtsLvIruL3gcbpgCmQ6lkg3dakgnH469onACEJORtMqneFXN+PH5NjPQlBwbL3xngy9tlwPL6Cl8UzTl1+udY5j8VHZL5Kz3w1uyiCrJu+0WH94qT3JtP/dtwoHhyAtcasnMMumBsKdFRebQtBGQZ7nhvQOmaabbtjpaYkB9neqJFYanV/yGxdhe1cr1D7rtY5V1N/+iGX0ERF9w3jDY9oZKbmUiY+YVB59avWEpk+ZZd9XZ+iox1fMIOSw== X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB2732; 20:YnvJmWCdwv9NReFYsymakn2JtdIOkIt/TNwX4wr4NGh68uNuQNAjGn89Wl1DhG8qJsOGwU7iEG9B+N3HibTMUhzT0b+MNulrSqDEfLnJFFTaN2sW8iwcRq9e3o+k8EcdOYgKmpOA8gI3bpADAIGsJ6rK42DBxJx3jN0/KrBXoVuH+DdTkaPfFuYxzWMA5LZa6KTbJw1kuhELeLOwu1SIOE5Rg/chOFZ10W/x3xTRw4nTDHHeXcAcsAwB4BNu0fD+iUc4Pi8rwvXLiFHll5KiQbe9MPjkwq7pFCV3mb4klpkj4MSnCkCEsgLX4PoLz97nx26cTE4+0MmhOaKz7Nv1ffPWuxWX0hhj452IcfLmJZyvxAeu1I/ExW+YL1Fb5xoxPtABP0Pjpj1kb/0qqbMFur7AtIi0GzZLBZvajjc+eOJL0jXPlJUeaOHn6A4cO16LJQpT5PR9jzC0Q3BLXpseNbVJ/GnFiVdobyCGoZggdKuI7pEmw7jsgxPjMVUY6sFM X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(192813158149592)(211171220733660)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13016025)(5005006)(8121501046)(2017060910075)(13018025)(10201501046)(93006095)(93004095)(100000703101)(100105400095)(3002001)(6055026)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123560025)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR02MB2732; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR02MB2732; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR02MB2732; 4:kl/+zU4HQzOfuee7tWK2j1IAG5LI/GggEwL994Q3H8?= =?us-ascii?Q?+sdduGRIWQr99F7B6BpxvxomyauYBygBenncXrM7Y/FQq54713YTuuDaXypA?= =?us-ascii?Q?Llmm0ZRQ90jLQZQqiiOzGgiD6ZFkEyyyD2GZOYF7vFVji8IxFURncelfU4vb?= =?us-ascii?Q?0onxOeshsvD6EwXjZWbMAPyB+xPoOFGDuv3mQtVzltQ1AhcNUbCDmiHBEwsq?= =?us-ascii?Q?aC2/Mcbi2yuHiElb3ZxFfcUeoHbLHQdS62SR4RwDa3e1MqdhUowKf5jk0KID?= =?us-ascii?Q?7KuULsDlGsikD7Dyz0w0nSWydV/fur+UWpQXbRPT9V7pUCXdSX+YKZIDE77T?= =?us-ascii?Q?tctyBUxOL6B+wz+ADkNvjZmT+XBYlpXgDMePn4R3sJhepakvHL8vbcvUZZyN?= =?us-ascii?Q?E+4o3rjS9RavZblT5oCA0uJ59E0+is0LgYgdHdkx016Hm99vwuBHboualpVi?= =?us-ascii?Q?MPJ6XLTFfh+cvMtnOjFl4+DJYgNzNnuXaJp+mlkcVWQ8SWjoIJmdX47+dCt8?= =?us-ascii?Q?ZJBdUo7lPiFX8HITNtNZU3XwL3zn5FeNZs3aGuMNjk1DN2hhphaCJ1Qg2tDv?= =?us-ascii?Q?LHYc8D1EtB3hAbWobVBw+4EsbljjIgLmTQwzup8LIFzpoXoxoBDuq7YTa4kU?= =?us-ascii?Q?olqoxwaHa0DX4ZN4gOcH6dwW0iNwbXSdoIYNJ2maj5JeqAX26S4T/Ge0UiiB?= =?us-ascii?Q?w0zpyV/zt03Q7w5B02kQceBrl8l1eqP6Z51gqUHjx3iCOmRACOvWvtU3yWGX?= =?us-ascii?Q?1h3X5q9bn56juS07Md9H7fTj3UKChiSEaZR/Hig8e+HrggwQDUjE6f2z50E3?= =?us-ascii?Q?VDtVc500xGdiFfMmtVh2gyc0Macw/d1Rnj1ya6jS+exko4fvm+lNFE2fbpK5?= =?us-ascii?Q?8BcxqpzuWTlXKxhG1P13IWQrGcKf+fcJee7DupVcafEXECweZ58vbR0bTan1?= =?us-ascii?Q?F7XDgnnga6n3Sa9idkmxyFatxdZ09SPbBizm8j8iJ2qLhesXU87VaaleWF6e?= =?us-ascii?Q?Fn6I17cnMGdbNCRwazj8+ZTv4bXkgHkMTF8KD6+uq5n3Sx2RdK91migJvlA6?= =?us-ascii?Q?gYvDzlNHooZuqeCsWWrHRGfS4zb3FFjJscV2XzcJXOMUR1NFqMTZ1aEWqAtP?= =?us-ascii?Q?6MX/bCARsHW9GI5hRkhcLYIDFqzVeCS4jQihoblC0EREtoj1Pqsndkgc1nJh?= =?us-ascii?Q?n5kNeib9mnaK9dQvEr5o0XDCCiXYc5FA9hW+Jqq2/kVSPhc82pEbH0r2VrgN?= =?us-ascii?Q?wOp8Jx9pZPtcUR982VQKhi8NIHMNeRpf3jonIq22mR0ozS+jcosDXfcpd0Nm?= =?us-ascii?Q?HOTFFAYq8B2H8WbhhhVTk1hAbpIaFEwPz9gls/KZF8NUwzQWge75g9Y85rsQ?= =?us-ascii?Q?yr8p+qAIAWHMKJpfVfjHmam7Q=3D?= X-Forefront-PRVS: 0365C0E14B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR02MB2732; 23:1qPwGfIx8EOv/O2UQ+opbjvYUTQEqhaWzQ5gfUbw6?= =?us-ascii?Q?ne4AWEkLyTx0kcBORq1WSg9qVzDIeWheLRfoqzMZtWRx0Gf/x1fjj01Ejtv4?= =?us-ascii?Q?B5lLEMqAPcRe+L4RuWSVAmeCwVELsQg7MM62/3/sanPtnXhe5Y6fttBARyvm?= =?us-ascii?Q?nGlbg4T63NLwCxILcXROu75brkKVO5pKFlBR4GP5db9G7+a+viRdh7nfYPhL?= =?us-ascii?Q?BO7uOdya18oH9klJT9rFcJJjnbezMoT2FpHNjvJHskD3MXL9eu33xF/ue7NQ?= =?us-ascii?Q?xBPDmoU63uNwPwWefh0EWT+J7ntxYztQ35sqUYhC+oxvmuqVmG9bURVK1LSE?= =?us-ascii?Q?tOupKgl3WG/TRNJH9+CdkYBbMsXYyphcZpszrfwfnfk78PnKaEwV7m7i0IGd?= =?us-ascii?Q?ZUZtd9/oKwnSk0mHub1KOkJBStChVzmqOdSuBXEEqX5s7EywVbNwo/MGUDrM?= =?us-ascii?Q?NSgK9GF9qK1yI7a7RqlOwJ/YqqM6alG9V8/CwhQB7c1zBbgVzpGgfDindRFs?= =?us-ascii?Q?3ZCdWPiV4D6eIYo2BSWTXXVR+UDBJNyeDEUAr6OncohUZK59XFr+vy0Ulys7?= =?us-ascii?Q?BYJ5ileYwx2XODfa8kkNflUsT303baVFk1YXUdPktsHQ6nTKoT0IvVxR0XoM?= =?us-ascii?Q?BkNDmpwSzeW0ImulDQ+Ctc4K8/4SNbXEoOYIlYNCc/nHhPC3ulOllaZ0OVJ6?= =?us-ascii?Q?NIKtfUMescG6Gm/kUhVYE7syqV5O/eOqKo146KYGw6hninHPAPNhufgHC6aF?= =?us-ascii?Q?VmAzxQbfSImaOtdpPzoimDxy2YDUdDpWy2bFcSGW/IKN2/tAQYddjToE/AR9?= =?us-ascii?Q?SYnAU1yEg6q2eCgqcW7P/eT5EISiCR81fblHKskpPacSDbmShTW/Gw+3O1IQ?= =?us-ascii?Q?V9thVJKtbXgfw2O9daFAcalMXytigy01hdXURYaeiXJ0lNMq5y1KDFCg1Rvl?= =?us-ascii?Q?WuiCsfCyRIhdRJBxWVH8v2brIQE8KCmxSfLodsFY0n3tzx6SDltRRJfT5ZJY?= =?us-ascii?Q?8gYzKYVAtAtVfrV1xwSh7oREBX7KOG+8yYt9nauFDCdAsgBBYPZLhIf6PuGY?= =?us-ascii?Q?e/eVBPqtmTfCdktmHmROqzFIsiz/Tyawz4V+m/hvAW7t4Gor5uI+gj3KJIcD?= =?us-ascii?Q?BTmp3zY3tht3nGbe9CGgTlOQNNZfdg78usuYYi6L3igRfyNvq33A0EyXaQpg?= =?us-ascii?Q?Q8Ha3WHI0+LZvatF1NWcT3FAoNC3z03etwp?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR02MB2732; 6:CN9IEtzwiqN5SQ5/5gAipTrvWjn82qTsV4AM5hnI1g?= =?us-ascii?Q?TdugsZZSn6b3D9bt2w7TdfyUwPpI8bm4DfoFotSQZKezjSfuZxp8s3tODcq6?= =?us-ascii?Q?2mNlh62vbKZbPSSMpaibZyc3hF68ZORvXgHIjyRJuPReQK3IHGMv6ES24eQ+?= =?us-ascii?Q?bUNdptaNgp0aPS0KM4D0G27d9zK4Hio15jedId9w8jTcDtBQ1y8FtyFpGK6r?= =?us-ascii?Q?f1xFAumrAl/LKKeeuZLiYuXA+uREH6XnsCUEqlXmYXCWzYiPYwIbIhYLJ1p7?= =?us-ascii?Q?MspFrQ3oTAOQMi8LxHl9WNp67ym+/N4WQ3I9AbLbkHhdQ3npZmfN/aY5+Be+?= =?us-ascii?Q?3sdosQJqMWTmDLX/v4/KLDy5oYrgvNg1z6Oxk5Rqb5YpHLPBcUSmm3A5STu7?= =?us-ascii?Q?KyTBFwic8CZYOb3B+r2314r8axLFKsJO7WpFmcVeXYVHnqDVVSuVGduhFxjT?= =?us-ascii?Q?N9P9woWTc+4KUq0a4zDe1WeWUY01UQHhfy3VJoE7zut5diJ2DsjABb8HIgif?= =?us-ascii?Q?tuI5qkrKR8U20Wv9kT9D/PG4hCQaZeLDQ/O9PeSaOgJvGJccQW+IC0hLdWCN?= =?us-ascii?Q?WKXxpstPu6YedgY+0SeTIxiOOCRJumRf6Ct+nwKHqfcAO2sltm37UhQjHaeD?= =?us-ascii?Q?0lJV2g+xHimgGu4GCPp/Z56j7Sp90iHvrNHpD2QqdlqNQBQHqu7vVABD25dc?= =?us-ascii?Q?P9Ze7wO47Z+r1RD4TTy7+m/5FMbB4r6CJAUYFP9w97FyiWUCeY+KpyfG4i5K?= =?us-ascii?Q?xUd0xDm67tGELqocMY3AVFu+PLZPTa3YkoXXXQsmkmHhGk5b1mb1SdwhuKWR?= =?us-ascii?Q?1+FGw6pTjfvwMgphPW6Rxm5WLP0UfA9nELq8lc6nj5mklPO417vVb7DBNKPB?= =?us-ascii?Q?SyNWoZy0Tm2URB7tae/s3NJnlCAoJFRQ3KbBi8+9eiQolb0sb+m8ZAHJ6BTw?= =?us-ascii?Q?mlkglmRXVlh5IV+cj6mR9n8UfOb99BcoQJPCGnmcYTfdRVxJ+baTCdDtyeAj?= =?us-ascii?Q?XO/BF9p8Z35g0qVpOZPuoA?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB2732; 5:eNCen/0Y1Afi4+uZ3Yvqs3+iohCQuQ3TDZfVhumqV8JlgFKG6loe3QYoVZUEwVvmpbnQHgPYaeYkF8JXiH+5JLaKr0WNLT452wtdsRxhp0sAa5a3UOHbSj/Co1Ppt0uIP4oYL7l4dFWW8WsxFJcg+ro9VjpMqVrqu3VFydgGurJvHACY8A2y+QSZzgiOhvXGLIsmWMJOovf/FwWLPPWjD2uXuvBX/XVIV/Go9M7WSiche1vvkhrKVjLuKRfJ31NwJQuC1XAyRhjA+YZjcJ3R3ZQXdCYG6OIkDIblVtybpEai1YMsp6Q6GMXYCJte9Na07M78qHo87hrZOW9T29Hvz5j6OMVyP+PxGI+WMazbApV0vDbUOytA28TXgt9RLDR0TYM0hsbFUX2zFNDeVEZoXUVdL8b6ThjfrXEnw+VeJ+0MdKpaNCVPwnXlX7fkKve+DJDOZAVHmx5j0CFcRzwBdD85lnefUn5qfiALHbDcqhPr69CIpji7ybEohKH3lGka; 24:odl2gnrMTSWg0hEgo8Jt7PLOx+mvNNiYL2B+QV0Y3CZEXwg4H7UwPjNRInO6nDgHdv7bMwieUzmOSGOlnn83jPwy7ncgKvFz+AxO/xvTwV0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB2732; 7:cgoMtMVpEZsuZ301ZfEFwqizAFmch5ucKFcL9F+vqCKs3TWiZT3xAcyrhApBPxSEwLdXFs4W56vRyCI3vgw4O875T7s7CNmdVQYtDvR/WyZDn9AAoicQeNDLR/Ii0MYqqqZvbHkPTSL12Hquaht6FucHdx3VBa7DRhwwuA3cQyZL3ZnQmekgzJGgC12rCcZudNtVU2bp8EdX8zp0ONnKLV0kjrIVsN+1eAZdtrWRUu++XV5tsDopBRjTPxrb0dmbuMiNHmxH8PT+1mdIfc9W9UgUwl4wydeLYJaybDYWDR0PT01nrVVeT817yDQJ3BCItbDF411HzodLDQ0OoFAhmoP85Xz5NwBLLZgGnIGRr5EhWT+hoBZ1HbwRIAq1bpDLFpqhCIyPFH+apzuPFQGRMxLmu8vgizDfo0d5C5i/RQ75mx+Yb9O1Fhtlgp4xixTjEk5oZ72jXbhZPSS+NkblJ1ClX4cuV0+YXw4pM10IEFI+FChHNwRTmdWeldOKezXCXcItf3mPT1DmlfFUqsMyYt3G/7ccpfns1ZS7yW0jG5mmqacBUbStB81pXZbctYuM9DxE9MV2hjTBrW2F75GbQMaxrAm9gEINYmw9CeS4bN64quIWVmKuftiTvrZ+jHJRHOejBvuo35Q6Xe1t8S+sRBDF0rxVhjkJ/EsGE9SyRnEdWp2U6CWRRrL7UUfb7Re4mFOqxfR0bmveN6WZ4hXNFebi9k/J5lN5B5M+SCEIrbs5EbYmHTqw2HO/awn+AwJio9lCSRTrvlbsjFk2YfyGLbGH/DSCd+uczlfIKDqcqKQ= X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2017 12:10:34.1135 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB2732 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.65 Subject: [Qemu-devel] [PATCH v3 2/8] error: Functions to report warnings and informational messages X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, philippe@mathieu-daude.net, armbru@redhat.com, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add warn_report(), warn_vreport() for reporting warnings, and info_report(), info_vreport() for informational messages. These are implemented them with a helper function factored out of error_vreport(), suitably generalized. This patch makes no changes to the output of the original error_report() function. Signed-off-by: Alistair Francis Reviewed-by: Markus Armbruster --- v2: - Don't add *vreport() functions to checkpatch - Maintain original comments for the reporting functions - Don't change the error report output in this patch v1: - Don't expose the generic report and vreport() functions - Prefix error messages - Use vreport instead of qmsg_vreport() RFC V3: - Change the function and enum names to be more descriptive - Add wrapper functions for *_report() and *_vreport() include/qemu/error-report.h | 7 +++ scripts/checkpatch.pl | 6 ++- util/qemu-error.c | 102 +++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 109 insertions(+), 6 deletions(-) diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index 3001865896..e1c8ae1a52 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -35,8 +35,15 @@ void error_printf(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void error_vprintf_unless_qmp(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); void error_printf_unless_qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2); void error_set_progname(const char *argv0); + void error_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); +void warn_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); +void info_vreport(const char *fmt, va_list ap) GCC_FMT_ATTR(1, 0); + void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2); +void warn_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2); +void info_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2); + const char *error_get_progname(void); extern bool enable_timestamp_msg; diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 73efc927a9..60b1f320a1 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -2535,7 +2535,11 @@ sub process { error_prepend| error_reportf_err| error_vreport| - error_report}x; + report_vreport| + info_vreport| + error_report| + warn_report| + info_report}x; if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) { ERROR("Error messages should not contain newlines\n" . $herecurr); diff --git a/util/qemu-error.c b/util/qemu-error.c index 1c5e35ecdb..c557c6ae47 100644 --- a/util/qemu-error.c +++ b/util/qemu-error.c @@ -14,6 +14,16 @@ #include "monitor/monitor.h" #include "qemu/error-report.h" +/* + * @report_type is the type of message: error, warning or + * informational. + */ +typedef enum { + REPORT_TYPE_ERROR, + REPORT_TYPE_WARNING, + REPORT_TYPE_INFO, +} report_type; + void error_printf(const char *fmt, ...) { va_list ap; @@ -179,17 +189,29 @@ static void print_loc(void) bool enable_timestamp_msg; /* - * Print an error message to current monitor if we have one, else to stderr. + * Print a message to current monitor if we have one, else to stderr. + * @report_type is the type of message: error, warning or informational. * Format arguments like vsprintf(). The resulting message should be * a single phrase, with no newline or trailing punctuation. * Prepend the current location and append a newline. * It's wrong to call this in a QMP monitor. Use error_setg() there. */ -void error_vreport(const char *fmt, va_list ap) +static void vreport(report_type type, const char *fmt, va_list ap) { GTimeVal tv; gchar *timestr; + switch (type) { + case REPORT_TYPE_ERROR: + break; + case REPORT_TYPE_WARNING: + error_printf("warning: "); + break; + case REPORT_TYPE_INFO: + error_printf("info: "); + break; + } + if (enable_timestamp_msg && !cur_mon) { g_get_current_time(&tv); timestr = g_time_val_to_iso8601(&tv); @@ -204,8 +226,45 @@ void error_vreport(const char *fmt, va_list ap) /* * Print an error message to current monitor if we have one, else to stderr. - * Format arguments like sprintf(). The resulting message should be a - * single phrase, with no newline or trailing punctuation. + * Format arguments like vsprintf(). The resulting message should be + * a single phrase, with no newline or trailing punctuation. + * Prepend the current location and append a newline. + * It's wrong to call this in a QMP monitor. Use error_setg() there. + */ +void error_vreport(const char *fmt, va_list ap) +{ + vreport(REPORT_TYPE_ERROR, fmt, ap); +} + +/* + * Print a warning message to current monitor if we have one, else to stderr. + * Format arguments like vsprintf(). The resulting message should be + * a single phrase, with no newline or trailing punctuation. + * Prepend the current location and append a newline. + * It's wrong to call this in a QMP monitor. Use error_setg() there. + */ +void warn_vreport(const char *fmt, va_list ap) +{ + vreport(REPORT_TYPE_WARNING, fmt, ap); +} + +/* + * Print an information message to current monitor if we have one, else to + * stderr. + * Format arguments like vsprintf(). The resulting message should be + * a single phrase, with no newline or trailing punctuation. + * Prepend the current location and append a newline. + * It's wrong to call this in a QMP monitor. Use error_setg() there. + */ +void info_vreport(const char *fmt, va_list ap) +{ + vreport(REPORT_TYPE_INFO, fmt, ap); +} + +/* + * Print an error message to current monitor if we have one, else to stderr. + * Format arguments like sprintf(). The resulting message should be + * a single phrase, with no newline or trailing punctuation. * Prepend the current location and append a newline. * It's wrong to call this in a QMP monitor. Use error_setg() there. */ @@ -214,6 +273,39 @@ void error_report(const char *fmt, ...) va_list ap; va_start(ap, fmt); - error_vreport(fmt, ap); + vreport(REPORT_TYPE_ERROR, fmt, ap); + va_end(ap); +} + +/* + * Print a warning message to current monitor if we have one, else to stderr. + * Format arguments like sprintf(). The resulting message should be a + * single phrase, with no newline or trailing punctuation. + * Prepend the current location and append a newline. + * It's wrong to call this in a QMP monitor. Use error_setg() there. + */ +void warn_report(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vreport(REPORT_TYPE_WARNING, fmt, ap); + va_end(ap); +} + +/* + * Print an information message to current monitor if we have one, else to + * stderr. + * Format arguments like sprintf(). The resulting message should be a + * single phrase, with no newline or trailing punctuation. + * Prepend the current location and append a newline. + * It's wrong to call this in a QMP monitor. Use error_setg() there. + */ +void info_report(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vreport(REPORT_TYPE_INFO, fmt, ap); va_end(ap); }