From patchwork Wed Jul 12 13:57:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 9836805 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C520860363 for ; Wed, 12 Jul 2017 14:13:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B39A528516 for ; Wed, 12 Jul 2017 14:13:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A56712854F; Wed, 12 Jul 2017 14:13:25 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 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 mail.wl.linuxfoundation.org (Postfix) with ESMTPS id AAC7B28516 for ; Wed, 12 Jul 2017 14:13:24 +0000 (UTC) Received: from localhost ([::1]:53543 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dVIOJ-0005NP-BZ for patchwork-qemu-devel@patchwork.kernel.org; Wed, 12 Jul 2017 10:13:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42139) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dVICU-0004SQ-F9 for qemu-devel@nongnu.org; Wed, 12 Jul 2017 10:01:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dVICN-0003WM-Se for qemu-devel@nongnu.org; Wed, 12 Jul 2017 10:01:10 -0400 Received: from mail-by2nam03on0049.outbound.protection.outlook.com ([104.47.42.49]:58656 helo=NAM03-BY2-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 1dVICN-0003Vi-EA for qemu-devel@nongnu.org; Wed, 12 Jul 2017 10:01:03 -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=9FIMUOAoSJBM7S5NPbg6QAHK7TatFuht7ixgoycww58=; b=b9RwtRxFPDIQETL1aAsmrw9lVr9YVn+alm7jG07RcF4iN3xX/b7rhju58oQYNWdDPzEwbVFIuYtccMh3RjZSvY+A0EN2eEdzdiIDTNiaIm4/2dLvhSRY8cLEFVsDBeQ29Hm/X1c6ine1yc/ARqh0+c1t3H93eBzwwJtKwrWnLqE= Received: from MWHPR02CA0052.namprd02.prod.outlook.com (10.164.133.41) by CY1PR0201MB1594.namprd02.prod.outlook.com (10.163.140.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13; Wed, 12 Jul 2017 14:01:00 +0000 Received: from CY1NAM02FT019.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::200) by MWHPR02CA0052.outlook.office365.com (2603:10b6:301:60::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13 via Frontend Transport; Wed, 12 Jul 2017 14:01:00 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) 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.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by CY1NAM02FT019.mail.protection.outlook.com (10.152.75.177) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1240.9 via Frontend Transport; Wed, 12 Jul 2017 14:00:59 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:53261 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1dVICI-0001Lx-S1; Wed, 12 Jul 2017 07:00:58 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1dVICI-0003Os-Ms; Wed, 12 Jul 2017 07:00:58 -0700 Received: from xsj-pvapsmtp01 (mailhub.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id v6CE0oHR015017; Wed, 12 Jul 2017 07:00:50 -0700 Received: from [172.19.2.220] (helo=localhost.localdomain) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1dVICA-0003Ml-2E; Wed, 12 Jul 2017 07:00:50 -0700 From: Alistair Francis To: Date: Wed, 12 Jul 2017 06:57:36 -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-23190.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.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39410400002)(39850400002)(39860400002)(39400400002)(39450400003)(39840400002)(2980300002)(438002)(189002)(199003)(9170700003)(6666003)(63266004)(4326008)(2950100002)(106466001)(2351001)(6916009)(626005)(478600001)(5003940100001)(36756003)(110136004)(38730400002)(47776003)(39060400002)(33646002)(77096006)(76176999)(50986999)(9786002)(54906002)(50226002)(8936002)(305945005)(2906002)(50466002)(48376002)(5660300001)(15650500001)(36386004)(81166006)(356003)(189998001)(118296001)(8676002)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0201MB1594; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; MLV:ovrnspm; MX:1; A:1; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT019; 1:FsFrfQseGK4cCOCEweCjgH2txUs9+Bu0wb9aTF47pY3f8nuTLS+4sP5yMgmpUnR2ZaNG4aXFrOaOtyq16Pd3+SqSgDrljarb1YGVJq+o4zYF2DSdcHem9OoSplqcMYwpcNuagFYDDiLzgVLXiG/X80/HeW37Aqqin9KZcx9WMMEt4BxkEtt/65r4KzzYc+l8SFrgzw4h06wtWFZOV/+eYtDdgajZQV1p69ufnKw80nLaHT8nRNWEuSjnXxKpEf6GnbtyTP4FuiVTKUtQw7kJ/B1YObyNI0SFNJHNrBx91+1Ql7o7taIDaHdndSXIUor+HIL+ldjlonk/rx27HTpDMIMS5KffeQiXRpyuYKXrl7+B1V8z6z77qZmvetlYYR+vSInpGzjMLtHYc1GDPUorZ2rMgApsVeMjxMONCQeDVCs4juM5Pf7p2G7eyC7YZEzw+JLc/koV0tzV041ChVio9FYVZaftOG1kfUDZwbhvAOoEMQYndx2dQ2KMKtBJceJj7m6ZlhRpdrRPaLYpseUD7qAUK0f3OAY8Y74icP8ym4aKlsz8p4zucuk2n7GNcSmr7SkPZ5z1Nn9m1VnPREfhRArzlvmQiRG57l6mIA0KwPOsEqwfA76UIAFgYRamahd68Cr9IRQx0x4CVPWYqWjZjnydZHiXaDJLzOI4N19XyAIZqK3Go0JJRzS9CPSF6kjRdpO1QJoJJ1g3A1UF/z6KeG3pFSqsYMW9BAQBKvgnEXF6sKeFxgm0AFQa0LollFYzRYzQkxzVX613bGmQe2MMhTNi4CsNELnNvU0lgnBt4FCM8dp0wpSabzyTlSVPPfFi2CEf6xBHe6X4+TKh75GPq7Qm/og0bNQBYUtVTscocVeBI9y5KFNR4thKeZq755U7opfgARHFNkazy6PS6vpdOQ== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 786ababe-d4c6-4cb9-5d89-08d4c92e6cd2 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:CY1PR0201MB1594; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB1594; 3:i01GBPNYmKVVLxQwl1s/pwyUwxQcQmxX4qE6aL1IOXa9rmTXwnH407Wt4WK1lr9c+I2WXiYelP8Haq48vvKF5oYlHc8LqPYB+/42d2hSIebvhuiCNb9YaQkQZ+JiZ3bkoVLXc5vkLeaJAxlTF/T3tCbFg9OwoqnDoAIXjjiv6VFDqCRW6CHnxRakxFbDT1IIynJDssZdIjsK84BtHdOu5t4OQXsM1+yY6SkFW/KcJ3Zu2atiMrSbWOOP9x264d0QfFcmU8N7rTpThIgEGf+8sEGEHGNsg7XCMHsR4wLQibcQHWZ/n6JTA/fkP48R9z4+89nrnKsxKRkzqgtRs6NmgxSUUIFvPUQXrIdI50oOZgLsRTsQKNcdt0SIaNsS3a7xP4xK4zuTVLQiyA/dCgvil0XZTyDog3vgL+YjvuJW/TKALVdFCDNsDIqZtDvUxYMrEguTEoEg/I+BTNEKb0SiA4ydzxEPH8OJ/gORphDcZDSIj8PWEZrK4JQv/i5Qiftk8fb3DLTqqgOPSkxUetx8hqfhDeGZA4ZGv2aYZzTh0QeG3crhZ0L9dPskdwGNkrkgpg4TTpUidShMHedRNrFH/7zHQkvJt2KBFHG2mi8kwoJyusFEBHOrORlNQkmWC/zhpYBlVieqKiXFgF329f9rIJaYGRb9QBAJsuHLtYlp2g+K68yuNC9sx0Fp6XS41KR8lUvl8/Ipmla39reNYG+LXJwELIVMCRKA7mi7EvcZJ6VCUDdPzL0LSmYPCBdKY7r4U2lSTvIJ/UHu0mUjtFWE7QLJEUuBrQtkUABUk6G6N6Vd7dLGACqmb/hFrr+c3ondquRTJp79o31pmjnuZ1v/ipmha/eTgoiwFss2WbR4P/m9/9TODi+iZSqnAFnt9lncDDsa7krtL607FBoYrgaUzP0addDKFYwumM2DSlaj+eKLgUMTFS6b3rnDbxrp3Kym X-MS-TrafficTypeDiagnostic: CY1PR0201MB1594: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB1594; 25:HSNucSQ4Sa8zZ0q6/PSY9bwZWomk5aYHYGBA/VtpDRKYDwZAd/in3h5jbCT1eoS7ei3r1+swul8iquDN+jPQpom+hi4XDYcilkSMCAXSH99FDGxEiaaI5e5ZdFnp66snT7X/cuehSFc/rGxttKcOsy/2XFmImDo/YTjcOEFUOlKXdNN/Az3S939+oLRc4/Haj8lf90e0Moq/gwN7o38qk+jMYDXK7++BpNX0rNFuAdlC3bD4zvu1nm7UEnJTbNeteSG8zqogGgtGoZqP+88UKsfQ3wqOC02OXmKwff4Gy9LdxXGNOf35NflfEj/urtBAx7YKQ7TEVyHaRKTygFLeVZ52qrn72il6zQSOMhTUM/0UmrcStIPYXlmmCYAiOAmKRUMn2UFv3JmNyQiiH1lmt5O6NmjIb9zUvEeoAbvLS8AEi8CfipaLqkbqDnR5b/9YeNS55VY58xEdyaxyQOF7DNVAjAmj8cBZQfSY5TcpGYHMP/Bi8pcniorL4rLLXcPaSFrdbGAsKmDp8lxcU1gyP6B59eDWwTmw8mhj+F7NTro0WqTDaE197j53+ntTb/MfC9hyr4cuFEljZrFu20rhT8u3L4w+rsG59WJfDW7xpr+V+QBrHRpS7ZjxXmcdidy9UWMr+Em1osep007Z9btrI8A73OmGjm/8HDHEQfIfZoJKfF6KkV2T5joekEwQjrs8sUGWyKwvaUBCqbeRF3CqCKPEdyK+82ZzlW4c/gQcyTYQ4+jifY5+PcaJAq76dPeiBP9yVzMJtUxtyBi+plOIjMiwEt8j6VGDGiTA3CF0IkXPK5fOCZu1ak6uicOtbKE4LK11E1u0TrywGDiXHD+HflTy3HBd0ARNjtnXvqihC7mVkWYVE8MV6OVggEKXea828KClc5Huvofk5W6ooF8eeqALHrHS/mnOB/y0q4w498c= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB1594; 31:+pfPOVbDgx/CXsGEii8krG/eG7vsl4fPWBJDJgqngiIxxg8RVhygvAH3xjSvIjqSs3nvtGRzwSGG7ISNBw8bzFK0xNVPboIYjPQXJ14859FLHvtYFCV6ZPYmkvLIQx8mzpVE5UFxyPHgDP6LNavzw/X5kUrd7T4OOVlJrXhxS9ZR1U1nxqxdBE124/zuXb/AU9hLuF7FP7pETlKcYFcCNdYb+NniTnAFPOaC9E05UF+N+7a0txVBh17hyaEYSpfd5KxzyeawyGiSsfvxjzSdKNlF6VgArTNocRv35kClQwMQiVP4uyduAddPqnCe/W9Bku57JoU05IwdDE8l/BR6PyO/5e4Ci5l0sySg+Cdjuf2QaLULapTLvOFa90f0n9I3dDDdmLbtOPHUs/QIoQBD6JiAyqR6ZXops3G+Frecx/x85sM2Cf446iEoWkBXvWy7JNHjGaAS8qG+EHXG1vbwAkZCylxKRaUNvM4rwcimgRUlA7Vc7X3MFjz3yK9vowWwHlH+/DUmFs1wdafczF0owVnRWI/DpDhVAo/GgZpzMfOrIQtTPt4WihXUhYgoCj4FeO76Mog1jgAlVf2UE8QBc0FffBrGpXG4vroP8sCLqgqrloZN7qILR0+TUfeszutKfd2fMMT5zHZk2nqRDy9mHGQnwSVDIB79SlvPFqVICmc7aw/y+6T3G/bLzn4WqZJ3ca7Ql5uZLTedp4z6TUuD4HP0mRI/RcpJMD0bfuwNrgA= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB1594; 20:g6S2g7Hg8wGcXneFhvifzMWLwCQoObCyr5LVNwVOxySmPXir4QUfIrQJZ6s0Dq5KOHSTwdcMgaIN2Rb0+cBMYQQ72xgGQRUW+FpDZ83RCjvMndLKcJpppO2AeWmnR9Za5VM2YZ+NWzCKOwLoVjlYYzkiRWkcA7lPHkWpzFLOqNMwL0kk5AGVk2GbfEKavAbMDBPBoLu/uwAnihnYPmewwHgHmxfs/5PJ2uFNW+hEs4rlJ2Nsj/Z05PPqWiEVC/C4Cn6avAo0FCWV5si2WmF3/YE0f16TZxsJOyGSqaEJEQGcxNkcorKQEdrP/Xp34/juFWEH38wkLCRCi4onyc9TLcYAleLz3WlovAuPSmljeIKgqJ5mCLcAr9ZVbpLsP3x8qDP9wkLQkvRWXvwsH7az8r7KtuT98mBnHBfAk8ymMQTPzkaVlytUjOK9VpFXX+kNVfKjLk+AhIgy//vXDeYACZOvfygQ9m2QezR8M9FJG7OoxdK1xnSg7KTd0AqzLJpS X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(192813158149592)(211171220733660)(247924648384137); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13018025)(2017060910075)(5005006)(13016025)(8121501046)(3002001)(100000703101)(100105400095)(93006095)(93004095)(10201501046)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0201MB1594; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0201MB1594; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0201MB1594; 4:RE9U3uqJ4D19Eg82Zpq+awrVsiFrTDX2YEx1YDbp?= =?us-ascii?Q?qURtPm+lp6+eKx6vgAHRZUdnqwRzB5g3PS1KHNUx1rmHGN10gIS8fh6za9PU?= =?us-ascii?Q?iw96d4E8fcK1Ze9Q7xlFqTj7fTZWkliIM3SbNOE/zuLvb6Gg/mSI1ez8PgL4?= =?us-ascii?Q?MyAlUvfA2fEmNIbi6Fw1/s74B8JCTUkz/MOvJu52mBiKtgBxEpku1cUVExne?= =?us-ascii?Q?9EtwxJITa0aReSeY11RVIUvW4Y0ZGciBqmGRC6nInzreciV58ns1OE4rdl55?= =?us-ascii?Q?nei/lVJljjsE0wFT4cI0TJ9/yCpMc1aYviXGtsYaKPFDp97qj4tpUboA33wp?= =?us-ascii?Q?Oj+/AB76WDQtZg8LK7CRYuK3yfQ8DO65LgmBVh9XqRvC1Ry1I3fpwlBrFWkG?= =?us-ascii?Q?37E2/ge++uciMJDFHC86KPHCf0eBWWfREYNLKMcHLBmRS7TGXLa6sZDcEbnt?= =?us-ascii?Q?MgV8GVIVvzISd05cNqbN2EDIbKANCF7KzaIj5hQNOpstTqhUrRVEdJnaOUqw?= =?us-ascii?Q?m5JJTr8+WOVRYuMp9yGTvefM2C7qjoQfiJpGsAMuAKm3/1W5eLn2KMl7rh2b?= =?us-ascii?Q?rt+gpdv2Mj6cPM2GrhhU3C1pe65KcC71a2mEmDkCB6l0n7cZR5V2Bshcc/53?= =?us-ascii?Q?dZ03TgQk/Yjub6iklefiin07Z1g7MENSzpEhuqdhlujg3IlW+pQq/0p0liX1?= =?us-ascii?Q?v4lOinTg7/ZcvYtp3w8k/YxxcjGQq20DDtId7By03CBMS342M41M8GZVpQA4?= =?us-ascii?Q?PhhL79HXvhzF7oryOILVOpyZWbOIk0CHYt5syTBdYKe3tVOfMYOJiYnFMn+c?= =?us-ascii?Q?FbRptxw+6U5hYjzU12A0nex1is8XUokjgprTchtCtKqcVPy4lkwbRHkQ2iCh?= =?us-ascii?Q?/O1tggXAjH+z+Hv8C2gu6npuWhwLPlUzjL7hiqvgQd/oX2VnSloDNJKGoTPe?= =?us-ascii?Q?7A1W3dfVgHAnBNTU4xrVIhLvnsWKjsVWDEbQZa/j3mbrO2CRLzPwwarw6oxW?= =?us-ascii?Q?rPVEnCo1uHsgXvPNOAoBWlzerlT6OdYb271MOG4SgaLzyOh0Kn3NCBTiBMSe?= =?us-ascii?Q?dsyxUsAefJS6akFNGuLw9h6+vifkeEKV87nWMkq+LdjhkoycaN2vXqJ1UXHh?= =?us-ascii?Q?NKU3rLc3nw4BMCugVzY7bRMxq3da/k6rz8Hu8+l1wuzd92r8qUj+VUa+iuuc?= =?us-ascii?Q?KCZFiS5DgYwbuQSLBLXCa62PsZiazyV8VjtOyzFGNS6eeb3E+qhE9lwpfBGF?= =?us-ascii?Q?f2WOsRQx+Ekl8EGgQvwZOZ5RoyLq1S2VDwsXM/eeYMvNXJLRnyRP4zZ57bkf?= =?us-ascii?Q?oAZMR4arZh7gufaDzfyJ+BYU4J1eh5g6hcVFNIksBW6R0D090To/rVjFfJYk?= =?us-ascii?Q?iAOFsPGRhusJ2QK0JWazxjRhq6k=3D?= X-Forefront-PRVS: 036614DD9C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0201MB1594; 23:laW113VEnrgIlmYDNLnOMV+4sLsVgdxbCQgh0L/?= =?us-ascii?Q?UEbOKdNMrnCg2wx/Ls+4A/KKCf6v4XU9hcwxKGuz7cc2D4J4Hlb7yNflg3rc?= =?us-ascii?Q?u1CP7CJuTlaVZq9r3wmE6ry6aQ49dQYc4igjXJGOHt+eC4FT8kritxCsXR9B?= =?us-ascii?Q?1oc8gFivBeWF7QB/Z75QimkPh/YjBIYnwgLI6ityQKRgO4bisi+KOyWzxBKh?= =?us-ascii?Q?2zNUduBfPZt1wo2GOH+UBJu2TWZUZgqVKTpx8d56sdZzpA8/3J9zoXm0v4Dc?= =?us-ascii?Q?Zxreh7F6qhWmSG9pgdw9Ab/PJQtRjbGMGX/Z4BpNW3mPmLjRrOzYp6J0IB7m?= =?us-ascii?Q?pjsbcHM006X7LoQcVV7hpMLA4PX9gpxagnfDNFSDuNheMK1d49jK7V4lDKp2?= =?us-ascii?Q?jNmUawSzlOsPbMH1A/mnPc8guO9UiOUpqs136dlKUUc/c2EVXowsP0DEN5/b?= =?us-ascii?Q?J3fDHOU37aquVKIP8WY1zIzh3U6rdUkWC+EGRA/7/dr+vmPETtJG3YFqXbF6?= =?us-ascii?Q?88vYAxGy4ubTD1bChZCH5jXVKk2y9JUwnh675bWCiV1uSkLLn1GZoFE3FZEL?= =?us-ascii?Q?hR5SJi5dn6gG8xoWlzcdYECJWS8DNx8G8HR66uS2wcNL7uGrY86UwMH6FNli?= =?us-ascii?Q?NAUA8WkGp7YSPxoTtckfSpN6jHwE0Hbrqr1IZ43P0EQZMicLC4EHKsxTwzgg?= =?us-ascii?Q?sEzkVDZ4ZkGDgzW8lDu5xzpZIzm+jCLckYaOcmBqnjuCBzSQAxt5nyPZDDQl?= =?us-ascii?Q?SPKg8TXmO9oGo3XkchX/WyuHq8ZcxGk94AeWGZxJPJiCfbKJTuJVpdkwRwJZ?= =?us-ascii?Q?4xXoqDE/OxX0A01v3y5WklYXD274dRBYm+FUJMfv0T0CVfx7YACgGhCqSKoE?= =?us-ascii?Q?2TCpo6+HcMPGxNwv7PhkZTvt+VtNfDc6t32Po/Vg6GPMzyw0Vta3lyrhuzyu?= =?us-ascii?Q?sBMy2OYB90wuW6pu3vAaXJNU4+lGiVPLrUKxF3hoQHWGKkdcvpea8dq3kg3e?= =?us-ascii?Q?PIco1RNceIn0LcEPCVDuPtlBVh7uYI/tyRmswfEutN7af0Th5ue1dwYZW8Yw?= =?us-ascii?Q?nJ3/eVFp1W7iuwMCYukQHeuVcMdUI8+o44/Heg+0UnCvEFAGh57rXdI6AE+z?= =?us-ascii?Q?rQnjvqomO2pq7mwYk55YGk2L3Q/7/TSI60m+BVT93iT9yU094y+CJMvb0Yb9?= =?us-ascii?Q?EO6iXmHlM0Qgs7HWj2otGfxbV68ZkDmZZAxwt?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0201MB1594; 6:7K3sOOTIMieffOnO/pVSfhySJKHASiaDR6PO3EHk?= =?us-ascii?Q?MsUrVb6i5yABqSk0Q3/1WOx6NBpu3UaSSgvSctc6qwsM0iPha4fevsnGFv2w?= =?us-ascii?Q?iFQ4edopzJSM6paybGXJbY3VtR4LWYCXiQJzUiUnLyXcVoQsofp23pkQmOZA?= =?us-ascii?Q?2idIsTi3n2+URxqnufiPF/PcKQi8MMxQ7ApiCunKHGPaG+n6t7U1V6J9iZus?= =?us-ascii?Q?jSSQbYXffZ9PPClJ9JCv3lRbJeYba6snFkrUzwpr3VS0CmvrVsZ5M3MhMukV?= =?us-ascii?Q?aeJQ8la+O63feYHBNRR1uEuCwkPE3lZYv8hfn4Y3uSNAluD+qIRRkWj7kmGe?= =?us-ascii?Q?99JJ9WaYF6U/Fo5nRbY2jRM4kuiqqJoZHHPDnWJgRgEnW2SImLI9DROI/m/5?= =?us-ascii?Q?0mQH3ACTm00vOTYh8nwt4zSJplOrA2rAnTOmR64JMrmB+E+tE5gm0cdQ8e5Q?= =?us-ascii?Q?95abVEqgEH7TLzbvzuANDZL6td6dc9iyXHSiX7OvpUTOO1qBJQVgWLBBCxGI?= =?us-ascii?Q?VXpplG18USWj9YJsx5GPTSilUAFt4YTL2K/ZgKfMaIWYGP/8D4+aytA27eNA?= =?us-ascii?Q?ccgPAd1sgV/z0LNhcYvnr9bGqK56L+DTBokiDaU4KW5YUP9TOMj8rWl95n3X?= =?us-ascii?Q?qq3x7ZhHST5ttHNLsPfjc2ryO9RaXMcmqsu8Yo/v/tlRkqY2p9URl6m2+iit?= =?us-ascii?Q?fPrY3qv94jAyjFUXOPo/WmXXdbb4Flj+GHkLon0PozeSRqowHiSDlsHjwkzw?= =?us-ascii?Q?8RGyVnejfP9ktXwDybMeb0lCQsCqOdEcjW6kNtYl8FO6AJ0gO28M3trj9hZY?= =?us-ascii?Q?EBYFHBxX2ic66RPB2i5/k/S+Hd+IJ3i57a2F74gdfJK6f1K+SDteT+jhRmjb?= =?us-ascii?Q?4J9BSszD3ZHAIA7jzZquHZke43uhp+yRuCDbnE6gB3nZMllqlTARR3ld+kuV?= =?us-ascii?Q?T02V5nd9nye8qC7Q8b2YSJVpxLsni7pc4W4IBeKFIjSCu8M6vgkHK4OnIzCU?= =?us-ascii?Q?jafPjNWlVEIFSEXr7Sn0Si9j?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB1594; 5:dsr8WWhxCRDa6uCnFp0uzrx83muu7TgttQlTKFs4WZbmlz4rc+xnxWbU+rTen9afCptfKBjv2RBjdw8T4HQ3n23sTj8Rx2pJISh+bWShTmR8ToKjWyuVbyGtSldzLOTVrr8KgnGCZa3fzpdRVhRB/nQlzP+K01R26IkEsBG0RL9s50Qyr2FCj5NY8l9Sux7SJCFWlni6FAdgncYmH4Fpq/ggiiwxVU+fkOBU8XaIzK32FKBqGPbMeZ+Quh4DvEcWSGPpr0wiH6E9Zid/U2vGP4ApyVN/aN7d8whdnGJJ/nN/C87mVDJjsTE7CIzThkrBY7Y23mloPX6FrsLuLTwaqN07k+4Kp8OCFbiKgnFLZHpUQbULuTnIrV6/pSo4prFi0jauPVahcHRmGwEk9mux92MA5ntGu7K9eYFZ033g+X7g2mJHEitmJFYpgji16xmrPZAadxTevsp/jl1KhKAbctWCuvYg63VaVp6nBRAphL8flKKD0/46D0TLR1ILWUdG; 24:qvEj8R+cAZX3I2Q6AOTHDOQXfeyrey7KjxP8WoDij8RuBKg7xOIv8dJt1VzZN7Lut1UNCYagEfrHZofiIpzvc7C74B33np0itQtsQJOZUHE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0201MB1594; 7:duScshjiGmmFKr0N+yVc0oEB27K+sn860tIeTsy864x4BaZKn7QLds70cIFnphDXEd3kubsTRJPNFc7OP6fCrW8wSAaS9/ka07oMQwvJP/KVm+G6HVC+rm6rvP44UfRvvUeAuioFdoFHK6/inT5UIISyIwrT8n1FcEHpeFYPL35PD1INHClLOAywUFYgFhM0eDiTeLiZaqMXBA9pUUgnXrba0s6lZ3GgWYi0TGnwmtrpFGG1X0FNfmV0huGr4Awg1G1lhn5n1wxcVM7HqNgx+Es4zjp2CdPB4C50fQubSs8kY3UBCtIxswD6h4PLHeYrsofijBLREUAnhIBqSa2GjDmmIociM9LjEKH0cAtdTMegKyBHx5W0QY1mRqrTFslPGD4kq3OncaSwC4ShFix913w15+y877I6VtoFwSnZTd7ZwexjAONHIzhZVDKU+dwA5EDwnE2ZctHXo/S3Jr57X/4hS0SINeEVFOTipvObtOcJWQ29U4B4sMzMIoPoGw3KBwdo8j4GLdJxt68Tv1BzAF/lPiuzLZLfMihqr+Bo6V6yHGTUg1N5oK17F1c3GlPWhv2gSOuUEOTu1P6Es/ILF54EoQP8O7skhRnJ9quQpXzIPfk3lQKOOtu4BIRvdSlZfKZ7DzHm3FLIYIaU6x9uTTwSMktJOJoT4jQFm+LWsXiWE63dNdho6y3/R+2Cualdk7RevyNOxpIMNH4jwq7f41bNao9HC/G5jzzPwodSyeZoOb4zumQgPVqYxQzVV7DXHayC2gPU+RkdXptQLDwIbg7TqzcNXasbpUI0qeOJuEo= X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2017 14:00:59.3893 (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.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0201MB1594 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.49 Subject: [Qemu-devel] [PATCH v4 2/7] 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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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..9287cc5886 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; + warn_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); }