From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023115.outbound.protection.outlook.com [40.107.159.115]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0149A81066 for ; Fri, 30 Oct 2026 14:45:55 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pMZIGAwc1pgkdKuJFxLepQ6ddWBtbIt9Jmdf41j24yrp/oYRxvMOgNVAEox/ACNQokooNs/CmpVGjlBK9S7NKtGAdZvEHXTjtkrW5zdOeG2C7qO5cisi1GCeXmPcjBAjxaSmHZRwkppD6kv0NGvtJHxlNOfxWvrnWqGv3/ALseH6xLlLvyXkc97cyE4uBBa3tqZPdncfkkgvev84hZtpZCJ/iyd0CZweLzMjQnKN10kpQ3p9Uae3ipn7RkNp9g2R6CGkbLQ0YXTNTLLQihcVNNxSOjiQQxLGgJNxJQz9Pbd10JEeX9Potwe+qqLzIz3jRejZbwxhDjtl2mKV+184gg== 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=Avj40kiVe1wyS0DGqfZuk81/v96JfGPSpUD34gee2pyRKH6MOqE5td5DG9DRSDcs1L/tb8qaalLkQHt8EoXAVWpM5TBZKadmWTowGaaO85p3skmYjWoW4jryVo5mU8WzAfhQbGbvzYMjQVqnKcFj7FHS/Q/AUuv1NudgMDJJl88tHUdjZkl3ImeIra+fQt+Zxy+UZ65UUBjnQOIEFOV00oai7+UlswFoNRj+KE5Ixi57TeSLK64XjcWmBq37Lj/Ciw0X82eUVMScd8OIcVXdmryQQuS4w11OsqdARktxys5iXWEN4fOanVDNch1J3fg6gzgAt9TZBjqKBOR5wxXWAQ== 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=AunceMQGpUkdBw5R17wl2+0tuyWtpePhHg8q0cog5HfkND6xRnG0jszKdSiRz4O+GpC9G5MIhGikCgu+YQBay6D4H0mr3HLWjm947tfC1iys1tO/0SUmmvV5L0eCKovLZUUIv+uMcoqLVIgMNI3o+I6Ra171bxF2X0Fl5CLgjsla4SoPy+b3XOoHT9scH2qeDX4aLT0cCnumZo8KlI64HFLn9e4dygHKxiEpkiu2dNQHtty67P1oyLhQgxElzhgkgg/wtt0ZSjmsyhljHw+aiQj2mfj3XjcFl/mXdePe8gPamBIebicFaRP+cDW72+VoK4am5EzVGysia4nRW4Afag== 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 AS1PR08MB7451.eurprd08.prod.outlook.com (2603:10a6:20b:4dd::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.9; Fri, 30 Oct 2026 14:45:53 +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.008; Fri, 30 Oct 2026 14:45:53 +0000 From: Andrey Drobyshev Date: Fri, 30 Oct 2026 16:45:58 +0200 Subject: [PATCH QEMU HCI-8.1 v6 27/34] migration/ram: don't start dirty logging in CPR modes Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261030-vfio_v1-v6-27-45de246bc92e@virtuozzo.com> References: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> In-Reply-To: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0502CA0031.eurprd05.prod.outlook.com (2603:10a6:803:1::44) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS1PR08MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: 04273ace-8389-467a-4d93-08df36947e39 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|366016|52116014|376014|23010399003|1800799024|5113699003|22082099003|18002099003|38350700014|56012099006|261009221227099003|10067099003|261021123027099003|261021121427099003|261009223027099003|261026121527099003; X-Microsoft-Antispam-Message-Info: tO+u6FJBO/SIS5DO5z6uJHxi4Db7+/b5PPza3473MT2u8Ak2YjYzErl/0uZL4KnWMTCGicmjGB1uMFXEijM8/m48JYN//kyEA+HW+4ZaPC5ND8Jru5iCSO00WWbzz2YCJVGVgANKXqhtympV/fVORoj9NlL2amy97BfQ/18zRvYlBd5iKgjFAjarXSZlm5enRFb/eNsGR5aX0tRhtoMuJZF3DTyDiGKOaKJ+w8uZUR2vllFsTdejss9ehx4mQVUzkEuY5fc0ko6Xf/RmYIz3ozi8JsiEYhgYaA7tGBQbn2fVl74DlsLswvRmYcph8gkEGQlDYD3Jb8QLrlYa7ALTbaNy/a9rnjDieJqcR9XbvgbfQfvJPLFHOcwXANxFS9TenY/UyzTi7mBb+G/kxvU976TbId6v0Mguv5UzzMrOtCLRFudg2pxRe1EHbsSdP0Mq84wQUuEUYGisVXniuyWfxiQVolsb0wrmi1gDyFA7io2B5Z8yhWwEnIqT7/X0onRImWtjsO1YoYnP4/WwB+9zsmaYCSEAIXLPm8Jf8ayL6fZSrYMny1OtkwvhF0Wiiq/h+Mm/9MaR1lkA6QwLbQGOxxdoWK6frc4ZFigFjcrnPU7CR4F2o9ZRixcB1e4ASwiQUswHQi1F9ycI2RKMlD1ClHGPuSWHC9hy8fsKjCRWVoLAT5ZFya6Xc6Bdi/cGE3v5JwSe5J6ybOc5cVPilgSe9PCie8cWly7WjAmCs2gCjyQ= 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)(52116014)(376014)(23010399003)(1800799024)(5113699003)(22082099003)(18002099003)(38350700014)(56012099006)(261009221227099003)(10067099003)(261021123027099003)(261021121427099003)(261009223027099003)(261026121527099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bUJydjNoV25JbWptSDdSWmh0YUpkTEVpRW9Ea09kemlsb2YrSUlDSElIdjVv?= =?utf-8?B?ZzJYQXUwOUtjeGZLUFQ5VDY3YUgvT2tOZFJiQkJDakVyN0QzclJoRGhGWmxl?= =?utf-8?B?WHBTYlU5YlRzWWw3WGVrLzlTZ2xwZEJtU3VHRTV3cVBxd0lzWG9DdGh2Rmxu?= =?utf-8?B?MFJ3VGJ5YUFTRDhTREVMc21HMDNXcnJnZzViSHUxOXc2bWROcFp2RS9ScnY0?= =?utf-8?B?VG5jMjZlZm9Nd1NUQzlWbWVKSER6cTM3RW40cjNWU3ppZWxuUmFNUFZ6Z3Yv?= =?utf-8?B?aHlGUkdqNkE3VzBoNkJiUEZlTjlDNmx0L1hVVDZLWjg2enJDUkhKeFFoVGFH?= =?utf-8?B?ZkJ5MkR4djlDcGVvVTVsRUNkNk4wL3F4MC9wQmNlTE5GUE4wVTE1dFlrREVI?= =?utf-8?B?WlJJVFpEbkZiMFk4SERiV2hjSFJkQmpOQ1gwakNMWjZndUl5T2VFRkh4MmVJ?= =?utf-8?B?Z2dKU3ljM0lIL2s5cjRJZkpkU3puOWhSYUdQYTk2aU5YUEpkV0tPcS90TVFa?= =?utf-8?B?dzZoSnBtZFg4akQwZFAybG5wOWxxdDFWMUZDTmFNenF0SWQ3N0JZdUthU0hk?= =?utf-8?B?eFNwdFJKWlgvTnY5T0I0d2U5T1pEVFdFa3hFR1BZTXJhTjRWUThTN1VRbVpy?= =?utf-8?B?cWRqUXBKQUhwV2VuZGVsSUViOEoycHYwczNtSXBTVFBNNEJ2RThtVW9wak1X?= =?utf-8?B?cWhEd2YrUGs3ekxWVmVTNzJsaHNsTXVYRlBHSzN2NW1jajRYU3FUVHd3ZFR3?= =?utf-8?B?WDdsK1hGR25keTZmSVN2a0F0ZXo5TlJCdEtINVBYbFFRbmptQVFyVm1nWjkv?= =?utf-8?B?NzYycHZ6cjlVMWpoTkQ3ODRFeGY1ZmExbmZEY25lR3JNTlpIT3Z1OXRseTBv?= =?utf-8?B?Q3FXb0daN2huTWwzRE11aDNuZzg0Y1NsRnNDTWNGNkpWOVkxM3pOUzNaWGlV?= =?utf-8?B?Z1B5Qm5Db1RzMXJscEs1am1nSnhSOVBSUWpabUk3dkloNlZMd1pHU3VYbVVZ?= =?utf-8?B?MWg2cDl6eHZMZlhuamI1dklydjlScWtKN3VoTGpVU0RmTjNqc1lFdzhnWmtJ?= =?utf-8?B?emtvcUFyL0FkczRJbXYyTS8yUkp4MmplS0t0UVZMWElhTC9qcXFmdXhldlZV?= =?utf-8?B?ZUI3bGlXeVRidTFvSXRoSDJVbmF5bVNkQmdoV1M4MFJQWHZNZmlFQzhmMytE?= =?utf-8?B?VjlybDlOM1ZNTUFPQVV2alBHMXp1NGFENkN6OTZLUm1aeE1naitMUzIrNnY0?= =?utf-8?B?Z2FsbkVwa2FZdkY2bFl4RWN0S1BveGpieG9tMytnb1hwUW5nb29hdVR6YkpV?= =?utf-8?B?THovL1d1ZXUvaXZyWHFEZ3I0c1pGZzAwVFk2QlcrUkRoRjJRZTZZSW0zdGY0?= =?utf-8?B?Ti9vUk9UZ2lLRDdRTnRDTThPb0kvTFl0YzVYakUrVWQ2bm9ZZXlyby8xbkdM?= =?utf-8?B?WCs3S1hVaXRqNFpOYXZnVWlwNFY5YmtFeExrbHNRZ2szdVErWEhlNVlQMFVl?= =?utf-8?B?VVFTZEI1R0ZWN3Y2Ky9meiswaWh6V0QvMVVUcTNhRENPWXVWZGdRcmJlMW8w?= =?utf-8?B?NjdRZVp1NjQ2eHpJRS9HbW1NYTRiVXlKUm5nQUtWZTYwM2FUSVFRcjArSHFp?= =?utf-8?B?U2lpS3gzUWFmWkNzSXM2d2hrK3Y5MzJBR282S2F5bzY5THhGK3lCK2hXRGNh?= =?utf-8?B?YjBkTkZVazlHVWJWdTBicitHMTR4QXhxS3JOTXNLWFJUN3IxQ0tOTVhtKzZ3?= =?utf-8?B?NzYxK1d2a1Vab2NGanRuRldCWWV1dUdIMDdVS1hTUDgvUWVCT0Y0OE1Pckox?= =?utf-8?B?ZUZNZ3FTTVZ3SFJ6aHhGeTE1Y25NR2ozdlBFWHNYVjZpa21LK0pxRk95N3Z1?= =?utf-8?B?aWo1SkMxQ3JrRS9zSGJJaE9MRzJodTBCcGNEV3dDYWwxR28rL0MyQzBjdHJ6?= =?utf-8?B?VkpoNmVnclBBaU9jTzZtNUtFQkQ2R0pPT2NjRjZmZGlLaWlLSWJkV0VlcHVH?= =?utf-8?B?YUpvMTFuSFRCNXh2TU5BUyt1MnBPc3F1SXdFWUNIS0cwMUxGMFJBVVUvY2dm?= =?utf-8?B?ZklycjhIMHdMNER2QVhvOWF0UWgxTWRaOUtsS0hRRjhEcUs5R3puZVFzTUZU?= =?utf-8?B?ZXBHUjN4c0lOejd1WlA0RzJJME9WM2VYUzJwMy9Xc0R0SE4zRHlscE9sa05U?= =?utf-8?B?NUs1aHhYdE9mT3ZLU0tsSjhZb2N3SlhhbEhmVjBkeUViYzJzaFBFenAzRVFq?= =?utf-8?B?bFlwVXRMQkJ1WUFCYm83ajUraDNob2xDSVhaR1Rza3BONC95Ri81aVYxcFV1?= =?utf-8?B?L2pIbGZhWjVhdUl2bzRJdUd6ZnhlS1RHUXNyUGFwV09FZHp6RGZzN205MjVo?= =?utf-8?Q?JtvldexXJ1OkM0dU=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04273ace-8389-467a-4d93-08df36947e39 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2026 14:45:51.1732 (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: DlAF8Zv8suwLh08lrqpzCMJSFLJcmy6y2w5TquQFUEuPe/Gi1ehZK6oMDyhSs7fEMXQ+/F2x14j2RGaUYQSiDG8Wfu9KcbNkSynrueUxBYw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7451 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