From patchwork Wed Jul 5 14:02:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 784654 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3x2jfL5Wsqz9s7m for ; Thu, 6 Jul 2017 00:18:50 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="ITNza38i"; dkim-atps=neutral Received: from localhost ([::1]:46464 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSl8h-0001rS-ND for incoming@patchwork.ozlabs.org; Wed, 05 Jul 2017 10:18:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44921) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSkt7-0004qc-L0 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSkt3-0007rd-OD for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:41 -0400 Received: from mail-eopbgr30096.outbound.protection.outlook.com ([40.107.3.96]:45373 helo=EUR03-AM5-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 1dSkt3-0007qA-93 for qemu-devel@nongnu.org; Wed, 05 Jul 2017 10:02:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=aSKHBo6Vi07q5pRppX+SBdLbcE+XABH4NEK7H+oczkY=; b=ITNza38iCDgJryHa1Wudrk+EJaQNd73zfWtHWfrnQ5HuO0dKp292cRpLhvCq2alz2veJKN4XZmszIhkD1sDOMnjYAvnIdbq3hzRJ3Fp6k6Xkiaa/x5ZFsLNnoQCsIGcjRFdEwnMLCyZ/t0REMjhD2zmy6CqiTAmcjraS4hGVGsw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from xantnef-ws.sw.ru (195.214.232.6) by HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 14:02:33 +0000 From: Anton Nefedov To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 17:02:01 +0300 Message-Id: <1499263324-15184-11-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1499263324-15184-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: DB6PR02CA0007.eurprd02.prod.outlook.com (2603:10a6:6:15::20) To HE1PR0801MB1996.eurprd08.prod.outlook.com (2603:10a6:3:50::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dcb1b188-3cad-4506-8b6a-08d4c3ae7c85 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 3:XjudskmzICQx1tvhFaw2rcTd9NZOI3NHjxP3LeF3uZ6q2R8nZdM2e10ZtLU8S7DW6N6ydAtbRFWBZdkAiGeRHeZ4C4HF7IxtQz3Sl5/AHnKqYm/VZI8KaN+8i84ItwSDj1MJVE3bjVk/0thAbY+NkDyTb5twJ8SrVJbqgzHrpOd27nuxLJwQRXsZyjv0mBymBZ1i+M7NMfb1MpEoWAn0m3pgVHheGWEAcVN69sshFRN3i1w77RRvfeolndOAlDHeo3/6ErWhjQgeUjII508xsBiOMEWipsZo1wP6p5u58HA23GKA2t45D23GNl7Z1KhNvMIbCaDZ/08NXhc9r62QqU1CL0yHuoE/FE6AzVqEhImMTy5o+zYmE0OnZBt4agIfliVHWWBKsHIIqEGUzS92nV+t4KqBasTl/jTslMryX8w3dj2N5Q69S6A9ovpUFvurIulIWLhwII7rGXQJRu1WkVGPvkLbwg+hXgGa98wrzzQOzVNu3Y1RZw0yd8cgWEkT+wOQXDo1kUSlaVXC22amk+5ewA60LVp8Ngid5pq6r3x+2uhAsu4frALYfRIZMiujivJpFeQAQog2kGXufH5jHA8Lj0F9OHH7AnHWOBDgTaaG64tluUTHc7vqPo9wV5H3VwTPmijxxrTXyjJAstNVl3cqOUPAogkD13vAxjeFg7uZpThMaPrimP53K6RE4d/8k28ePwO5kfVb8Qw6R+oKvdqnWQcABwSxQehPNRBxaYc9h9BbljdheqAjYmNj0o+W X-MS-TrafficTypeDiagnostic: HE1PR0801MB1996: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 25:vDahDJuZLSRarXYyeKD3O+T/xqkqyOvhu42WbnPKHaYhqUPkbhTIlGs4LPyBbnVv97oF5NCSZdYrkfMyzhYaeK7MvshtykTkHcLhCIzOW3vJy/sch1FXramlARZP9fJKl41ZGsWWVwhKNQRFOiBsALJRlS+yRjef9c72fSFoZQhuIFYboUiEz2VL5EYPaEdUdHew6j07DMBGdBZc7IbEi2FGf1Y1I0dwF2y5V1iluZcHRh3I8oMj/kGs1YLxz6qGPsVGxqiNiR9WncJ8E3OQbKiUQ/kcx91ALVZmlBeswPWUMJJWhAt1/Ns2chzF2c512NtOzkn0NE3MH7L+L9CAVVD85jMKnbToKiB9ZRnmOwMNy/wwMx7mck0yge/+shhVF3cIPmvE/0OYJo1vKtWtg2NLkRX7au0bsBXVwLF0But70ToZP7TA42nrcM+MIXZUjM4M2aXkAd0K6E/Bvx2ZYLWigCawkT415TSApDIXbIdcx3ZvbXzmfHe83UrrJ22CggJQ3F0DK3NekeytKU6RET0alIZkWmQgVLkPNy98A101KTyUUtvpBdik5yLGmewYs8Q206zET7ocoj5VJam+2sbF3iOzRGATx295bxApZEZ8++10sruOmhTIDU7eGN7nOmm+I/Plo12pZU6GjeD8HT/G1WBaK7o4WUuFMtZrutC4hgma9yEjR+gXe57YOdJYpQeDvV8yhZuAbXqlL0dN0PNY02MvYOR4NVNlhjGz6SE2/7WVWmt227+TbWN113Cq+nRnK92XV4U3bqAOnxqGA3DOzCv7EjNCWYghC9nan/TTlLjYYFDWOHkbvJ+mlbUEIEhl3PoQ82OB3mH8ETbnCcGl9UYhWx4CW724Al742K/uSnZiB2Mf2ZJm8tv+r8IRizPoTqgQ9rSPo7EYcMrnIaFKYib1cgL70q8sc9orwrI= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 31:inZnKb4/FFLvSrtI+ugnPIHZysxCxes4ZZAQEZpxEg52ch1432cFVaZ215RhMJhV0zPijH1OwhkBjdLx+I+IQA/dphOKh7LKKINiHTpM1HLKLJNiM+BffkQ0jmkADExS1MsMmTc1vWyRhymQxoAfjHDJELdPqK3Qqe2VQYHhK6sW5JYGciQDbZ/ZB8+k/9WSbaGtnuAJ6GnGdo6bFeSqPQKJoTaHakfZvZpbT8dS3yLOSxwoh0i5KJs85gGfSKv4xHKusoOf0xapagXGBHPAE0qZGEmGOovZs7omM3OIwl0Ae8ml/lzzDblsuO/EN8Iv+vCRMqF9Tyn3nNfp5/RKNqBFYQ8QkfukZ8Xr+BA7xQjZu15vnBZRXJHdBZJhP+zvXUt/36NTHDIgTvkXC55IwribrOVxqmaHxjWxpwD3ko16VLNb1mkhBWEncCCpnS3zuQ6/7aqNE/yODJC797bX7h3irf4b1hlJfI531qonYilUX+CM/ErAxRy7cAHk3ys67IjsfmD35hb00de0D9cB6iMyYM+oijCUmD3KFoAjM/3hAdkpOelSU7VOAEobPCjNQ7vx73qRYwfmVVX9tJdUpcJrtgxn0vdq4sxWkUTCMi/4qSEh0T5RpPwh51BBrsH9O6t5vXrImjInECWdC796j/h5JUVvJDHN12MZrDuvHSM= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:tNWv+5lS7FE8lodE1UbWKz1tXy4ZbKcI5r9b8Wc3IO5d8Wuug4defl3XE8DuobIl+wyNdujyoSCogXdTEkbS+vS2mQoENSYqql0GZ3mtk8Hb8qakd//zYjXY88bqiCEFTwaaTDLVuB3rIZjNXr0iiJ8ely+DQJgVmlsCIUDjbfY6fySKsb25r5YTeWe0C9Xdqs1RhHZXrKctHDewBV5bw8h9hP3T2D3PQA7/nZvtU0WAKfYKJj655JYH8XzrBXbHRH4xvTCvWy0OMXvMUZqpxTmsCwWreBw5pTV2SGWSEI0AfB3zrUoZ7A3OUUKnqNIF0r6Tu+04iINcS4TFfB+pqB8FLa2Y5MZJalTYsf/m+iDCPX6jhmQSVZMGLurUaOK3RH/GTjkMcScsi67gegWV1W5gvlzEddNIDA9tFayEE4Y= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0801MB1996; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0801MB1996; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 4:yw66GrWRSBtBEEephtP8buuVQW9uL/OP/t39yb1x?= =?us-ascii?Q?td0u62M6ST8UnLoGn/FQ/70Ti2eMm3ZD8LFKDlTak4UPldlaYaPOEuAVpDt5?= =?us-ascii?Q?s48YSC8M2QB10Cp1JOts6Acf6rm0gRKLER4HWg8X6zRggMkbyADp7JHZfwr0?= =?us-ascii?Q?htBkkPCqjbVJ2BbR9lYmiBe406ucl392OoGpVg553vTCMXRtdWOaIwMoGk+s?= =?us-ascii?Q?2WF7RUIx9kFmRQZfaNeZ2ZF6FjeeSML6/J+XTwBTcBvykb8RqnCawcNrXRAM?= =?us-ascii?Q?iFXU3BNl8xm12YF6SXf/HKffW4VhCsA898bqhL64G6CRF5gEIqjyhK1p7vmC?= =?us-ascii?Q?Ftu2i9UHxcEFLotRabZYei8X88/zszjFyhjYrgy+a6dHEXC8uZYRwMlgg+3R?= =?us-ascii?Q?QKUCQwC8+IRSYzwVjynji6EZjGsCTbtiN/idSPzkNGhqekLs9rGBod6JPMXR?= =?us-ascii?Q?6qzZnJubQ5KLSrTNCayd2D74oKwToP18/t4NCf598nnzmNvXuJvWHIkTtZvz?= =?us-ascii?Q?Q6AgLl1dmj1M6sNJW6L4qAhabPWQhGf7wo9gBAVHkYuSIGudsdtmdI60Rj01?= =?us-ascii?Q?lp5R4yPkprf/R3J6Tt3op2ZRElN6RA6CvH3/rv4vlOlukJIOOvzVXzhU7iCY?= =?us-ascii?Q?VXDoBHznfhq8Yy1lfDvx32IBQcgrB51Y8Xk7ZyjL/gyeNNq7HW4QhgZYnCdq?= =?us-ascii?Q?R3svoBNtrDF4qRvsqz7sAzIidCqvv+wroYc8HkiQ9HTTVHFAcYB2qys7JLn2?= =?us-ascii?Q?bzYCMr04QR/A1mKFAJYyu+04xyF8Wt+AoWYSfMK0sehJEcDGrHrHj1OD9eMa?= =?us-ascii?Q?AcRwhA9oAaqW3pQ0AwojrGRjLYWPrOiEw1eMK2qycIZ692Y20DnQcxZ91hz0?= =?us-ascii?Q?Mi8jvwZXYIz5mnfZVZkH1QE12HDhWrM5qdIVbCjn29FhEENgC1nOX+lNIXEr?= =?us-ascii?Q?wXS3sxnCcnL1A7BAVMKkwhg6C3KXPkW/Johimd6IWoKTtgPKoyjsU8FTMIWh?= =?us-ascii?Q?adSNnlBC7wZ1XvdaSN8V0EoUD3YalUMwREosVGr0awCzgNsPCgw0QhJzOr0U?= =?us-ascii?Q?7ZvozoWFfCFgKPWeG1urscmouCgETZ2vhnoTT6pfKTZFEAtmdNzqAdt3iQWI?= =?us-ascii?Q?WCiCxkyhuIk+oaa4+G00CSzDJ0gJKfTvZljgaPT6KB7wMRXBStsfqtIfcQNS?= =?us-ascii?Q?KjAzaALl1wil97k32eh3SPwX3p2bSQCF2LIcJS9YgVAJcOEzLRX40L17Ng?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(979002)(6009001)(39450400003)(39840400002)(39400400002)(39410400002)(6116002)(575784001)(3846002)(8676002)(2950100002)(2361001)(6666003)(33646002)(2351001)(53936002)(86362001)(2906002)(38730400002)(5003940100001)(54906002)(110136004)(50226002)(42186005)(6512007)(81166006)(4326008)(25786009)(50986999)(478600001)(189998001)(76176999)(5660300001)(6506006)(6486002)(66066001)(50466002)(36756003)(7736002)(6916009)(48376002)(47776003)(305945005)(230783001)(53416004)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB1996; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 23:3xBbbRch3WKLxfrjbsE1c9uoqnOp3gGhJbApsou?= =?us-ascii?Q?yrOBivhGm1bodQ4XCZS9SBe5RQBJJz2fbLQN335caozh5S4yIs6Ok6dXUNNl?= =?us-ascii?Q?Slejb1DqRrrNAdR+nSt0dHyTEmhP0Udrcd+w4ngTAgg5V75hMLiOTRX6loSQ?= =?us-ascii?Q?3ky6qaEBZzv8EVHmz6FVXywLTxjyVOOZ6OJzFfR0YmtDme1wzv0Q+M299veT?= =?us-ascii?Q?lQDKXq+hyoFb7kEEN7JDsJ48cb9rI+39Mjckg4dWA+9nQUoOJu1k8cIzTA8u?= =?us-ascii?Q?XxqnuFfhyooL72dBgUjjpiu0aHDFIGsZK2ICN3jcm92vqmr431A3nWlHislV?= =?us-ascii?Q?LVUEyGlPPikQpjUD/8rpCfgp6zvbkys1MDA0h/lWjTbozMCtGVk0tRyUHFUO?= =?us-ascii?Q?ZdpWxZgPYxprupXa75cBAF9hWrv/iUsVuruhSuFj30gG84peabupov6UaDQm?= =?us-ascii?Q?VrWukK1Gi2q8/AFE5d6HNoL99F/ckBCc6HuchbpWtFno7ZGnmIeO1hRMSPnP?= =?us-ascii?Q?DX6+n8P2lszfdss5tAFuBim3SExQLgxP0q421MivgzNHCSQr3oSpV576K2V4?= =?us-ascii?Q?zae3AbyHLZKCEitKUz3yMxTfr/r0DwY5Zfsgh8ELrDsg4y6zLUXu+8sxtVpH?= =?us-ascii?Q?DXQPXUZDDWSjNHergQKIE1URLYNFisZOvp0u85m0MQwZ+xS3aOaKhiO6CUW0?= =?us-ascii?Q?XRqBrvkk57TDhHfwacAmSq81rpVPA+KKN5CWPu43EfkpE7Q5kioHR1eoha0d?= =?us-ascii?Q?pHSHS/F4tv8nsW1a2X1rG8h2pzJNEx+mXl07udy9kh9jVK/K30tRNDdf0CKb?= =?us-ascii?Q?kY9BlLB2zhjUJoC3LnITgm4lt0mNZ6V5KR/nmN2Bl9lqBLSPVCxFXBciHo7C?= =?us-ascii?Q?DkoDMBZawdMQZ/NItzA7iCdoUa+AJjRSJXupEQTt/juela/yaJjWv3HzgFAd?= =?us-ascii?Q?1acpm59lXdmMjMUfR/kV+zDyA6Q1gPu2xyJzLYUptqzBXf2OkFLNoIsa8mda?= =?us-ascii?Q?T6D5OXsq1x8uCjQjBSL4Qui1DMuqgD15CzY7dXY+2mtOElIUooieND5mmMMn?= =?us-ascii?Q?NwEq0G76pOmcS6qqneU9tZZIKVxwtsOEAVEjSqu0CZhcl4bpnLSn96v7ezNz?= =?us-ascii?Q?Aqx5L4tFtnwvAZACwb9nOlHujHRXAIjydEBRwEZsvc1Xg/cC2n4mtvWvIMK8?= =?us-ascii?Q?fsyoyZWmlV9ZDzbropSiXIvAAMV1EWv5mi7iztCJ5LwexFe4sieoHwKVE3g?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0801MB1996; 6:w1tGBdn6/4c/1dhMzR91lJJ6y86WNX6UXv5JWOkl?= =?us-ascii?Q?mEnpl8pcHyt24AXncBGnVaePoibvOyWPIGy0H/4BsFmFXxeaIyxddcx4+iZ9?= =?us-ascii?Q?Bd3SUREVbPWVgGFnxpRgTaCNv/ghei+kO9VMh0afWDGyenXK+N7SbkpBCLx9?= =?us-ascii?Q?1Uotw9X7lp0cSqzRif+Z9wtkD/50AwEs5hppU6A4mp2LuR8zBXcdbgcDsuWq?= =?us-ascii?Q?jXAXLa5/LOeUfjqYsDHcKckAoEUTW/y0a2Rw5cyIzSulVJCihN+vcP+pYKVG?= =?us-ascii?Q?biknNbScYvElDKuQXpPYP+CZ7Ny4WtHFrL71rxjOMjh2SAVJI60X8LumBkWA?= =?us-ascii?Q?fuTcuUBwkez3N4kyO1YCzAulKlPP7YCpLwMlMLW6G6YywPTZotsQIsL1xuvn?= =?us-ascii?Q?dQoNKDijGOb69evztUNRrpTiOFSy5VYpLitquqKU1ckU32OIrKF3xaLpd9m/?= =?us-ascii?Q?BYDJoPGL5HodWd8WTpBJ51C2u1nzQW9YavawNjkxDBv1nPUSOPmi13mbrMAj?= =?us-ascii?Q?UyjscpKj9uKIiUT1KsYZeInt/gnkAM2P3V4C/3pv7LZpWkSV0kjigqsk2/IV?= =?us-ascii?Q?fAlhnKt0WZyJMa4uwmLPZEbziLTtBUhylSOr4P3sq85Z3FFb914b6kgeKpIH?= =?us-ascii?Q?LwuyHOVduzlz0Gdvs1KqMX0kW5+WRIyK4tXWkhjA2pK97jht0Yug/m9i+eXy?= =?us-ascii?Q?/+1+LnvC5BF6qGGN3U/RAILXaB7jdK4prmt6LaKmP57Kreibc20sde8JwQwn?= =?us-ascii?Q?CHx/2PiIJi0LdNT3McUdFBHill2hWa5HhRJItT0O7TqecfV74SrsMipyNnwy?= =?us-ascii?Q?RO86qAPGjvUN031cmOMH5D5hCvl1tp8r+0QjFJyYA0I1Vf0knKK2/yxKmAc1?= =?us-ascii?Q?7TwXGH+CNSNlf0K+29raHii6ZZb6OdvRs/lLN+nB5YpnUa2kcS8mKP9WHj1o?= =?us-ascii?Q?cTMjzfyS6nEP0WBgs7impVc7pCUst1lBGpS+abKfTUxvgUoLQOqo6FMS6XeU?= =?us-ascii?Q?+jU=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 5:OE8JbKvZAf0qKiByxy1ASUoU6z7tr46iq+z/fLrq/HGCmwjlDof7xeRFqWlmbCmfU7c27cRuHoYF6gC56jJxXXw9c3BRaEJUL+2hHve8h1aL6vNkCfkrXoCM9FwrybsqilMetkuOHSE8CeWe/KqdIHbeHxZZ/4T4j9MJMtis8Ts6AHZpvNr50+d+CNnhKIuTmZoulE+jSiE6/cprGR+asGdF5ceB9389agfA5rhG3o0YBO2ZN96eXKYq2gQDfLSNj5wOHb/S2s3fbxoDszaDpj1T6KQ8wqqbmeOnbSS3bvdObPW1vr+D+mk3E4csMw6McCzeYRPEiawBOtp3ZS57YQ+HOaOOlcUkGGJ0g/eSQR++sr6lK8hwUqacsOydEriXBlpiGSImhNdv5nvJmQa61j6kE8e0mSMj0scbHX5w1QcPONk9nj/uojy+AFzSWlerAcc1ovoKaiMRrehyop9wKbGTe5bxU54nnycT8b2LS8nbSo1horyHA17N4xHlHNkD; 24:xqAfAB+B4AsYZc5FdE2FRZPJesXSQuSp2iwkmDXAJwWfYpUshr+ru1IoJ8HiA+Zx1kUa5zVCDTl75V6doR6jT91Mi5MdmRE/9SK1PSG4uaE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 7:3mVq0aTGR+tbyE67TesJvYKzjP81A5oF85TdLzD0iqSJOTrpuFv4sB/8GIOgyBGVT1WRCL0emAHHA1MCsbHYEAW0EkE+LuTl6BwZTclsePEMH4e1IjUpNMfT9De+RrW8lqLAnZJnqURx0Wtv9OooDcQvSVLBiEQ+wcwLOcFtxTe6qeRua8g1I5jrMvek+zCz49lSLBFgAvVyVJGGucHFNhTmcAS05Vtv23AcY3cODOUoyqFCg4NF2gKUJNlVxaJEI3ko9xPzxB2Z5O9M5aUuANSHCKCDltDnXDTeLBgtTfoNCJPyb6Ht/3LFULXNoV7Z+atnIjORsXMBu5n5NzYxRjSZx8oHy0XkTOPptmA3bbisL8Gx8C+d36VBoy4F+hYO91EqdYfLR6UjBX1Oc2/45sZMshjh9quykyulViJinWSw0kb3OGKiy+ND0LAaKzvsJpGziq/cSqGlg9+HfGG93d342I+ts8g+v9DQNQL7vMAY2lSWppDwEimC0xXqD4+KSc1u8sKLz6F3b3bs50/6C85LWBacLQ3li1fwWh4pts0+/y6Om+NuWCLQWRMn6uyy5p+SNoQ1g7+6SBAXr33MjBhSJBWltpvF6dZCZyRHkRMR8kot3tsVc9H2BSNpxqI34wPADINWkb5RbgYUBG3SqGTLHNTNuHalOvUk4igdAfbo8d0AO6+rW5V0p5K+BSUqKD6spXzVe9JK7MRadSO3144lSoneM8dv0QTpPP2yWffvTa3MQdaCCMrpincUjdUFzG8zcofZeiavgZ0EjhlSz0YJwYKPv7l2EbR9RvEMsNg= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1996; 20:PYasqBLtRy6uxYFr6ymkxPDwKjSt7TtRuq0qWCsUJ4gXUWdHwxr2EHezMzBiUpGCFAvCruhJvkM7PQaXhIvWIZhmHDT+uzEVIhTlTrkjUymcQeDshIr8hKCcR6vd/1xCP3lnu0I6Bbr8LhdMKXtDokdm3fo1JQW6jakcaIH9dqM= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 14:02:33.3653 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1996 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.3.96 Subject: [Qemu-devel] [PATCH v5 10/13] hmp: add hmp analogue for qmp-chardev-change 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: Anton Nefedov , den@virtuozzo.com, amit@kernel.org, mst@redhat.com, "Dr . David Alan Gilbert" , marcandre.lureau@redhat.com, pbonzini@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Anton Nefedov Reviewed-by: Vladimir Sementsov-Ogievskiy CC: Dr. David Alan Gilbert --- include/chardev/char.h | 10 ++++++++++ hmp.h | 1 + chardev/char.c | 2 +- hmp-commands.hx | 18 +++++++++++++++++- hmp.c | 34 ++++++++++++++++++++++++++++++++++ tests/test-hmp.c | 1 + 6 files changed, 64 insertions(+), 2 deletions(-) diff --git a/include/chardev/char.h b/include/chardev/char.h index 22fd734..1604ea9 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -81,6 +81,16 @@ Chardev *qemu_chr_new_from_opts(QemuOpts *opts, void qemu_chr_parse_common(QemuOpts *opts, ChardevCommon *backend); /** + * @qemu_chr_parse_opts: + * + * Parse the options to the ChardevBackend struct. + * + * Returns: a new backend or NULL on error + */ +ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, + Error **errp); + +/** * @qemu_chr_new: * * Create a new character backend from a URI. diff --git a/hmp.h b/hmp.h index 214b261..1ff4552 100644 --- a/hmp.h +++ b/hmp.h @@ -102,6 +102,7 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *qdict); void hmp_nbd_server_add(Monitor *mon, const QDict *qdict); void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict); void hmp_chardev_add(Monitor *mon, const QDict *qdict); +void hmp_chardev_change(Monitor *mon, const QDict *qdict); void hmp_chardev_remove(Monitor *mon, const QDict *qdict); void hmp_chardev_send_break(Monitor *mon, const QDict *qdict); void hmp_qemu_io(Monitor *mon, const QDict *qdict); diff --git a/chardev/char.c b/chardev/char.c index a7b342f..1c027d4 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -567,7 +567,7 @@ static const char *chardev_alias_translate(const char *name) return name; } -static ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) +ChardevBackend *qemu_chr_parse_opts(QemuOpts *opts, Error **errp) { Error *local_err = NULL; const ChardevClass *cc; diff --git a/hmp-commands.hx b/hmp-commands.hx index 275ccdf..c4c96db 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -1724,7 +1724,23 @@ ETEXI STEXI @item chardev-add args @findex chardev-add -chardev_add accepts the same parameters as the -chardev command line switch. +chardev-add accepts the same parameters as the -chardev command line switch. + +ETEXI + + { + .name = "chardev-change", + .args_type = "id:s,args:s", + .params = "id args", + .help = "change chardev", + .cmd = hmp_chardev_change, + }, + +STEXI +@item chardev-change args +@findex chardev-change +chardev-change accepts existing chardev @var{id} and then the same arguments +as the -chardev command line switch (except for "id"). ETEXI diff --git a/hmp.c b/hmp.c index dee4028..1b443e1 100644 --- a/hmp.c +++ b/hmp.c @@ -2228,6 +2228,40 @@ void hmp_chardev_add(Monitor *mon, const QDict *qdict) hmp_handle_error(mon, &err); } +void hmp_chardev_change(Monitor *mon, const QDict *qdict) +{ + const char *args = qdict_get_str(qdict, "args"); + const char *id; + Error *err = NULL; + ChardevBackend *backend = NULL; + ChardevReturn *ret = NULL; + QemuOpts *opts = qemu_opts_parse_noisily(qemu_find_opts("chardev"), args, + true); + if (!opts) { + error_setg(&err, "Parsing chardev args failed"); + goto end; + } + + id = qdict_get_str(qdict, "id"); + if (qemu_opts_id(opts)) { + error_setg(&err, "Unexpected 'id' parameter"); + goto end; + } + + backend = qemu_chr_parse_opts(opts, &err); + if (!backend) { + goto end; + } + + ret = qmp_chardev_change(id, backend, &err); + +end: + qapi_free_ChardevReturn(ret); + qapi_free_ChardevBackend(backend); + qemu_opts_del(opts); + hmp_handle_error(mon, &err); +} + void hmp_chardev_remove(Monitor *mon, const QDict *qdict) { Error *local_err = NULL; diff --git a/tests/test-hmp.c b/tests/test-hmp.c index 6dfa0c3..d77b3c8 100644 --- a/tests/test-hmp.c +++ b/tests/test-hmp.c @@ -23,6 +23,7 @@ static const char *hmp_cmds[] = { "boot_set ndc", "chardev-add null,id=testchardev1", "chardev-send-break testchardev2", + "chardev-change testchardev1 ringbuf", "chardev-remove testchardev1", "commit all", "cpu-add 1",