From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022110.outbound.protection.outlook.com [52.101.66.110]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0EAC68095D for ; Fri, 9 Oct 2026 14:04:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UIzSevS1cxmZw/rWfhPcNAY1NuK2iBTtfhNdM8PIPrAMBXBVh+7kmz7aTunioxjBkhVbyZkBjMt9nlek6ZNGPeNBBV0bMA47mgg0YsMCFk+pkxn2gAY32ouy37GT/S50YrNp80a+vPNS4JmT1qRKrck8DPRtYU5oOOkHa6rrplm+MFngr9oMXni/gUhC3561AOaD+XpmrfVHJa83RyvIL840WxW4DOUoI7uiqgJt8zQv7ypQzdMyWbRTlvg5VG8TtktNBqTYjcovM4N5EPYmX4EwbubtLtQWGzZ72vPWTFXFDZkb4Trggj+GU9t1QUvIodGD8pt2M8/QpTzuGwwS7w== 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=YHzNm7/CVjqdRVtaeM6G4Hr9AnKntGuc0Nz3+Hbiof4=; b=wggJE5OkkSekjRvIFqwh2ewNcHQnc/2FREoOtY6Y5yalOk907eo/ki7Mp/Mc0hqVG25HoNukFN79pIQuwWArFQsyV9A5ZHyYX4NNXsTPRK3lwPASh0rlKG0l2FcqqD1s+ZNinkWCMrAAhAQdI1Zt1gOq7MoB16T4pg9ra4EAFTQXPdwpPKHgVRK7xrZV2Gkr7ATquhvkSlB0UJe7mwXaEZxW6LeRFnf5uaz3zam1Fxm9cPneVxXSP5d24niDV4YQtZ796Dk/x1kzExGYQ+oFJ8PBTnOTZChIYWcTz4CWIrWT+wgwIjT/xyW/GcrZnaBv+Fa06WkNHIBKlad1LL87Eg== 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=YHzNm7/CVjqdRVtaeM6G4Hr9AnKntGuc0Nz3+Hbiof4=; b=g3PsXvPxopKy5bWKTrZh5vizbB4cYMckOxeOatR6F0xGCwVYFfqSJad93MaaFTEfX8LWMOLy0Y1GLNcN252oRjgXUekKpu5JzthBKa6nKfUtts7K0ehXlH3Fm9MTyR/a1WG8O6DJSxz8oRCGrEmrubECb/wfw6CaPeKB15MmE7CWO1krWzWk6Gz7zuUgfm2ZX6dhdnCDYTmtyTYZMjpb7ZoWySxTM06wVzBamM5XcwxyRg6WvnxEQRbcDcWUUc/OLT4J/oXdOClxIummvIUMRjbqwywmJ2wg1sW+F+i9t9wP7hdCwcaUnopBmPpjkycibb9qJyYDsT8a2E/rPGJYzA== 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 PR3PR08MB5802.eurprd08.prod.outlook.com (2603:10a6:102:8a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.15; Fri, 9 Oct 2026 14:04:47 +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.0496.010; Fri, 9 Oct 2026 14:04:47 +0000 From: Andrey Drobyshev To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, efim.shevrin@virtuozzo.com, den@openvz.org Subject: [RFC HCI-8.1 PATCH 5/5] qemu update: refuse PCI hostdevs on non-shared guest RAM #VSTOR-103860 Date: Fri, 9 Oct 2026 17:04:35 +0300 Message-ID: <20261009140435.483100-6-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20261009140435.483100-1-andrey.drobyshev@virtuozzo.com> References: <20261009140435.483100-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VI1P194CA0026.EURP194.PROD.OUTLOOK.COM (2603:10a6:803:3c::15) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PR3PR08MB5802:EE_ X-MS-Office365-Filtering-Correlation-Id: e77bb63e-06bb-463d-70f5-08df260e46e5 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|52116014|366016|1800799024|376014|23010399003|5113699003|22082099003|18002099003|10067099003|38350700014|56012099006; X-Microsoft-Antispam-Message-Info: s+9LZ+j9oZWhY+RPMpkjm3DC0mZ1n/q7mTQP+faDLaLi1EJl1DnqdBQ0TvcSSJ3q4wkplqugoHNLYCtDreuxs2SqJ7Ig5LIoFylE5VHDvz6whrHlzl+J2ml60elA95F5VKyBmyKZ2jGLxRZCqoD8uQ7RGxAX0CvBvM2++UWrzGWoFRyZrqFUd04Y7R2ALX2RWw6UUPZcE7o9z+OxezV65ZjpiJYZawKRH9Kzd9YaXe/Wk8kyh6P3NHJenS/V0+m0e02/U3eGiisFwdM+syBbihAq4UmBT4JL4Z4lmLv323SxoHCq8lH8sZ6xYWyIcQyxW5ok+x4mEc3YXYHc6Hb/Vxuj1olF2i7dbtUWYdVYOt+L83eJqnBNCRXkyMAmG/wFs5vCNpE4P4wiewcKVuu/sBsjLU557+Vah5CurCo2+Hg5kQiZ5AhIXIu84RYqwuXMIeSeVO9UUuDlro3p3gzsAJ7t/pOxAxnMkG6TEqM0s5LDiB9KlWS7sUhUa/vXSyZwZkvAuekCidd0PqCJTmBBo5Th3dAvtMv94X3vIUZsPKqcirnC4wyJZuDX5Dn9DdAz+0/0hO4Ta0+UoOgsGcklHn4uPBhAGEkxDBSFrM/tqSR7LQgrou92KTXXQv7wHE1RW9zoMBVenbRHkoSNJrkn5OpkygJyYLq1+Nmv9ehZDXCclAwUVwS7TZMEL9fZfGwbSeWuYVoSoJORZMabrii1FY/DSjrAkwpO73nhU2i2FIc= 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)(52116014)(366016)(1800799024)(376014)(23010399003)(5113699003)(22082099003)(18002099003)(10067099003)(38350700014)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o4ctdDzYuQs5DtnaRslnpMTh+X+LJKzWNmE0ZnJOTmDwDoOGQTDPovMzM9Ej?= =?us-ascii?Q?3+IU0ErYjgFVP7CT2HIXyMRGV64RQfvNpAi7fU6Lt7LoKSGrbqmeowShkIiA?= =?us-ascii?Q?NG1cgargC4kbAXbJCfwa2SkC88W8MtLqZJvqP0Tyy2w1s3+dogIXQFfnbHnH?= =?us-ascii?Q?0DU1UEEdUFEuVvWL1+4QU30gUqamIh7GAteRAvJHFjAOT2NsCVhUlf3M1Dah?= =?us-ascii?Q?I2AMe58gdTYr4GyDL++CovDguPN1OrnjBfzhOU0nEFzqURzstrH0NmDLeNnE?= =?us-ascii?Q?nVXZQBa70f93Aofbe/9jzuOAcf/vgMnbjg2MEGBdoQTE6ChwMkjt8KusteL1?= =?us-ascii?Q?J7bDpWKw71MigdWg2gKsimj7R7ioypehdRehDkor+zXXlZiRphmq3iIsHLLw?= =?us-ascii?Q?uMmV1liW5aHBheuGS1sGFwnQ7NZXBZUj6BYCUlQ7waYyMzhovxFbrngiozDx?= =?us-ascii?Q?zV48JJKS7oCxjWMf19biDWDjYYMSfTdx/xYmOVHPKjO1RVOHdn/BPa6zg4P/?= =?us-ascii?Q?+uPvNNfEJjp6NscgdwMWvT+CkJyMeyxSKg7qOaKPKn5nURM9CWgILL1Xln2b?= =?us-ascii?Q?MLdnoC0hEwiByPbMoMnKnd54V4KSLfWeLRksLyYO47uE4fz/EBqwGNPFbSVI?= =?us-ascii?Q?qywtGJ62yloUI+pQSoImTUjQyJj6Jh6B9Sjoug3FokxU6eql0sa/8rjpPdAf?= =?us-ascii?Q?lMScHnrxqp5iAVbITdS14IdriNW8Pv1wrdc8eb1ITq4wSqtqJ7/jkLljW+yd?= =?us-ascii?Q?2cmfQi6VOXjRmG1LOTjhG1u++Z8C4i5oZxAu/W577srcVGVwIIqjlg92sFXC?= =?us-ascii?Q?0Y+DCwW1HTOhCdAm9kB8BYaNC2MdEJIU6HBtrm0ErGE6IQJaR+QweunWDuse?= =?us-ascii?Q?n/8Bek7vaZiYuYpI6WKlwu/NlcCeSIsZchXq10vR4ckVfI3wQ9l09FPpYbK0?= =?us-ascii?Q?HxqG0wPxUGqOOXlm1RBQzVy2dOScny9CnNUkU28xIagkNGd1MWdqNEDY6PZB?= =?us-ascii?Q?Qx2y7wtfbhOTuFAvHXtay3HAhPolGuDxjD2La+WNPJBSNc+WVuLZddOmnprs?= =?us-ascii?Q?BN0NzPu8ELIp18NZX9R8blq1wcoQIPAosX2wWKjmQ+1qVfdrDuP8NlyIISmM?= =?us-ascii?Q?pDnIOJ1+YwCZ43FZuzZ1M5Nr2iu0JemsFe6s1cOev8G8XXQm/nEm0nT9o5AP?= =?us-ascii?Q?1gE/jxqe1lyygAD6jfn0XqcBpQSbLDoineL4UoUk1YQ6Pee9nWBeaSk7cwZx?= =?us-ascii?Q?JuP+dzJQgeU5a/cgl5LMrAN7V3kuzlUv/I5C+oubTLfkSdcTVszokms2Pjj6?= =?us-ascii?Q?K5TmsZV1V7k4D8So0LwsJ4XdzpKymyxceN9Je8It2invbUCrmPIrkUG8qujm?= =?us-ascii?Q?Sp/mdj2PcejxRoNaFl/f/sdC8Jr10dXtsHQgrVUDfwwT5OhrOkbSeCTKvjxc?= =?us-ascii?Q?rwjsT4BEa0jCMwOUshQ06xcrsdXRQnKZ8PUoDs5IwJEtwNPXsD3t5e3IbZwR?= =?us-ascii?Q?CPCgW403NOWpTMC4kYJXiA2Dft7Ub1zr0NFuzA6C3/+LkgAZmmVwilB5j637?= =?us-ascii?Q?9fpr1E/aYIZRWGdX9qQD2vYMzP/MK8z1juyob5t71KSNbaUYkCp8BpnOcf0V?= =?us-ascii?Q?0sh1YB420RjYqdua9e8seuRFpvCEMtBwuUm2M7GXiaSIGKQzONj50LAAYXX8?= =?us-ascii?Q?tJNVL+QESe6n04Csop9UPPOiECK/dVEp+rlh9vUJuYrIIULZncD2Q53WZCtX?= =?us-ascii?Q?KSz85dYP62HsmnO+MAe7DtAL24x4eeQ=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e77bb63e-06bb-463d-70f5-08df260e46e5 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2026 14:04:47.2524 (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: RxIqIzyl1IdCNUoVaJg0QdOoI6LrzUhg57uh1e8NrlQIlHZiqM25R4oM+Is0d8oTRz7BhT4HNP8kTry8+LohGbraQ02D9UzM0TngQRAqUxg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5802 New domains with PCI hostdevs get shared memfd guest RAM since the previous commits, but not all running domains have it: those started by an older libvirt, those with explicitly configured private memory backing, and those that got a PCI hostdev hotplugged while running on anonymous RAM. For them qemu-update would succeed while silently breaking the device: DMA keeps going to the pages pinned before the exec, which the guest stops seeing on its first write to them. Refuse qemu-update for a domain with PCI hostdevs unless all of its guest RAM is shared. A cold restart gives such a domain shared memfd RAM, unless its memory backing is configured otherwise. Signed-off-by: Andrey Drobyshev --- src/qemu/qemu_driver.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b3902f10c65..c39e0133ebb 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -25194,6 +25194,16 @@ qemuDomainGuestQemuUpdatePrechecks(virDomainObj *vm) return -1; } + /* Device DMA keeps going to the pages pinned before the exec, which the + * guest stops seeing on its first write if the RAM is private. */ + if (virDomainDefHasPCIHostdev(vm->def) && + !qemuDomainDefGuestRAMIsShared(vm->def)) { + virReportError(VIR_ERR_OPERATION_INVALID, + _("VM '%1$s' has PCI hostdev on non-shared guest memory, qemu-update cancelled; a cold restart switches it to shared memory"), + vm->def->name); + return -1; + } + if (virDomainDefHasNVMeDisk(vm->def)) { virReportError(VIR_ERR_OPERATION_INVALID, _("VM '%1$s' has NVMe disk, qemu-update cancelled"), -- 2.47.1