From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <010701a1a1d35cb4-94fd4261-701c-4bf1-9ac3-862d252f5883-000000@eu-central-1.amazonses.com> Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020077.outbound.protection.outlook.com [52.101.69.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 8764A8045D for ; Tue, 3 Nov 2026 14:32:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O+h2AT8Db4jhhhfKzfCK6FkLav/89m3n9xEl5u0VJwMKeuN1kL9qI8xS3tGHxz4qwEdG+GTggTIsRM06HBEvOt5NFDl2UtwCsnUv+/qYj1JSnK+2xBQ3xL5guYcYulH2VxGi2asrWHU8olQ84kzOeTYh3eZA4c6sRVjM84fdrkLkUNvLXfe4c1DH21atSvG6kxoDJb7rfx+BYwyWBP0HvgX+hX6iPPNqkjOX9l4qLGLll4/xOvoWGBHkuUDaSUZ9J7skPzKDE0KYk7EnuJesBMrPRiRVqer8UVFrMwVI5iY4Bc98OKjKEqUUzzyhASFOIV60MfTIUi5GvYbJGvkszg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/YwkJVUJ+qkRl96vpEIP33jiA+RRbNoi0lVG/2RaTRM=; b=FT2I4ua4SQn8yDNPTGBX9b/OqKPDXIX5nFAq4mrMMmSnhrOqv/iIvryYDa6z4+0H1jng8CNLovFVBgb0lLyTI5FaxmC9tfbnaD5pn0T3tVggclrzPHfWCJTuG8pyxTIIMUjEwovMd0cEYbwySFpNQD/+HmbyoXKdZ9m3nEwg00m/onQH+gUooKS37YhpGPgoaiyUT4HacuqvWeWESMI1WCc8HdHCfjhR2ujZqCdmVno6eRjzyBwlKvUgq3sCs0z6IO3MqmQoOPpZ2jYQ7cOZuOqU6G2z7vg8whtYupm+oK4Bc7en/++R9LI4FDFC9vSWsVTqWrzuoH/W4hmHU8ROZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 69.169.224.1) smtp.rcpttodomain=virtuozzo.com smtp.mailfrom=eu-central-1.amazonses.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=sashiko.virtuozzo.com; dkim=pass (signature was verified) header.d=sashiko.virtuozzo.com; dkim=pass (signature was verified) header.d=amazonses.com; arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.onmicrosoft.com; s=selector2-virtuozzo-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/YwkJVUJ+qkRl96vpEIP33jiA+RRbNoi0lVG/2RaTRM=; b=YMmtMU8/wY85Zlo5sBcowV3K55RWkd2wMS0/9QbAtO96gEWQXlpc2xtvECDMRjsbaJif1SkxrjvGAQYNWJdOpQdEnbXEm53FsjqUnFKbxKRfygqdUPREAp3qwutWOPhUjS6EVQ1BSuVc/vq7/gccGfWV13+tm4jiOlWEIh0sMTY= Received: from DUZPR01CA0306.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::16) by PAVPR08MB9140.eurprd08.prod.outlook.com (2603:10a6:102:30b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov 2026 14:32:27 +0000 Received: from MAD0EPF000008B8.eurprd04.prod.outlook.com (2603:10a6:10:4b7:cafe::5b) by DUZPR01CA0306.outlook.office365.com (2603:10a6:10:4b7::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.8 via Frontend Transport; Tue, 3 Nov 2026 14:32:27 +0000 Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 69.169.224.1) smtp.mailfrom=eu-central-1.amazonses.com; dkim=pass (signature was verified) header.d=sashiko.virtuozzo.com;dkim=pass (signature was verified) header.d=amazonses.com;dmarc=pass action=none header.from=sashiko.virtuozzo.com; Received-SPF: Pass (protection.outlook.com: domain of eu-central-1.amazonses.com designates 69.169.224.1 as permitted sender) receiver=protection.outlook.com; client-ip=69.169.224.1; helo=b224-1.smtp-out.eu-central-1.amazonses.com; pr=C Received: from b224-1.smtp-out.eu-central-1.amazonses.com (69.169.224.1) by MAD0EPF000008B8.mail.protection.outlook.com (10.167.241.166) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5 via Frontend Transport; Tue, 3 Nov 2026 14:32:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=23yjbh4k34hwzfubhuiim7m4inbd3ick; d=sashiko.virtuozzo.com; t=1793716346; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=sk0wX8XlFpwAKlqH7dSj3nGgFWRTSJedMMrrgszWVCo=; b=eZDJmlcGFP9l0dn85UNVOUa/gqjAV7sVUhO5nZ2AVjhwslR5eC5dQLQMWc5nGOqU vJ3DLpW2kwJr5QNhnbtGXy7NoMGoyKfmnicltNOmE4msgHjRFmmg+Sx+kyqxZKO7NRX zDVjd0Mm2q4NuvgNxtOkfC5aZO2rIEpjhSjkArhB1haMTE5F0PGuXR80icLcn4Sd9xD VUuR//qXOa+P7NJwMhcKR0qL5psmxkmaZ6NawVdWjZlvDBcGrSn2fcz9LHYDdQI6vVT J8RfukflY8xeoCJHjyCDe69eR1ClNCf6MyS6SPbU0J3J0oJu05Fy9VPThqD+BcoZgJl ilPHzQo7SQ== DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=qftdzk2dqsatjnlrq4r5brjbihpfcrsh; d=amazonses.com; t=1793716346; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date:Feedback-ID; bh=sk0wX8XlFpwAKlqH7dSj3nGgFWRTSJedMMrrgszWVCo=; b=ig4oWtwm/mRQsr4bVWpuH//Vij22zSzn43/gCAUrTnDHNwpkyEamxozO9pSN6YYC +/T1XXJJIwIVuWDO5g42LWElaoCMX+z+1OOKDng6AcxyfDA/t5On/I1S6k6WpZLDKaK wOobKCVBJwrBdgRJMo/56SHC424Ppq3QGBzn7G5k= Message-ID: <010701a1a1d35cb4-94fd4261-701c-4bf1-9ac3-862d252f5883-000000@eu-central-1.amazonses.com> From: no-reply@sashiko.virtuozzo.com Subject: Re: [PATCH QEMU HCI-8.1 v7 31/35] VZ: migration/cpr-exec: take the vhost-net devices back if exec fails To: Andrey Drobyshev , svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com In-Reply-To: <20261103-vfio_v1-v7-31-4467fdccbbe6@virtuozzo.com> References: <20261103-vfio_v1-v7-0-4467fdccbbe6@virtuozzo.com> <20261103-vfio_v1-v7-31-4467fdccbbe6@virtuozzo.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Tue, 3 Nov 2026 14:32:26 +0000 Feedback-ID: ::1.eu-central-1.2wRQJBpg9g1fGRYexx3dUuYGS25Bux+2TEOx72/m6U4=:AmazonSES X-SES-Outgoing: 2026.11.03-69.169.224.1 X-EOPAttributedMessage: 0 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MAD0EPF000008B8:EE_|PAVPR08MB9140:EE_ MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: ae5efeb4-d672-4586-edce-08df39b7486e X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-AtpMessageProperties: SA List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|704161411799003|9140799003|32142699015|48200799018|376014|61400799027|6133799003|4113699003|5113699003|10067099003|16102099003|22082099003|261102123227099003|18002099003|55112099003|56012099006|5023799004|4143699003|261022105027099003|261021121427099003|261026121527099003|261022075727099003|261009223027099003|5063699009|261028144727099003|261026140227099003; X-Microsoft-Antispam-Message-Info: wmf683bMTaGxt9PKpCH7CpfRLbZ9XJK25FIo4v6F0GcbYwodIsJwWZgdzyOej92CZCpui0dXvmEXW99kwIl2OyjfCym1UHsQ0ocftO3GVg5VR9mPhSEg9q+lRjWCZIGAg2+qqE4ubkj/P/ptSfTclcGj0qokrvejFOcbwEywLTqrKFK0PhlpyXxOeHTLVzB+8qifIbIFegdUhwXB3/DCCte7OMqobvFiUUXTVpZwlJpQJ2wELGFRsupyRBi7O3yO8jH2pnd6pPDAW+s0rDqE6F3L7RqjEbfzAP0baP+AKzNDrq378czdUpXWqT94HqhYvREijYXmtEEkTX3+SUF/emZZ+m0WXJyrOWps7NTcRL0GE5FNIipvttf6m25yjkNujqpEtrN/usNL8jeGgkkeP+kt6XFcq+gi8+SL7IpkvDH+V3SjM24dWjZHtFZQ6ca+/x1djbl3yN0z+UwgvRC41xozFCFmAKHLolmlBfrWvgTKHl0BycCuGXSuyRj9XT10oxERHSL7dxqj/osXIkCrT2p/izuBaAnOOPU7kkRMT8mDpC3/wRSexvmi0Upg7EHmEjuZ9DW56i4nAIIJbMi269cSUhsHTCp3m+zxt7LifDxTtMshbWXGr6wXqc3j6tuhlObVTJ6J8z4Exrmoo1eKkmzBJ9UU+j3sjp2OyzHBusa3I4TAd0nGwDUISGw4uf6m0XgHvUm+VGODzbSQPOqRGM+KaCGi8s+9vJUSqrSxoxxqR0Vb1wUXwE1+WI1FrZiDlJBQTwDvuFjEK5gdvdRV3A0dvVGJNPZdBJFHnK6U+Pyp1Lfj2v4796+AD0IWyi25WIzJvufAxxlCmc+cNOnF9YRgaAAxYhLMLhi671KAeVVXRGOCyVfgDV5sMu2GI5n7nkAeHajtUkhlyulAVPkwUTCIF95ziUr3WRw1km6+aj0J9aGogUej6a/a+uwZg9kn X-Forefront-Antispam-Report: CIP:69.169.224.1;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:b224-1.smtp-out.eu-central-1.amazonses.com;PTR:b224-1.smtp-out.eu-central-1.amazonses.com;CAT:NONE;SFS:(13230040)(704161411799003)(9140799003)(32142699015)(48200799018)(376014)(61400799027)(6133799003)(4113699003)(5113699003)(10067099003)(16102099003)(22082099003)(261102123227099003)(18002099003)(55112099003)(56012099006)(5023799004)(4143699003)(261022105027099003)(261021121427099003)(261026121527099003)(261022075727099003)(261009223027099003)(5063699009)(261028144727099003)(261026140227099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VJSP1nbmr2fGN4OOsdDarCEnNeKYh53lNSLVTeaaoRgRmRlzuO7TaBdoGPsNyd3Ki5vqi8jGb0gvDm9n6xYZnq4eq/aVi6IrNvFat/kwMtIyeT42YZcMourF4NQ8G5dYvB4uEmMFyS/UPM/TDc4KT6ONXZiwtJZZjuo5UREW2PuJMQ3BpJCRcCWzACViP428O4TzyqW5H8PhIb0uUiNEmjsE5KFvtIjgZb0OqgtsRma43DsEuThFtGKhLA1V3LENBoB1Nzq0BNGL0tcfIxq3vwA161LX/EmiCFiZzif2tvExcNAeGZ5HFFJfS2zHHMxawYqV/8MAKBGNDoljX6agPwat2KHNtdHVjjApO1xWrtMHxfAu+mn5CZxQGpfy6hcpshGRz7NzToJoBJRAeDK3zuKgSLHD9T33JN0LNgG3aGnZkdOwmJGMs62wDVXdavC5 X-ExternalRecipientOutboundConnectors: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 14:32:26.5956 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ae5efeb4-d672-4586-edce-08df39b7486e X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: MAD0EPF000008B8.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9140 Thank you for your contribution! Sashiko AI review found 2 potential issue(= s) to consider: - [Low] migration: missing vhost_net-stub.c stubs for vhost_net_cpr_set_own= ers() - [Low] vhost-net: cpr-exec failure path does not restore per-vring busyloo= p timeout -- commit e24cbe54c34c6fafdb0c02981bf567ef0cd723b5 Author: Andrey Drobyshev VZ: migration/cpr-exec: take the vhost-net devices back if exec fails This patch makes cpr_exec_cb() call a new function, vhost_net_cpr_set_owners(), when execve() fails. The function takes back the kernel vhost-net devices that vhost_net_cpr_reset_owners() released. It does this with VHOST_SET_OWNER, and it sets the vring call and err fds again. > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c > --- a/hw/net/vhost_net.c > +++ b/hw/net/vhost_net.c [ ... ] > +void vhost_net_cpr_set_owners(void) > +{ > + NetClientState *nc; > + > + QTAILQ_FOREACH(nc, &net_clients, next) { > + VHostNetState *net =3D get_vhost_net(nc); > + > + if (net && net->cpr_owner_reset) { [ ... ] > + /* RESET_OWNER also dropped the vring fds set by vhost_dev_i= nit() */ > + for (i =3D 0; i < dev->nvqs; i++) { > + const VhostOps *ops =3D dev->vhost_ops; > + struct vhost_virtqueue *vq =3D &dev->vqs[i]; > + struct vhost_vring_file file =3D { > + .index =3D ops->vhost_get_vq_index(dev, dev->vq_inde= x + i), > + .fd =3D event_notifier_get_wfd(&vq->masked_notifier), > + }; > + > + r =3D ops->vhost_set_vring_call(dev, &file); > + if (r =3D=3D 0 && ops->vhost_set_vring_err) { > + file.fd =3D event_notifier_get_fd(&vq->error_notifie= r); > + r =3D ops->vhost_set_vring_err(dev, &file); > + } [Severity: Low] VHOST_RESET_OWNER also clears the per-vring busyloop timeout in the kernel. This loop restores only the call and err fds. Can the busyloop timeout be lost after a failed execve()? vhost_dev_init() is the only place that applies it: hw/virtio/vhost.c:vhost_dev_init() { ... if (busyloop_timeout) { for (i =3D 0; i < hdev->nvqs; ++i) { r =3D vhost_virtqueue_set_busyloop_timeout(hdev, hdev->vq_index= + i, busyloop_timeout); ... } The value is not saved in vhost_dev or vhost_net. Neither vhost_net_start() nor vhost_dev_start() applies it again. After vhost_net_cpr_set_owners(), the VM would therefore keep running without the configured busyloop_timeout. Should this loop re-apply it? > diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c > --- a/migration/cpr-exec.c > +++ b/migration/cpr-exec.c [ ... ] > @@ -259,6 +259,8 @@ fail: > if (cpr_ram_rdonly) { > cpr_ram_restore_rw(); > } > + /* Still the same mm, take back the vhost-net devices we released */ > + vhost_net_cpr_set_owners(); [Severity: Low] Will this link in builds that use hw/net/vhost_net-stub.c? migration/cpr-exec.c is always compiled, and cpr_exec_cb() calls vhost_net_cpr_set_owners() without any #ifdef guard. hw/net/meson.build compiles vhost_net.c only when have_vhost_net is set and CONFIG_VIRTIO_NET is enabled. Otherwise it compiles vhost_net-stub.c. That covers --disable-vhost-net builds, non-Linux hosts, and builds without CONFIG_VIRTIO_NET. The stub file has no stub for this function. This problem wasn't introduced by this patch for vhost_net_cpr_reset_owners= (), which has the same missing stub. The patch adds a second unresolved symbol and does not add either stub. Could stubs for both functions be added to vhost_net-stub.c? --=20 Sashiko AI review =C2=B7 https://sashiko.vzint.dev/#/patchset/20261103-vfio= _v1-v7-0-4467fdccbbe6@virtuozzo.com?part=3D31