From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11023081.outbound.protection.outlook.com [52.101.83.81]) by lore.virtuozzo.com (Postfix) with ESMTPS id 1F4C980460 for ; Fri, 16 Oct 2026 15:50:58 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zKkF81oK6TFmDlZei5K+RVR32SVPvyMDUP6z7v4beRej+9FrXeJBKcpRZoE3862OxrG+MxC21rKyYgVzyxWRiWt8IZSgq+aVDlRrs+k4FXFJ8qoX2k2Qy+mhV43unqIe9aLaTorN9bkCCCzMDMqZpaG8PFVd28poZhYC6MAsXWP3dydb2MxSKzpKhCXOw+oM81k78rtmaJgfpuGTCpMOdN+wD3n9cCviJAMmr8JPGmIvZqvk2dmOoNGTwU0ITmaPurEc5G191uKKxZ/0WZEO+5L9ipTldpRO7P99rMJDl5pDVF0WOzyHIh4t99r6HY7QSJkJprNR55l1en9aCJcb6Q== 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=nvm86feg9UIIPBHyAU4IYIvyZGR/Lv8NU7wVFIApg9g=; b=lh6YKqteaS4nvqlKRLxWC/DQbbtjrSoEJv6fZXzIYjF+ZcEUSuDrQtFKyFapNuxr38JsV+i5kGwyWw+7kTbby0ynpXGP8NFv2oB5zVnrwck3pM2VRAhXPs7VZgFBUtP5qUYENCyFVfo2whYGbNCZPxHvGq1eVm/V9P0wo5GLOg6zRe3nWzkObhirkvs3KaBlqGXix3qk9+/nH62HKLGB35dl4JGyWqTX6/ILuV+KgbQEzlfrm6BBYpFDrH0ey1WN++VmAY1x92lhANaY7wRUIBCrYzlEd+WNhH5Q6/+wvdFHWIWHR+Ci02kGDa3li/hJEHaMqgnjw2sXKlbe2KBzjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 69.169.224.5) 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=nvm86feg9UIIPBHyAU4IYIvyZGR/Lv8NU7wVFIApg9g=; b=QzbjJs+BmbpZY3AobflK9ppZX3enXbz7NRCYw1I32Xdsnj0F2MfULOxWjRz/z8imFDgqWHs3ow1sSJqQgM3k0yZvqE8oXvorrC3en5bULwVonP9eJD+Jmfn3TFuTdkZcQdi6HPl5Ba52r5nzAlE/1cgQG+sk311VP2GuhjceZKE= Received: from PR1P264CA0070.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2cc::10) by AS2PR08MB8264.eurprd08.prod.outlook.com (2603:10a6:20b:553::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.7; Fri, 16 Oct 2026 15:50:54 +0000 Received: from MAD0EPF000008C5.eurprd05.prod.outlook.com (2603:10a6:102:2cc:cafe::8) by PR1P264CA0070.outlook.office365.com (2603:10a6:102:2cc::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.496.5 via Frontend Transport; Fri, 16 Oct 2026 15:50:54 +0000 Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 69.169.224.5) 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.5 as permitted sender) receiver=protection.outlook.com; client-ip=69.169.224.5; helo=b224-5.smtp-out.eu-central-1.amazonses.com; pr=C Received: from b224-5.smtp-out.eu-central-1.amazonses.com (69.169.224.5) by MAD0EPF000008C5.mail.protection.outlook.com (10.167.241.201) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.522.6 via Frontend Transport; Fri, 16 Oct 2026 15:50:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=23yjbh4k34hwzfubhuiim7m4inbd3ick; d=sashiko.virtuozzo.com; t=1792165853; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=kcSEFwD3FSFP/3U/mQLnFCHyhovuAvL24xutxjwALkM=; b=y/bWunNIpj1rRZ+ZxsRm1FLVR1FeE1KqWH/3abUruLuC3iwMbRLI8iGFTMbIL91o uUnssbRUXNWO2eutokDIn245hmSoEoWja6887phNZ7GxRgT3/6zsQbdlnYwBMMzmN8B 6Jw/4Ko4Rq5BrUPfYhHUcAKQ1SoO7m+vqAvr5q2bphtGc0GP7EIMPpK7tbv6swn9d6j 5PPMN/opSBYs2CNQU0fNZ+TsfHu6bFXxSR9eu7uJ/BpdC620AvST5pR6Uu1pooC4fmp 0EO14S+LOrcSs/CSzZsnbS1+RucxbsJHhJSILin39emmDihxCalTnMbz9cz6uiymrrc +QSbpWH1FA== DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=qftdzk2dqsatjnlrq4r5brjbihpfcrsh; d=amazonses.com; t=1792165853; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date:Feedback-ID; bh=kcSEFwD3FSFP/3U/mQLnFCHyhovuAvL24xutxjwALkM=; b=K5pAS8ZMeIuDd7CRISKU6C2aC5NfjnKqcjhAAJW5xhqJZSF5mIbWdYZ8DcvSNLjg jla8fd4c2sfBF184lC5P/SWzsl0tdGThOTg1GqT8WRf0CXfp4T2TfYZi1/GijcbLkxw 7XfFP8rLDC92N30zrR3jZSzBJuOZ02B7fPl5eOXs= Message-ID: <010701a14568b8e0-6dc64abc-5288-40a1-b6d5-0f2a512c3a5b-000000@eu-central-1.amazonses.com> From: no-reply@sashiko.virtuozzo.com Subject: Re: [PATCH QEMU HCI-8.1 v3 22/28] vfio/listener: skip dirty page tracking during CPR To: Andrey Drobyshev , svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com In-Reply-To: <20261016-vfio_v1-v3-22-47487cb5a8e5@virtuozzo.com> References: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> <20261016-vfio_v1-v3-22-47487cb5a8e5@virtuozzo.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 16 Oct 2026 15:50:53 +0000 Feedback-ID: ::1.eu-central-1.2wRQJBpg9g1fGRYexx3dUuYGS25Bux+2TEOx72/m6U4=:AmazonSES X-SES-Outgoing: 2026.10.16-69.169.224.5 X-EOPAttributedMessage: 0 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MAD0EPF000008C5:EE_|AS2PR08MB8264:EE_ MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: cfda1f1b-05c5-4103-4802-08df2b9d42cf X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-AtpMessageProperties: SA List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|704161411799003|9140799003|61400799027|376014|48200799018|32142699015|56012099006|5063699009|5023799004|4143699003|261009223027099003|10067099003|22082099003|55112099003|16102099003|5113699003|4113699003|18002099003; X-Microsoft-Antispam-Message-Info: n1IjLe2jmNdt16rz5cEL2nasHMlGi9cVW3+yOrj6qX63F3aN2SQ0ag+CI7YohFMrO2ZL8a+UUb6fGammVqnEJBBRjHaF7vakqjoXId/UpTpnry1HcrFlJMLmTvjQfr9/4GnPRNuSZxlo7ih3SocM/TuuhBI/OINDycCySReaysD8f9muKhujMk7THqoCowhy4jwyoxjkxzIJGvRFMqdilzjV46UQ/kxP/ALqfHJR7+soKw0/nnYP0ILqeHQ5wVFPwmWxaF1RRpiQf57bde4XxhMPtheqIw+CSuJdZjhUrQ/Kub9N+UZ+OuuotfF1JaeV8aCc8mOfGbk1QPXMikSOp4tXdF6FNk9oRhrCkOzByHNZj27s2/piup3S1uBDviZzsqrgln1CymJTs2gWPJ9/YtV9SCoExkPJVwW1kLKLLd4GneUVNe7YcHxgjkUeJUY1LwYC2li2TbN6IsXnGMP9J5Ew7NeL2cFBOdeXq3hOjF0OnIVTa1fG9UHnYKhvn/uda9x1USFsDKsfLcyvW41vJU/MOmascIRBKW14W+/3d3LDiqavQaB+ZZ6gRaBpECf0c6NmaUSV5fs6TTaxyfCmWEQDF51HdHBkglMl37ekpvXYPPlBWdwWoRi+2/Q5H63BKlEieqqkhPszRSshWX74GCvHj9WKObYSSCweoeh1Z6DD1vHpMS/VZ4B3iBd9MTkns4tPAN9NnwQyQ4VpHaCyWuQJFUiENO+lRs17R5Md20+JIz1D+1EQodZDA6nKmY2mhgzrQ+qQ6Pk/3zOmAW1X1Ir7riHAasBG8LT6/tnAPVVzE5h1c/4zT6HD4l/3uFmKSSxiHzTnPwCJnV2QgtctKrY8+3XLwcr7hkWk4zrSZzQARoCupx26tfP8VBP7KmqCvWoJhcJJORDx1nukhmML9g== X-Forefront-Antispam-Report: CIP:69.169.224.5;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:b224-5.smtp-out.eu-central-1.amazonses.com;PTR:b224-5.smtp-out.eu-central-1.amazonses.com;CAT:NONE;SFS:(13230040)(704161411799003)(9140799003)(61400799027)(376014)(48200799018)(32142699015)(56012099006)(5063699009)(5023799004)(4143699003)(261009223027099003)(10067099003)(22082099003)(55112099003)(16102099003)(5113699003)(4113699003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 58D7J12rXH1qqBdFmqx41xcjc3OSbzBLOkGQH/So3ykIGWZ5CiHhMtsaOkzJTygylJ2wlJHljD7GFkPf6MpntmVQXKxE40XBM98PYCZ3bGBEK+MdgSh4iWDMBJWVXpK+OIaYiYccVSqYv5fciMWI1dLk/DLCqmkms7ORElE7p7e7eF3bqv6rK6u4FnUY851otr/g0sIgLDptUrjc7kWTnJPzHjs3tv5ptsE3e6gvUmGokk9yTH19Z/TJ2hXG28eU5z4Q3BAPSP4nWyL1MFm2/Yk4eiOZf1BXSvEW2o0y737S9j81zrVRXyLNEIm49Iwq7iJIqMshmSlNoLUQmHRgbLEtRgVtzvVcPGG6uF1ApmAspxHQV031ge/1nw62Hy4Fdszy0mClruCaNDlRbR9idPaOewOxU3/7w6OWCsRG6xpEIRNBAxMY18tZaggSftqo X-ExternalRecipientOutboundConnectors: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2026 15:50:53.9655 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cfda1f1b-05c5-4103-4802-08df2b9d42cf X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: MAD0EPF000008C5.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8264 Thank you for your contribution! Sashiko AI review found 1 potential issue(= s) to consider: - [High] vfio: CPR skip in log_global_start() is never retried when another= dirty-tracking flag is active -- commit a7865175c300cb526642364e7a12bfbf13a29863 Author: Andrey Drobyshev vfio/listener: skip dirty page tracking during CPR This patch makes vfio_listener_log_global_start() return early without starting VFIO dirty tracking while a CPR migration (cpr-transfer or cpr-exec) is in progress. The gate is cpr_is_in_progress(), so snapshots still track dirty pages. Stopping stays unconditional. > diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c > index afcf518f567f..1270b9d5f3aa 100644 > --- a/hw/vfio/listener.c > +++ b/hw/vfio/listener.c [ ... ] > @@ -1012,6 +1013,11 @@ static bool vfio_listener_log_global_start(MemoryL= istener *listener, > listener); > bool ret; > =20 > + /* Preserved devices keep DMA-ing into preserved RAM, nothing to tra= ck */ > + if (cpr_is_in_progress()) { > + return true; > + } > + [Severity: High] Can this early return leave VFIO dirty tracking permanently off for a later normal migration? The listener hook runs only when the first dirty-tracking flag is set: system/memory.c:memory_global_dirty_log_start() { old_flags =3D global_dirty_tracking; global_dirty_tracking |=3D flags; ... if (!old_flags) { if (!memory_global_dirty_log_do_start(errp)) { ... } Consider this sequence: 1. A CPR migration starts as the first consumer. memory_global_dirty_log_start(GLOBAL_DIRTY_MIGRATION) sees old_flags =3D=3D 0, so vfio_listener_log_global_start() runs. Because cpr_is_in_progress() is true, it returns true without starting tracking. 2. Another consumer starts, for example calculate-dirty-rate (GLOBAL_DIRTY_DIRTY_RATE) or the dirty limit (GLOBAL_DIRTY_LIMIT). old_flags is now non-zero, so no listener is called. 3. The CPR migration fails or is cancelled. Only the migration flag is cleared in memory_global_dirty_log_do_stop(): global_dirty_tracking &=3D ~flags; ... if (!global_dirty_tracking) { ... MEMORY_LISTENER_CALL_GLOBAL(log_global_stop, Reverse); global_dirty_tracking stays non-zero, so no listener hook runs. 4. The user sets mode=3Dnormal and migrates. memory_global_dirty_log_start(GLOBAL_DIRTY_MIGRATION) again sees old_flags !=3D 0 and skips the listeners, so VFIO tracking is never started. 5. vfio_log_sync_needed() then returns false: if (!vfio_container_dirty_tracking_is_started(bcontainer)) { return false; } Both vbasedev->dirty_tracking and bcontainer->dirty_pages_started are still false, so pages dirtied by device DMA are not synced. The destination could then receive stale guest RAM during the later normal migration. Before this patch, VFIO tracking always started with the first consumer, so this state was not reachable. Nothing later in the series touches hw/vfio/listener.c or system/memory.c, so the series does not restart tracking in this case. Could the skip be retried, or could VFIO tracking be started when a later consumer or a later non-CPR migration needs it? --=20 Sashiko AI review =C2=B7 https://sashiko.vzint.dev/#/patchset/20261016-vfio= _v1-v3-0-47487cb5a8e5@virtuozzo.com?part=3D22