From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11021093.outbound.protection.outlook.com [40.107.130.93]) by lore.virtuozzo.com (Postfix) with ESMTPS id 25EA78017D for ; Tue, 3 Nov 2026 13:58:00 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B7XQ4aBCh3Fb+UXKm381BJvmDim6svO3L1ADNhbmsfktLwOmRSLz7dgYjhyF7OZ36un8N86/CmiJFAmZtYpuKPVE5/SRWJLg0ocaDwZx4wfGdtMKMZg5YyIbTWdjoW1I4d331yAIGKlJqxkX37fqJk9LIKAGsH1P90hjqBAz9ZEZ/aWRhykeG/8X2Ia61yzJpf8vp/h86Qqc6d3F6dfycDZ1YEyTwT1GX0OYA89CbRBkq66DjZ4RMDbPCY3RqFbHYerI5/eRTPpWE8Pr9qgSWdirY0KMSof4wsirbMpVfuwtWU7H280k/TuSoQkSxDcuxqvAA5nd/FMJrB0Mqydzuw== 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=p28heuPowBrNESp8BUK6OPz1QNmfkSY1JCbwgacL9q8=; b=LiFqTSUEUUVcHAi01zBSy20hMcJDzKCO6Jom98S75Rt9Uq4E9boSopImIF1SArq2uanUavNuC7oYop/p8t+keLlbZcKvHhKQATzyEN9tPlizMe19fyJ7Wb2ih8Q3BaoUgVd0V3J0W1GzaiwiqX7CyuvzhHVNZtr+ckpfPJiDm3gs69RuGtgNiaa0+44devntHV8qSx3iVRQJ/Y/vgdEk0hkK2Q4DRveErbfiXul4rqINlv3zac85JJ/gpQe48wTc1M7oSsbJM5o28xdQi6x8Ns6h6vSMz8xmqg8l/wv0EGJ5wRK/AAX9vLy0a4NPKNT6uTIxmfPy9gtC2mLbDXNTSA== 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=p28heuPowBrNESp8BUK6OPz1QNmfkSY1JCbwgacL9q8=; b=IrajfdKKfqOvMlqyU6HlggrtCLUcDv2qdVNB7Odds2BxzTReOMsW9Rk6SWSo5r3necl4YxP9SgDvFWryD0VkZE+DMIpONb9VOZrEQqf+XjxgKTiKqxYXquDnuPTVMK7sgQy78GJehPwLzENyvWkQEdg+C2na67qXYxribw+ppeTZiV6JWJIIrbZuEEmBywWW+yu8JCIALCDtBmqZi38aem+MH/1kdFnZl+s+GItUniuT5DhYVm/GamUAOFV28GIie9xDBs5VqgCTgICXKiQXTTq0IaeIWnNjMdZQuwrY3BEHsj3fVZkLYgJWTqGuDWqr5Na5I+G1ZDzKsY8YwzhpxQ== 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 DB9PR08MB7423.eurprd08.prod.outlook.com (2603:10a6:10:370::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov 2026 13:57:52 +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.0569.011; Tue, 3 Nov 2026 13:57:52 +0000 From: Andrey Drobyshev Date: Tue, 03 Nov 2026 15:57:43 +0200 Subject: [PATCH QEMU HCI-8.1 v7 28/35] migration/ram: don't start dirty logging in CPR modes Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261103-vfio_v1-v7-28-4467fdccbbe6@virtuozzo.com> References: <20261103-vfio_v1-v7-0-4467fdccbbe6@virtuozzo.com> In-Reply-To: <20261103-vfio_v1-v7-0-4467fdccbbe6@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI4PEPF00000153.AUTP296.PROD.OUTLOOK.COM (2603:10a6:808:1::86f) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DB9PR08MB7423:EE_ X-MS-Office365-Filtering-Correlation-Id: eb10776c-7842-4689-d6a0-08df39b269e2 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|52116014|23010399003|18002099003|22082099003|38350700014|56012099006|261009223027099003|261102123227099003|261009221227099003|261021123027099003|261021121427099003|261026121527099003|10067099003|5113699003; X-Microsoft-Antispam-Message-Info: mBeqMOJTuhu+cqlNdQTs7d2Ga3Dh5/Rf2vgTYiFH4+kvU9OP3NtjKJj/UQlU/k2ru8JqtObXX8OoUpKq43BS2537vqzTgxfLMXlOHWagTtlXmZY8p0irhZwCmNhUIJ65y/GV+QddxKgp91FpaCKL+AIVKHGMSgw3XwAJOFjmmEm93gzpGvHTH1gLpR2CYQdfa0QFax5/usF3hT7qRPiwP+5vQazgoR6hUX1MCCmeBLfXDzFqqgQiGn4OP3vlMj0Nys6to1Zzl3tNLaj0rSn56zBrFTnfP/2p76OrKMaMh7kBfx6dEXridimzuo1zuYWKHnl8ymlCX0oM60+JAgeiN8j4UIGiFNvhUhFQ1/SPx9deLBds17VK1opAwIwvg5lx42G7MfUWtuE8Xa7lOCz7m0V/UYozEKQqGWkJwq6aFSPEj2akyqiDU529UvLeLXQnaNSC4x+SuDCnH18FNrvGbEIqeExrqF4SdoFsvotrYH4ShfdT/4RU5DKoHWFQ2wALtekSiTaDibtsHq3ByQ8MIivzQL7FB/uJWXYmVGUjEUqKXSN5YdR2T6hFJazp/0yecnTPZAe7/JZ58MsGFKTXkTD9GcyMXfadnTEIwif7y2PfFAcEO2pl7HQcbbh2fTxCDdAPp4TcywVD6qpXkvhlzitv84JJj1lQIRdQ9JxSXnZGOS9ZMLXkPWOymy+eD5EfjDcjMKxRdAbBpNNCPKn5IVH1TksttK7hbwkzkYd5mnY= 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)(1800799024)(376014)(52116014)(23010399003)(18002099003)(22082099003)(38350700014)(56012099006)(261009223027099003)(261102123227099003)(261009221227099003)(261021123027099003)(261021121427099003)(261026121527099003)(10067099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VFBMaHNWWDVNdFpqM2lMV3kwS3JMS0xTaGlVMUFuRkJOeWw1QnVzbFU2Z0lU?= =?utf-8?B?K2FuOGpFVFN3ekh3UERSNkNDZzlWRmtJaXl4NE5OVWpaeUxUVW5jUllkS2Ey?= =?utf-8?B?NVh5b0tSeHVlRGttZGQ4cXk2R1NkdExJUVdFWGUzamlCb0RCT3A5VFlJRTdu?= =?utf-8?B?Y1JjanVqeVpFVlFaM0hEYkFNMTFjMWRDRGpyRWZBcTY1eUVsTHR2b1pMYTVW?= =?utf-8?B?NWl3K0lUWWN2R0J3OFlQL0k2Y2ZxeFA3Qm9DM3Y0YlgwRElGSUlxQllCSnJs?= =?utf-8?B?Z0lTSi9md2pDZVZTZmcyV0JPeVgvWmVkbFdkc0JJY1pudnpTb3E2RXJtWldR?= =?utf-8?B?NGFJdEk5TmtDL0dlZnk1ZEFaaEI4TVBhUThnM3VIMmtIdDJSUnpqSFpOWUpk?= =?utf-8?B?bVpCTGFnQUF5OCs3OXBCbmtzaEVHMWFaTm9WMjU2UHgvQk5keGZ2elhPMlRZ?= =?utf-8?B?Snhva1kweHlVZVJKVStHOHBsQmJVSjdQWGtkRVYwTkFKWmNmN3ZxWllXbGlJ?= =?utf-8?B?TGJHSWYwZlRFOTlnMWlKTE9wQjVwcEhPNlBIR3NhZVJVZ1hWWk1OcWw0UEFR?= =?utf-8?B?bzFUbEN1WWVwT2xOTHlJU096SzYxK0xPWTA2b0VTcHRjblkvR2Y1aWdxeklH?= =?utf-8?B?Rnd3U3NMTjJIYTIydkNSQlBEeHBDRC95YllBU3RxaExhMXN6UGZwUmRBVGpy?= =?utf-8?B?dEt5UjlySi9kUVNBL1lWSXN5WGwraHZxcklUZFBoK3E1MXNwd2FJdnpTc3RB?= =?utf-8?B?eTBGb0pHWXlXMVNRaUhnYi96SVo2SGhteTQ2WFpWU3JJT3VyZWZtQkFFaVlS?= =?utf-8?B?dTlZT0VQKzgyOHpWNnY4NFpEeitMWkdicTRZMG9BUk8rZjhxbzkrdmVHYXdt?= =?utf-8?B?VlNNL01zc3N6WXFhdEU1K05Jb0EwV0lpM1JrcGQrM2hwcVRqVE9OYUoyOHdt?= =?utf-8?B?L1FkVldJbzhDck5tOHovMzlQNEFNWG0xbVlKM0hOSTRYUkYrb3B0SjNrdUlD?= =?utf-8?B?R0pRUUFyU29Uak5lc1U5Um04bG1GeXJBSVF4bW9vZXh2bk5xQ1pyZU1sRnh2?= =?utf-8?B?UEw3cmxRc2ZMbEp3TkZzSjZxTnNiRmZCY1dzaC9PMU9JbzZuczUvKzNiSCth?= =?utf-8?B?VTQ4T1htajR3YllRQ0FaaGJsWDA1Z1daaVBvMXdBbCtxenVEalk5Yjdtckl2?= =?utf-8?B?MERSQ0k3bWRxem8yOUZ6cjVBaHJQM2ZXSlJ6d0xBb0FIUFpYdkhFNGg1S2NO?= =?utf-8?B?b2ZKNStDQXRpSmN6MXN5cTYvQWFpc29WblpRaFMyWFo4Rm9vNkNGYWF6bTFu?= =?utf-8?B?S2w1UUlJZGQ1YkZ1ZmJES20wRVBjdWYrYXA1eU93bjg3MncvZDNZY0xndlZ2?= =?utf-8?B?V09KR0hZbDF0ZUZmR2MrTVU4bkdqOVh5MFM4L0xTN29Ra0RYWG8rYXlYN29t?= =?utf-8?B?R3dycGRLME5CNmhkOUIxaTVrdjNJNVJPbDVqSFV2dUZQQW92Qy9YN1NxanIy?= =?utf-8?B?NTdzYTRyQUUzYUZWU2IwVFlWald3eFhoNkVueFZLOVJsdzNpV3hqRlR0a2Nu?= =?utf-8?B?OWFTVUk5SXlaSWZjdXhwcDAxZHVMUE5ZVUZybWhvanJITUhWZ25MOXdzSjN0?= =?utf-8?B?amFQQ285bGtja3FpVEJMNksrVFF0ZWtpd1lMSFBxbElROWFPUWZCYTFSUUVR?= =?utf-8?B?WTBscXVFUkp2T0gwNlRmMWtiTXVUZENCNGRCM3RQck9DRWNZYnhMUnZNeEJo?= =?utf-8?B?d3Z4NUtBeUovOE81Z3VXa1p6YnFHOHlualBQanYrMU1raVhzQTlIOWIreFlm?= =?utf-8?B?OFl4OHZEcDZHL0JZcW5Rb081ZVVpU2RXRTlHZDVLc2ZnYTNOWklDdlFuSENY?= =?utf-8?B?bnNmcmZrY1NmU0lHdWJVSUcrems2WkRVSnozYjVBUDVrcWNWTER1TGp6cmtG?= =?utf-8?B?MkQ4L3hxeU5yVlB3ZGdjTWx2bWNWcUhPekRpTmdKNDAxc1V2V1Q5QVZCdXJv?= =?utf-8?B?NnlXdkF0dUExamorbmVOU1lId0xPTXNHdHFuai9MRGJnNW96cno3YlNwa2dl?= =?utf-8?B?YThKSFF6N0hXRk1iSG5TM3NnUkpSdXo3WFRNT1lLWDdWdTVQNTFTdjVEN2Na?= =?utf-8?B?MGQ1cnlDWVBzVTN0WFdoRWg2bEV2YmYwTmdBak5yaXlWOFNJWDl5YWVqSCs5?= =?utf-8?B?RXR6VC9mWS90SjlVNk5OL25jRnVYYWYrczJ3bEFmUkVqQUJFVzV2aTJFeStr?= =?utf-8?B?QVZhb0ZvZjJnSkJMa2U3L2ZnUzFYVjFLUzB6TWRZS0liVGI2UjYxMFRzV1Zu?= =?utf-8?B?V21iTU5RSWwyeGRXSE43ekhGdUFiRGhPNXVQTEJtd1RUL1hPeUYyc0x1UDVS?= =?utf-8?Q?/uhVRw54GG+lY+zo=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb10776c-7842-4689-d6a0-08df39b269e2 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 13:57:35.4285 (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: +ucZJtEkaKP1K9+6mCwlWeSCjVwi5ZaTxNgn1+6Z+Q3yYibVMrpGPpUzCyYUpRiYvZBLvo8icpSrzqEMqsCtU/fUZgota7B016/C+gNyI2s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7423 In the CPR modes guest RAM is preserved in place, not copied: migrate_ram_is_ignored() is true for every block. Yet ram_init_bitmaps() still starts the global dirty log, so every listener starts tracking pages nobody will send. KVM write-protects all guest memory, and VFIO starts DMA logging on the devices; with cpr-exec that logging is never stopped before the exec, leaving e.g. the DMA page tracker of an NVIDIA vGPU running after the update. Don't start the dirty log for a migration that migrates no RAM, as is already done for background snapshots. ram_save_cleanup() only stops the log if it was started. Signed-off-by: Andrey Drobyshev --- migration/ram.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index 399b43dd631..0f61942fd3d 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2810,8 +2810,11 @@ static bool ram_init_bitmaps(RAMState *rs, Error **errp) WITH_RCU_READ_LOCK_GUARD() { ram_list_init_bitmaps(); - /* We don't use dirty log with background snapshots */ - if (!migrate_background_snapshot()) { + /* + * We don't use dirty log with background snapshots, nor in CPR modes, + * where no RAM is migrated (see migrate_ram_is_ignored()). + */ + if (!migrate_background_snapshot() && !cpr_incoming_needed(NULL)) { ret = memory_global_dirty_log_start(GLOBAL_DIRTY_MIGRATION, errp); if (!ret) { goto out_unlock; -- 2.47.1