From nobody Fri May 3 19:43:00 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505822945155781.6773428702403; Tue, 19 Sep 2017 05:09:05 -0700 (PDT) Received: from localhost ([::1]:42488 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duHKq-0004IN-Ex for importer@patchew.org; Tue, 19 Sep 2017 08:09:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47543) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duHJp-0003x6-Uj for qemu-devel@nongnu.org; Tue, 19 Sep 2017 08:08:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duHJk-0000OH-U8 for qemu-devel@nongnu.org; Tue, 19 Sep 2017 08:08:01 -0400 Received: from mail-eopbgr00128.outbound.protection.outlook.com ([40.107.0.128]:19886 helo=EUR02-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 1duHJk-0000NF-3O for qemu-devel@nongnu.org; Tue, 19 Sep 2017 08:07:56 -0400 Received: from pavelb-Z68P-DS3.sw.ru (195.214.232.6) by AM5PR0802MB2547.eurprd08.prod.outlook.com (2603:10a6:203:a0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11; Tue, 19 Sep 2017 12:07:52 +0000 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=3SOYTL74CmtLllXE/uRD+SGa9SIFGf56O/xzd9sgP6I=; b=NkvUTx6M18/Qp5+h/vFMlFhzfBwFp+SdwJY3CBVG9dum9W12PuL0VBLF6rsH5n+WyoMgzH5oHdBsj3q3FqSSDCSpeJjNIVkGgLu0dZ99AFGsh987Xr/CMy4XoIifaw98QA/kl7P7RHDybysO0w8oDfvcL7Y2AeP+WZNqgeQZ/xw= From: Pavel Butsykin To: qemu-devel@nongnu.org Date: Tue, 19 Sep 2017 15:07:33 +0300 Message-Id: <20170919120733.22020-1-pbutsykin@virtuozzo.com> X-Mailer: git-send-email 2.14.1 MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: AM5PR04CA0026.eurprd04.prod.outlook.com (2603:10a6:206:1::39) To AM5PR0802MB2547.eurprd08.prod.outlook.com (2603:10a6:203:a0::23) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e9597064-f51b-4f7d-1e6c-08d4ff570dec X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM5PR0802MB2547; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2547; 3:UGtJraBwdbFdggfLRUbWee05AdKct+uMDNJIiyuD5whO1xRtC1iHVdXGTgqU7bXLiF8Rr/y01cHQnREE66UTAoPTvytOAuaR5yRrFoOF7Ja804tIofs32uaA8kOT5adfxpyDkiq/0KgCcVrMC+IQ4qVafgg+07CkMCLkcnX+LjY2URR+tlU+evi+8bOFpj23VqxLKJoMaZJYunvx+/Ppg8ZpEewBFppggyMHriw1Db+qq1727a7Dm9E9Wc2jzw/V; 25:NuxWdgwMIfulbaqNBiCg+Bnw7OGPKXSoFg7BV0fovLIY6NeW7CK2WHNHDh+sI0A9dQtxzh9tYbHUxpUevGsR1YDTU+wOto7WbVeIVtinZZ0gJICrOPJEwg10u8wl0nbsmg7Hujo5UezEzIVII/Vsu5AkuksovukOCTodq92F4DwcRtgkOL1HDFZe7hLBJkHwSR5DQtOr7i4ztPfaQ6a71YfKZCfAVb2Vz4u28DFoZDNWG8QbB2MnE9TuM9qvBjEIwKGkvZPuxajMjQKDk1lBMunieE91LvbO4hrdiCravAaEV6CsQZ6r4TVpGxglBYEjoI0bz4Z27W7xQw7GVOXOUQ==; 31:RwdZ4f1nTphrYD29X8yihaaKEXGh1Ekv4IYqBbwIc4OtgpevxeJ/L8+yTC80jqlCHlf8KRt4nFU6eSue97rGI1z7GcfNjuRmo9em563VjmynzccnpueIFDyLl51pivsBG6vSQorURqAV1DifqSAjzIaa0WhZV/z7ipyrOYK4iY2YzZUcCG0juEnaow1kymPq3wOTFy3bSiKjh5tHIhVv6Amy+DXr2X4npfzlqQSKsRs= X-MS-TrafficTypeDiagnostic: AM5PR0802MB2547: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=pbutsykin@virtuozzo.com; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2547; 20:RkkCzEW2938av8LMNIBA7F6EZGlyyVcbw44dVl69v68eJZQStO/nZghDrlrBbTcCFq18rFtcWvCtA0oTX2+9pBl08zoILhsg03EW2lILL4IFx/cs9/p/BUtIQ5reQaA8V5+xPzVXfr3ocCvx2y2qNluLKcSTKZ7rvjdJw0DJM7vPze6bDxcMBLyRvqOy9SJNXatbZWucd7WIcAxsNAygIzjF4EYDkRkxjOsU1p4Emm6nezhcgbS6IE+ErW3YTmbNoiyoyRmycagu+Mw3BFzZJh+QkrNcN9t2qO0huksvXADG/0qDbyVIcJHkStRrbGRj4cKERkTfzcql9/VvejE7VBKgkmB7JRmGdHELOJgXRPCNKSWSCcPIANisH8xf2RfjEBe7VqkEjvCeR3Aj9/UixSgmKlQD+TygD0gzs+cWAqU=; 4:ODYdTxNMvNFa1rECi4noj0FJ3/BF1RhbRhUbktJ8qiEse9L3J0VlLS05N1mzWVtBy22T2r1S7lY9MylZGNn3BQDwd/y5jEhBjscXprJ56hRwN4X+2/tfzR1VYO6DkKMRdvNXyhDoBrwe8D7T1vErZ/8gCFO1WmuuAbTg96Ohx3wv6gnZ9OfHGcio3wG7bueh20WPROzZtHHsDn+VU8nmlH0G7HtNI5PTgUIhnZefrVXWv+R1/qfknpIXsFMBeJMm X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123560025)(20161123562025)(20161123564025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM5PR0802MB2547; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM5PR0802MB2547; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(7370300001)(6009001)(346002)(376002)(39830400002)(189002)(199003)(105586002)(6916009)(316002)(97736004)(6666003)(106356001)(81166006)(16586007)(7350300001)(50466002)(2351001)(33646002)(16526017)(7736002)(48376002)(69596002)(6506006)(2361001)(6486002)(81156014)(8676002)(47776003)(5660300001)(68736007)(66066001)(3846002)(5003940100001)(25786009)(107886003)(189998001)(305945005)(6512007)(50226002)(50986999)(1076002)(6116002)(101416001)(86362001)(53416004)(36756003)(4326008)(478600001)(53936002)(2906002); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0802MB2547; H:pavelb-Z68P-DS3.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0802MB2547; 23:63yQ2oUVA038bEjb71QkCQw3DlZSYYdqLqUJg+X?= =?us-ascii?Q?LLEQuf7QXH2n35ciQrd8PiK5ol8BDgcF+XM7mrvUMsQ4sbELw0PUuO4Q40YQ?= =?us-ascii?Q?wUnE/oZt0vheEXuQmZALelagjz43goXFd7OJtCHOpAFbfXCA2X4Yv2YeItHQ?= =?us-ascii?Q?6/lDUP3mvp28Wmk0FAOuKwSh03x1U5WkJI/+6FzK4F5ruiop/axK6i/LPVOq?= =?us-ascii?Q?gTRb9Q3TOsANFP95yTWnKaHIQBdCpQ4RVNYFZ4GC/E74m4ZNT7qAkkaaKA99?= =?us-ascii?Q?NdWhP1DD35g95N6TFpTs/8XqLc5dJN6JHO5zRUk9NYdt3OdqPE3xZclf9wjA?= =?us-ascii?Q?qH8rwkzk99ZLv14DrPepp1WD087aY9bhTJkCx7b1oSxxW4rHHgtzpa5Capiv?= =?us-ascii?Q?2N7/OSii44DXGs1sat5cBTlZ9rHuVB//tXdY1kQFLfAbBtwVRVyYe4Ui+Z29?= =?us-ascii?Q?7WImayyTR6isgHFyNTTtNc90o0/Cw7by/Vu0++B2m2Rrt98E+CiVmRjSOcq3?= =?us-ascii?Q?v5zRAG2JAtxDmMx1itr3titsrnAjfJeVzZzVMEmznkOCt1cxE39kOkBU7Q4I?= =?us-ascii?Q?Z5MbXCof1l9WutzVuW1hF37Qst8ttSs+R7CbZIrEpyzcGinbxLx5YDZgMDrQ?= =?us-ascii?Q?wrAn8wSIQ9MYY9RNi1OrdaPUckn8mY5kSFy9CM9noi+jfqMkXUGUF7a8KvH6?= =?us-ascii?Q?KsysaHgllCg4wSExzjd8bv/FdrIiIOVQtoP0bbNylwMu8im82nNTSepfIet+?= =?us-ascii?Q?wd3W6k4ZlQVpRv8YC21ga/n3O3x6qcQl1QvdBR9YWAdOqByV+Z0RadoJw3P6?= =?us-ascii?Q?t0kMIZLMGvgObfUIBTl5MO7gJLA7TsZGGS9hNtpUEPBL4/b/aiTrcvsW6Vf/?= =?us-ascii?Q?4OIkzmPZ1fg93ppPZslScp9g8+dUf+Hq0z3xUWuT+hlK093bFaXFrxmh3i7F?= =?us-ascii?Q?Crjv/oFvKEgqmmCJGjjEEKpGELibNqt31+P6GIc6hFZZLyX6K9d/FSStjmzj?= =?us-ascii?Q?j+qDFvud9wMYF+dGApEfBHIfocYjGdCVX8G1dk9l1CzioCf/8JAtM1P55PhA?= =?us-ascii?Q?gmNBtDO4gahD83pk8rYmzQWsRDR8YBsHrfc1eDv1FrbK3/ceGYGEd5s2r+E9?= =?us-ascii?Q?5rzwwrm8ltIKrclr0nvmk2v4esyuHCrfirtS/PXl1ET8wZeEf4VBRoxJSSJT?= =?us-ascii?Q?UvQ5Wui/LkyG5RHtDg2tSsFixjrveGIfft8FpOfEGdHbIKjwXZmFB5tRpiQ?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2547; 6:/ABCAjmqm5VEbGBvr2BsO5g7b3EMnwKN9HHLKwwvgoU7lF772N9KrzKzsKIiLVG4znSxzzw3MbWtwaosixP6749Y0FJ3POQZ+8nBKPqBafSQkCOfF/jk9feVX1kn/E/uICX7NHRdOUm+07E1NPWEMt95FYzvFgaOorMRm7UCal1F1SaRa0pgX1fDEsoDni4x6mO7w73iTwUOsFDKavGjp0T/hGlOtAoGraFAEpH7tjNNdlwkTzXy27Yv7pQ7qDOUN05SXGvZgwiwBVyYc3nkir47KXvpIAH8saAFkoEXKzdX5VFH9dI3ajK+UQ0cd5u/t+n3YUZjnGI+uN/DXDsG5w==; 5:TIssmWpr4FsSA10ZPTqHKtYBG9hTnVSC7rywTnZk75gFXc/ExnmZUU/Ov9IuFfuvew6wm22JiJApDC5Zqzz72nL50FT9k2OUWF2iHXVRZPZyqD7hfUqRiN+wj/Wpb52g6gzTOrxDlsO+17eZVEWByQ==; 24:qzGUVGqLw05xGNmVtTYbwtUndQGpcMvfTRNZB0azGwbPnNNL1tcH5AMHQGpf0vGBKbujqFRlJgM//TwuCcghs8G3MjLwwT55r9wh032HwQo=; 7:d93G0JxWaUYi5NDsb93l47zx3Zb4ejGuHlmjVBWpRHE8cGaZsLVtEU2Yl1tUbJAmOJxt6HXn3E0TCDt4KqU+ILA9vkY8tyLXyQb77S6wRiPZGWC8PmZBoyMGSrd7xJ7pmABRNiFKDZuaERiS8JyDRUrwwtQuyIkcKJuJGftdzVley4PujPqfs35ssZ3Kmyll6rk9MdzxzJc6gbUO9MTm/9GGIoUjzKGlnaexHn3+4ss= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0802MB2547; 20:hvH0X8GI92fMzRVwwytFVLhWS6es4gMhJ7KtKiMqUKfDdPv/BnIyz3HmnZOLJo4am8JGoHKtd8P1BxIy+4kRG+EiwGuf+i2Uf2d1veveDRsc7bF38ZZPJoK5OMhXKWDJXqjwh+I72TAHWuUZtvpxTnt/rm/c6V99x8ZppEiKGo8= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 12:07:52.2992 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0802MB2547 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 40.107.0.128 Subject: [Qemu-devel] [PATCH v2] virtio-serial: add enable_backend callback 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: den@openvz.org, pbonzini@redhat.com, amit@kernel.org, mst@redhat.com, pbutsykin@virtuozzo.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We should guarantee that RAM will not be modified while VM has a stopped state, otherwise it can lead to negative consequences during post-copy migration. In RUN_STATE_FINISH_MIGRATE step, it's expected that RAM on source side will not be modified as this could lead to non-consistent vm st= ate on the destination side. Also RAM access during postcopy-ram migration with enabled release-ram capability can lead to sad consequences. Let's add enable_backend() callback to avoid undesirable virtioqueue changes in the guest memory. Signed-off-by: Pavel Butsykin --- Changes from v1: - rebase on master a9158a5cba hw/char/virtio-console.c | 21 +++++++++++++++++++++ hw/char/virtio-serial-bus.c | 7 +++++++ include/hw/virtio/virtio-serial.h | 3 +++ 3 files changed, 31 insertions(+) diff --git a/hw/char/virtio-console.c b/hw/char/virtio-console.c index 198b2a89c0..172c72d06c 100644 --- a/hw/char/virtio-console.c +++ b/hw/char/virtio-console.c @@ -187,6 +187,26 @@ static int chr_be_change(void *opaque) return 0; } =20 +static void virtconsole_enable_backend(VirtIOSerialPort *port, bool enable) +{ + VirtConsole *vcon =3D VIRTIO_CONSOLE(port); + + if (!qemu_chr_fe_backend_connected(&vcon->chr)) { + return; + } + + if (enable) { + VirtIOSerialPortClass *k =3D VIRTIO_SERIAL_PORT_GET_CLASS(port); + + qemu_chr_fe_set_handlers(&vcon->chr, chr_can_read, chr_read, + k->is_console ? NULL : chr_event, + chr_be_change, vcon, NULL, false); + } else { + qemu_chr_fe_set_handlers(&vcon->chr, NULL, NULL, NULL, + NULL, NULL, NULL, false); + } +} + static void virtconsole_realize(DeviceState *dev, Error **errp) { VirtIOSerialPort *port =3D VIRTIO_SERIAL_PORT(dev); @@ -258,6 +278,7 @@ static void virtserialport_class_init(ObjectClass *klas= s, void *data) k->unrealize =3D virtconsole_unrealize; k->have_data =3D flush_buf; k->set_guest_connected =3D set_guest_connected; + k->enable_backend =3D virtconsole_enable_backend; k->guest_writable =3D guest_writable; dc->props =3D virtserialport_properties; } diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c index 17a1bb008a..9470bd7be7 100644 --- a/hw/char/virtio-serial-bus.c +++ b/hw/char/virtio-serial-bus.c @@ -637,6 +637,13 @@ static void set_status(VirtIODevice *vdev, uint8_t sta= tus) if (!(status & VIRTIO_CONFIG_S_DRIVER_OK)) { guest_reset(vser); } + + QTAILQ_FOREACH(port, &vser->ports, next) { + VirtIOSerialPortClass *vsc =3D VIRTIO_SERIAL_PORT_GET_CLASS(port); + if (vsc->enable_backend) { + vsc->enable_backend(port, vdev->vm_running); + } + } } =20 static void vser_reset(VirtIODevice *vdev) diff --git a/include/hw/virtio/virtio-serial.h b/include/hw/virtio/virtio-s= erial.h index b19c44727f..12657a9f39 100644 --- a/include/hw/virtio/virtio-serial.h +++ b/include/hw/virtio/virtio-serial.h @@ -58,6 +58,9 @@ typedef struct VirtIOSerialPortClass { /* Guest opened/closed device. */ void (*set_guest_connected)(VirtIOSerialPort *port, int guest_connecte= d); =20 + /* Enable/disable backend for virtio serial port */ + void (*enable_backend)(VirtIOSerialPort *port, bool enable); + /* Guest is now ready to accept data (virtqueues set up). */ void (*guest_ready)(VirtIOSerialPort *port); =20 --=20 2.14.1