From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11023086.outbound.protection.outlook.com [52.101.83.86]) by lore.virtuozzo.com (Postfix) with ESMTPS id 287BE80B9D for ; Tue, 20 Oct 2026 16:31:03 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kh+vlu2g26PQXMlwnQ/a4BNdXYwFzyNOJ3YER8QFBD9NV/Mj5/j12sxOKL13SuAR5OfyxEbAe+LzqusC6V+JPbquC108eCRa81yMwQrDdjLsDpsbJU0Ct9eXOX2+DqvOLgG/PfFmUeLK8H39Jr3dxwP+bYe8JCFvqp5/2tXvzT43WLuHX6m65Hqa3qX+zmCGbPeCvJJz6ItFnYMa72B5bx497nVWOOBI63s77o5mKtLln8fFwrQlVOnsjKCV1Yw1DUw845fACGx+a29rlnw+DlJhJ4f2kXz081D9QcgCZgGzuu5euQu/zVbThiOkVxRGwNE7Ur8jJxJPFhVW7nXBlQ== 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=6jBJz5D4cWp8+1gDjgmPcktWDT41N+CYNdbGzwNUGhc=; b=BWHY13yutGnYdJKSb6U/cfp2OWh4QDQBn6kP0OskidcdBqJtQGfaOPB7pYmqrlo1s1k3N6GqyAq8L97IEGKQJ/sx/c2g1JH2YHB0TWbsiMe8N/xMgVRwilSbs9FilBe8Vmat8lZQY7bzyeEkxntxejqvpc1y5+78c/unki6t/YqcIbK0+po0tPHQHArp9w1CC5tN4jdIrdPEcmAsQWweWmXdwkr76zCPL40F/YeW9YWyUaZzjJIZJmLRygkS5rg1x7+/gpVPnH6T0Sct0AI/tgIG18r0lDCXW9ljgryfdNTI4+iX9jyRgFM6kBoWbgrISpoSDPmtOzI3i/nDLyw/LQ== 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=6jBJz5D4cWp8+1gDjgmPcktWDT41N+CYNdbGzwNUGhc=; b=VdmEbm4z7HIUf5tA4bR0cZ5QnmyO8T/jZXeZaQrjpunr5740wK+ww0kKzIp1Nv6eDbC3TTvLvJR6xlsD0L0rl/3x0u6pxSBKLSvpSPTKaMj21SB5kJL8Zaf530B2Ha8f+bZbMXCUCNmbnBX9JeKn+cbNf1rRiZNZT2h1P7X9SOJPqJL42iL3G4AYtwI6Y7OY2a94SICec3tpNyKEcFxjt2U9DWdVrdMCqr2I3isI0jYSc+rledZ9aOWKu4r+bO6ywdomvNGlGlXL6n7Qu8z5x8+cBGlKOKhPrujJ5EGh+qimv7LOnuqibMqXjNex0iZFvBTAibaxaBbmFKq1s0H2zw== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by AS4PR08MB7553.eurprd08.prod.outlook.com (2603:10a6:20b:4fb::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.15; Tue, 20 Oct 2026 16:31:01 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0546.012; Tue, 20 Oct 2026 16:31:01 +0000 From: Andrey Drobyshev Date: Tue, 20 Oct 2026 19:31:04 +0300 Subject: [PATCH QEMU HCI-8.1 v4 24/31] vfio/listener: skip dirty page tracking during CPR Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261020-vfio_v1-v4-24-83a5668230e5@virtuozzo.com> References: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> In-Reply-To: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0056.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34b::14) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS4PR08MB7553:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d07f2ca-ef31-48ec-f54a-08df2ec785d5 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|376014|52116014|366016|5113699003|10067099003|22082099003|18002099003|5023799004|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: du+FtIVl6zw6rdYJlsOzWKf58rQGBsH4dDsRqf5huQjzLbt9p8jsBP+FWOxFMfm+7lkfkDyaFDfeFylohiUJjfdeGxYVbgkMyo8d016TVPkCRhdS3MK1lyuJLaEHfwP4TZIDV1yMKno/2ppkFDvhCx6IGMkXXBklgFr1hkx7g/DcyWSAL/8MeVwh5c8PLhEd/6ozvlDjjgtQR34HQ/A250aYwLVaTgSmyWze3DnRa/gD+QuJ/2tO6AsfdZOwdq6SuyA5MIaUH0+KWqI9e/3qcdlvxtVpVd+ZIlQg8kRDJh5bLheGNjOLz0bYGEpGgnBJbmRcgW+jKezrMLQdi1RwPiOq0gQLDL8IRg9ke8Liw7USsN5cDLJA/h2GoAlNx/9wW9fclR6KdXd1GKtYR9uSywIi3sp/2O/w+nrsJ6A3sSnCLr5JLnNb9lRQfqrEAZXE1z5RhPMUDKAKkh/Ds72Ney21h7HURXvzp29Fv7UzICh9dyPcSxFzpalvA5K2U31+cpj/2w28odh5xbh4S4xrDnG2TBso1Z36EclSHn+VT/w/E6VbFX48FsUm+EKETJAkx/OQa6FpLsX7JyU/7iJpDn6+yNU/yUoK6SuQ9Wzqj7DJLWFDJ7zlC4Z5TIHB6qqVHVLhqNUNI++RsRWdOejuRboowCIUpy9AoWikG/cfqZGhtEO8vnZZ8c0F12I3w1G9rPNIXgmA+qPUBFiYwqYov55PIZkR7qjwtmHwqOlIw08= 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)(23010399003)(1800799024)(376014)(52116014)(366016)(5113699003)(10067099003)(22082099003)(18002099003)(5023799004)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aTZsMTdkei9aZG9aMWw4VW5kd1VnZldlYUZod0xaTS9yQTBCRGRMWGpYR1h1?= =?utf-8?B?dDRhZG4vRmhUMkZIcjFSekM3Q0g2RXkzd3JybGt4d2QzblZBODNnYzZpSzhY?= =?utf-8?B?eGNzbFFtNkdIcFdabE1Kc0JENnJqMVVGTUlKcFFJRUpjQmphTEVlOGV3bWVp?= =?utf-8?B?WUUyVUpaOC9zWlNqTnlHdExqSFlqVklESVJsdUdEY0Q3TEJPUlZUQVVzVUJV?= =?utf-8?B?WnpNSWxnU3Bid3JRNjY4dWEvaG5jY00xWXZUdXVXdE9uYmtSV3h1S0pMb3Vj?= =?utf-8?B?UmZYZUpuck5Mb1h1Z3RrTXlPOGZTamdaNitPZDkxc0pjTUQ2QWswa2didnZm?= =?utf-8?B?S281TnZuempDSXI1WHNXYWRpQlRDbG9MVFBxOGUzVU1URVFZRzZzRnA1YnhF?= =?utf-8?B?MFhiSG9neEZQRndqMVY0UkExMXN6V1FrV0lsY0JsVENBdUlybXZ0NWtGUzJK?= =?utf-8?B?YlQ1U1ZPTVV4R0YvU1VHa3lvdTgwSEZXUFQ4enFwVWJhL3g4V3ZIbHFIZVEx?= =?utf-8?B?K3hWWGV4aHV2YlVWcjBwcFo0NjZNM1pzTGJUTzFqN2FCMVpNdXFSNnhKcEpV?= =?utf-8?B?dnRCYkJvaGIzVmV5R0NkU0tNRmJWU2MzR08zNVNwd3djOVNhYVhjUzhZQ0Uv?= =?utf-8?B?MDlSZkc1WGlhSXl4dENud3NWM3BES3hBVmpZUXZLMlFVNkQ3VHJqb2Y5Y0dW?= =?utf-8?B?ZUpmS0Q0dUM0RnpCM3RhYlJ2d3k3M1p0dlpCeitpd2ZWQkhjN291TzFmdjZz?= =?utf-8?B?TkIxVURMSVhPOEp6YlF2K2VzSW9CT1dVNWRUU2ZSSFhOcXlrcnBCU0lXWGVV?= =?utf-8?B?SE1JVnNuOGFrdm85K3NLZDNReWRhblJjbDlxdVhCZEdqenRvR3c2WjZEQkxv?= =?utf-8?B?OThHRk1mbWNWWmZXbGtXcUZwb3JxNG1Nbmd4RlhveDE3RHVmTDVmeWJ6N2JC?= =?utf-8?B?MERGN01hSy9hVkg0TGdZOVpaQXo1YzBtTkV2UTVhQU8xMVdNR1FyTWdTendq?= =?utf-8?B?Q2YxSGpTc2U5NlBKZG84MlppSHZrcEFDVENIK0FNRTJsVGI4cGxsamJEYlhO?= =?utf-8?B?U0tYUEdPYXFHWmxGRWpjazlqN20vcmlCMVM4WU43cVFQQnZYaE4rWTd5dG5a?= =?utf-8?B?UmF0STVudU1wZ1JINTJVcWk0MmgyNGhaMjd2bUZOTStCL2FHcGhERHJMN1FE?= =?utf-8?B?SDJJR1d5Rmd1K0pOTXpJS1l3STRFMkpLVUdxWklXOWI5bCtCOXF2YVZDbjZk?= =?utf-8?B?azMzQkVBU3hUcm1HelU4dWN4SHI2aC9jUGorUDNUcHBoNlNwMmhYU3FLUCtZ?= =?utf-8?B?eTRndDg0bTJOcTdvZjhKZFY5NEFzVTArWjVqcjFFR2MxTjNUamlSaDltTXps?= =?utf-8?B?dmRuWXQxMXV3S2ZTajJtTk4xa0RGOHFjQzdFL2laYnE4SVM2cmxnK2xDWE8x?= =?utf-8?B?MjNBNTRTU3JmR3hTblA3T0NlRUYzRVVKaFg3YUdaR2Y3Qmw1Y3JKcVFlU2ll?= =?utf-8?B?TU9HTmhaZkxWcDZoNlR1RDNYSC81djF0OWN6ZHZpYkxQZDZDU3ZHb1htcStt?= =?utf-8?B?ODBwRnd5d3l3N09JTWwwSjRod05HL3Y5eWhhNzl4REZnRUZTcFREenJGRk5m?= =?utf-8?B?M05Hd2ZNVlRscUdwYWVPMCtpTkZFZlR2OEdVZTZmV3R4U3ArNFp1amhwOGpJ?= =?utf-8?B?ZTBUOXFaZjVERVI1emkzV2t5ZG1qRXBtL0JDajlTekUyWit0V1V5QzJhTFJL?= =?utf-8?B?NEdiS1Aya1dSZ1pDVTRvcDUxdFhNeFoxYVpMUGN6WXVMQURaODRrclJtUldk?= =?utf-8?B?TUtmOVVBdFhaYUJTYmxkSzF2dEFjaGRhS0Z3YTBIZ1F0MWxWa3pmZWRtNFBZ?= =?utf-8?B?UnVuVC9kbENNUFpuRnZQRnE3MCtCblc4Tlc4cms1ZzRRNFJxU0E1cmFmdS9K?= =?utf-8?B?bzlpYVNyRm1qTEdKTE94QTlWWGxtWHdiR2Jaa1l4SWptclg1NEo4WUNaTzVH?= =?utf-8?B?dnYrbTdBU0diVlVjZVlqbitoNmdMRE1tQzRGcGw2amtBWE1lWkdDeFVqdDB2?= =?utf-8?B?RmV5WTVkUloxS2FlUytmbDZLOTNuT0RkTlNCQUxyVnVpMlk4aE9SMkd0clpz?= =?utf-8?B?OTNnZHZFeFpoeHl2Q1d3Tk1aVG5oTTZLL0lxZVlVY2k3YVl4NGJnWjVEcmtw?= =?utf-8?B?UVh2NEtPRGZpZVZLVEpnZi9ZVWkwem5RRDhSdnBZQm1iT0ZSMk0xY1gzYkRw?= =?utf-8?B?anJGbE40SGhWN3lJcjh5aEJ1ME0wMmFOOWlQZVROUFNSaEVlQjkrRm1GUytq?= =?utf-8?B?UG1WeXpmTU16TFNSME84elJ0UFFYN1hzdFJMMmdDVnNWZWU5b0RKdTlFZjBN?= =?utf-8?Q?uaZn0BMa3ILH5r9Y=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d07f2ca-ef31-48ec-f54a-08df2ec785d5 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2026 16:30:58.9650 (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: +lD34h+YcYSIjCtJqJzyHob2rKEWiXUGKk/Zr6Cx43IwB6J/qQ/guHKnqGUzYGSg92SV8W8HdTC2m401iO4+MMhCguU7Q/+EQey8pgr82Mo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7553 During cpr-transfer and cpr-exec guest RAM is preserved in place, not copied, so there's no need to track which pages the device writes to. Yet starting the migration also starts VFIO dirty tracking, on the container or on the device itself (DMA logging). With cpr-exec it isn't stopped before exec, so e.g. the DMA page tracker of an NVIDIA vGPU is left running after the update. Don't start dirty tracking while a CPR migration is in progress. Gate it on cpr_is_in_progress(), not on the mode alone, so that a snapshot taken while the mode parameter is set to a CPR mode still tracks dirty pages. Stopping stays unconditional: it's a no-op if tracking wasn't started, and the mode may have changed in between. Known gap: the memory core starts the listeners only for the first dirty log user. If another one (e.g. calc-dirty-rate) appears during a CPR that then fails, VFIO tracking stays off until QEMU restarts. Signed-off-by: Andrey Drobyshev --- hw/vfio/listener.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index afcf518f567..1270b9d5f3a 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -41,6 +41,7 @@ #include "trace.h" #include "qapi/error.h" #include "migration/misc.h" +#include "migration/cpr.h" #include "migration/qemu-file.h" #include "system/tcg.h" #include "system/tpm.h" @@ -1012,6 +1013,11 @@ static bool vfio_listener_log_global_start(MemoryListener *listener, listener); bool ret; + /* Preserved devices keep DMA-ing into preserved RAM, nothing to track */ + if (cpr_is_in_progress()) { + return true; + } + if (vfio_container_devices_dirty_tracking_is_supported(bcontainer)) { ret = vfio_devices_dma_logging_start(bcontainer, errp); } else { -- 2.47.1