From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023092.outbound.protection.outlook.com [52.101.72.92]) by lore.virtuozzo.com (Postfix) with ESMTPS id 4A1098017D for ; Fri, 16 Oct 2026 15:26:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V8zaHOuNz/mAzmzimhOsw4notUisIlqN7cbXpdIdw1ofJCFBCApXtPGKi2s0dsY87kSgmI8wXIp8zy2rsSnUoioct5xfoJ2MKDgs4MH6BBnkmHeURHGsL1BwjFW3zW0EhFRGQNEEUZuGBHv7MjdtGnHbgeN/AqqIxzFlq/6XCXs9cs7zCWU3+zcheu+ZNt3If0mAsXN5d80hqLDcBBjDjldJuH4iaQLiqg/uNITK7qDbnnazbUXTo4NmespG8Z6yyUidrVoEpdQEOzPpCSTxR0JJgVsDygAE7u0GLDTvCo3H+7sVFuOAa4v9lmwtida0wBeUvn8POGQQHaObcPAgVA== 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=iVCaNnnEUTS6R9UeveZ+Ca65EuSu1pY+/GFqHVcMIpw=; b=YCEOlwrm2MxofjtVTinuUyeesp8rhT0jrGQHcqoB06ReF3neikwYoAv/feaplPXzmjHHSr5j9TZz62aYxr+4CXGhBJSTXbtAOG+BGIE6xs62ufc+fWqBGrtypdOKrhDy3KZgF9i3cBHGMv1cm046pgXSVDrRTQuew6hVEl1bYXGkj1fgS4bobcKBu4ChAkP31QAhkP82YEXE+S8sQdm/RgwwOMsONGsq/BVEEBE5OGdBPo5iNDhHnrTrN9t99KKs8q3zAiOXG5EOhQSfG3mfe69K8O6g6rS6hJRYhjycfvwwBwaRzCZk20x52VqzUvhfzpDIH9jdBfC9reTGp1+2Pg== 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=iVCaNnnEUTS6R9UeveZ+Ca65EuSu1pY+/GFqHVcMIpw=; b=gnCw1SdccJIM09SIeAJeD0g6jzEZxCbyHVjveLsJBe9nn4bE7s4VSUE9K38UrD3LnkcsrM3C82ccHtRl3sEMJ9hR/88RJzAc6Maf4l/7uwVcIje4qhKxh96O5ncEau9U79sYrNYAQch4b3N8JtHgTAcNmyA1X58q00ALCUdR5RjD0pZXcE/MZEj0n+CiWvb874IlfNrCDlZD6PW+xCmmICGv9qY1rwsCtKLO3SAZ9/dYfMX716yB32tWjRvE8t95ZRVmXcmvtUDFo3t8bNq0HeKs+Wvaj4N6r+URWkOPh5TVJcFaDnLg0J6gRkEMoRIrN6pqh4b+fe2iTKEQI0C+yQ== 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 DU0PR08MB8907.eurprd08.prod.outlook.com (2603:10a6:10:47f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.9; Fri, 16 Oct 2026 15:26:06 +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.006; Fri, 16 Oct 2026 15:26:05 +0000 From: Andrey Drobyshev Subject: [PATCH QEMU HCI-8.1 v3 00/28] vfio: support qemu-update with passed through GPU's and vGPU's #VSTOR-103860 Date: Fri, 16 Oct 2026 18:25:58 +0300 Message-Id: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-B4-Tracking: v=1; b=H4sIAAZC0moC/2WNPQvCMBiE/0rJbEq+GlsnQQQdHBycRKRNUhvBR pI2aEv/u2kdFIV3uffuueuBU1YrBxZRD6zy2mlTB0FnERBVXl8U1DJoQBDhGKEM+lKbs8cwx3M upJS84AyE9N2qUj+mpiPYr3eH8blZbWEaY3B6B1xbXJVoxr7RrbRrjH1O2x5P4N9MOARJrjIsk yJFLF16bZvWdJ2JhblNzZ58sZh+WBJYRilLEoFykrFfdhiGF6R3218BAQAA X-Change-ID: 20261009-vfio_v1-a176cddd6b64 To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR10CA0088.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::17) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DU0PR08MB8907:EE_ X-MS-Office365-Filtering-Correlation-Id: 6379515c-cb57-494f-1dc7-08df2b99cba9 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|23010399003|52116014|1800799024|366016|376014|5113699003|18002099003|10067099003|3023799007|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: V0wVbBKIM8fEKae5ZMqT3en/JlSVt8WFbpvFwL/Uhq4OC4kSm8zxQZy+97Ec8EI6VsnOS7Es5GFsp5GTrxDOEEXWi0Bo5Pb83KghxOMiPvwkVsncVJL8YPJRHg6TtSmObkRNr4bglC7xHpQQtl1XcEIDeizR/gBy4M4frQly3BVgrMQe/G5TJXlNv28Mc3iI68iDA48LWntO5gxGNAiWzawVAwCjebGQZBcIyJDiP65n9Y9N7wB8qo+jo1cmm5Y30Sc+DrenOfpimhwUT/slnKKNuMTY7228iAF0gjdhb0faYMU00p4ZhYoTI7fJDWwPDmFWdnrjQc1kzCXief4R2X8BQ2fpgLWGHmq5d+T35rKcVslb/HXQPYelWKTv8tbek8Ms0cYIDYF1X2bBz0KZz9jdqbL1R60/sH/onaozVvIrwsX38CiKlkqvxn/HUiTDTj/80MZN06bMXKc2tSs4QcQ87KfDfTU8jDpCdTWjndImMTApkAcRwu8+8Y1jTL7f5R4EqiVIUOepNNEEAEpul8PNZNP5pI4shJHXj1B0d++d8dWmJXqfHZ1Cj66HTkUJDtZz+YGNJLM2kkB2PugwxrE/OJQfoIHrTIFRFHPTUvs41sMB/PlcJBUIloFuev3FR7BcUPA/ceBxMpY15g+TEqktWQqEgMhwFzgiRobPZ3w= 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)(52116014)(1800799024)(366016)(376014)(5113699003)(18002099003)(10067099003)(3023799007)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eWxOQXRjOHcrRVdPZWRXTHZsQTNvbjRXMUtscVVmelMwanpLaWhhdU1BeDVr?= =?utf-8?B?T2tZK3BKWE9uZEZ6NHg2VzRNWkNQN1lTdDJYMk4xNTlhOFB0aHdERDVXWENP?= =?utf-8?B?NEhEOVdxMU9hRDNMR3A1U2VxYWllQ0YwdkdQUkI3Y0hHQ2ZDSGNURzBycWNH?= =?utf-8?B?RXdpSHhEQUNqWjNONFpLNHkxKzVWVmdCRllROTZHVlpHRnlmT0NkRjhHQkxU?= =?utf-8?B?cVlFb1Y1NTc5N3pneG4rcmp0Mk9TQ2hWMjh6bEhVVkZmRXhzNHdlOFNJM3pT?= =?utf-8?B?SmtEVVZYTzBtN050SExwMG5XVkI2Z2pLOHJjeGV3MWcwcTBGbVNLZUZKNHFz?= =?utf-8?B?cU0rOXlHS29hZGtFdUdLblNuNXZEYXZXRnBqZWdQV0xyZEszaFRjSmVYOXdw?= =?utf-8?B?b1pLSUVoTVpGbjBTTjFQZUdtRGRqdnZvV0RDM3dhV1ZuKzgxTllyeWpqdDJN?= =?utf-8?B?UmFqcVQ1REhJVUJSQkRXbFBydmZrZU5kMm1rOURhOEZFWDZzcHFwUmRJSHFC?= =?utf-8?B?MmdUMmZzK2ozNWlMNkJlNFhQZ3JGbmd4WnE4NEEyUjd0UkRrMWRGU2taMmEw?= =?utf-8?B?aUNTMnIrbUlaZDNCcklhaGlhMWFoUk0wcWMrcVhsZnJtTEJHMjA3eklxODNU?= =?utf-8?B?ZjFIM0l4SUU2MzNrT1NHRXM2M3hiRnRtQW9Wa2cza1pxMWxxRjFCSGxyTXhn?= =?utf-8?B?TG8wbitrUnpNNGVlMWtSM296UllwMi9mN2lLTlVzeGZ2bE1vWlhkSzVvL2RH?= =?utf-8?B?UGN4a1QzNEE0Uy9JZy9LeFBIS2k1aTNOWGRqS3N1TVBrMnRzak1wN01zSzhn?= =?utf-8?B?T3hycG0xRDFIU0NINEkzbElyb1RNRU9BQ3psVnBLaExHRVgvUngwNjhwWnN6?= =?utf-8?B?N2NPV1U2eUxRdzVWOVBoRTlHeThGbmNQY2RSWlFNb0c3YlJ0bzBuRkRkSHB1?= =?utf-8?B?OUFwVVhBOHpoTk5KeXQ5bjloTzg5cENwb1ZHOWhRTDN1MHFscnVvc0Rnc0ky?= =?utf-8?B?ZFNTS2JQcllDbnVxWVQxRXU4T20yUThZaEZ4TXArd2tlUGFvbFVVanVMQjRR?= =?utf-8?B?Ung1Vk8xUmRrVzdGK09MTnhGaEl0VFJuVkVjQ1pVbXNKNkphYk43TFFUMU9J?= =?utf-8?B?MXdvSFlOVThLWlBVN3lIWHlvSUZWZk1mME9xTmlTbXhnMnhIQ1dvWU8rTWlo?= =?utf-8?B?WExTRFloVmtNQzNyemJPRkxDcFFsbGNHaVk1dHFFbjNpTm9pZjN2ZCtXZjdW?= =?utf-8?B?dG9NU3MreTZPVTVFMlhxeDRYNUwrSmVTRC9HL2loL1NuS0p2TUFpR2VTd3lo?= =?utf-8?B?MGZYUmhqRXBxbGJGWktYOTBRKzNYMjJXNjNSTkdBbzNIeWZQUEEvS0oyYzhN?= =?utf-8?B?N0xvNThtZGhDRUJKeFhDQlB4aXhvVTFXaDk0NWZHaERSVE1neVpJc203cUN4?= =?utf-8?B?dHR5Q3diYkUyUFdoVWhGZ3dSVnljOXRtVTlyZS9ndjZ3djlDMWJJNnN2dld3?= =?utf-8?B?emVnemphVUg2RWhjSVEwOXZTNm0wMWw1Ull5b1VZSmdwMHViNkVmdUlMek1T?= =?utf-8?B?aCtVVklRcUd4VGY3VVlDeXRRMHczMFE5b0JoQmxoNlVJRWozRUpiTnB1MFZK?= =?utf-8?B?NmxhcElET1dCdDVzVXZ6SlZ4VWpJaExWdUpweTNiUmg5bWt5ZVlnM1prUEVZ?= =?utf-8?B?VTN6NnBQNVRYV015U1d6TVFrbGRxT3dHWjFkRFNQNWtDS0ZuUGJ0M1laSWk0?= =?utf-8?B?VS9OK3oxcnB6d3hlWFNHeUNEWTlOTlhMQUdWd0xVRlp0d2tiTXFaZHBYSWdU?= =?utf-8?B?Zit4WWRkRmNWWlVXSlBqT3hZb3BUaVNxaVQ0V2Vqa1h2alhuSm0vYzFtM1ZF?= =?utf-8?B?UHRRbG9odHdlZCs0SXk4NENwelBvTzUxUE9vbjBKTi8wU3IzZXhBQ2VpVFpQ?= =?utf-8?B?UjljSzVxVk9adHF1WmFYeFlQT1NnOXZCUzEwSG5vOUlIMS9DdWQ3QnA2S0V4?= =?utf-8?B?VHFTeXdnUkY3THVMT0pkK1g0RUxXYyt6RC9Pb3MvbnNyUHo0VXMvWXdGWkVy?= =?utf-8?B?OXd1N1Q5VUZJNmdDNDE2MWQ3YzRMWk5tZm5DdjE0YVNxOWFKZlo0SlI1UC84?= =?utf-8?B?YVl1NXBUQ20ra1YreUZYNzJDaWVlelRLblpQSTJJZmk5ekJ2TFE1MXFCVEdn?= =?utf-8?B?VVpIcHpLVEJSWGtTRndOc1dEbkdKaVkyM2ZPS2N1Q3lFa21ZNGd5YTk2MFhE?= =?utf-8?B?L05SVjB4dzRFZGh4ZERkcThEV2l5R01mRGhoL1dLUkU3TklncFd1a0JQN253?= =?utf-8?B?WWlIQ2ZQNitoQkY3QU9VL3lFeWtGYm13Tk9JbU9ESjFsNm1nSUtVb0pjaEt6?= =?utf-8?Q?B/3CpGZyRrmrt58U=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6379515c-cb57-494f-1dc7-08df2b99cba9 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2026 15:26:05.8337 (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: Vmktp7SJZ7JrfAE53GBCXjDKNm22J+SCbuC0kT6IyS0BcqMSyz2QputPJ8a61j4NkL6T4q8wqS5vgn/qA1U39xXqWNobAez74l1LcW45B6M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8907 v2 -> v3: Fixes of the issues found by Sashiko AI review. - Patch 1 (NEW) ("VZ: migration/cpr-exec: fix Error leak in preserve_ram()") - Patch 2 (NEW) ("migration/cpr-exec: restore RAM write access if exec fails"): RAM was left read-only after a failed exec - Patch 3 (NEW) ("vfio/region: create BAR dma-bufs with O_CLOEXEC"): every cpr-exec leaked the BAR dma-buf fds into the new QEMU - Patch 11 -> 14 ("migration: yank: Move register instance earlier"): don't abort on a duplicate yank instance when migrate is issued on a target which has postcopy advised; such a migrate is refused instead - Patch 17 -> 20 ("migration/cpr: add cpr_is_in_progress()"): false for snapshots, which run with the mode parameter still set - Patch 18 -> 21 ("vfio/migration: don't migrate device state during CPR"): all sites, incl. switchover ack, are gated on cpr_is_in_progress(); multifd_transfer is reset at cleanup, so a stale value doesn't let the multifd save thread run during CPR - Patch 19 -> 22 ("vfio/listener: skip dirty page tracking during CPR"): gated on cpr_is_in_progress() instead of the mode alone - Patch 21 -> 24 ("VZ: migration/cpr-exec: abort cpr-exec if memory can't be preserved"): single failure path, restores RAM write access too - Patch 22 -> 25 ("VZ: migration/cpr-exec: take the vhost-net devices back if exec fails"): only the devices which were actually released are taken back - Patch 26 (NEW) ("VZ: migration/cpr-exec: don't exec if a vhost-net device can't be released"): previously the exec went ahead with a device still owned by the old QEMU - Patch 23 -> 27 ("VZ: vfio/region: preserve BAR mappings across cpr-exec"): the cpr-transfer blocker is registered at device attach and reported through errp; missing saved mappings are mmapped anew instead of being an error; the saved mappings are named by device, region and index v2: http://lore.virtuozzo.com/20261013-vfio_v1-v2-0-433455c0a294@virtuozzo.com --- Akihiko Odaki (1): vfio/pci: Grow buffer in vfio_pci_host_match() Andrey Drobyshev (14): 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 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/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 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 | 23 ++++++++++ hw/display/virtio-gpu.c | 22 +++++++--- hw/i386/kvm/apic.c | 6 ++- hw/intc/apic_common.c | 1 + hw/net/vhost_net.c | 41 ++++++++++++++++-- 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/cpr.c | 11 +++-- hw/vfio/device.c | 29 ++++++++++--- hw/vfio/listener.c | 6 +++ hw/vfio/migration-multifd.c | 2 + hw/vfio/migration.c | 38 ++++++++++++++++- hw/vfio/pci.c | 25 +++++++---- hw/vfio/region.c | 47 +++++++++++++++++++- hw/virtio/virtio-mmio.c | 15 ++++++- hw/virtio/virtio-pci.c | 15 ++++++- hw/virtio/virtio.c | 10 +++-- include/hw/vfio/vfio-cpr.h | 1 + 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 | 40 ++++++++++++++--- migration/cpr-transfer.c | 33 +++++++++++++++ migration/cpr.c | 22 ++++++++++ migration/migration.c | 99 ++++++++++++++++++++++--------------------- migration/migration.h | 5 +++ migration/multifd.c | 2 + migration/vmstate.c | 7 ++- tests/qtest/q35-test.c | 6 --- 33 files changed, 464 insertions(+), 124 deletions(-) --- base-commit: f3c1d9ef263edfab8d2a273078493bb766dcf8f8 change-id: 20261009-vfio_v1-a176cddd6b64 Best regards, -- Andrey Drobyshev