From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020077.outbound.protection.outlook.com [52.101.69.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 388648045D for ; Fri, 23 Oct 2026 16:54:18 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RapBzAjcrwfIHT4ryWNq07qyIgRicFWyVvkFEk6efhymJy7ETF/7wc0UHtHrNFdUzVe0pFW76Juzc6phMBDUmYJHxj2OSUaWKsAcKf+HnfMHa7s0mrWRbonFj8qWM/BcYWErywUAoxjoaKwYs42mRtTE7JkMXf5gGZR98mlILgo01oyDRA+PHFGB+MKQhatgDj05woAYx8lll+w0H3VxaDy3JbaO1hbGHqV7AsO73uoOfZfa9cIlXQA/fHlcbBtyoQs89eCf/DDJb96RjkTkQuniOh99ZAR23BZwD7c46RWxiut6QgSrGQdj/R1IapJGzz2qJJNuT8P6z/WH1w18cQ== 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=zHFbCXHmMMniSvVbi9MKu0ReSmvjiLo8f/BeKEJzMmI=; b=LZGJ/VoxKVM7jEm4yZwENyLIZW0cEkhQ13To2EvBwqgQ+nIURQC32Xri2wtLYlk6dG3EABc44M3Ejnu1x8AnzWaN6tK9QOul/oif5cPfbQ6GqFVmWbOfY7TmiqzJYzn95wef0EsVd/ra9lm+jDbodoXnQI5JwfYrY07D37pr2SPBO0wOLw5VtUbbuu+fjvVX26Uzy+nb3rQDja9OTz2lpB+7FO3rtM/ER+11AGJRH5QZyVRWQhnvqaAv7vo/ZxfnHMQTPmWtxMp6z3mddjunWGlS7nBs9OJR0cXF8hOucM472Q/OAoxIabCwI6RBKmoNycp9+Gt10qGST8QZhWR5UA== 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=zHFbCXHmMMniSvVbi9MKu0ReSmvjiLo8f/BeKEJzMmI=; b=s8BKo7r0gxJ889jLrNMtRvuNNjgJbmIFFdT6/v7lkCqN+eM8Y4ZMooTRT/RHqt7MVSReGbiknK+q1OiWmprxN+i0QhxC93qTZwIEfa/EZMmqpkUiwT3q9IpjGVF0HA5CPAjYV4MDnIH2XjEUIPH7bTb77kTJnE41siUzAP5Pp8shBBaYFOWpCoVaGmpYyHOuhWUIajHJmPiFepkGk3x5C9FbzorPPaHF8J8pnKreUnUC2pcmhIwkuvgbihfqTZj3Udn3+YmMgG4xfAzSf3Ib97H5E8TyVTl21QzlDzOLdQTy+eIlrgDZCYSNKfOhMGWZ6eDlC9dkDMBQwusksjvlSA== 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 PAWPR08MB9030.eurprd08.prod.outlook.com (2603:10a6:102:342::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.19; Fri, 23 Oct 2026 16:54:15 +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.017; Fri, 23 Oct 2026 16:54:13 +0000 From: Andrey Drobyshev Subject: [PATCH QEMU HCI-8.1 v5 00/36] vfio: support qemu-update with passed through GPU's and vGPU's #VSTOR-103860 Date: Fri, 23 Oct 2026 19:53:37 +0300 Message-Id: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-B4-Tracking: v=1; b=H4sIABGR22oC/23NO8vCMBQG4L8imb9I7k2dBBF0cHBwEpE0iRpBI 0kNXuh/N+03tKBwlnN53vMG0QZnI5iM3iDY5KLz19zwvxHQJ3U9WuhM7gFBRGCESpgOzu8Thgo XQhtjRCUYyNe3YA/u0SVtwXq+2rTDxWwJ5RiD3f9BvFdnq+s2r92eXKx9eHa/E+7g15tcCBJlS 2x4JRGT0+RCffevlx9rf+mSExlYTHtLsmWUMs41UqRkvywdWtFb2tqCyUJXXEnLf1k2sAT1lmU rqeJCSELRt22a5gODwxEMeQEAAA== X-Change-ID: 20261009-vfio_v1-a176cddd6b64 To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0902CA0027.eurprd09.prod.outlook.com (2603:10a6:802:1::16) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PAWPR08MB9030:EE_ X-MS-Office365-Filtering-Correlation-Id: 23e773a7-11e2-4162-fe28-08df3126429e 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|23010399003|52116014|376014|38350700014|56012099006|261021123027099003|261021121427099003|261022075727099003|261022105027099003|261009223027099003|10067099003|18002099003|5113699003|3023799007; X-Microsoft-Antispam-Message-Info: ZVtRE/FkSsjp4Js//YVb6a5pD3YkgEuo74ITVQHMgNhbXQtyNlWCJRIBQ3BM9/VOou0CLoMU00J9REdZGcpX4lrS9Z/UOEdfTbHDlQiLLPDMOhJhXtJZGeiEB1kiKO31gqs4CHclG/R9qWSS/tc/3xQ3Xc2PQsrQJV+7W0Sm7hGfTRTERFGHnZ5XECJmoveqENkgfJLFITRFoLho8ly5G50cIeY/VVyJAq7yxIkVqrKLxOLeyzwV0whlTRvaA0PKFUGQtTen8DjygmgnIxCcAmMjsiMfJuJ3hASVVC36/U+/V4kOYQY3+LT24B/EJdaac3L2/yjSuy+6HHL7SXO/JiEWpp/NTLkin/3kIP/CAEat3weiCglmI+lU8i81lQVgaUCn7f80DAJR+ot/mIjHR7GovJISRou4jXVODgyzpNmwUy2IMLqfqtpkn1Cbk+iPF1j4g+uJAkXtu2LRMViPSoT/SlcpGbphO3vJu8nfoBKtMM+lhVlOevd7tPybFdTtXhuA+cTMxeCsjmh8YASXRLT7sDHAFh1dR9ZHgvrHtaG2/KgvTC+32xZauGQNnFFk7Mwr5nD9yyMbBgDeH/Tc+A5apWZ2NuJWMz+FkvQuBkrYdVKcgvIPxG4QpYWgwnTEWAI2xlK7lJgMf3qFuEKphA2lHZ75HWeaatWS8sBMyOI= 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)(23010399003)(52116014)(376014)(38350700014)(56012099006)(261021123027099003)(261021121427099003)(261022075727099003)(261022105027099003)(261009223027099003)(10067099003)(18002099003)(5113699003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TnJGQ24xS1FWRkp0SExKNnA0QWJpZjVFVHJEejA5ZS9KREcxaXUxcWFGUHdm?= =?utf-8?B?RXFlT2RWdkl4K3FNNFlETjNTL2x3by9GU09obGZEZDhxTWRPN0NORmJHTkpi?= =?utf-8?B?ZjhlQXU4RkErSUpEK2tjdEQzZGo4SmM1MjdnblZTMzdYQWwyL1lZS2pxb3Q3?= =?utf-8?B?NHI4U2RLdGxpMkNZZTVoTXdkcU55d0JoakVic2Z0UGUrVTR3RkJHZExWUjJQ?= =?utf-8?B?Q1pCUldQYVg2SWdkaEdpMXlaM0x0VmJ3U0IvSmtmSzNwajc4b0pIdVBRTDRE?= =?utf-8?B?TXRtcktqTTByRng1Tmp6MjdiNUk2TFFSbzB1cFhsM2xzUjhqVlJhbzJ4QWd6?= =?utf-8?B?Mk5vMkd6aSt6RE85d1VwaFByU3I0blFKeSs2OEVyNk9RZ1JWN21CaU5uUXNC?= =?utf-8?B?cEUzdkczMVZzMUdJRFA1am5oN3VTNjFXTW9aYmp0b2E4VG1BQTRkTU1SN24w?= =?utf-8?B?Vi8xNEExNE03MGJ0bkNkRGZpKy91MVk0VWNXSGQzU3Qra3JtY0RXRVNTYlRB?= =?utf-8?B?MmxrTldMaEFqQlV1ek9IT2luNWpUa1dsT29jOWZKTVY3VlRmc20wMEw0V2Iz?= =?utf-8?B?Zll3bmNFZWFmT0padDVub1dWVzhtUmFWNVVkSG1YRWZsdkRmbWpsOHB3Vk9G?= =?utf-8?B?S3pRVDNVdlUxZTJuLzlQdlBtUXlDdUl0S1NabVVQNlp3RkFsUklZa2tJQlox?= =?utf-8?B?WkVYdTUzNFVYWmpRL2hiWWNiZUFsYjQzdC9ZWWZ4bWltZUw1QlFSTk16SU5o?= =?utf-8?B?UTJrSFRQWHVQTDA2Wmd6TExqOSs1NklUUER1eVE3NklzSWN1eXlxUVFFY1Qr?= =?utf-8?B?RFFWWGZjS0EzaHNOQWVUNFQ5SFZRK0NHZ0FBM1hMSnhhK0o3Zzk5eVpzcFJ6?= =?utf-8?B?dTVmMnJaYVhQV2ZJbHUzeGh0SXMyNUNvb2JmbWFDRzVMTWNkSlpMaUlNWWNq?= =?utf-8?B?Q0RPR0xaZVB3ZmxuRHpDOFFIVHZVVFdvM0s1SVQ3Z0ZUeTlDREpQNExjcFFO?= =?utf-8?B?emN1ZkJVTVF5alg5NmdxZHkzTVNqa0tvaWlzcEhaTmZjL2tMU3MycFZNOWd1?= =?utf-8?B?dkc3MEhuaXFYdTgyRldJQnJ2cHJkRi9XQkIxNkpMMHNuV1lLWTFkVUgwVTZR?= =?utf-8?B?UHBsMjZpWnNLeDdldE0xQ3hGMUJXdEZBUXFkWFJtTkxnS2dGNi9LQWtnZ0dU?= =?utf-8?B?OEVRUllZbDR6RmcxU1Jwak9DTDBhVW03QVhGSlZUWUNlVzBMWmxCeFlPMjYy?= =?utf-8?B?bG1URVM0VkdFZW4xcWZib21rWTMwNElvNjBYNXRJVWZkeXJSeUZPODBkeWJ1?= =?utf-8?B?eklGbkFDSm8zT21LeUY4K2RNRnBwSmZnMkdRQXhYYjRDZytQSGljSmw2VHg0?= =?utf-8?B?QUh5MjBnMGxuRWNvTEVtOWlMSUUvUCthamt0aDY5SUtIcjVTb2phc0FTeGlL?= =?utf-8?B?NzRlVGhPR1NTMllHT0xUVnNMNmI2TnZ1czA1Ny9CVWlLdWUyTy9NRDdVVDVr?= =?utf-8?B?T3RnTWcvUnlNNDZrK0ViSzhnUDRKa1kxbGlaTThBMjdHVzBVSnVaKzMyaGI0?= =?utf-8?B?Mi94dFhHM1h1Zy9kUlhqTlMrZ0FjWnJhamtuelVJS0V0NnQwcFlXT2lwWVBT?= =?utf-8?B?ZjBqU0M4cTYvU0lmdURQZEx6TnVQL2Z6Q3J4Uk40a0xmck1xRXF6WXl4dzlH?= =?utf-8?B?UFlrcXB5MHhNSkxKOVZOYkdtYlgwaWVTbXgzYjJldjhOYkRScGtBWXk2T3pZ?= =?utf-8?B?dHlwWUlFZmNWcFNRSExxRDNSSUxTSkd6WjFmclFJeTZSQ0ZrWWZkYktZZ0lG?= =?utf-8?B?ZzVvVkI5WUU5RGIzQzRDd003V3U4eTZYd2ZUczNoeUg3U0wzZGtzQ1ZrajRq?= =?utf-8?B?WXhhdUF5ZXhvbWtPYkhpVGdzcUtqQ1o2a21iRElVNEUvY0tJYkVnOTJidjZa?= =?utf-8?B?UXp4NTYwTkF0SE91L1d2d0FGNkc3cnN0eVo2OG9GSDlKWkpzcHczby9XVWhB?= =?utf-8?B?SFF4RlZFdkNWY2JKcTZ6VDVDenNIRmVsRGJwelFLT3RyMXBVZFZWNGVFMmZR?= =?utf-8?B?UGZLenAzVTFuU2QrU0dEQ0RQL1JBOE5XQzdNYkl1RlpCNFFGMkJZME12QnMv?= =?utf-8?B?aXRqek93SlVkU3IxMnFFZDJKbjJhdFJuSVdna3BHUFNZUStlbitKaGwyNmFF?= =?utf-8?B?b0NFVlJrK3FqcHJ3VVN4VFRieFc0dXJhdkZHSlVSZmZYN0pVa3RRWXVZN1hG?= =?utf-8?B?a0VEZGI1WEprOXp3R2xyWDlPelhvU3NMeUZjalZabmdFaXRHV2puRlpTMTRQ?= =?utf-8?B?SGlkMHZkOXVkcVVhMUxQSWFuMFlrMzBrS3VTdG84T08zaFg3SFA4TURiMDhU?= =?utf-8?Q?iEWz9SilKHvlSWh0=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 23e773a7-11e2-4162-fe28-08df3126429e X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2026 16:54:11.8053 (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: 2yd99cKB+kE9qfwNixcFgyc31HCEPD5/OgwDI6HBAe5aHSo3Zaa0+thgxqQmd9/Zkv+g4VNv+mSo/6ZnzGXUIngycj0+PpNIErC1LpinuMg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9030 v4 -> v5: Live migration of a vGPU VM with the default downtime limit (#VSTOR-150595). - Patch 35 (NEW) ("VZ: migration: keep the estimate and wait over starved windows"): the bandwidth, and so the pending size allowed for the switchover, was measured over the windows the sender had run out of dirty pages in, collapsing to a fraction of the link rate; meanwhile the migration thread spun re-syncing the dirty logs - Patch 36 (NEW) ("VZ: migration: don't wait for stop-copy-only device state"): the vGPU's stop-copy state (2 GB for NVIDIA) never fits the limit, so the migration never switched over; switch over once the rest is within the limit plus as much again, as waiting can't help Fixes of the issues found by Sashiko AI review. - Patch 4 ("migration/cpr-exec: require a file or exec migration URI"): CPR.rst says the URI must be a file or exec one - Patch 5 ("migration: close the CPR state if the outgoing channel fails to open"): the message no longer claims the cpr-exec memfd is closed, see patch 6 - Patch 6 (NEW) ("migration/cpr-exec: close the persisted state if the channel fails to open"): the memfd dup'd for the exec and the environment variable pointing at it were leaked when the file or exec URI couldn't be opened - Patch 7 (NEW) ("migration: don't refuse a blocker over a migration of another mode"): a blocker for cpr-transfer only was refused while a normal migration runs, failing the operation adding it - Patch 26 (NEW) ("vfio/migration: don't assume the device is running on CPR incoming"): after CPR of a paused VM, 'cont' found the cached device state already RUNNING and skipped the transition, leaving the device stopped - Patch 29 -> 32 ("VZ: vfio/region: preserve BAR mappings across cpr-exec"): a preserved mapping of a different size is reported and exits, instead of asserting v4: http://lore.virtuozzo.com/20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com --- Akihiko Odaki (1): vfio/pci: Grow buffer in vfio_pci_host_match() Andrey Drobyshev (22): VZ: migration/cpr-exec: fix Error leak in preserve_ram() migration/cpr-exec: restore RAM write access if exec fails vfio/region: create BAR dma-bufs with O_CLOEXEC migration/cpr-exec: require a file or exec migration URI migration: close the CPR state if the outgoing channel fails to open migration/cpr-exec: close the persisted state if the channel fails to open migration: don't refuse a blocker over a migration of another mode kvm: tolerate ioctls after kvm_close() kvm: fix coalesced MMIO flush racing with kvm_close() migration/cpr: add cpr_is_in_progress() vfio/migration: don't migrate device state during CPR vfio/migration: don't assume the device is running on CPR incoming vfio/listener: skip dirty page tracking during CPR VZ: vfio/cpr: don't close KVM on cpr-exec VZ: migration/cpr-exec: abort cpr-exec if memory can't be preserved VZ: migration/cpr-exec: take the vhost-net devices back if exec fails VZ: migration/cpr-exec: don't exec if a vhost-net device can't be released VZ: vfio/region: preserve BAR mappings across cpr-exec #VSTOR-103860 VZ: migration/cpr-exec: allow cpr-exec with VFIO devices #VSTOR-103860 VZ: vfio/container: lift the CPR blocker for mdev devices #VSTOR-103860 VZ: migration: keep the estimate and wait over starved windows #VSTOR-150595 VZ: migration: don't wait for stop-copy-only device state #VSTOR-150595 Arun Menon (1): migration: Fix regression of passing error_fatal into vmstate_load_state() Cédric Le Goater (2): vfio/pci: Reject invalid MSI-X Table and PBA BIR values vfio/pci: Fix information leak in vfio_rom_read() Fabiano Rosas (3): migration: yank: Move register instance earlier migration: Free cpr-transfer MigrationAddress along with gsource migration: Move CPR HUP watch to cpr-transfer.c Igor Mammedov (1): q35: Fix migration of SMRAM state Mario Casquero (1): vfio/pci: Initialize rom_read_failed in vfio_pci_load_rom() Markus Armbruster (1): migration: Plug memory leaks after migrate_set_error() Peter Xu (1): migration: Fix crash on second migration when cancel early Tycho Andersen (AMD) (1): hw/vfio: Fix liveness check in vfio_connect_kvm_msi_virq() Vladimir Sementsov-Ogievskiy (1): migration: vmstate_save_state_v: fix double error_setg Yanfei Xu (1): migration: ensure APIC is loaded prior to VFIO PCI devices accel/kvm/kvm-all.c | 24 ++++++- docs/devel/migration/CPR.rst | 8 +-- hw/display/virtio-gpu.c | 22 ++++-- hw/intc/apic_common.c | 1 + hw/net/vhost_net.c | 62 +++++++++++++++- hw/pci-host/q35.c | 25 +++---- hw/pci/pci.c | 15 +++- hw/s390x/virtio-ccw.c | 17 ++++- hw/scsi/spapr_vscsi.c | 10 ++- hw/vfio/container-legacy.c | 13 ---- hw/vfio/cpr.c | 11 +-- hw/vfio/device.c | 29 ++++++-- hw/vfio/listener.c | 6 ++ hw/vfio/migration-multifd.c | 2 + hw/vfio/migration.c | 59 ++++++++++++++- hw/vfio/pci.c | 25 ++++--- hw/vfio/region.c | 51 ++++++++++++- hw/virtio/virtio-mmio.c | 15 +++- hw/virtio/virtio-pci.c | 15 +++- hw/virtio/virtio.c | 10 ++- include/hw/vfio/vfio-cpr.h | 2 +- include/hw/vfio/vfio-device.h | 2 - include/hw/virtio/vhost.h | 2 + include/migration/cpr.h | 7 ++ include/migration/vmstate.h | 1 + include/net/vhost_net.h | 3 +- migration/cpr-exec.c | 44 ++++++++++-- migration/cpr-transfer.c | 33 +++++++++ migration/cpr.c | 22 ++++++ migration/migration.c | 164 ++++++++++++++++++++++++++---------------- migration/migration.h | 11 +++ migration/multifd.c | 2 + migration/savevm.c | 15 +++- migration/savevm.h | 5 +- migration/vmstate.c | 7 +- tests/qtest/q35-test.c | 6 -- 36 files changed, 586 insertions(+), 160 deletions(-) --- base-commit: f3c1d9ef263edfab8d2a273078493bb766dcf8f8 change-id: 20261009-vfio_v1-a176cddd6b64 Best regards, -- Andrey Drobyshev