From nobody Sun Jul 26 13:29:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1781283413; cv=pass; d=zohomail.com; s=zohoarc; b=A6qp1itrTtCwZc2UCerdCFwdV8gpgLMT4ZsRQCdOK3babnSn9FEKnB6bNLm31rsiYEBDB/vWzJGqqJjYsy0+AmCoi/6NTQ18Ll6V2a8tE3nHahqlEbp/FwML/PfXTykipGrGhYBFBH4TXrb2ckhqdJFjyhgsDZwhH5I1+suO2O4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781283413; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=l7alPozeLzAN/DwEt8wzKQzaI2aDJHA52sHdzvZDKOY=; b=S2/CLT+18uj7ga4Jxzl4Qdqj8FMnp7IspYHeXavGJGon1zrk8heoWbqDXI73l63Yn9x26dX0v/S0VZSNn0/mA4ejQRUcWOPTvvaNdrJsfryd8nC9J8VuiFswwIZbfDh5YdivatB6LxrAoUCUE6NrTLL7V+dn6YTH0xvAY4dsbEk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781283412769886.5427798750085; Fri, 12 Jun 2026 09:56:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wY5BH-0003uU-Dg; Fri, 12 Jun 2026 12:56:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY5BF-0003u9-OA for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:56:29 -0400 Received: from mail-westeuropeazon11023140.outbound.protection.outlook.com ([52.101.72.140] helo=AM0PR02CU008.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY5BD-00044J-T5 for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:56:29 -0400 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by PAWPR08MB9097.eurprd08.prod.outlook.com (2603:10a6:102:330::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.18; Fri, 12 Jun 2026 16:51:22 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%5]) with mapi id 15.21.0113.013; Fri, 12 Jun 2026 16:51:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=peulTM+J6FZ6kCobf7+n5ePKKA+KUCuNmBVu5tDrx1OYBl5CPozrPdj7AvsEhHcSHI1SMOMlwJuliHZI+/jlQllLmHq0bOj3nozRO1bOhXjAfHb0Vur+IDNm/yaKbx1CuKzyektPqBg6lEpPpXTUUexHWJhSMHjqW3t91KwYqNHb0EeiUkSmQ/ahyQ8h3EBO0N2Ze6JEm9sVTaUUsJgRTxMmFdYsoXBIt+XG/UFf7X2CBNqFAoDnomHIm58GNILyq2FT5UNs6FoDXqwZPQ6xYP2MySlyZwT646aRp0Zecnt73ukfqGrvVc4zjyknmirc9pHpMd29oqF45qUUv9QLBQ== 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=l7alPozeLzAN/DwEt8wzKQzaI2aDJHA52sHdzvZDKOY=; b=Ox768pZUcWt357bJ7+Srq7FQaWnarQZms3TkZ503LNp20rHE0BlrKONa3jjXIwykn73DT2BAyQrt0Zu2h8TQW3pCerhWpyoVpIih/fkG/IoxP4H3nGXXK6AtNo40rP0iu3CgKu+5Iex9fRLO4/deRFuYdmAgWPNeFYFB1KC28r/Vx9Xg2gwd3mf04OjQky+Df5XOxWs/EC6Lut3VMs7u4Oih9xJRIc2oYJz4JvPGtEQVDx7t4B2obDRSktR8mBKyPJOws2xL+ZegjVt+bZbu7Sm/JTtGzx2usb3dEJiEENbNko/uDFDE+wmLuANdGGWi9mji/slMK7HTcYE2qbzzQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l7alPozeLzAN/DwEt8wzKQzaI2aDJHA52sHdzvZDKOY=; b=zcgmcYYXafGGaIp6DVUCw33Hk2eZWHTzG8d1NF8Y5nzrYgrnQRPlCnQazHEGTxB88l26hOSSsPEN1PW5wYmiV1C+hmdx5gh0Q5AD7YcfoFQW/ePTB1MhmGKla1+XxT7H+EdelgjlwuXmCEeNumzbUEO9j3Hyey+WJydenSBFQyPGCF+A0AM9HDXEHli8pYzmuKIid18eCfu2a3Es93E6YFvs5I6KgcIgimY2IB28BtypyJoizFZKlLJK40CuXj7iaVccENgkSRuNLDm3WBkNe9boEilJ7XaNRjREtmWZn1sq3Oh5t/rxlMGoamk17+bT9omKq/Oytk41e3WvDd6BOA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Andrey Drobyshev To: qemu-devel@nongnu.org Cc: mst@redhat.com, sgarzare@redhat.com, farosas@suse.de, peterx@redhat.com, maciej.szmigiero@oracle.com, bchaney@akamai.com, mark.kanda@oracle.com, den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [PATCH 1/5] migration: emit SETUP notification before CPR Date: Fri, 12 Jun 2026 19:51:06 +0300 Message-ID: <20260612165110.431376-2-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> References: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR0202CA0021.eurprd02.prod.outlook.com (2603:10a6:803:14::34) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PAWPR08MB9097:EE_ X-MS-Office365-Filtering-Correlation-Id: 17045109-f207-49b2-b0c5-08dec8a2d51d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|23010399003|376014|52116014|1800799024|56012099006|6133799003|22082099003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: +a4fut81PBG+tbk8nZXf+rErfVLCodavJTw+qLHer75yrN9eBfN+2Rc/pYH6SPk+XXcLJVv8/YVmVUNVYZaQYM4IBcrui9NIbG8xBQrpPDZugku7GLp7fqUAJZhBoBui16LAPQkKiJvS7Y03vKqG7/FgddXhMSY0fTVD6XKVJdWahS71G7Z4reKGE3lOjNafY88JeJxaP6nMw6LWUyiEb9U/dAGdnZJlhPRYm1GL9FCu76oAFT200CwTIqX7NommRB/tELudEAXyylX7JOMG4Jdu/4U+C6krBaJCS2MOHhDFDccexSe+WdPJHKjiAvfm8qJ22K/+w34VC93j2boK7bmYsdQegvl26y8qHpUnpaMCcxk0D666GMrburfT18H8r3VdWKXFqG//8V2PipFga55xktkD8B3bJHn3PsAHXlgWaFA4yzK4eNyCxvtPsJJJGVa0NfwlMHKy1uqdXTBa7wVomGDlezhDWe7niiT7FWMv2xYtC5IPtD3GlQx9pSX1GEvwddZ88LBjCSEtsyus3DjG1rxMcW1pxNSh1VGFnIg9cDJD2ABSFAmorLzGZMLpQehHoi5sA9atoSEWZieILBFKBUzZXgTli+fysvybFb1q3aJ7RgsYCqQuYYFtlp7keyPOfdPZW1TxNviRaV+ItkdcrL1fLyYz0uVeqh18HUcwVGfhS8dgoLEAUuhlWBxEBggLjgdXRWQwj3EW4zJracun04zda8Xh64CZ4Y4U7BLgN5pjTErmzfXxOLXXg33Z X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10656.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(23010399003)(376014)(52116014)(1800799024)(56012099006)(6133799003)(22082099003)(18002099003)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fC+jLnvn0ZkDogiJWIm1D6Etaa+bhhJcDjA6G83BmriTwHI0Ud2y7LM0Wc1Z?= =?us-ascii?Q?/irf9RvnovvX/UMqsOCtCgIc06smWtiyu5i3CZ+iR4pXu6zy1w3rF1L6RKsz?= =?us-ascii?Q?QCwkbwQhTCEFsGfgoc7G8YbHdxxIdFoVqnSNWmp2ZATOuJgZxUY43UjKWgbr?= =?us-ascii?Q?8/bAKH5PThxKiHHX+8KneRZaIW+VdbqqjNBwVGNgE82Gdbm5GlHyAHsTOYLY?= =?us-ascii?Q?JjpYPYu3iOj5m1nGMgSaV4chui5LZcWxZ+PDOiMROtaM17IsQtZbI241Do/f?= =?us-ascii?Q?3hpxixuBNQi8/bFhupY+o4Ecuz+QHu+AuBYvcv3byXPut8Yb+Z22WUCROQn9?= =?us-ascii?Q?Sivz5ZtYRLjpnJf4gdt6z2JBzeUbb1W0LvQzXp/AaLJLyWWJ1Q6pjKlSjQow?= =?us-ascii?Q?1qYg8Pd4CyPy4fi3R0V8wrckGLQW3W4/rtVgbQoARg0c1mGaZ+zqk16DcGGY?= =?us-ascii?Q?2fx4Gh1oTobWmGghYLDrdURHYeBylAgLvbG06RrbVZ6+QJb9wvk3GTOcQ1/y?= =?us-ascii?Q?wgv/oOPL50cLoDhJm/uYv+cwSL6YlcxZ8zcpTsGlCcQIWK4sFtGrtPeAooE0?= =?us-ascii?Q?v1UINbtNKniGfS9MEFWvhkw+0kf9hoP8B5bhnOl09OB1HY8iRloDa3VgO2Po?= =?us-ascii?Q?8hLWpv56Z+7cioJzePLSueIim6U6KGEevPHJkXTuuF+MucZqcThpBbLMBKTi?= =?us-ascii?Q?XwUJA+Sa8IBPau50/+/NEHimmP6SZ3u74tcAiJKLFv1Scab1KwsnYw+yF1hS?= =?us-ascii?Q?G1C6x8rXYCtKCagrxoLoXQ0q8p+vPPNZFijM09Pu1F1PiXhybqL3mDF1nI45?= =?us-ascii?Q?H8/5r56KQoWtnlEBRB1VoeHgLkPHeFG4JSdf5+UuQFFD/YhcH3/OP/Zqmc9K?= =?us-ascii?Q?SUGUXjDDs3bxMBQo+Xj6R5te34VIdoSVT045+aDZjb0dnFSKZQ79NaK6g+CJ?= =?us-ascii?Q?dEqe7HdtWB9p0a0PokVgJivrgY6jmXWVhQMJzc6+UjsJR7yTtj2Vd0WyTHuU?= =?us-ascii?Q?pGCVrh31kCcTrwn3TM9gapEFS8cfAA2C/c5aSIoxPmd04o98Uvr9zzBCQJBl?= =?us-ascii?Q?hHg7pnMOIIj7TWfX9natE/hvO0vLocq8QCXibtH8WMXeaCAZ6A+0bE/ffpm/?= =?us-ascii?Q?7F2LDU2s2ZGX0nUClEjumRUMlpZCSNgSNvkoS1sRBo0RuhAam3II+0ReKPXy?= =?us-ascii?Q?5LDQ5j0ryP+BKZb7pSEgBzSYgFpBTdjR/2jCQlKNG1YSdZDpGv1NrXqqUrFs?= =?us-ascii?Q?dJmfTCXPzP9nzMqXmUyPIvm3lpOxxlmMfC2WWoetksbRnmehlM2j2t/lrM+U?= =?us-ascii?Q?wiRLwceXs2rqz0lGYH3+1JofAZp6R4c6hlSXCqwRISJof0xTHWjpefZg3duE?= =?us-ascii?Q?MaaNDZOG4rbnQi02Txjb6i+tvhir9F+Er4IzFiL8mL89EBocCWnZ5gl4y4Uj?= =?us-ascii?Q?W99NQpmdWw6mqh/lkQ4EAwFOIY/d+XjcHq8aKJdnP86j8oFiJ3kxGr4q/XEV?= =?us-ascii?Q?MEPqaUYvkD+lObtdL83uawM/w+6JlsEhnvKwdK0xMehO2zL2O1qTeqHwBMHn?= =?us-ascii?Q?R+yb4mjMv1amGxIRSFPe20xyy6VmkgQuJuvdm3bY2+bLRKXBj/kDSTP6BEO9?= =?us-ascii?Q?EYnfyvhvQwMp+T5/167aZA4fM02jK/dECA8iFQEyKJdXO0H3mYWkHW9Ge0sC?= =?us-ascii?Q?b60o69X5mBpZglxhjXOGB/agBBGK/wab6EhZCF+zhLEMQtj64oGbF1eWZIfy?= =?us-ascii?Q?JaYSpTwDT/80FVMa2mzc/N7IKXirfzY=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17045109-f207-49b2-b0c5-08dec8a2d51d X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2026 16:51:21.9818 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UxBVDFiUUxuHrOUP21jWUKDki+GgWcKw+z3M+b2DlZJ7Xc/iBwFn/siSMAY+qmARLqOveuzmgwzG9w4Z8okVqx4Kbq65oD871ldirhKBy5Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=52.101.72.140; envelope-from=andrey.drobyshev@virtuozzo.com; helo=AM0PR02CU008.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1781283415429158500 Content-Type: text/plain; charset="utf-8" Devices register their own callbacks to MIG_EVENT_* notifications and process them accordingly. But some devices, especially during CPR-style migration, might need to be aware and process SETUP event earlier on. One such example is vhost-based devs, as they need to call RESET_OWNER ioctl before the target (in the cpr-transfer case) tries to call SET_OWNER. Let's move SETUP notification to an earlier place in qmp_migrate(). Before this change, SETUP was firing shortly before migration thread creation, and FAILED notification balancing it was only fired from migration_iteration_finish() (ran in the thread). But now by moving SETUP to earlier we widen the window. Hence let's also add FAILED to migration_connect_error_propagate() and the special CPR-related case in migration_cancel(), to balance things out. This patch is a rework of the change originally proposed by Steve and Ben at [0]. [0] https://lore.kernel.org/qemu-devel/20260128-cpr-tap-v4-0-48e334d4216b@a= kamai.com Originally-by: Steve Sistare Originally-by: Ben Chaney Signed-off-by: Andrey Drobyshev --- migration/migration.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 074d3f2c697..3c70467d314 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1471,6 +1471,13 @@ void migration_connect_error_propagate(MigrationStat= e *s, Error *error) migrate_error_propagate(s, error); =20 if (!resume) { + /* + * Emit FAILED for every pre-thread failure/cancel that ends up he= re, + * to balance the SETUP sent in qmp_migrate(). + */ + if (migration_has_failed(s)) { + migration_call_notifiers(MIG_EVENT_FAILED, NULL); + } migration_cleanup(s); } } @@ -1530,6 +1537,12 @@ void migration_cancel(void) if (cpr_transfer_source_active(s)) { assert(migrate_mode() =3D=3D MIG_MODE_CPR_TRANSFER); assert(setup && !s->to_dst_file); + /* + * This path bypasses both migration_iteration_finish() and + * migration_connect_error_propagate(), so emit FAILED here to bal= ance + * the SETUP sent in qmp_migrate(), before the VM is resumed. + */ + migration_call_notifiers(MIG_EVENT_FAILED, NULL); migration_cleanup(s); /* Now all things should have been released */ assert(!cpr_transfer_source_active(s)); @@ -2117,6 +2130,11 @@ void qmp_migrate(const char *uri, bool has_channels, */ Error *local_err =3D NULL; =20 + /* Notify before starting migration thread and before starting CPR */ + if (migration_call_notifiers(MIG_EVENT_SETUP, &local_err)) { + goto out; + } + if (!cpr_state_save(cpr_ch, &local_err)) { goto out; } @@ -3893,11 +3911,6 @@ void migration_start_outgoing(MigrationState *s) } else { /* This is a fresh new migration */ rate_limit =3D migrate_max_bandwidth(); - - /* Notify before starting migration thread */ - if (migration_call_notifiers(MIG_EVENT_SETUP, &local_err)) { - goto fail; - } } =20 migration_rate_set(rate_limit); --=20 2.47.1 From nobody Sun Jul 26 13:29:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1781283103; cv=pass; d=zohomail.com; s=zohoarc; b=I90VyR3KZxuJ+gZNa28JS8Wo+8hd06ccQhclUpkeN7jimrSKa7bZf9hphIK/o5QYctgggpQY2jJtBsohNmedb8ETTtKzLwlzQ09xTdDdNPK9PdwDmfLyMz/Dr6n54ZOn3qHfK49ZyA/kPQ0sYasQl8sXQTMx0v0D5FkgVYGdGY0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781283103; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eDZj37Zu2ivERaK+LvIolt+6x6ueCESby+SKChOjqtA=; b=Y6xvSqzUjOj1WwGht9p876TSlJBY3o6GriJLkwkhKi3CMgmURbvWyZjE+1RAS/9nXCqsuvXfjqJW1+O/SnzjkiGgtNV07JsvVe54lT0QN3yDED1O1FRaAZG/f+AFE6VUdM5aOHubPobWS64faKCOa6UT/AllOKHcIxOex+YPdcY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781283103153987.591381383243; Fri, 12 Jun 2026 09:51:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wY56Z-0001dH-6Q; Fri, 12 Jun 2026 12:51:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56V-0001cM-OJ for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:37 -0400 Received: from mail-northeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c200::1] helo=DB3PR0202CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56Q-0000Xb-Ji for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:32 -0400 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by PAWPR08MB9097.eurprd08.prod.outlook.com (2603:10a6:102:330::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.18; Fri, 12 Jun 2026 16:51:22 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%5]) with mapi id 15.21.0113.013; Fri, 12 Jun 2026 16:51:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bF7zPWA8EOE1I/yw7U3hWA0SbMYaP1X6q7iJ+iit1UbGCxlB7haaDkrZELWHnhmFKqyzctKMGkffWz/Ctr0q5/NNFj9bgpKTI5T+tCfzkF2GQ4gUVwr7BhBHU+F58YGSlUS1grmtKrmkQoGF11IwRylK2zEhgDKLwDrZjeZQ3WBnMu3c2fajIxeGpGrv5n/r+8UwXs3OS4x5VB/soEsm9g3ysSjOWKqDxMsCvBPZOxIlaDuxHfg7zRzyIlFycsFwBaDyO1ddnuaT1pUqoo0FoeJJ6KDS0h4vMS7ZHxHa0+aOcPunV1bxnIX4LMcY82lML8vb+wqFUUJPjmMOe/mhrw== 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=eDZj37Zu2ivERaK+LvIolt+6x6ueCESby+SKChOjqtA=; b=aljqES1lzQjfpDW7vYXJhNUNBRplSBZhxcLU/f5NFQbMpBi6BJnoXRmq68C3EX60Pyt/WzVDthONi2RpOsIT46+6YXyhiV/aH0FuY6vF6LrotUCwA6EriQvyp2No/WRfmGC+qwmSGZ5sqzf9EbJsyxLvjXZeW+EnT8M1DFUoXW8NsTi1Q3IUYDmN7aTaJrQBqixPr/D1hJGmb635qT+cF0EyNOyVE1gxmRZZ+yH8dqJEIz5RglvHP/iG9i9jj2L7kxHTd4nJNXiqV76dM7kjLk64zyJQ3G3+YcuWt1RcQGfe4BwQpFRebSBqrsQrDtv3uPF2buskPZiSDmlo2OvlGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eDZj37Zu2ivERaK+LvIolt+6x6ueCESby+SKChOjqtA=; b=kXl/64GIQG5YC+RVYTIdt6v8T2j8CLkpm2g4xCoJFirBv3b5iQ1LdHMc/a+hkccwB/k8yuQY1j+fpOhxUGehhkkBfqCeilWO8iIgAwTKD/6vG4/wXgPn2wtnOd3EC+CrmWlyaPUP3IXzgXipVSg94olPDHXHKvzNCeD+tWwi2MxS+jH2jsFUv4MgLmsDPD6HkZAmSBqAc9U6E8MPkBiemHkOljrL8e4j0HQWyvgG/W1AjlmULX0mwYR5XQSWPN1SzLEyoZPhc5FrL/GFdTx21ERvA8vXkhaueQukm4lyE4VNkCwyg/G2fTxmBQXRDoscMm0SdXWxfuk5eLIEcAwsuQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Andrey Drobyshev To: qemu-devel@nongnu.org Cc: mst@redhat.com, sgarzare@redhat.com, farosas@suse.de, peterx@redhat.com, maciej.szmigiero@oracle.com, bchaney@akamai.com, mark.kanda@oracle.com, den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [PATCH 2/5] migration: stop VM earlier for CPR Date: Fri, 12 Jun 2026 19:51:07 +0300 Message-ID: <20260612165110.431376-3-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> References: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR0202CA0021.eurprd02.prod.outlook.com (2603:10a6:803:14::34) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PAWPR08MB9097:EE_ X-MS-Office365-Filtering-Correlation-Id: 627f853b-95b0-49be-27f2-08dec8a2d566 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|23010399003|376014|52116014|1800799024|56012099006|22082099003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: tbnra3yqjkxJ2a1QatVWhV+bboAh43I+PiAsgLuC921L4iMcOU71+g1Z/B4cR0tC+3P1SyHsWHT09c6ZupYmT7XMQBG7qX9Dsv6L9fjrYzCUEf2LpfeoMQeY0tZt6hPxyRQFG5zm8e4AlGrq1KOIXQFgs9QQneOnUrXKZgb5DSG5gqpNF6pbTO3CZ90cdb8U/zpedlg/pdM/v33PABMxSEK3rREwBblfNZ95U7N2zqBAzg8EgPyrNEu96On4dShE6hobSJwiBFwTr3h9VE3gGma45BZLK95sEm88bdd5ZTweNK7IphXt9KIoUql9cEivWYPkffzwwFZUcfFtJ1KDqHdYYtoNDypAcsw5gvsP+ri50GFQAb24AJuYeVcgsXA3ykqcddif8x086xDv26kgTysbAzna5N4+hwOhzOaEo6PgixKrpkw2T+CykGpeFVFnw7MIx3U8cmgk2kdnXLEY5eWIeBbmJkKq/nmE4VfGYl6pQLMJZQ2SYuV61QE0WkHdakVjA8t1o1+CQTkev1uIj8DcuRJpCtzTna9MG4XN6/Xb74DF9VdiGm8S8e0hpIjfAoqYJiHFCsr/mp7Z51mEcxyl0p5rZVJZrvXQ21y6umJxT4lKHkhiAJNtpGZQOu2FRwm5V6ogrPENt0TC8Aek8FVOgqIPmaO9E7eFRLmeV/ESMvvNyMw1WpwqP9MzhbLl2mcwNw0nYgbGvIev8yjkkfLF0x/Ie4u2+VUMg7CZi3uzxsgkZGyrzzqVxoqFxC/J X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10656.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(23010399003)(376014)(52116014)(1800799024)(56012099006)(22082099003)(18002099003)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aFK5ya6OTipsfAds3bb6rmc+QqTThd/TfLSN4PxxVXgoHiPvL2U3u4ziFsuj?= =?us-ascii?Q?kixd3QvxYwFt7lr+yegplIotAPYTsr0no9+0S/qp6dAggGVfTjZTHjo/oMUt?= =?us-ascii?Q?4wf/4ShxYYSqMxSosbdJ/9b8hrHGEV1DM3AS9p4WBX0zsMEexcPFd9ARiXND?= =?us-ascii?Q?BvwCQlrkAmfFIGfX0br0phNAlcvTC2A4G1JV/94q/40bMED1eRtf8BhQaM3v?= =?us-ascii?Q?ssjsv726d0GrOlPxPHc3Co8/ywpIMFLuKiNBn3xtTKbBLVGMVTJr2CSa6/qz?= =?us-ascii?Q?Goyx4rjjvxo2ZueyvgVK110IdChGspI0LRSgRkEsRTBZvoaZ+/Mwz68QipuI?= =?us-ascii?Q?qOiQGRb6a2bcd5me7Y5nvICXghySHoVRdIM4hB2rdLPE+nrrVd/c0oeKSbiN?= =?us-ascii?Q?jZuNPGV51nH5g3ClSp5SS1W5niKBidvTHkHtS2MLaU+JZ2q6oMWyfFfitJ9K?= =?us-ascii?Q?yle+CeXAP3+8WHg6x/cNhsqJCW8emeg6eBFRVSGlN6jaf0sWu1CbTwekUJ74?= =?us-ascii?Q?rAWab8bN0PxaQhWzVP/aZyEmJ+LF7mT/NnAa1it6kbREFK4NMaZqSqsqVW3U?= =?us-ascii?Q?RCaGFQqoFlaRPhUGzQkstcbvSeXy2V7RHlA6xYRvOVbejjjj980YAq7eoMPL?= =?us-ascii?Q?DDZpfq+h07UMzBNXlRTTCJmV9LuIwftzFbLJ3KgkXIm5H4BcCilD330QAgtj?= =?us-ascii?Q?0kFRyVNbfQuLhZMwYlGMAtMb0BmAWr0i9mLePsJh/+0tVixHFDF7CzCw3EeI?= =?us-ascii?Q?fhJRThdVEa9cf9Z7uvmAHcYLf5xGI2dE4NBsxb5ZTlI4JtfyxPVa2RDt31+D?= =?us-ascii?Q?AZGB5/kLkQRBwbGfBFylCpWf6BK+dEv7a56+HSxgSQo75l/YAbxcMIv9Q5lg?= =?us-ascii?Q?Yjh7nOPbe0q8Oae82VlgGVY9wa/1zuswxlqScjzgsjE0oNqb/FuJct+DVxE9?= =?us-ascii?Q?HLxNEwv38ynu7qC4wdmrpeFjfGvPwjIJnN3t+P5sb5jVZs/lMFOqazbwkbkm?= =?us-ascii?Q?8gX3GGIM1Wy2w5jqsB1aLCsFpiwofM94vAo/7UREItgc1S0gXmyfIaQsSB1B?= =?us-ascii?Q?nNAsxTs5eGJWWqVcaIRlZ3IXOvdQeChT4TumihTs1PwzVeovyMV0l4O4/8fM?= =?us-ascii?Q?9bMnbCUd1f0HrJyXCbAiW1M51xxPOLXab2zGkw2jzBEiyHuXVgmG50SFUDFP?= =?us-ascii?Q?p9TH0skMrjj7MSw2jQ0Rm9GEjf3QHK1xxXpdPGkTyoDC4y87ifmsf9Y8tQgk?= =?us-ascii?Q?w3jnUygDyOEfVLdDo1N04G+/z+m0yRpNo6+yb+ApLjDdtwrCh66BNb/Vb5n3?= =?us-ascii?Q?/JKc1Heh88qX4M6EQW6ObA08RZutq6GU/cQ2Be1+dyvCGW+liSHOzznsJc9J?= =?us-ascii?Q?Kq4yvamySl5dDYEswz8q3hEEjP0TUH2b23A2hR+LMGfReIyvdCcLvCXA8vqc?= =?us-ascii?Q?revPhhJS9LRjhb/hAqMlG7PMkF6edqqT4U5Cr4oTuDZZMqbpKKQOrALxKYa/?= =?us-ascii?Q?230XA48d3zcYAfotW4Z9RsT/eGkGs5p963iI8FaOSySRRKpxl2vZm0ijQW3n?= =?us-ascii?Q?CNG0fIpoy5hJz5S8Yi3oAgD23ThsGCGTqfwhBvHQlGflDR1UDpewmEyR5JGZ?= =?us-ascii?Q?rEU9Z11alMGRc79Ayy3BMDCC6YBPqeIPnaMRTGWArx/OM5iBAejHH2XEvZNZ?= =?us-ascii?Q?VaUNe6rcTrtRNKsUyCIzl71c5A1Pig1oyqejRyNHsWvr7pUF+PXquDx39Sbp?= =?us-ascii?Q?156+YnWTelZKn0p8OkpYsoPcC+kZhow=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 627f853b-95b0-49be-27f2-08dec8a2d566 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2026 16:51:22.4630 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K11MnJzGREeZ1oP1yro+FXKwG3x8AvIdPlzxXlxmVMimhQdAb7yCU1WoyP7rxIhcSrBaMV4l5WHip493SQjNrNYIi6Mvqee1VcCG7VCq0ng= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c200::1; envelope-from=andrey.drobyshev@virtuozzo.com; helo=DB3PR0202CU003.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1781283104857158500 Content-Type: text/plain; charset="utf-8" For CPR-style migration, we need the VM to stop earlier on, before cpr_state_save() fires. That is to prevent the race between source I/O and target device init, as well as make sure VHOST_RESET_OWNER and VHOST_SET_OWNER are fired in the right order (cpr-transfer case). Thus, for CPR case migration, let's move the stop to qmp_migrate(), directly before launching cpr_state_save(). This patch is a rework of the change originally proposed by Steve and Ben at [0]. [0] https://lore.kernel.org/qemu-devel/20260128-cpr-tap-v4-0-48e334d4216b@a= kamai.com Originally-by: Steve Sistare Originally-by: Ben Chaney Signed-off-by: Andrey Drobyshev --- migration/migration.c | 73 +++++++++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 3c70467d314..c02f1da8b0e 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1380,10 +1380,13 @@ static void migration_cleanup(MigrationState *s) =20 /* * FAILED notification should have already happened. Notify DONE if - * migration completed successfully. + * migration completed successfully. On a failed/canceled path, + * resume VM for the CPR case. */ if (!migration_has_failed(s)) { migration_call_notifiers(MIG_EVENT_DONE, NULL); + } else if (migrate_mode_is_cpr()) { + vm_resume(s->vm_old_state); } =20 yank_unregister_instance(MIGRATION_YANK_INSTANCE); @@ -2130,6 +2133,45 @@ void qmp_migrate(const char *uri, bool has_channels, */ Error *local_err =3D NULL; =20 + /* + * CPR-transfer ordering: + * + * SOURCE TARGET + * ------ ------ + * cpr_state_load() blocks + * | | + * | 1. migration_stop_vm() | + * | VM stopped, devices quiesced | + * | | Waiting for + * | 2. notifiers (SETUP) | FDs from source + * | vhost_reset_owner() releases | + * | device ownership | + * | | + * | 3. cpr_state_save() ---- FDs -------> | + * | | + * v v + * postmigrate Device init begins + * - cpr_find_fd() + * - vhost_dev_init() + * - VHOST_SET_OWNER + * + * Step 3 is the synchronization/cut-over point. Target proceeds immed= iately + * upon receiving FDs, so steps 1-2 must complete otherwise: + * - Target's VHOST_SET_OWNER fails with -EBUSY (source still owns) + * - Race between source I/O and target device init + * + * We stop the VM early (before FD transfer) to prevent this race. + * Unlike regular migration, CPR-transfer passes memory via FD (memfd) + * rather than copying RAM, so early VM stop should have minimal down= time. + */ + if (migrate_mode_is_cpr()) { + int ret =3D migration_stop_vm(s, RUN_STATE_FINISH_MIGRATE); + if (ret < 0) { + error_setg(&local_err, "migration_stop_vm failed, error %d", -= ret); + goto out; + } + } + /* Notify before starting migration thread and before starting CPR */ if (migration_call_notifiers(MIG_EVENT_SETUP, &local_err)) { goto out; @@ -3482,13 +3524,19 @@ static void migration_iteration_finish(MigrationSta= te *s) */ migration_call_notifiers(MIG_EVENT_FAILED, NULL); =20 - if (runstate_is_live(s->vm_old_state)) { - if (!runstate_check(RUN_STATE_SHUTDOWN)) { - vm_start(); - } - } else { - if (runstate_check(RUN_STATE_FINISH_MIGRATE)) { - runstate_set(s->vm_old_state); + /* + * For cpr the VM resume on failure is centralized in + * migration_cleanup(), so don't resume here as well. + */ + if (!migrate_mode_is_cpr()) { + if (runstate_is_live(s->vm_old_state)) { + if (!runstate_check(RUN_STATE_SHUTDOWN)) { + vm_start(); + } + } else { + if (runstate_check(RUN_STATE_FINISH_MIGRATE)) { + runstate_set(s->vm_old_state); + } } } break; @@ -3903,7 +3951,6 @@ void migration_start_outgoing(MigrationState *s) Error *local_err =3D NULL; uint64_t rate_limit; bool resume =3D (s->state =3D=3D MIGRATION_STATUS_POSTCOPY_RECOVER_SET= UP); - int ret; =20 if (resume) { /* This is a resumed migration */ @@ -3944,14 +3991,6 @@ void migration_start_outgoing(MigrationState *s) return; } =20 - if (migrate_mode_is_cpr()) { - ret =3D migration_stop_vm(s, RUN_STATE_FINISH_MIGRATE); - if (ret < 0) { - error_setg(&local_err, "migration_stop_vm failed, error %d", -= ret); - goto fail; - } - } - /* * Take a refcount to make sure the migration object won't get freed by * the main thread already in migration_shutdown(). --=20 2.47.1 From nobody Sun Jul 26 13:29:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1781283123; cv=pass; d=zohomail.com; s=zohoarc; b=m5K/r5K5UXOw/mt7PYV1CAUgrzspGkf41eWvnQDBl9NVsGiBNgO/xIU5eklNZyywhckuiCgUxLR9E55oEKLOspumaZUCcH76awtvU0uUEhFGs+6kzCM9Euki4UH9UUgXggPJsTsRZ6Cn3f0ZOzGRrTXntT0iEGYVPCeWP4vkrDE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781283123; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tL5UG9IDROI3zAu/GrvuVfQLwc771g41b6c8WwnmJdc=; b=BC4jXARih7U2I/wdbgib6hJEyCra4SKRrrBUKC4io7NPcwSpSMKgjwN7hZiyNJJnoUNYL10lTbQV9BvjBvvcJdjpsOTBl4IqoeAp3javZPDb0FlygQ8Rt0zRNUeB8A5HMji7HFDUR7aKzFXj0IswlI/T3ByqnyYlo0aaKUySNo8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781283123378440.46213891976356; Fri, 12 Jun 2026 09:52:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wY56c-0001eY-Ew; Fri, 12 Jun 2026 12:51:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56a-0001dz-3z for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:40 -0400 Received: from mail-northeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c200::1] helo=DB3PR0202CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56Y-0000Xb-AQ for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:39 -0400 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by PAWPR08MB9097.eurprd08.prod.outlook.com (2603:10a6:102:330::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.18; Fri, 12 Jun 2026 16:51:23 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%5]) with mapi id 15.21.0113.013; Fri, 12 Jun 2026 16:51:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MiocptnBS/U3+TPAdqP3mBrjDqtVkbEcHsI+ulodm4dClFYaHgw9V9wd5Y6ljF6RwLfBykEC64L58JAfrdB7sj85htS17XIgL2bzyF+jAIIOWGyR7lq+cyYpF20uy7wYzleZzCsSa3hVL9dgqoIcrDx8fvaUCTO/vLS+zlQVlRmPm8BXyfohaGYvucwOhQqIIM/H6ZYUornPcAJm5nDFFjIq6e3/Q9X/TbPw/kbrJoA2MrxdB8KOBhy2dXayqYfhUVpRS9xHs+KeMuwWigZ1wosHTYD8KZ7GoprT5bxcxi+Yh6YFQ3FcqJdS59pg39cPgYl5Bd4cM6lwszw706e0Vg== 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=tL5UG9IDROI3zAu/GrvuVfQLwc771g41b6c8WwnmJdc=; b=VCv/j6sEgSC0X9eOs9oXr6wmmyMbfklCuPZWS9BsnemJhUy9dY3eDOMDubzcjkfvCWC3++ZPAjE0xfyZjxhUqM+CPiOGDuskYV1NTF+w9/9Bsdb6QHJMiAN4VmKtCVmi8M3GLs9LFkXZCkYkFidE6dOkAB8twUDuhspeV/izp1hce0SVo9yco79H/qKl5WUv8CH8KZFSz0PEDzHD1v3WoAJcuUY7ziDUlJyzDQhTvqExtMlFGw7tO59pXXTLRNOljToxzLogatqkocSoofU9Z4UI3DXVFTjNzBNk6I+3CLleBoKGxBSTfTaVHjMQ8PnarwlIiDRGBVGmwVMtX3BQlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tL5UG9IDROI3zAu/GrvuVfQLwc771g41b6c8WwnmJdc=; b=xYwlauxo+U9+tDPLkxP0pnseQGw7UUl/zCDcU2wwL7OwpkoJXyGv8++QF3QujUt2mQjNk7PlVf6eyr2C3yaSTGvo9IcKGC3NcQtF1rVZvufZ2iPAY4YhvmwE71N+TexA0uY9FZ0dhhn+HZelZNU6R1vNIhA3MSKI65nAm9vNRAjGclnDJzWXhQZ1ZztbJ83E0YAjQr+kjfoAj00pWaUxNm7gvOTDELgwSWx6YTjBdUQMKb755NIuyTFu4huA7GukrGueKb0SWncK4fAtP7p0IUeQueeyiHnlxQraWfuvetaQsEynm6UnNDLWiJ+69j4ZzaEiijcOU7KhDQvkpWpPDw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Andrey Drobyshev To: qemu-devel@nongnu.org Cc: mst@redhat.com, sgarzare@redhat.com, farosas@suse.de, peterx@redhat.com, maciej.szmigiero@oracle.com, bchaney@akamai.com, mark.kanda@oracle.com, den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [PATCH 3/5] vhost: reset vhost devices for CPR Date: Fri, 12 Jun 2026 19:51:08 +0300 Message-ID: <20260612165110.431376-4-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> References: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR0202CA0021.eurprd02.prod.outlook.com (2603:10a6:803:14::34) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PAWPR08MB9097:EE_ X-MS-Office365-Filtering-Correlation-Id: 559cfcbc-06d7-475a-0c5c-08dec8a2d5b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|23010399003|376014|52116014|1800799024|56012099006|22082099003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: 0Ob2aVUSERK7ZxfDF3KBEwGSzR0G/BLFlcg14I+E7dg7Jyy8RpknoZQjx7WmH9yAfOkLva3fwCSxjPOf6q3rGiYMx7gCyCraDcz51dLmind2Mj99klQ4pyVuPmTtyHUnFUI3ptRSkBJTzI2kJiNpIosdX4Ohd5BCHh5KVxS46D7PigjXlCO/hPj3DI/lLIg/ed8csWlNsZirQq8A7p1i1jjKAzVqjqju6peV0VSRZJE3auR28F9tAZhDZDMO3RYPxREVIRKbNKb83YZ6MvuCwPHuhzTDyggodZK9z/9j0GDdZvMg4H51qNpQXY9+I6D0ySKwI8qeshxEZ+RPLTKuFzzYp7Lx+bUwVHITdQGWXpTjXfYCCp9o55UKuyR63chOyDux4J8pcKKfS/um71b2/LhTZN+s2h8X1I9wum5jUd9e1ElYKnFTV7FRBZxKa6PfjkF/mFcXOATyrd2JR2gDeMX5qX+nQzxCurFMC9QP9DhJmuNtGsqbivrT/GGLKQp6LGsTbQS8T6rSDgYsM867uwbukqXIhHUU5d9j/0Uwz1b02qpU8bGH6sZsbhULNxN3jnpA5lzPrS3I9bunxcn05AeJQjJmpbT2fHzt0ke81sIESPbbGpypezojRH5lHLd+Y4qGDHiCdXjay9DBrJy3ZYwyzwJ4yITzaubZ9xKVvA9PSLZj29LCZLPWIPcnsdiw5pcFZ19/cyF+kF66pVmlC0oRos/iDhe2t5Fe1vZVyNlH2YFDoUn0bxCBh8Ttlh5F X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10656.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(23010399003)(376014)(52116014)(1800799024)(56012099006)(22082099003)(18002099003)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?iHTSIWQHk8q8UDRRSuVitpEYaKw88dzC8EOOyy12ZkoY8Jh/Mbf/Y246jtAK?= =?us-ascii?Q?iKJSFrnDLK0P4PGZLNjLDWuWRtcY37BXRuzKk9QOxDUrm0WwpekwoMXbQCny?= =?us-ascii?Q?vVdjnfkvv0M35hS6ksa/Z7bxOK8iUhfh86+7Jz5I6Ye7cq6zxWXxEoxt0/q0?= =?us-ascii?Q?w5mmaRNqaKCrqeigLtumKRRnok0XaTCjyern22yOTOKA78gSwNvBcAU1AkIB?= =?us-ascii?Q?752K0qHM0+vJwfaNr/sc6wJDPU14QhOYVBIe5F4UbmScb5a5cXjQGfeZHpa0?= =?us-ascii?Q?HIoDRNYGGF8NTW1p3cyLkLuY3KUkwmdCVoArciq/pfxtpgiy2ekFfjZbDMOi?= =?us-ascii?Q?6XuaiBkz0hG1UjW06sHFiRfKdyD+bJXR1bS+4pby8ordr3lMq9jyWPLpOOuA?= =?us-ascii?Q?fDBL+2jHsxX1msnYj6v4+GmAGnZe/scDfjcjmTnt9EQTBGT2YygXhN6zL7KY?= =?us-ascii?Q?q62X8iJgOyMZW+FKpbNucq05DAtnzlBj7jV56FYNu8M67Tw/k6Nf3XZ6mEN/?= =?us-ascii?Q?G1sX5zHexv56TiymJQmLS7VIUgvdmS/y+1TMHvr1jNTDh6AmzYHnlpB3/6VN?= =?us-ascii?Q?QKfF5yG6Y3en5Qxk3WX5TJfvjAmFixFLxPy3DKYuyEVoRLUh6hvGyJHR/hbw?= =?us-ascii?Q?Nq/aqO5ipnXPYQqi0XciYZvRtNuZ+9bcCi4d3Xx8Ghs0fb9C5jjMYwuXTAF+?= =?us-ascii?Q?NFBqRCzoGH0+qko1PrV2PDCGEgsWb2eyH6S8JIqXfZ6tIc3dJmjYmq1AF21u?= =?us-ascii?Q?XWS24Lfy+zRb+zwg90TAdH/qzuBxQmCzJFYZP7o/VpFHZjy/eb6FxwiBsBtD?= =?us-ascii?Q?ZL9KQm8pIz8yvI89u6+NVRQlxPCmbfgnAvlKqx/zN1ZZ5Yx+Nk9TdTkDCJHw?= =?us-ascii?Q?65u16aiHkznbdEjJRB6DeHpXWi1uBPXkg37BmZMS76p0KqQ85UXmyYNyS1tc?= =?us-ascii?Q?KmXAkQlmgFooP/47paeCgpzhFCc500rt3dB2S1Np9vSBrz5sCZ2MzkyJ1MdV?= =?us-ascii?Q?b0zV1tz48gjoWYfhN8dmxVi8ZDCBVY7X0OeMC5EpSJU14iP85S3MQdPjGwsi?= =?us-ascii?Q?iE1YIYFmtYaWr7N0gpiKxgsfiBzGfEGIfmJb1DNHg/fTDOe6z96TNCqxDkW+?= =?us-ascii?Q?DzrkCX3d7/9HFFfE5s0qdN6X1jnoGis04FV/K/xfumrvCvV2ZhScc7RPwdph?= =?us-ascii?Q?Y2vxRnX7hu5mBSPF223ynKJtqlB/6DN0o36dbKxiYib+U4MgAR4aFMK6MjgX?= =?us-ascii?Q?LUUY+gy0PsGqUB6YEnuJMMY9/z5L9rf0d48Fa8D97iAm0mPvWQCIb7Ojn0oG?= =?us-ascii?Q?WdhqrI0EOPnr5WLuvUBwtWntKTPK7vKtdYm2ZjH9A4HArOA5EYkgUW9oPbHG?= =?us-ascii?Q?zRNdMyGiZ/nBGq6ocLxJ9VlOQldfWp7ddkQD/SFzthfy+nck+XiBoJeJ4qCl?= =?us-ascii?Q?83zzFItmKta8DwlJsdcYaEDXFUR2YqR8dpQA2UjBzHE4CJLs6BPILQCG8k2w?= =?us-ascii?Q?ZKWZM2lYpqEiv6JWxqzV94LfTli+T7X++GRI2x26E0XcGFfPDZrFmAlOzCsL?= =?us-ascii?Q?D6Bflujt3/Ttb86+Pc9XYqSLNQ78DVSjPR2v7OEug9avi18QX9DBqV/flQjA?= =?us-ascii?Q?/nkmx6GDwaKg/YGfgAVBRrH6dVOBnzAVDkVWIHmhiKcea0aRAcFRlZf6ZLqw?= =?us-ascii?Q?KLi9zVUFPFjO7dlQB1wnZdHDYUWx9jDRC1jyvXBve/O+vS4QwnQi7NIms/oq?= =?us-ascii?Q?UL9tP1ia09k/PVOUeFRIXpKnq7qDIb8=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 559cfcbc-06d7-475a-0c5c-08dec8a2d5b7 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2026 16:51:23.0095 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MG+yiPFyWo51oDblLBE7SrQo7K9MgtK17Ld/CqxQDmRFIUlo4k7tF+vqYP6BxPDolFXDAYiLDuqu91h4SFRP3kGxW3T2yueGDUayShmwX7k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c200::1; envelope-from=andrey.drobyshev@virtuozzo.com; helo=DB3PR0202CU003.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1781283125085158500 Content-Type: text/plain; charset="utf-8" When preserving a vhost fd using CPR, call VHOST_RESET_OWNER prior to CPR in old QEMU. Otherwise, new QEMU will fail when it calls VHOST_SET_OWNER during vhost_dev_init. This patch is a rework of the change originally proposed by Steve, Ben and Mark at [0]. [0] https://lore.kernel.org/qemu-devel/20260128-cpr-tap-v4-0-48e334d4216b@a= kamai.com Originally-by: Mark Kanda Originally-by: Steve Sistare Originally-by: Ben Chaney Signed-off-by: Andrey Drobyshev --- hw/virtio/vhost-backend.c | 6 ++++++ hw/virtio/vhost.c | 33 +++++++++++++++++++++++++++++++ include/hw/virtio/vhost-backend.h | 1 + include/hw/virtio/vhost.h | 1 + 4 files changed, 41 insertions(+) diff --git a/hw/virtio/vhost-backend.c b/hw/virtio/vhost-backend.c index 4367db0d951..1447d129630 100644 --- a/hw/virtio/vhost-backend.c +++ b/hw/virtio/vhost-backend.c @@ -261,6 +261,11 @@ static int vhost_kernel_set_owner(struct vhost_dev *de= v) return vhost_kernel_call(dev, VHOST_SET_OWNER, NULL); } =20 +static int vhost_kernel_reset_owner(struct vhost_dev *dev) +{ + return vhost_kernel_call(dev, VHOST_RESET_OWNER, NULL); +} + static int vhost_kernel_get_vq_index(struct vhost_dev *dev, int idx) { assert(idx >=3D dev->vq_index && idx < dev->vq_index + dev->nvqs); @@ -385,6 +390,7 @@ const VhostOps kernel_ops =3D { .vhost_get_features_ex =3D vhost_kernel_get_features, .vhost_set_backend_cap =3D vhost_kernel_set_backend_cap, .vhost_set_owner =3D vhost_kernel_set_owner, + .vhost_reset_owner =3D vhost_kernel_reset_owner, .vhost_get_vq_index =3D vhost_kernel_get_vq_index, .vhost_vsock_set_guest_cid =3D vhost_kernel_vsock_set_guest_cid, .vhost_vsock_set_running =3D vhost_kernel_vsock_set_running, diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index b9dc4ed13ba..fc474a9edd8 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -24,6 +24,7 @@ #include "standard-headers/linux/vhost_types.h" #include "hw/virtio/virtio-bus.h" #include "hw/mem/memory-device.h" +#include "migration/misc.h" #include "migration/blocker.h" #include "migration/qemu-file-types.h" #include "system/dma.h" @@ -1549,6 +1550,32 @@ static int vhost_dev_get_features(struct vhost_dev *= hdev, return r; } =20 +static int vhost_cpr_notifier(NotifierWithReturn *notifier, + MigrationEvent *e, Error **errp) +{ + struct vhost_dev *dev; + int r; + + dev =3D container_of(notifier, struct vhost_dev, cpr_notifier); + + if (dev->vhost_ops->backend_type !=3D VHOST_BACKEND_TYPE_KERNEL) { + return 0; + } + + if (e->type =3D=3D MIG_EVENT_SETUP) { + r =3D dev->vhost_ops->vhost_reset_owner(dev); + if (r < 0) { + VHOST_OPS_DEBUG(r, "vhost_reset_owner failed"); + } + } else if (e->type =3D=3D MIG_EVENT_FAILED) { + r =3D dev->vhost_ops->vhost_set_owner(dev); + if (r < 0) { + VHOST_OPS_DEBUG(r, "vhost_set_owner failed"); + } + } + return 0; +} + int vhost_dev_init(struct vhost_dev *hdev, void *opaque, VhostBackendType backend_type, uint32_t busyloop_timeou= t, Error **errp) @@ -1559,6 +1586,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaq= ue, =20 hdev->vdev =3D NULL; hdev->migration_blocker =3D NULL; + hdev->cpr_notifier.notify =3D NULL; =20 r =3D vhost_set_backend_type(hdev, backend_type); assert(r >=3D 0); @@ -1659,6 +1687,10 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opa= que, hdev->log_enabled =3D false; hdev->started =3D false; memory_listener_register(&hdev->memory_listener, &address_space_memory= ); + migration_add_notifier_modes(&hdev->cpr_notifier, + vhost_cpr_notifier, + BIT(MIG_MODE_CPR_TRANSFER) | + BIT(MIG_MODE_CPR_EXEC)); QLIST_INSERT_HEAD(&vhost_devices, hdev, entry); =20 /* @@ -1711,6 +1743,7 @@ void vhost_dev_cleanup(struct vhost_dev *hdev) QLIST_REMOVE(hdev, entry); } migrate_del_blocker(&hdev->migration_blocker); + migration_remove_notifier(&hdev->cpr_notifier); g_free(hdev->mem); g_free(hdev->mem_sections); if (hdev->vhost_ops) { diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-ba= ckend.h index ff94fa17342..18ce5ea9a07 100644 --- a/include/hw/virtio/vhost-backend.h +++ b/include/hw/virtio/vhost-backend.h @@ -196,6 +196,7 @@ typedef struct VhostOps { vhost_get_features_op vhost_get_features; vhost_set_backend_cap_op vhost_set_backend_cap; vhost_set_owner_op vhost_set_owner; + vhost_set_owner_op vhost_reset_owner; vhost_reset_device_op vhost_reset_device; vhost_get_vq_index_op vhost_get_vq_index; vhost_set_vring_enable_op vhost_set_vring_enable; diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 89817bd8486..2545f57097d 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -133,6 +133,7 @@ struct vhost_dev { QLIST_ENTRY(vhost_dev) logdev_entry; QLIST_HEAD(, vhost_iommu) iommu_list; IOMMUNotifier n; + NotifierWithReturn cpr_notifier; const VhostDevConfigOps *config_ops; }; =20 --=20 2.47.1 From nobody Sun Jul 26 13:29:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1781283130; cv=pass; d=zohomail.com; s=zohoarc; b=bPAWGHqEKkWWqoMdNdU4sKYaA2sHRLphFEaDTbzLnMJSykw9DDRYJYHUBpy+XnMcYQV+l90iVlu5YOpqEXDv/SydbvnGpicNl8MaBS98UlVVMzDzzfBmvqKVBGMnw7JP3bJNBfRe6LlErcWIRuLpeptC5F+ZseZYOZsMofPWHVg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781283130; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1nKMlYtBAaenXuuJ9b1/XUxgMUGf6mS0EN+rHM48jjA=; b=My88PLy+I0PePcKNeJSnH8LGFRMmSe/QVjJcXnKf2hG8XkAGnCc8hBwOg2fNndGxT1WCJyBB8QHyXXkvg871ZL6AQal3UhM25e1IDD+4WZ8ANG6V/TDiM8+bk45XzbjNT2AXHPyIM1VWeLsRhHTZYrzFpM7XR/3tVQdkMpgIDuQ= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781283130395335.9033192259275; Fri, 12 Jun 2026 09:52:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wY56f-0001iE-Qx; Fri, 12 Jun 2026 12:51:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56c-0001g2-Q3 for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:42 -0400 Received: from mail-northeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c200::1] helo=DB3PR0202CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56a-0000Xb-Jt for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:42 -0400 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by PAWPR08MB9097.eurprd08.prod.outlook.com (2603:10a6:102:330::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.18; Fri, 12 Jun 2026 16:51:23 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%5]) with mapi id 15.21.0113.013; Fri, 12 Jun 2026 16:51:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dGXitPQlXl5v1I2lpY7JJODiaFp0OWeFclY3qpzOtvycK5EK7mBer+mMxpfYju2IeqbW3N/ZkvEuRN+WnVKQ9YIiVd2/9ObBCKK5IrxXz34qcm2WnKlpljJsyrUKAcaYoGDtnwD1h2BZxQg9cop16ShBhGV/HigROSP5f+JocTwUU5T/reUOK3lH44mXR0SQjDySrDwY6bjrrBLuliBzWbpeiAU0ww4GR10PmTvRQu6yi1RnHj9XTOC2ELcr6l/zcF2RxTPBb8uwMsG/Kree74I4Rd2q1ufl/0ueqhZ/AjClgyjRWkGjVY6pg1H0vhHsZdFX2trkg+JcHeRE5EECZw== 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=1nKMlYtBAaenXuuJ9b1/XUxgMUGf6mS0EN+rHM48jjA=; b=p4tOwdch6gz5/ee6cGBGBkAIyRHKcA4Wk6xgzsq5z/da2nW+eP3+Ecb5dXGn2nsK6J+5XDxfrH/Gdu0DVyKUVX/dIiwb63mC+3v+46ykzHxD7b7a1INIOxGdYDLRypRK2kbo6XWFX0jMZWzxC1zdVpaw4vuO1urwflpkGGvFdZxhDpYaiPXaw/gTQ34Rf8ZO1xWWHkJM+yYU/kS9gnptVOycPgT5s/YnG5aeEo8a5S0dIuNt0U0S+mI1YKBBBaBuGVzhWkjxutnGu3AXydqx12WKDZReJAudJCEF9KLg/pEuGlC9qVS6JcC05msS2Qdgv60W+zXplflf2pwLPA8KZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1nKMlYtBAaenXuuJ9b1/XUxgMUGf6mS0EN+rHM48jjA=; b=RarrChwfYGPE5fLojavMo0Me9pM4iBPQeH04CscmvLcub17afhdhC68xwXrfJmv2GuZuNsk/uYfcxLLbGboibl+Vm3PqMiw0sMu4MS8k7KiyAOULTAP/c1Y48/+PcCV091ycNDNnERDr3808y0zTS2Vew/ZpTHxsAWDdN24pxe5BUfbFXIV252Zvlrbxl0owkEXkinNeYK7Wz5tIHQxo+kGgJfZCY9NUEQqTM6X5uRTqS6TnPEkTZmrVLo6CEkPn7GN9dGooRA9mY/zojOuiQ0VD0BYw+QvaX5QOBpxh9bQTuCv/dK7K88olEvXY/7187ZAtHRMNEeLJOq9a7yyOTg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Andrey Drobyshev To: qemu-devel@nongnu.org Cc: mst@redhat.com, sgarzare@redhat.com, farosas@suse.de, peterx@redhat.com, maciej.szmigiero@oracle.com, bchaney@akamai.com, mark.kanda@oracle.com, den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [PATCH 4/5] vhost-vsock: preserve vhost FD during CPR Date: Fri, 12 Jun 2026 19:51:09 +0300 Message-ID: <20260612165110.431376-5-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> References: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR0202CA0021.eurprd02.prod.outlook.com (2603:10a6:803:14::34) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PAWPR08MB9097:EE_ X-MS-Office365-Filtering-Correlation-Id: e60b3b1b-bedf-42f2-f95f-08dec8a2d606 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|23010399003|376014|52116014|1800799024|56012099006|6133799003|22082099003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: tWgwafHYt7IUDpSDt71pPYrTQ7m6YIriV6/v5jYgCQpeU3+w6vAk6yW/Ocup6n2WKZ7Z6KXI0ZHyZTtUn/UNBaOuPPhE+ygR7W3kLUhY49U3P93vZOLD1CMNgYqVGtHaLwfMJHE/BzZgPSyJY3CefwuHkv/T387nAsP1d8483PZtHECJQMBd3+5PhKbmLphaxwg9ikICTM2J0QT6zrLid9byLd2Rci6snK+NMFBaLrDSA0kH408L3SgbaQS5qxZCA7t4QIYyLRoia9kC5zdnQYreAEIN7YaEzNBS1HuiSsesQZ5F4d4BDwUEZbBnUxFZuW2dacdkbcr5hste6Az9HZMtEPJSmlzMEW7fHKuUOs/XmpgLNqmryPCr4IJPWSBIy6RY9+W6x6ZWs+ZTCBNdrBXJuXkq63TNGopzy8eQHtvWfMNRMqOoeyehZP5/vNpjsHdocdsdPCPlctxxYDoHZD5WjCnpVMhL7S0EKe7SnjwIJkqBgwlGWXm2xlsWYjXyQSnJkOHyoJJhNroWykV5RaPEOtRY9VdtdseR9pUhf0dGcYpfSiTpPwVt7RvposlY3M/h7lt4jGe6uFen391JJp8XDvozj8cfHC5jdN6SA1MRrzsHC2+2yEmzPkz7CLgYETe5iArqTWaGUDlJLO6rsKjlE7BJcZv6jJlJ1FB4BmMuqSqZ2PCfqtGJXGvZvltF27hWzO4VmbBpkjgFTWkWEaWBYDVvCKem46Rhe+5tKhGcgyo0GVJ3LEKF6b1YU1by X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10656.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(23010399003)(376014)(52116014)(1800799024)(56012099006)(6133799003)(22082099003)(18002099003)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MVd8hoH5O3dzQ8NeU/7Knb9HnpnzPYRVd+t48DUP92laZwYzcOU9aAOR97EE?= =?us-ascii?Q?j+7Ij2wmA3cbyfQ5dFMpQG8YSDMr/lDE6XwPDNQ8Y2C50lskygncTT/JJuIn?= =?us-ascii?Q?OAfu4Hm8LISBB2YAPilAEelFf5Xhz1ZM8HZB1fN1F9qgXNTJJkEted24qCvW?= =?us-ascii?Q?JGGPFXzNnfpRHLtCN2aaBqatGPsEyXWnYW+OyDCdiYykCOgbQo773f+DpUY4?= =?us-ascii?Q?/edCp75ExMITLelHo6RWDg1ZYftLBMFWJu0EIrFgkIJf8FwwwV8VWKrKGeP+?= =?us-ascii?Q?o6viX/0VCutzqiajdHnXLZSvIUTQ+Gr1TUbbT4iqOdtWTIzhvZNQWT7cc9L7?= =?us-ascii?Q?Id4pIYcHQXJDQ2/mz/ndnPN8Z0qcWD3x6PrHLAbQJRyS6glw0+DGSiagqbpy?= =?us-ascii?Q?m3jR9tB7RYAw6SBSIUcd9vjoxPxZ0m6gstPbRx6vnco0UdxsPdN4yOxUx5L4?= =?us-ascii?Q?WHUewBRHjt1VPViH7l8Q04V7peQKbu58D3iQwwbUDJ/gw9VXVeu+OtXp9k3R?= =?us-ascii?Q?SjH432DlxCUYKK3rIqaNkGz2wKACLqzIRP0rt2CXizfw1zQxJL+MiSLX7kNi?= =?us-ascii?Q?TDXLvw65ngMbJSsE7SkM/EiaP+Oxa8BRDkp3wa8p3blPm2Mla2JnspegpDtt?= =?us-ascii?Q?7txxvZ3fFZ6oF7g1QYGdwizhrqrCMxcdUZkkFWP8vwJogTQIzsWyAm+BQUbF?= =?us-ascii?Q?RFeE53fOYjrG4FUj3v3owkoyY9fHuc19N06TQ4QfCPTLvogi/VLhRGr3y0EN?= =?us-ascii?Q?ap9vbwV2ItIPr/TRrmpGRrwTuq68whpAElGcDITwVN8jnnlPS/Pl+5fD6IVJ?= =?us-ascii?Q?mW1fR0SPqlIvGtLw4rtTW1BJ7jPGyo+ULh7xQ3hceSqdySsJdXi3e9m0SLHg?= =?us-ascii?Q?FrXBCzkYd586JVmaOegzbpI4YQr/sLfrdMJGDIYmZF7encdSlqYQkyGYGHp1?= =?us-ascii?Q?KGabl/PzQ5yuEoEUt05iEqBcGBJhPkq+5bsw6KBi/fWk8dEYodKnnc4I5pE2?= =?us-ascii?Q?gjeN/T2cBNXlUSNZI6fDXibiyrhIDif/z9sPnwsEASukmClQfKo8U9iSmLiB?= =?us-ascii?Q?sCt/12+7wd3Vku3Yadl8qHw8iMS8xQdUVLSmch6Y7NYdVCnoIM0axJUZw1M0?= =?us-ascii?Q?TRDgEOKtQbpJAbyWXjN33IcYMrNa0tjSPjGwE4UdL38e7qtzVmTdQHxn4Ko2?= =?us-ascii?Q?tXg+cGD1foMQLJaSSCUyXsh64Xr91+q7fiVJyRihMXRs+1erXtRY5EWGnQog?= =?us-ascii?Q?q+dRnZcFOtsCM/biQgPgaaSchEblitBZt6cm3Z8MByHugT5oBLEpA5ae43T3?= =?us-ascii?Q?NFg+Ru/9TVUxLa1UTW7JvXsK1R06Sn4QSucb621Ez89mcV8kDcuQoyeXnQQT?= =?us-ascii?Q?db+1S8FGY4bXDAvNu1Jbr6+q4qimuKn/hdYbxtwapsCqGzrMtZU4P7zh4ncC?= =?us-ascii?Q?mN3L/5SFSV+HHBPB+FGF0S5xmoqsJ+3NQAe6RXT8Eo+YCC7kzKccxGxndrBu?= =?us-ascii?Q?GHbqe/4PeohCvmeI4AcbMuypmbYnU6jWVJgNu0Z0dXKdgfEkvqJjKSbY02IZ?= =?us-ascii?Q?CUtlwlOEjJXcJ80Z04aStXSw5yflwjJ93b2tHKEgTnjPGfjvPBK7eAt4GQJO?= =?us-ascii?Q?6UkaUQofKAb/pCuownYvZd1qxT66UmGD4JHAhDGNFuXDSQdOhMXWHhoumImR?= =?us-ascii?Q?JU1O0aFnivYcDLxkq4cwgislbLif6lvk5aM/pNxV6ZPvPTlVDaQbiulciIyX?= =?us-ascii?Q?jLX8F5WlAfFGUy8m+DhvJf8i2IFZrWA=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e60b3b1b-bedf-42f2-f95f-08dec8a2d606 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2026 16:51:23.5280 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: F5r23BIm2O46H4ONT0orkRQMhTDpJ5YWon4aFp06a7XeJ5H9wiHwi0SlDnWFlH1APF1BkcR1pEr75VPOqT47j/b4z00pmYzuentjy00EUKg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c200::1; envelope-from=andrey.drobyshev@virtuozzo.com; helo=DB3PR0202CU003.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1781283130875158500 Content-Type: text/plain; charset="utf-8" During CPR migration, instead of reopening /dev/vhost-vsock device on each initialization, let's make sure the already open FD is preserved and properly reused on a subsequent initialization. Signed-off-by: Andrey Drobyshev --- hw/virtio/vhost-vsock-pci.c | 5 ----- hw/virtio/vhost-vsock.c | 27 ++++++++++++++++++++++----- include/hw/virtio/vhost-vsock.h | 6 ++++++ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/hw/virtio/vhost-vsock-pci.c b/hw/virtio/vhost-vsock-pci.c index 3a94d06f8c0..ca86a361696 100644 --- a/hw/virtio/vhost-vsock-pci.c +++ b/hw/virtio/vhost-vsock-pci.c @@ -28,11 +28,6 @@ typedef struct VHostVSockPCI VHostVSockPCI; DECLARE_INSTANCE_CHECKER(VHostVSockPCI, VHOST_VSOCK_PCI, TYPE_VHOST_VSOCK_PCI) =20 -struct VHostVSockPCI { - VirtIOPCIProxy parent_obj; - VHostVSock vdev; -}; - /* vhost-vsock-pci */ =20 static const Property vhost_vsock_pci_properties[] =3D { diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c index da244eb1657..90926f95fe1 100644 --- a/hw/virtio/vhost-vsock.c +++ b/hw/virtio/vhost-vsock.c @@ -20,6 +20,7 @@ #include "hw/core/qdev-properties.h" #include "hw/virtio/vhost-vsock.h" #include "monitor/monitor.h" +#include "migration/cpr.h" =20 static void vhost_vsock_get_config(VirtIODevice *vdev, uint8_t *config) { @@ -126,6 +127,8 @@ static void vhost_vsock_device_realize(DeviceState *dev= , Error **errp) VHostVSockCommon *vvc =3D VHOST_VSOCK_COMMON(dev); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); VHostVSock *vsock =3D VHOST_VSOCK(dev); + DeviceState *vsock_pci =3D DEVICE(container_of(vsock, + struct VHostVSockPCI, vdev)); int vhostfd; int ret; =20 @@ -141,7 +144,8 @@ static void vhost_vsock_device_realize(DeviceState *dev= , Error **errp) } =20 if (vsock->conf.vhostfd) { - vhostfd =3D monitor_fd_param(monitor_cur(), vsock->conf.vhostfd, e= rrp); + vhostfd =3D cpr_get_fd_param(vsock_pci->id, vsock->conf.vhostfd, 0, + errp); if (vhostfd =3D=3D -1) { error_prepend(errp, "vhost-vsock: unable to parse vhostfd: "); return; @@ -151,10 +155,20 @@ static void vhost_vsock_device_realize(DeviceState *d= ev, Error **errp) return; } } else { - vhostfd =3D open("/dev/vhost-vsock", O_RDWR); - if (vhostfd < 0) { - error_setg_file_open(errp, errno, "/dev/vhost-vsock"); - return; + if (cpr_is_incoming()) { + vhostfd =3D cpr_find_fd(vsock_pci->id, 0); + if (vhostfd < 0) { + error_setg(errp, "vhost-vsock: could not restore vhost FD " + "for %s", vsock_pci->id); + return; + } + } else { + vhostfd =3D open("/dev/vhost-vsock", O_RDWR); + if (vhostfd < 0) { + error_setg_file_open(errp, errno, "/dev/vhost-vsock"); + return; + } + cpr_save_fd(vsock_pci->id, 0, vhostfd); } =20 if (!qemu_set_blocking(vhostfd, false, errp)) { @@ -193,10 +207,13 @@ static void vhost_vsock_device_unrealize(DeviceState = *dev) { VHostVSockCommon *vvc =3D VHOST_VSOCK_COMMON(dev); VirtIODevice *vdev =3D VIRTIO_DEVICE(dev); + DeviceState *vsock_pci =3D DEVICE(container_of(VHOST_VSOCK(dev), + struct VHostVSockPCI, vdev)); =20 /* This will stop vhost backend if appropriate. */ vhost_vsock_set_status(vdev, 0); =20 + cpr_delete_fd(vsock_pci->id, 0); vhost_dev_cleanup(&vvc->vhost_dev); vhost_vsock_common_unrealize(vdev); } diff --git a/include/hw/virtio/vhost-vsock.h b/include/hw/virtio/vhost-vsoc= k.h index 84f4e727c70..ed91bb837fe 100644 --- a/include/hw/virtio/vhost-vsock.h +++ b/include/hw/virtio/vhost-vsock.h @@ -15,6 +15,7 @@ #define QEMU_VHOST_VSOCK_H =20 #include "hw/virtio/vhost-vsock-common.h" +#include "hw/virtio/virtio-pci.h" #include "qom/object.h" =20 #define TYPE_VHOST_VSOCK "vhost-vsock-device" @@ -33,4 +34,9 @@ struct VHostVSock { /*< public >*/ }; =20 +struct VHostVSockPCI { + VirtIOPCIProxy parent_obj; + VHostVSock vdev; +}; + #endif /* QEMU_VHOST_VSOCK_H */ --=20 2.47.1 From nobody Sun Jul 26 13:29:02 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1781283109; cv=pass; d=zohomail.com; s=zohoarc; b=L/4UOvCiSoVki7WEiZdb+TvDpjRlhdqcCpLN6FQiTq7CxkgIrtFdI2Be0re5UNdrcTNqQyq6k4y94++zT1TgRVjERUst/jvoGiOQPYi4+ZmanoHFYxgwfU2Ja4eVWkolrKrSLrpdK6y+qF/H1uKxGOZfldGLJnK/0aoUHGkpwoY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781283109; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vDugQUPP29UYpvgCk4+YO0ju6oEs2yA79qbBpCfF+Mo=; b=XhD95BN7V6TorvdMSET08Y24PM/kbwQRmUPAMxBbFcce2WRi8SZGDjWvFklmGl9f/hJsoy+VWEbUY9uaWcD28nmdGS7beohEiDDI76wW7vMSNRuH7aOg541JlTr3YS/jFnZ8QUZJHzZS20LYdtnKgPesL2wISquhcqqvxhsCwSM= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178128310979718.445278129999565; Fri, 12 Jun 2026 09:51:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wY56h-0001ib-46; Fri, 12 Jun 2026 12:51:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56e-0001ht-Np for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:44 -0400 Received: from mail-northeuropeazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c200::1] helo=DB3PR0202CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wY56d-0000Xb-6T for qemu-devel@nongnu.org; Fri, 12 Jun 2026 12:51:44 -0400 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by PAWPR08MB9097.eurprd08.prod.outlook.com (2603:10a6:102:330::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.18; Fri, 12 Jun 2026 16:51:24 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%5]) with mapi id 15.21.0113.013; Fri, 12 Jun 2026 16:51:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=d/eISw7ZwB8rTXOEb9Lo4FfSXro8rKjQUF4VQM64OUwxVKHmYaM7JrNKmakwKS5qWrwA8SxIs39i45rrn+LVSux0xy35DxqBYWONJBWc/ZLlQspaCiuGPaFjQHq2we20GpO+tO8BZKFNBCPBvZbWLYSHfEeaxrBCv0YcQUCi7/9ZYZqLXFLvERbn6Gxxp1iDiDEhy3bY4k+xC/Ex4AkDfZXdMpA1UCh9h9GB0mVh6/kJRaJYHwxlmWGU0JOi3HjOqrD5kETms2Qea4jik1Mx/SUVa2eMQDDZp6i4oFsxRE1NBCs73lRYDNhqWTbvU6HAqOygcbwwVidKzgWd5jPDWw== 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=vDugQUPP29UYpvgCk4+YO0ju6oEs2yA79qbBpCfF+Mo=; b=UKg/RqcX6pILIY8Hv8wet587zcHpqKOl59avCzfEMSUlqoNarmd8D6ydsyVOiA6Boy9hyXkXm3Vji/nsN4xTc2IeyI7n3erFedtAM3y3BRgsEYWwYq67RpdoL3y3tU3Uqv+OIyZK6UH/WxuiTOAVmbtvHUyyPH9QbGAjC3XJLR+ONRTmNsO9TwtRjjpeLFGAik2iuh56zvBIH5vz8/NfBmfglRqEkb06Iy34tmGdvNGSmcrzIsRgUqj0MvOSsCxTK8YLrfI45TF8rxHDz4S/R2+GjZmtZuuDLO6QbO/ksxykkwxOAnl7cY+2O3Uyn2aQwJIee5vS0d4SReMCU1WZTA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vDugQUPP29UYpvgCk4+YO0ju6oEs2yA79qbBpCfF+Mo=; b=e/ZcpR/SwVna85a+nQGO4qf6vc0SiKEc/rWiFW+oIGIGhfZkq3tqt27uEEQp6+yuBe7XYso37FVdI9f5MtAbf+2g97pioSdzo63bZJCTYuCi7WyW4uiOmHu57YopG6YE7jMrblDAtc84cMS9JmWkTCQ6Z9gPD8g/fyTv3tcJeG3TVavYidI5oC6imRYdtfHfpt50+Y548Ia38MLOJYowyy9jI2wgc6Ea5kYePunsRBN+JBncWFfcS3wDniSRs2DzNvaPRgRWLr6SQmO7XMgDjKUwaUyayiLfGQ+cd9SKVaR7Nt/vuJMH9JonxVOahXc+JpqYAvSIuZM4VzeX0UdD9Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; From: Andrey Drobyshev To: qemu-devel@nongnu.org Cc: mst@redhat.com, sgarzare@redhat.com, farosas@suse.de, peterx@redhat.com, maciej.szmigiero@oracle.com, bchaney@akamai.com, mark.kanda@oracle.com, den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [PATCH 5/5] vhost-vsock: don't reset connections during CPR Date: Fri, 12 Jun 2026 19:51:10 +0300 Message-ID: <20260612165110.431376-6-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> References: <20260612165110.431376-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: VI1PR0202CA0021.eurprd02.prod.outlook.com (2603:10a6:803:14::34) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PAWPR08MB9097:EE_ X-MS-Office365-Filtering-Correlation-Id: a00b5ff5-a118-411a-d013-08dec8a2d65d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|23010399003|376014|52116014|1800799024|56012099006|22082099003|18002099003|38350700014; X-Microsoft-Antispam-Message-Info: JxBJWTHA7L/M3uYsEht1PLaERDmgDxhplf3XofP0nMj4fWQLZNudb+1CUr+kt0lSulRcGOOZQVKcQvZtCHffxPG4WORHXQm+eVePX8sb/HAdULOHZtZqwC8wzWAuFw1hm/Ia3E7LpUs4t59qEzbOfHXL1se/oaCl15U7TOA8fkUVRuMwK1eDkDyx33JFCI1Fe0/o5vAgQL7HYUkEnhY43dyZSg5dV313CQJakOaBqdgCGV5mZ7h4UN7qTjNT+VB22NBj8LKpPCNw0lERecT3/nsob+xnusq6lSy/Pcq5EfzRLJ+BZ34RvwpDNpqGscYyj766xmO+ejInbsCtj4HJ5XrKkR/YIb0xycZkcX5tYZGEF3kvxz1rpjPQra0PNtbzsDL0aXFcUgZxvf+/Sw2GK7tBY8SrZyKxafujMRb6ajq/RezKLg+XJw/wi5OvFLGLuPxscwwbyJXIxwOWDzWCFWVUes4BAf4WSE87mGci8t7d99/9W7FcLvu+5TPlQiyyIfeHiFxT/OR7/64kieP4qsyF/p0b9dvH1zIgfJ8pzdDpAdfX72scdPWJCeWeX1yl2KAAL/WX7mYGLZm4spQ+77Xx/VkZXiznH79mn7qK9At5+ROxPbbAvxIbfjwq3GH2ZOQkQcg4x13z1lG+3ggo81UIjcCr88Nde34BR8R6cBiPwELMH3tmshQfNgJaAC50jlMXxceJKLlD7rt7Y7arqb1b6N1HIlrG5k6Vc5NbxxyBzkoAdriRtIUK+nSihuze X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10656.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(23010399003)(376014)(52116014)(1800799024)(56012099006)(22082099003)(18002099003)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?X92kJysj1ygjQQngRm9FDOPqfy44sq8Djhc3MwEa+4P0BLEmIb/CbgnLD1jA?= =?us-ascii?Q?vE/URJy4pf9etGlRohCu89DuOQrcbtTrHXJH2LMD9fNXIZMFQjnSUDGpcy+w?= =?us-ascii?Q?uJbEQWwQkLU5Qi/XIr7jq4gFtf0VYnLL5lYz17ZsblufFLuVBLMW3HqGPv0R?= =?us-ascii?Q?1R8zUK7MBauUmwleuOxHzqRLw6C2CTho7rS+1PCwqV0Guq3iYehIEHRsvKX4?= =?us-ascii?Q?uImrDu9A2jiTG28ncdtoQzgkFTdi4G3HzVYvmVgdGuxe6gSxPeuooLShgon+?= =?us-ascii?Q?leYnY/izZZ9VZMvF07Qmsf07hL3/PtDfq7QJT7KsT0NVJeLjFAeMw7BTG80D?= =?us-ascii?Q?+O48rt6ODwJ+x6eLKzC68L8HH3JZ7vBto5teank7oTLuHJFZssPd0N+jV1Dc?= =?us-ascii?Q?Z7kLAmXTxHmIoWvuJo0LnQbomzf1DgSKUJKfjsicQkhTa7/PQK+CyNDzBdtO?= =?us-ascii?Q?e+ZlDSSH8YzsGGpZzZyioY7pc+4rvtMn437N5IORZNIegtu3whNymScUitJ+?= =?us-ascii?Q?7Z2zpPU8WjozgfL/fDtLRtIYG7Of8MSG7meX6i1KxC836m1xup9WlUGzcVzk?= =?us-ascii?Q?GiaDsth2t4QFce81IW59eWjU1/Nt6e4khDD21ZmgxnIT53YTZHuPNCq8p/lb?= =?us-ascii?Q?k1tYwMHbB53WCDrrbrcjeLTX7WEbOzN0Aa/8Cy6dbyJQq/M6SBxTqarALN2d?= =?us-ascii?Q?cf3kRdgboF0/DTUUv6KxpAJt2Q5OHMWs1f9XGDr91gMkFstZuwK4B/tfpHwe?= =?us-ascii?Q?d0T/n9oWzchpA6gdDbkybMjIfE8inO48CA47/FpBm3WvSUoRLm/WTcAPx6j6?= =?us-ascii?Q?6fk4eD1/GnEzD5ZOzkaixh/vCdBT+1uXOlJlDLx4gvBxoPV0XS5i34+IeNva?= =?us-ascii?Q?fegcx55595N4wPpE/HQi8pR80yJCsw2/rloDv4oRZyG4/WGlWI2ZcO3wpX1Z?= =?us-ascii?Q?AZzAvw/AgTRRxch6Pemk2N0pRBYxYGL8D+DDMnFFK8jfsLavvX7co2zDmnNI?= =?us-ascii?Q?Z5ZKf4+3UKCY3srEOP1io18eM/PCrNXbiF/0d1YnR4y8VII+vaOY1jOxFH2P?= =?us-ascii?Q?X5h9Jo84r8djLC8n26lve/rQidKXgJ2PiiH4i6VLtTs/CYhuSLk8LTZ/zU/t?= =?us-ascii?Q?vogzZcZuhl2Xu60rZHGcoT3RVwwAHi/fKlbAPhhQ7c4SI86ECWoWIxLqUtM/?= =?us-ascii?Q?d4LGDshKKILTFmrR9HWfyVUPcnh2jncMqa963ZYu44Pc5LSxQhPmNShtSSxH?= =?us-ascii?Q?2gXJaX0AVu14SDOKccq5wXSOPpb36Uo2IADNhlcFIoKNnHnJtLg6hxHBQsxr?= =?us-ascii?Q?Skqe9M1afW9y+EuP2POCcDLfLms/UYE3kW9PUscwaR1VKLpIBf3EFxvew9EQ?= =?us-ascii?Q?czKO5EPQrx036bQiltixg7Fp6gEezmjY8ou3N0/AiA2ECJUaowlgougDvcfY?= =?us-ascii?Q?5dhhBhOj1Rq49iFEXuuT49UTasTBi9IoTWQ3njncxvD5QSTwfNzT9PHjYGAD?= =?us-ascii?Q?XIVM89ieB4EnTLDKY8TYal7C7h4FFvn81UE+Zk7gnHeUuGwQPP93vferDzpe?= =?us-ascii?Q?WQau3iQ8+xy7ZmHOHO3mS8WUrpvVi1NlttOwzqg6ff8/SzR+KXfVU6yr3Pm/?= =?us-ascii?Q?0wmFh9jXCO6yelqmnOInZe/q+jqtQOljI24V257+8eYcS8GFYaefhZw5Dt8g?= =?us-ascii?Q?wL/2KBBwan1x1p8fP6h2s/nvB3IwobpQ6fMJdF+FmsG8V8SFWUObN8Xe3x+Q?= =?us-ascii?Q?bw/lqVgVOYMBn/qTzNfgBsK4rajzHOU=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: a00b5ff5-a118-411a-d013-08dec8a2d65d X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2026 16:51:24.1032 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fs9IozQ0YNlG8u1mlqRL7/lVwSu0CQeosNsgICcjKKB2NhzQVvIQInjuM7yekqdsHulFkrb/JUAu7JhDIEajS63wQ03VEMJf8gUGUhEBDv0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9097 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a01:111:f403:c200::1; envelope-from=andrey.drobyshev@virtuozzo.com; helo=DB3PR0202CU003.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1781283110739158500 Content-Type: text/plain; charset="utf-8" Migration target with a vhost-vsock device in the .post_load() hook issues VIRTIO_VSOCK_EVENT_TRANSPORT_RESET event to the guest. This results into the guest tearing down all its vsock connections. That reset exists because after a normal migration the cid may change. However it's not true for CPR-style migration. In this case cid remains the same, and we want the connections to persist. Thus, let's customize the .post_load() hook to skip the common transport reset part in this case. Signed-off-by: Andrey Drobyshev --- hw/virtio/vhost-vsock.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c index 90926f95fe1..623b0c6a314 100644 --- a/hw/virtio/vhost-vsock.c +++ b/hw/virtio/vhost-vsock.c @@ -109,6 +109,19 @@ static uint64_t vhost_vsock_get_features(VirtIODevice = *vdev, return vhost_vsock_common_get_features(vdev, requested_features, errp); } =20 +static int vhost_vsock_post_load(void *opaque, int version_id) +{ + /* + * For CPR the guest cid is unchanged, so don't reset vsock connections + * (the cid-change reset would otherwise tear them all down). + */ + if (cpr_is_incoming()) { + return 0; + } + + return vhost_vsock_common_post_load(opaque, version_id); +} + static const VMStateDescription vmstate_virtio_vhost_vsock =3D { .name =3D "virtio-vhost_vsock", .minimum_version_id =3D VHOST_VSOCK_SAVEVM_VERSION, @@ -118,7 +131,7 @@ static const VMStateDescription vmstate_virtio_vhost_vs= ock =3D { VMSTATE_END_OF_LIST() }, .pre_save =3D vhost_vsock_common_pre_save, - .post_load =3D vhost_vsock_common_post_load, + .post_load =3D vhost_vsock_post_load, }; =20 static void vhost_vsock_device_realize(DeviceState *dev, Error **errp) --=20 2.47.1