From patchwork Mon Jun 26 16:45:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Nefedov X-Patchwork-Id: 780798 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 3wxFcL5CFKz9sNd for ; Tue, 27 Jun 2017 02:58:10 +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="PxVaxUpw"; dkim-atps=neutral Received: from localhost ([::1]:47676 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dPXKy-0003Pc-Dl for incoming@patchwork.ozlabs.org; Mon, 26 Jun 2017 12:58:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dPXAd-0002uI-1V for qemu-devel@nongnu.org; Mon, 26 Jun 2017 12:47:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dPXAZ-0003BS-R2 for qemu-devel@nongnu.org; Mon, 26 Jun 2017 12:47:26 -0400 Received: from mail-eopbgr50131.outbound.protection.outlook.com ([40.107.5.131]:8588 helo=EUR03-VE1-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 1dPXAZ-0003AV-C1 for qemu-devel@nongnu.org; Mon, 26 Jun 2017 12:47:23 -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=EJ+/VG8CFMMFLdXQB7mbcFKWw40qpK7aPOPoCrEMqL8=; b=PxVaxUpwVJh6RTnbmFyHO1O6G5kyXztwTsvVlGPMRAI47AkfOtHmOx2BBG3URvMDZNufql78saftwd3N6l/FkysBbFbfxS6F9PYfeYxQC77fdc0bsHzlUmrwCI/22aApwPmvuczoAtFc6BzmkqloxxbO5WX8D8n7kANGneR9nn8= 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 VI1PR0801MB1998.eurprd08.prod.outlook.com (2603:10a6:800:8a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Mon, 26 Jun 2017 16:47:16 +0000 From: Anton Nefedov To: qemu-devel@nongnu.org Date: Mon, 26 Jun 2017 19:45:48 +0300 Message-Id: <1498495550-72357-12-git-send-email-anton.nefedov@virtuozzo.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1498495550-72357-1-git-send-email-anton.nefedov@virtuozzo.com> References: <1498495550-72357-1-git-send-email-anton.nefedov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HK2P15301CA0013.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::23) To VI1PR0801MB1998.eurprd08.prod.outlook.com (2603:10a6:800:8a::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c43d126a-f814-47a3-ac53-08d4bcb3038d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095); SRVR:VI1PR0801MB1998; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 3:qtTCVCzKTCMx1X/e2RG4ptas71yb+/W+424mHRFDBJS1w82GN6Uvu5qx5l/3nkbc3jyuzQzkihygkUu9/BvX4K0v14DIFXEg82CaHUwh/65BUGeBb5IyIEU9cdBPMPG8wFHBdx4XgzrJGGMEdZKR6OwkPWmHNF75/h4bHNRjpMsKORwnSai9wYMqtAVn8Vn7UQnSjW8Oi0hy7dYMLmEDYAHYvnOvm0isUPNCUNu/l7+j1dwscnndgZvtf697/kjfEiaOhzJRDkA0x9gCPpg2Vi0lMhoI7FAQ1UQaeBf5rCeVAy7F8WK+XZ8j+uNR0+pcUsdbPugVdaoOZ6Epa3qMj2jTObrJGz/M69DTFqBJz8fkm0wBzgZYWqaVLoiYaPgRqtKVGZRKE12IPivqtxNAfLUntt52rPlTVWYne4ZzLnaitqxvPrM09rre1DFTrFyL9fBODFIUIYJn/fZi6oTGZQmPAebXZ40NcSW/1lYVNtApIBAOiedromkl0H7VZ/t0iXWwBe1mH/eB11tR/RHCWa269ae9uYs6HRHyp+slHFz/AdQcozMfMW4nGNJXcPwUKZ/z2MmZocpOZj1xPM7u4DcxzIyQuDaJlACAhPcc9gyBbSO6iVwsPfKxd9s3qwiOxOZ519h450tZr5TP32DwwpJclGiEq0PhwZWeRgo1SURFQwuLXLM7+rMxu+RseeZC X-MS-TrafficTypeDiagnostic: VI1PR0801MB1998: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 25:fDyb0AuoZy9T/wYJjOnEJnkzmGdiH0mhwOn/ii0L9jY3YpKPtq8tAVHrzDoVEP2VN6OcT+NSwqG6ctKqxDbHzcnzsyarmcdn7zI/WkPT8qJeiEvlIMHi79FU9L9TlCTB/wtbs17w2N2Wlpz/ZbI8J9knYuRhyojpJVsLyEEe3lNdirgrhnCToQz68pMu8XLDD09J6rSeP4Ytkqk36mRGaamjHM7HtIZXoCTioxB+jA459BEmxKc4jsXJaRMfuXwtw2TnyDdCkEYIw9C+WLci+3X/PKckNFeDnkRKai4UoojU53cySA2GuGBRD+flIFW2sFbXDA3ueZ5hj+p4HSd3ZIh7m4jCBGWaWd++L5WlXzLK0to4TBqlcRbbS023ZxnfXQbNOxQFXlkeB6xMKaeY0/9B465Z6nOKr5oxLwcLLADAE7pFl24eWfSce9rV9YObOQY5iEAEklCeD55Dl3KdYEBGV18g6xE7Wv5PPq/XUXTpXTeLIkjOjUN59zK8EWIFtjVQl7h+LgCdbggqitrq7/U433vI/VHWnGyU8ygoYRHBDu2UXS/DZClmtnyPlMtO5cCom1ucKpdvfmPEcPRiRAtKLyagI9hVNoROeGArO3jnM2AfJNUUsxaVZStLZgs/Z+V8gpwkxkplzDa1uSIkZK7dmDdJlI7vbjzOqaU0L9btpx6LxF4oC8AtiYK77PB+r2p49i4FudQc0VIw6iCnDAjua80z+wduJq0Q6Hh1817+jPKFMxivB+xRpCPwv57QydwAw0cCz1Am/acSQZTlI1wZwqemZ/KYMkJME96i+yHsn4NLD8Vn23uHcuAyXy6Yng7Zk3qzDiO/azz30p3e2uriAdpffnIoiV/sERmtBiXcPzP4CH0xo1xs7q+hoNpfwz+gfxoXcbwjegufv3TmzD1ciG7i8LoI5pq5Bf0QShM= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 31:az5uCeVEETC5ATspcP1Nc5JIH+JQivFygyAnKnymg8FE/OQYQg1vrRKSeHtu7u+NnYCaL50mmvQKhMk6NiOiGBT9X2ifY6+dJFPUuoSLuTi71yFUbVYzKgXMf81Q+bENRdDQWnArMww9TmCn86p9/8MDV0rzFwyeOpADXyP2zR/rC778GfLoFOtTGmn2YWYwJexP6YQQ/IXCsnOteLKTTXqEdLiykhQLf3OetHw9RU/+JyGW7Ob3Uj+4sAddtRHn01O2X9vyGS9ySPQxMG31l9dTuQDZdoUzWr08EDNhxhiszK29jOwNRhO1oIN6jwNTsaVexNFGaam3I4FvaPolhTlAdc6gzM8/StpI8cTRBAom/TSf+aPaTV2mCU8s4J9/SpR5UTon17P1EvoZQoN03N+75wn7XEfC2GDVyx7coBgubZ8kjwfy8v6MRfRrYo8e6Z3ZS+y7YUu+9j6i2D9qyk7hpT8JWngLbAkRQgT5cKoKEtJ52DjtnAXf4anR22QtmUHsZjIv9fa6OMURQA+Kk2z+xiH48PLPZPtC6VG39Fwh2BZ2vP8XUnjUJq02+vpQLmAGDwrMYomjyMSjX5+aNaYBHFhtozRD9OZjApebyyZWpafTVo2BXCPLaB55lmfTkplQQrKdoPnzYx9lMRGoaoHs+USfYzOV4p7esi+ZK6U= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 20:ldIKGHngMqgtXAzEn0hs3LCBPBXhcSY3NEF8cTqSus1dN/g+C7gofTaHVP7nN2Frb+6NNkToPUD3CT2bone+H/UqObW43ArZo3A7f3QKChvguuMMj5H+cv6D3UGAwERXcth0jsscxWzFpT4Slzyz660UgCG+/I/4TLz59treN4v1nEwZjVudXae4vxnC1dhfzAyPC5qsfpfyN43rNQAkHNxrlXsmL4b3B68P1Hgacsuhg9uEH+mA9nxn2zJCrwjy8ZZAekq5r/cgmw9ptU+qGUVGHmHFhaXguX0OJ1ru9qxY3recfXjHdGYKLbSBRbH8/yThIOusFvg6INd+Dg6MgQhLJjuPbNe/d8MB3gmXjoIMPtW62fqLZCpBnqE2lWwt7SCK+zY9DNSAIQ+EZ+hx3mJZUK7vtrWoDAKbvZUhDp4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123562025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0801MB1998; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0801MB1998; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1998; 4:uoMyDGu4bGNNb4RP7CzqF4awjdsFiP2GTqBL0ZQM?= =?us-ascii?Q?2KGhAT/ML6Jw6utxORxkzXzJJ2YYiRF7TAQbJkVy+tB27cUzWkDaiGrPEO0F?= =?us-ascii?Q?auNh65PLxw0EtUHsDdUho+9TlW+iLLooB5iGxj4f/wx4W7m2ExHyE6Fym1x+?= =?us-ascii?Q?C6CADurTvJ9Cefq3XY0w5Dfxd5To55IOSOF+w03wxrx7EYPEBgjKkVZUbmB7?= =?us-ascii?Q?OrgfLJLSGcWfSM1Yn+i+wipylUqd+GPmhe0Vb6jeNn4KSNP068eqqMUj2GWK?= =?us-ascii?Q?ju9rQUBA+m2BKaT0IQ0JwdAG+S5qPOhOljeInfwk4A+XVwlqjvjZhGTbZvw4?= =?us-ascii?Q?rPSaQoGrAU1xsx+LSzB60Q9TKCGqh4J/AJnfT8JQ+6jAWJWozX8klnWL4DTn?= =?us-ascii?Q?xagJgEDqAv8UE9dbTnaoswT1IRO3VvzVU8e6OCx5YfGxKwfzFzm+21FrnZIL?= =?us-ascii?Q?Yk9mnrsBpUYtJvXEXu0uLTs+RuSk4RHc7+AbTU0+exStLt1DoJFlHXJH+8iT?= =?us-ascii?Q?/XhdBQEFkP+yZtVqXkiR+UeWDhsGRKuu4ECGtii7YXDbe9BSKNPQRp1Dfm8l?= =?us-ascii?Q?AXkD/ITfx+NL6WTIUBXoYLkFWOBi7qKudDV+bI3Wdbx18/kefJ7Tx9ZSAi0o?= =?us-ascii?Q?ONVPj4tjBoY1G4xx3TsC8vtskyfCg6JKNGIB9aRIppjESB1KUqQj1I2lS1NG?= =?us-ascii?Q?tHoesRwFiNKdIAWEceRWCsSlyaEEK3Vs0HfQQq3WWCgPGi83GnqwNv7UgkdC?= =?us-ascii?Q?SyTxegjet3QNNZN1dOTCWivNYs1Qd0TVODL6dR/31oG990SjF5oFzwoWN+f+?= =?us-ascii?Q?pnFE0TsrkjUd46mtfXet+d8GJuX5Iz4HhZxrQzZ3WfcBNUxWsnZM7IQw0hjq?= =?us-ascii?Q?XAQ0ev89rszvT+rWydy5Vuk1pLEywxH7i6x6ooPcy6zBRfgmLjU8xmxauWQW?= =?us-ascii?Q?eLyPaKSJLFW+S1dKwGYiY3eMHr94NxP/teHWZxacBA8wAw+1IP9r3sgu835K?= =?us-ascii?Q?8mUIKTnX3CLRnWA7mv29NvwE7//AXx8JsjnKafSjw5h77ODrbg5TF6WyumXp?= =?us-ascii?Q?DyeGRqOiITkPuVmkJG2k9Grxvbj78exNHN/VB/YR5PjzLpRsZNfldEu3tQA/?= =?us-ascii?Q?jFq7x9/KJFGF6DX8WM42Wud2vNVdPvUdkqBG1df0rziPmB7iJ8+W60AbpGav?= =?us-ascii?Q?+/9IkZ9Go1cGkkU=3D?= X-Forefront-PRVS: 0350D7A55D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(39400400002)(39410400002)(39840400002)(39450400003)(189998001)(86362001)(53416004)(478600001)(53936002)(6486002)(5660300001)(50226002)(50466002)(42186005)(48376002)(5003940100001)(36756003)(81166006)(25786009)(50986999)(6506006)(76176999)(3846002)(66066001)(47776003)(305945005)(33646002)(54906002)(2906002)(38730400002)(110136004)(2361001)(6116002)(4326008)(7736002)(6512007)(2351001)(2950100002)(8676002)(6666003)(6916009); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0801MB1998; H:xantnef-ws.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1998; 23:CUTS7BUCMgJnN4bPQ76uaQUGDskOAY3czSoHBNk?= =?us-ascii?Q?mff5G/vr9QW2XVfOA4VJBZpIWbabbLtbLteiBpjIQrdRX8XFd1puGv405I6H?= =?us-ascii?Q?utghxeqfqFEw9jmoRZiGFqOaeHSbWvyzKFTI+injLqRO2pAK0qbGVrIvXFxa?= =?us-ascii?Q?A/NuREPvKrpJM1YC9JdlNcEbY6Pf1XxaGSaZrpH7tY7yWpokAVsWXe8JE1FS?= =?us-ascii?Q?/5hXAvQfkV7FoivY4NYm67AL9+bujJF7ZELJfffY/7NLqHd0pOxHS4QsldsW?= =?us-ascii?Q?JlK9S6mZU3oZ4XBflSr3Rt5dSvoOwddt5IgLNE6Hvg3379+X3IFG54mhcyGE?= =?us-ascii?Q?Df09CxDNGx3W2rBDW8JCNu2IfQC9aitu5Sdno/NpkZ3NWCT9deHx9WmWYLuZ?= =?us-ascii?Q?CohmLahYKiLvtzofiV/7r3eXpxXhW4wDDC7N3oKaBHfKOFVjYOUEWc63Fj4j?= =?us-ascii?Q?6+6+s1tjNE0MVtE7k9cFezDS+GRbjbkYrVJ989fy5a5Mb6cQplUO6C20ktd6?= =?us-ascii?Q?NtfSVxZY/fI3Cn5UZK6yeLrTE3gZKQs9vh9ZRZhVwHHz8WuQhA8izNW7fQIn?= =?us-ascii?Q?PTVFxH+UzkjGwvW71dPbYAQY7P6aJcG56a7JitQB6g8ZlTRF52JTAdcRsITR?= =?us-ascii?Q?GAv07EzQV5H8B1FjqwpGq4WyIUTvBowfZo2cUyuMkl9FfWnUyLQevzsTT96y?= =?us-ascii?Q?Yv/cBhVGa2naGcRzxSQgZ/yt5J0A3y+fIYj5f3lwGgTFn9rhmfpo2S/WZec8?= =?us-ascii?Q?EIHC+Ws56cwEoTSsbyUDST7+m6dtGiiPfVjFXpz9qah9F2hyL6mnZ3eG1f0d?= =?us-ascii?Q?u65UL3aT3VFYyn3LAUTQH9tpz8lhBxuka6u72yH58QjpKKdsVX33P11mrLd8?= =?us-ascii?Q?OHWhktYoAe1mSu4qYNL7jwWfuNmso0cMXwioFDW9mMyCPHmH3T540vlaFAxx?= =?us-ascii?Q?fgn6eR3FCZKM0rAj5rfPuNrOWtwbg7LwMOjLj/5bfzBSm/p/rgQa9Mp6/XVm?= =?us-ascii?Q?YulWIoHvvqEV4tI6aY5vw+MIG3EPTLssKYNEFmd0Lt641/3BbmyipfxqUByn?= =?us-ascii?Q?ptWzSiEVYC/XEpjU8qkwTvHuMi/su?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0801MB1998; 6:mIENNkbc2MsNSuDQOnU2BlFHUX26HBLq448DExmM?= =?us-ascii?Q?JnIq6dJaPABDCa9U2N1SFN9cWkkyNnMQKcfM7u4ca6j8k1J0kDkV1fBlWdhg?= =?us-ascii?Q?fnFR2fHkwEJhp9xKiV1MHrzV2qYpEuV4WGdJES9MBTDmVoojBh473cR6eVt0?= =?us-ascii?Q?1GaArQNYvFrYZz+HnUnGC0VXZjQ7eJG0A1Bn3PKcL7f1WhE4HPmQesGhEaKb?= =?us-ascii?Q?aE3tvrfOqp5oqBbEb/yeotQUBSEC4fXJmjyo7MHSvkU8gmKdK+0OGEX0O5Hj?= =?us-ascii?Q?wnXHjEe5B2IdgMqTvPrz//+Qorh+3tfPZIywgXNmjcDzUuAC6tCqAFqDmGsb?= =?us-ascii?Q?sKl+137Y49gmldk5MIO+tNf/lrzWITKI7js9QCCiVLCqrOaOTgK2xKABnt8r?= =?us-ascii?Q?I3uNChlYRZFgZcambzzhMO9dClWQnR1fGVOtC71pDg7m6hV2zK8hkTAoaAnc?= =?us-ascii?Q?T4oi1GOxoT4JsnaFZvZrV0Z6WosJwX6COT3yaEuSp9zVUBbwseQ0XutByf3V?= =?us-ascii?Q?JFXhfqByGcNua3h8m07BCSVu8S2zhE+jyN/FO/8rIHfHuqAA2zvRkl3vlhBT?= =?us-ascii?Q?mY/0QRoV4hJz/sJQSfe1/H5m3+BsBnSvxQJvNmXCl52BwP9SAaKivc6QEsrT?= =?us-ascii?Q?66iGvVaQRO3AZC7extwxlm7WF6JFbybQc3N9rTG4e+f4EsDTZbbQZ1AlV0AG?= =?us-ascii?Q?nn5GFMr5Z7KkV7TpZlQL1mth62kUVX502pwQB9HkmQQZFpJHF/Ty7GZQ44qS?= =?us-ascii?Q?4ZenrKgcecsF8EalPb0NNPQWjoSqrVEpqUzgMpoM7I6dkIV9Aj357rtjnGq0?= =?us-ascii?Q?fXISm1efcw0BI05eBTLTNJx3Su43xJkBhfoELOUniBMvJygCchp1WgBNyqPO?= =?us-ascii?Q?zIsntIg0Mqlg+K+Bt7TWHHOVGLmxZFPutDfyNF6q/NwUBKpu7GQTDG7CXiGT?= =?us-ascii?Q?UnkLsmqyhvmMeAKpZInycgABnWTbilKDPZvS3eEfYAcBx5xEVaR1bdwrmHsY?= =?us-ascii?Q?59U=3D?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 5:r9+vnJBAqD3qWZylb7gsUfRjwLY02LS3y5XVig6Sb8xf2tOr4Idq9TYxo20JF4OuBy5HKwzjKFQJEIfrwRQcpQWeai7FF4DSTYTDvFUAYYG/Thf8iziQGzoGWyCTFgdhPBF+O/C5Twggo8Q8hI2oIPCoUjLl/6oK6gaY4sr9hxLY8COwn9c4zBc1CkpRyVg9pTaW9+E3dit6E5AfSpIlgsqhE+YzrOmLVfrPTKzp0jGOOJNPmWppw4aSp/uIwJGvSmnU3P0Bxw3WP30R8uN+7Hf1gEw/oYoF4V2dbzTBTqcZfiaH0yWLRSpy4qP6WACtmMf+NsMg4B+xcnU1hDevUqN2wnjENslLbLbGgmiTRkXcNYnEk0oD++vrSfKZ01X5c3gaJRsKWE4a9HkMEfT13Sjm0vAluZmj9xk1BqTTuNNmcDWkZrcgGi4db7MC1+epw5YIbUD/O29KIB5Zz50IEPSJOfIJ3mrlda1GBfFUpopvv8b2L5qwtk8ks2xazTQW; 24:B7oT+iyo6Gh1H22178du21Jkjr6TMyIFEPswrN3uAQLQGt3yKpsjMAvr0xng32RBHgHsDgDOHdpqbUd5j3SrjjqHH1a+5lELSFQesatQldQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 7:Zhf1W1wfFGh2tls3VL8WfV55U0OVTmVJjMsO8jlEhpdvULnoHYpb9KK+mAQz3411o+Z6VBqudBv+hnSBu4wAhEkoWKUq0KL6NJdkXfjZ7lJFheSJlkUOAnzJgJEXpPOj7DPVUAh1VRnrzek4PVlAJeJNIrARxAR0smyqmP9z+lOnhCxBu7JfnaHWVxiHY8cTv8Sct5AchngWDTgcEYTG2FP1sIGq6wZH3UzXd5NB5PpqRMarOTWJzg2jo2n0f1MZY/AMlOctL2ymhR1RSKtt3l4zH0yg1PMQu+hvJvg1davlyYcRvtewVNtTdwH0waQjC35Z1MdnOXXYtEVvklr0TKXCPaWjn2k2/DpIQIlUkTeRWWoLFpzGabA5r4VqeUL74Rl8KRz/fiOan3o9aHkd4tF4YntpA/+vflP2pB83ND9+RBh7LCc12O+saZBEKTRAbYPxJT5aQns3qrUELXq9vdqTaSYOzCtk4P9QAxpCe9ftWWaJgOxpP21IaesmwbmhOqYKFezjct9znAEM1IKwFeFhjEH8PKfpsOQ+ZxW6hncIMoEjDWyft+aYoU1MpWbx2hszXlwOWHfCArQp1EchR8ASmgQ3s62EEzSCNpDmmM43OfNyKVt/TV5NwbIJVSdyjT9L8ncczFEVP9rvQ7JQymJCxRpEzkHH0zJfUMDuXPhuxgmhxed2pESEiPJPYTKI0+3GVvml70k2aA8REordgeSLD/ClHlgoIr+Y/90cs07WRUDDhdqgU27KxsDy0svIwAAnfrNNV545YbZWy+2k9y5Zv8gHaXm8Ara6LRXyxVI= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0801MB1998; 20:c688NAswXl1jcDyetPpFJBzJaEK66eeSWUeZFJayV40dNGhl3hBLKqFwst66nf+bTnH0LbXkYqOKpuYZIh5etR6vVLbhPISlruEvXLLulk6Q98L5OtBsOrpbLnyjmF2encx7zcGhLpbXRe0RbqyXh5iGkAdCSEkvGVCtRHMRxdg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jun 2017 16:47:16.8366 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1998 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.5.131 Subject: [Qemu-devel] [PATCH v4 11/13] virtio-console: chardev hotswap support 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: pbonzini@redhat.com, Anton Nefedov , den@virtuozzo.com, Amit Shah , marcandre.lureau@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: Amit Shah --- hw/char/virtio-console.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index afb4949..198b2a8 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -49,7 +49,7 @@ static ssize_t flush_buf(VirtIOSerialPort *port, VirtConsole *vcon = VIRTIO_CONSOLE(port); ssize_t ret; - if (!qemu_chr_fe_get_driver(&vcon->chr)) { + if (!qemu_chr_fe_backend_connected(&vcon->chr)) { /* If there's no backend, we can just say we consumed all data. */ return len; } @@ -163,12 +163,35 @@ static void chr_event(void *opaque, int event) } } +static int chr_be_change(void *opaque) +{ + VirtConsole *vcon = opaque; + VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(vcon); + VirtIOSerialPortClass *k = VIRTIO_SERIAL_PORT_GET_CLASS(port); + + if (k->is_console) { + qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, + NULL, chr_be_change, vcon, NULL, true); + } else { + qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, + chr_event, chr_be_change, vcon, NULL, false); + } + + if (vcon->watch) { + g_source_remove(vcon->watch); + vcon->watch = qemu_chr_fe_add_watch(&vcon->chr, + G_IO_OUT | G_IO_HUP, + chr_write_unblocked, vcon); + } + + return 0; +} + static void virtconsole_realize(DeviceState *dev, Error **errp) { VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev); VirtConsole *vcon = VIRTIO_CONSOLE(dev); VirtIOSerialPortClass *k = VIRTIO_SERIAL_PORT_GET_CLASS(dev); - Chardev *chr = qemu_chr_fe_get_driver(&vcon->chr); if (port->id == 0 && !k->is_console) { error_setg(errp, "Port number 0 on virtio-serial devices reserved " @@ -176,7 +199,7 @@ static void virtconsole_realize(DeviceState *dev, Error **errp) return; } - if (chr) { + if (qemu_chr_fe_backend_connected(&vcon->chr)) { /* * For consoles we don't block guest data transfer just * because nothing is connected - we'll just let it go @@ -188,11 +211,13 @@ static void virtconsole_realize(DeviceState *dev, Error **errp) */ if (k->is_console) { qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, - NULL, NULL, vcon, NULL, true); + NULL, chr_be_change, + vcon, NULL, true); virtio_serial_open(port); } else { qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, - chr_event, NULL, vcon, NULL, false); + chr_event, chr_be_change, + vcon, NULL, false); } } }