From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020096.outbound.protection.outlook.com [52.101.69.96]) by lore.virtuozzo.com (Postfix) with ESMTPS id 4D7C28045D for ; Fri, 30 Oct 2026 14:45:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rRnA/kKQouKUm7fS6AZuGQDHq6lZwk15ETZAtfSif/cbIfDf43IQEHEwLbqPl+Jrga+2JIxSoQh5h2RK0MwnfkHJSCDbLcH6gVAr4BKjmFJ8efznqVuk5DQILdTFxA+sZKv9wXQuR1XnDJIyHVWuPYehs/dgGQaz0Vv+LFplGdByCdNkE1y0tRKfN9fL+wwPCtqB/cS3U3x1rB6ekO+Iql3qS1SrESQKUVYCa2UQIUbNjT4uIvxKljBhNQCUBERx+S1Ja88hjooNM3IvXPZOzf0eELgStfAs3k1WgdpKrRYFpRRWSG3rB4lElpBn73ywBjwnt/zrlu385yEMXBsZJw== 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=soT+n/U3sP5tqWYIKvg/A8IEQPHRFFkcUmcFdb99FY8=; b=EvXSh+xK5qU/6FQL4V/tu80bPB75snjD0BL8giymSw94pMc6zg2Uzk/enQMjJpqY35LWICe7XJZtv+Sfr8iDSzs0brrmwYi8+l2JfBekQwnLf90T+YTrXuBhnBFrONtV5EjqPpwHKO37ORYwxurPQWQpCnufQ3y1uUxuRfmutKiGTLIw4huWDAQz9DkcyTF8hR0fsUdS50pv7PgtHtfoTWu+SsNIzHR3+VmDSktuHok4uXjZ7WXnUvq6ZI8VCTRx8M2NAnHaFEG2WTCkDYPzf+LivFgVr5tXXVEFHYitBe0adr2mIayr1Ev8SFbQ17lptM8CdCHY7WWE0GgramCSNQ== 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=soT+n/U3sP5tqWYIKvg/A8IEQPHRFFkcUmcFdb99FY8=; b=GFk3fT96A2x3P5GZ1fGy6x17MDXcihUKXfKURQrMPZJbbnO/jpfJNgB9Zwx10/7hwlIpgy6Vc+fSNHxLcy2toRZvBJRbfv774fTPJXZdMkcm47J2BB+HzUUFQSv43sts+i6fyaGL5MubD1trl6I7W4+s48IzCo07Gd6JnJ50U9p/hrmmOWqb94XbsGB8xbd0oM4DbgC8dAYzqmczx8xt763Fj280AAzYT/cc9rhO044e4bUSyrtgGHWJhzQKtJu8Qylj+T/lqDdl7A/uIrjFzdRiqy21pmWT4nPptIzwIMSm5NcbCpX6ibjv5Yc3oCHXfDP7pXoFMabmKBr2tVV6WA== 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 VI6PPFE0A0B9321.eurprd08.prod.outlook.com (2603:10a6:808:1::596) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.22; Fri, 30 Oct 2026 14:45:40 +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:40 +0000 From: Andrey Drobyshev Subject: [PATCH QEMU HCI-8.1 v6 00/34] vfio: support qemu-update with passed through GPU's and vGPU's #VSTOR-103860 Date: Fri, 30 Oct 2026 16:45:31 +0200 Message-Id: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-B4-Tracking: v=1; b=H4sIAIut5GoC/23OPU/DMBAG4L9SecaVff6I0wkJVYKBgYEJIeSvU CO1RnZqQav8d5wwJIJIt9z5nvd8Rdmn4DPaba4o+RJyiKfayJsNsgd9evc4uNojICApIS0uXYh vhWJNG2mdc9JIjur2Z/Jd+JqSXtDT/vF5HN7fPWC1pej1dyGfzYe3/Zg3vh5C7mP6nm4XOsF/Z 2oRDNq31AmjCFe3JaT+HC+XuLXxOCUXWFjKZgvVcsa4EJZoaPmaZUsrZ8tG23DVWCO08mLN8oU FMlterWJaSKmAkXUrlnbxZ1Gt0cR0zEpHAf7aYRh+AP5VSk61AQAA 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: 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_|VI6PPFE0A0B9321:EE_ X-MS-Office365-Filtering-Correlation-Id: 00ea85f8-94d6-4ada-3f9f-08df369477d6 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|1800799024|23010399003|376014|52116014|366016|5113699003|261026121527099003|18002099003|3023799007|38350700014|56012099006|261022105027099003|261021123027099003|10067099003|261028144727099003|261021121427099003|261009223027099003|261022075727099003|261026140227099003; X-Microsoft-Antispam-Message-Info: H4NbtYVj3P8k+quAOfdW+B+Ek7ksKicONH22kwb9nolNEL7C1Z5l3PqVU18bUddpT6UUbbwhShTh6EVe9rBKUuTS7sYTzl/52iavStHqhUAjBhTW8ykQ4e4f/u5Xk1EuXhsJanpyvakoXnUuwPBhPq5WdHLfYvgQTVujWpX10w00APOadFwMRxbPQe6csEV01lElc9cDbyw/GgPw5BG/4zhIncCaedDF2/ODliRzSmCaqAdm9WJJOkUpiIze8jwmcUWQqKOp60atF13r/aEzoC6W4eXMuFfO8bTgq7xrl0ZyfvPrjWrg1bd8S8l/mtwGYng1u07Q8b7nwCPaRRycjJjM5oBZ5DuOGmXsSaYtt8cTr0+4n838D06qpeuLQ3X7LRV+GK447QDNx7NrcaiXjTOmsm5sACVvk8x0pIXRmwz7wzzV/xKAs3wUg8oYPCYEshmNHzWh/QisenO2nx7WRoP4HZBGGvrMU9HuHwqHD0lUVsuDIvDp5wbVr05rTtfkUniLVJvD7zZGENeLhDloleHzHnXgkuLLNXc2q3bCZI7p9ltSJIU/0JqLW7Fprmu9aXBjOzFGRcMlffnksRGi5chR2pHgj5XUpc6oLmxTNVpZ1hQT4KHaYuprUjjnwAeP17ZHo8WpCB6KFD7cd2cX8PCfxjlAwdfnNWUwzaVAHs4= 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)(1800799024)(23010399003)(376014)(52116014)(366016)(5113699003)(261026121527099003)(18002099003)(3023799007)(38350700014)(56012099006)(261022105027099003)(261021123027099003)(10067099003)(261028144727099003)(261021121427099003)(261009223027099003)(261022075727099003)(261026140227099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZmVvWm40SVkxWVdrTER3KzlBQjg4a0lHRGN0cUVpbVFHdVZOWWRVMStablc5?= =?utf-8?B?Rlo3TjkxRWhSUnVCNU41UGtORzB3THdwOFc2Q3kwKytYMTV4TlNmNkFNbVhk?= =?utf-8?B?UkJFeFVFR29aUDVuT2w2MkZkLytuSUlkVTI0YldjRDdiaW1PV3Fjay9hUGI3?= =?utf-8?B?MWRsaWF4a0RFU3VRNkhPRW9zemEvbEYrYnQraDZseUZ3aGd4QUtWS2JVeXQz?= =?utf-8?B?SXpmak8wQTJHYUJ2QTNjTktkbDZqTE9ldW94TmlVYU1QaFdkdUEwc2lPRHBD?= =?utf-8?B?NHpjeG52Tjd6TlgzQWVGbEE3NWN0NDBqaFpJR1AzbmVEU3FVcDAvUTM0dEEy?= =?utf-8?B?WmFvMmlaaFY5U0ZKenRwM2xFWElMK011STdyNitndWJUU0lXYUNzVlozMk42?= =?utf-8?B?dk1BYXNKZlVJS1htOWMxT3pDL2E4aWJWdUhvV0RSbkJJcUcwd2RSK01DSmpU?= =?utf-8?B?em0wTVkzKzh4TGg3K0JRRzRYOVd3OTR5TkNOeWUwMlNnTC9kY1NKSGpWYUdR?= =?utf-8?B?SW5UVklBakZaZkVlWWducm5UODdMZDhXS1piZC9pSVhIYW5za2hmVGY3bFB5?= =?utf-8?B?ZlU4bGErS2tqdjFGU25wNnp3MWh1dWdGUWh2QXhMQVVWdHdPTXVCRHdHTndC?= =?utf-8?B?Q0RTVk83Tm1SQi9BVVRNRWg0aW0vUTA4UmZuclhGNDlSWHhpUzlSeERMMXJC?= =?utf-8?B?TlJSdis0cTd0SlhYdG04MEIxbDhTNzVuOHorZkN0YTVMN1NFNGhiMzJNaUJG?= =?utf-8?B?N2xNeTZwS2s2MXRXSFlHM0VMeHl3Q2RxN1cyM3FVdWdoaU1qNFZGbjBaM3Fl?= =?utf-8?B?by9KaElBbE9lazVUT013UlpxdVFDazBiWjgxeUZJUkhUWVFRcGJDWm43VGNU?= =?utf-8?B?S2IwQkxXT1JHazlON21JREpScGQ2TWhBYjBvMHRnRzJEYlBTcWMrVzhyZmpS?= =?utf-8?B?Q0NKbnhVb2tUR0JldGlZOUJUdzZwN1FXZXl0N3FvbjJZLzh5OFBoUHU5OHFn?= =?utf-8?B?L091OFo3ZVRuaEE2U3V3OS9ybjNJVzdJTnI5aHMzb2ppVGF3SHRMQWZ6djZ2?= =?utf-8?B?UC93bUcrZFY4cElrd2RlN2J6REZENWU1REVpN2ZzREY4TFhEcXJMa2hXVy9z?= =?utf-8?B?QkpPdFhOUTAyOW5WMlc2L1JaVlhNQ3paWVExUHBWNFBaT1I0bW5uUWZLeGc5?= =?utf-8?B?UG5uU2FWc0VCNm1DYzRRYjROREJIeDcxQ2pnUGptSmRSRm5CSU5EdFJ4ZUhJ?= =?utf-8?B?UHVqSFh3TFp3M3lwcUZuQjc2Y09Qc0dob0Z1MEtkM3ROMm9uL3hiN0dwOW5P?= =?utf-8?B?QUFZR0RDYXVkc2FKT0I5cG9VNzFhOWRDQmlEN2Q1Z1FnL2JySkVNcXlJY1BG?= =?utf-8?B?VGVvRE85ZGRsZ2JXRytFanNDWkpGdUhzTXZyQlE0QkhvSTgxN2VRK1FxUm9i?= =?utf-8?B?RHlaSllXTkttREZ4cFZBbzhUYzdoc1Y0cnN0THoxdnNXMlB1UlZ5STIwR0tm?= =?utf-8?B?SVNycVljNXQzcHhGS3JPNGYyUDJZeUlySVUvMmJ6SDVRWE9mekVXMFlZUmVW?= =?utf-8?B?c3dBNXhJUFR2WDlkelMxc1EwSEJPSGh1bzU4RHpFeDJNdEVGZFV5eWFaR0NQ?= =?utf-8?B?aVYzZkJsTjFGcDdSbmZWbGJoVWt3UjZnQlNDR1RTdjJHTHR5Z25VQUE1Z1Y0?= =?utf-8?B?TjZMTGhnZ3BMS3JKb2I0cDFyZDAwbkdYcmJMUWtpY1phUFN5TUV5anpHQ2tS?= =?utf-8?B?KzlBakhiSkxpUUovVnpETi80UjBSNS8zaGtocVQ1VWw5WFZaTE1qbXp5eHhI?= =?utf-8?B?UDlSckF6aktnNmJRRmJwKzl3WWJjQnlQVDh1cWdxMWN2dlRkUlNUSWkxTHBP?= =?utf-8?B?akZNRVliWEIvNStMTXZQK1NwemduODArYU1MNURpMW83amp0Z3pyTm5zcStB?= =?utf-8?B?Yys0QTluMmtlUWs0TW9FVi9SbjIxcFFGNWdjZWJKZ2s4azRscHpTWGp3V0FS?= =?utf-8?B?QnhocXFUK3AvN2E4NmUxRTl1OWdlY1kyUERJUmFRZVk5Q0NKOWJSeG9kVzE0?= =?utf-8?B?MTUyRjFKczYxYndCOXZNUmwzbE9YSGxuYlBCaFBydUJidEpEc3VMak96aklu?= =?utf-8?B?RyswaER5UXRYQVROWTdHa0FsRHdORWpkNWdpR1BqZkx2OGhmdTJWVk1MOXh6?= =?utf-8?B?MFBpRGcvNEl5OWVQZS9ualV0VGl4MVBLaWNXTVpFYVlSeVRqYmxhd280TkE5?= =?utf-8?B?OEJ2dUtuUTdLMEprZWt5TmJSWnRNZ0hZb2pTTWFrM01pYjBvTitOODZVdlc2?= =?utf-8?B?Q28yeHB1SEl6eGYzMG8xcjZzVkV4akQvQU1JOU4rVG5XNGdTa2FBL0FLejcr?= =?utf-8?Q?B3pdp8MFo3ENxFGM=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00ea85f8-94d6-4ada-3f9f-08df369477d6 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:40.4799 (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: pbYQX50wjyEDLtxhvz43fOQUdjgiBmgQDT569eT0sTbT44OMyBx9fDoc8lKIh67SufZ15X0iN1XWALKV1e2v12TzZ9EFrzArZ4pzd7Henek= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI6PPFE0A0B9321 v5 -> v6: mdev vGPUs are no longer supported, only SR-IOV vGPUs and whole GPUs (#VSTOR-150598 and #VSTOR-150595 closed). - Patch 34 ("VZ: vfio/container: lift the CPR blocker for mdev devices") dropped: it only let cpr-exec through for mdev devices - Patch 35 ("VZ: migration: keep the estimate and wait over starved windows") dropped: it only mattered for a device without pre-copy; with pre-copy the sender isn't starved before the switchover - Patch 36 -> 34 ("VZ: vfio/migration: don't wait for stop-copy-only device state"): reduced to hw/vfio/migration.c: the stop-copy size is reported as pending only while the device still has something to pre-copy, so once it has drained the rest decides the switchover on its own; the savevm and migration.c changes are gone. Tagged #VSTOR-141821 instead of the closed #VSTOR-150595 Fixes of the issues found by Sashiko AI review. - Patch 27 ("vfio/listener: skip dirty page tracking during CPR") replaced by "migration/ram: don't start dirty logging in CPR modes": no RAM is migrated in a CPR mode, so the dirty log isn't started at all, instead of VFIO alone skipping it; that also closed the gap where VFIO tracking stayed off with the log left on by another user - Patch 34 ("VZ: vfio/migration: don't wait for stop-copy-only device state"): a failed pre-copy size query no longer passes for a drained device v5: http://lore.virtuozzo.com/20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com --- Akihiko Odaki (1): vfio/pci: Grow buffer in vfio_pci_host_match() Andrey Drobyshev (20): 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 migration/ram: don't start dirty logging in CPR modes 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/migration: don't wait for stop-copy-only device state #VSTOR-141821 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/cpr.c | 11 ++-- hw/vfio/device.c | 29 +++++++--- hw/vfio/migration-multifd.c | 2 + hw/vfio/migration.c | 64 +++++++++++++++++++-- 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 | 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 | 44 +++++++++++++-- migration/cpr-transfer.c | 33 +++++++++++ migration/cpr.c | 22 ++++++++ migration/migration.c | 126 ++++++++++++++++++++++++------------------ migration/migration.h | 5 ++ migration/multifd.c | 2 + migration/ram.c | 7 ++- migration/vmstate.c | 7 ++- tests/qtest/q35-test.c | 6 -- 33 files changed, 534 insertions(+), 140 deletions(-) --- base-commit: 02f55118bcb0533ce4c6544458c30803d96bea4a change-id: 20261009-vfio_v1-a176cddd6b64 Best regards, -- Andrey Drobyshev