From nobody Sun Apr 12 04:21:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771145771; cv=pass; d=zohomail.com; s=zohoarc; b=RkehLa1oQaOvIvDxYS9wBKjbq5xXixTlURX4b9fRUUUxsycFhqLQ7aKQVyfpdCW9ZhuBzEFFr5ORJZyfRa9dr2TMHtlnLnAFXDam97M9jk+Q7dCczgk24fO1vhpSSTKpv3McOLlYU89L+qhhxLRfTm8yFxFNwsd8NY7J+s8Hocg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771145771; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cptZhIlRWTwoR+uNE8PDuG3WAnUlxHkFhhPc8Knl+tM=; b=YU7Y13lfCmfrTMVYGGSpt1nF9OsdDTORmzIH7PFLUovQN9JMnRU74ofaBW0NOcycJqQvpzOvygqfJ39WflHIqY6qntD0c3HxDkuC7RZzKJcYsFH2QF2c+5J/0y3o1kTQxTRKTzpAQtOt2EzmOl9BMZx7oV7PWisA7gEwYaFAYQs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771145771346753.9831428408243; Sun, 15 Feb 2026 00:56:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vrXuh-00025j-Gw; Sun, 15 Feb 2026 03:55:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vrXuK-0001yE-L1 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 03:55:15 -0500 Received: from mail-westus3azon11010042.outbound.protection.outlook.com ([52.101.201.42] helo=PH7PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vrXuI-0003Kt-Bt for qemu-devel@nongnu.org; Sun, 15 Feb 2026 03:55:11 -0500 Received: from MN0PR02CA0005.namprd02.prod.outlook.com (2603:10b6:208:530::26) by SA5PPFCB4F033D6.namprd12.prod.outlook.com (2603:10b6:80f:fc04::8e2) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.10; Sun, 15 Feb 2026 08:50:03 +0000 Received: from BL6PEPF00022572.namprd02.prod.outlook.com (2603:10b6:208:530:cafe::6d) by MN0PR02CA0005.outlook.office365.com (2603:10b6:208:530::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.15 via Frontend Transport; Sun, 15 Feb 2026 08:49:49 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL6PEPF00022572.mail.protection.outlook.com (10.167.249.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Sun, 15 Feb 2026 08:50:02 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 15 Feb 2026 00:49:51 -0800 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 15 Feb 2026 00:49:50 -0800 Received: from localhost.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Sun, 15 Feb 2026 00:49:50 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GPTOCR1OPIKjSK1jJd3aadl95vSDdRQyZcTNi9qYS7F2Or+hJjjRxiRstME9UMdXMKANnoCu2X8ST6zg2nWj4NwpP3+R6NRQvwH+sRsYgsycNpoXx9RUgk7rM5RU3PJOa+UMmn+pHP4F4rvVYQPWFGv4mJ0y5GR/qRMs3VRPmXfy71ZWfdttUDKIWp5zV59dbNtWnZCI0n7db+MWWWQWK9qHtTQL2rXU8XUzAmw4czjVjnVNWrOsdarfDSvAf0gXVhWXO1thKFCpvnGAXVzGVMaUXUWeKxr64BL6yXLsJDUyBFtQH9Wce3n+vz/uYQhWB7d1sDM9SHbZLjHhAWaoxQ== 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=cptZhIlRWTwoR+uNE8PDuG3WAnUlxHkFhhPc8Knl+tM=; b=Le/sxLzN6qixKtmAv1Esqpt0kPjCa1lEvQx9rqDzDQbRjKe43v7wsjQOiXEqbSKbqbGmJXK05DF8cXmJEgYhypkNSnmIjaM/7cFh92qh02jy+0ug6G5HOKORuiDiVhBBCR4vmjlDY4uObMWjiTqPAiikzJ3zwN7a8PAbd+ftsU4AAWNjZo24R0R40cVOTYTus5Aj4ZevfOSBiZ5QZ9lTzXTMsFOv95J9+tGBlFZd8cFMn9WPN/qOMb0Nbk2mDwK3mHFnCpJlKg8SWSuIU8aTx9dPmbRa72pHLjNVckWatzd7GKgNYRjJH6hEFSxG80gBlm411glqev+DqIT6vZDvFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=shazbot.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=cptZhIlRWTwoR+uNE8PDuG3WAnUlxHkFhhPc8Knl+tM=; b=Se1TQ+kPHGEYLH4aoW1dJDsgR5b4LiwNq51rCzAUc3ZFgwhBTSj4Hba/XwZhdaFCxCvFV9buVclaQa4MLAWvcvOSIWAnga5EWvoZzHwx8XWRt805KLZnhklRmTaw+4EkZIgmemoSyTJ7TkCJlb4xbqdUnNzvOD6yRMscaaR8h4rV/8TjsU7xDyVF5rRkBQj8ZLuUCnE5GcQB8TUQ9Oz4bx0g+1IgrUj1nvI4Dzuhc8ez3VUoSa7FzmvSUOAS0Vf0DTOZwvJVKRSyw/AU3bL6pPShOr6k9vj6Hnb6NF70L0fwEW+vsrW8CCs2sud20RNq7EZ+sJJLr/9JUb3Wm4tXLw== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: To: , , , , , CC: , , , , , , , Subject: [PATCH v3 1/3] hw/vfio: sort and validate sparse mmap regions by offset Date: Sun, 15 Feb 2026 08:49:48 +0000 Message-ID: <20260215084950.4657-2-ankita@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260215084950.4657-1-ankita@nvidia.com> References: <20260215084950.4657-1-ankita@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF00022572:EE_|SA5PPFCB4F033D6:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b2385d1-9f48-4290-3572-08de6c6f356e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|1800799024|82310400026|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?b99aMedxKKZH6xpOAiuaeJ8bbhAUX5p6zbvkBYAOo09xPG8D/Hnt3SFt0zOf?= =?us-ascii?Q?W1X8xvmoyd5ECxeBbbojsoQ8JgnP4jwAVeEmhaZ7wvdbqNleoo20vKJzC5vX?= =?us-ascii?Q?qCvAalei9Evsyyy0rbKfr7ip0wpi8adrviB8jlUlkBjNaezkmN2TadxemMG2?= =?us-ascii?Q?G/B5ZENenA+LHuJwAvPr2eY3tUHpg93X8+IJxagAfYWyaGzrrs9pljL0DS2m?= =?us-ascii?Q?J7apyjjw5MM8P0gCGUBca5K/n2OCSLLZNRGiXI566ojH0uYufeV5sSUcv2B3?= =?us-ascii?Q?HrYZ8W2m0s5JiOhc6fpuQXPb/ZbB6pruiEar/mGBH3eM0CwhqT3aZcypcsmB?= =?us-ascii?Q?a3XhXkwNfP17jQE6MWn6yeleGL4C2oPZIczc/vaFDsT4nSPnvwqOrELCI/69?= =?us-ascii?Q?A4wtYw6kW0tFFW1zpWoORA2VA5v3M1jIqHKYJaVcAT73cnUM28XpVqtFYK4P?= =?us-ascii?Q?B7V1ldl5jFQypGYBGZSmJ7IRsJWUrf5wCZLOpuDPctSDkS05hthG7lASY5kP?= =?us-ascii?Q?PZ5QYu2cfgM2YzlhANxE8yo1M3+Le2nlI/BKaBpxI+nHAIAiik73maE+zh5a?= =?us-ascii?Q?6iZaG+qgcT/N6SNbavBXByDeyi9RDoKju49/n7GXXBa+ZlA6cyCq95TdIa25?= =?us-ascii?Q?uKE4hMnrwOPSCtw9TaZ+nq9SgPGS3AxBBqOT4EyQ9kcF8Beo8kX2U3Cx6mAX?= =?us-ascii?Q?QuntONsD1nu8OsldrJsbIakPHfn5W2/BDbm/Nys/ckkmKdXdZAXGgxQTFTs0?= =?us-ascii?Q?VXPzW4RwKsTPtADoiwBu8b0pE8YcpgFDCaivToQXfQeY7yvwERqGe/9V8nkF?= =?us-ascii?Q?f++9UGF6ICO36X9qcdIMJ/ORdROC3E8ACZrjocxiQ6xU10tNmwRQndEm4VO8?= =?us-ascii?Q?9iNP+55xYVpOyDq92mGTuGQqm11TehVfVdP/aTf5IT8Lv+FjnWMdUL1Ab80S?= =?us-ascii?Q?Tu5bj5SXjqUcZEguELc9yL71h3ScZb6CqOOz+1n2hbtYseVgj0e97TIOfTr0?= =?us-ascii?Q?btke8sqmJGpkQWkk1hLRCNcYhLefIuqXMgzn1cTrlRI6XM/xKTQUH/XoXpK1?= =?us-ascii?Q?zfL4+ZkDRAEaM3TInoBGcFEk3K5hIDuMLgfn1XOGzRREOn/XtTXNK91j4j3R?= =?us-ascii?Q?CqKkSBPnvAyM2/KsAq8Xn+ZBAwUyGD1nrs3XFqFXCGQiuQCQtVqBwoEflu8Q?= =?us-ascii?Q?WMZS+uEv7kRTEuYmXagPS2p+8g7Vg6SmCuMEZCKZ4FFHFbvoKJg0gL7uYPwO?= =?us-ascii?Q?7bYMXlghPuX1rWeY/xwO3/jRPJSfw9NFXKky93H6FhTfMvm7LdazSca4oftC?= =?us-ascii?Q?vT3eOBhPhOtTkLvCYmHupaviVa/DKJK2xMI1hC2yCoIIm5LDcIE9/JdP3zVS?= =?us-ascii?Q?DbTlDg+J9RGfQA2bpmG9a0PG44z6GzrQZlGo4Cig5mZziuNi27IMHaedcilK?= =?us-ascii?Q?iPhkeFKBRGjTi59r2Ev/w3e2/qnLtj0+HQCUTv1akEqlk6iycGSWoaFEBjLW?= =?us-ascii?Q?bvrRJwQVppGhz2ryMRXyufTE05jXpUZlJs789GNOGYntTB8SA9IbfIgC32Gi?= =?us-ascii?Q?PL06kxOytZ627epLIPBKuPSmU+GT4d0FQ8YdpLaJ5KE6xZHQyJDqCYq3teTK?= =?us-ascii?Q?BIJKet7z4T86b/rG7P8rTVdDeXlPW6t2Yp0Y1h8FlCClKumyc7jfJHpgOdkg?= =?us-ascii?Q?QFUjyg=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026)(7053199007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: k811FZM3iiy+nFjkTFUO/j/eC01RhhoZ14MhratyTkq6GvX904JxwOCieBEWRY0c7paml7kFW4HwwXNnCxJGmVMCNVRzh9lsDvbaZB3j+lec8+Pyo9Szw+hWn+hrg2cqAPaL8qdGigqsccWimc7v28Wu5EgGDIzzBcn0X7K3NRfduxRbkVLxqp41UkzvVbYGPRcZl7Vgz2Dp9yvgZIGO0ZT9pleV2rQsbfc2nzwAJPCzA1vAwLKNMReJFzuFcUVKUefjUIuRKf346+17J0ZDhyHaUSqUHJvKIVv7r+sTf23vCCZ3QFB4KG/JW//hFj3JeT2QtysFFPmp1tc1KS66tg4wDdgmhRJKv5LV5bxU8C3G6uEhcdwiITfM1u5Wa9yXha26yP8ziutbgJyKJGUvudeDT52QgjPbaNWyPRKnpQUarA7RD5tBsIGmt5Z1R7dV X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2026 08:50:02.4876 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6b2385d1-9f48-4290-3572-08de6c6f356e X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF00022572.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA5PPFCB4F033D6 Received-SPF: permerror client-ip=52.101.201.42; envelope-from=ankita@nvidia.com; helo=PH7PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771145773919154100 Content-Type: text/plain; charset="utf-8" From: Ankit Agrawal Sort sparse mmap regions by offset during region setup to ensure predictable mapping order, avoid overlaps and a proper handling of the gaps between sub-regions. Add validation to detect overlapping sparse regions early during setup before any mapping operations begin. The sorting is performed on the subregions ranges during vfio_setup_region_sparse_mmaps(). This also ensures that subsequent mapping code can rely on subregions being in ascending offset order. This is preparatory work for alignment adjustments needed to support hugepfnmap on systems where device memory (e.g., Grace-based systems) may have non-power-of-2 sizes. cc: Alex Williamson Reviewed-by: Alex Williamson Reviewed-by: Shameer Kolothum Signed-off-by: Ankit Agrawal --- hw/vfio/region.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/hw/vfio/region.c b/hw/vfio/region.c index ab39d77574..177494c379 100644 --- a/hw/vfio/region.c +++ b/hw/vfio/region.c @@ -149,6 +149,19 @@ static const MemoryRegionOps vfio_region_ops =3D { }, }; =20 +static int vfio_mmap_compare_offset(const void *a, const void *b) +{ + const VFIOMmap *mmap_a =3D a; + const VFIOMmap *mmap_b =3D b; + + if (mmap_a->offset < mmap_b->offset) { + return -1; + } else if (mmap_a->offset > mmap_b->offset) { + return 1; + } + return 0; +} + static int vfio_setup_region_sparse_mmaps(VFIORegion *region, struct vfio_region_info *info) { @@ -182,6 +195,34 @@ static int vfio_setup_region_sparse_mmaps(VFIORegion *= region, region->nr_mmaps =3D j; region->mmaps =3D g_realloc(region->mmaps, j * sizeof(VFIOMmap)); =20 + /* + * Sort sparse mmaps by offset to ensure proper handling of gaps + * and predictable mapping order in vfio_region_mmap(). + */ + if (region->nr_mmaps > 1) { + qsort(region->mmaps, region->nr_mmaps, sizeof(VFIOMmap), + vfio_mmap_compare_offset); + + /* + * Validate that sparse regions dont overlap after sorting. + */ + for (i =3D 1; i < region->nr_mmaps; i++) { + off_t prev_end =3D region->mmaps[i - 1].offset + + region->mmaps[i - 1].size; + if (prev_end > region->mmaps[i].offset) { + error_report("%s: overlapping sparse mmap regions detected= " + "in region %d: [0x%lx-0x%lx] overlaps with [0= x%lx-0x%lx]", + __func__, region->nr, region->mmaps[i - 1].of= fset, + prev_end - 1, region->mmaps[i].offset, + region->mmaps[i].offset + region->mmaps[i].si= ze - 1); + g_free(region->mmaps); + region->mmaps =3D NULL; + region->nr_mmaps =3D 0; + return -EINVAL; + } + } + } + return 0; } =20 @@ -213,11 +254,13 @@ int vfio_region_setup(Object *obj, VFIODevice *vbased= ev, VFIORegion *region, =20 ret =3D vfio_setup_region_sparse_mmaps(region, info); =20 - if (ret) { + if (ret =3D=3D -ENODEV) { region->nr_mmaps =3D 1; region->mmaps =3D g_new0(VFIOMmap, region->nr_mmaps); region->mmaps[0].offset =3D 0; region->mmaps[0].size =3D region->size; + } else if (ret) { + return ret; } } } --=20 2.34.1 From nobody Sun Apr 12 04:21:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771145779; cv=pass; d=zohomail.com; s=zohoarc; b=EK913mJ9ZkLyxgN6XWgZ2GgF6+FxTp4lT0uBQnQKvxRBnq2bGnUOi6nSwslOTxzA69uhV2wgi7b2dE6AAj7rlWM3TnnyKz/1llNJ4nVp4N4NGhfnkzRXkcOu15ppx7UX7IVHynYttwhFJBu5pmNtqS40IFsGH5QVnI6fR2r9Ymk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771145779; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QlJi4GalqPmHNwIpq8wYzWqCs7zDASkjSD5PuT0qwPY=; b=TQKux3mwsoK5ujwisyl876v6ftWvIXOv0qX5e46QPytYrVQGjK78dcfqCQCWpJqOgHxqjW34LIheHpaoSLb14zMcoSkqMdCa8rZ8Kpg2azWKWPyYEJ8udu1gYJOSRgnvthWbhSiCM3+bqjDuny7w8RhrNUmbjk2lC6lTXKHATQU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771145779205576.2839177348322; Sun, 15 Feb 2026 00:56:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vrXue-00024e-86; Sun, 15 Feb 2026 03:55:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vrXuM-0001yN-D7 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 03:55:19 -0500 Received: from mail-southcentralusazon11013007.outbound.protection.outlook.com ([40.93.196.7] helo=SA9PR02CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vrXuI-0003L1-Cf for qemu-devel@nongnu.org; Sun, 15 Feb 2026 03:55:13 -0500 Received: from SJ0PR05CA0050.namprd05.prod.outlook.com (2603:10b6:a03:33f::25) by CH3PR12MB8995.namprd12.prod.outlook.com (2603:10b6:610:17e::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.15; Sun, 15 Feb 2026 08:50:03 +0000 Received: from MWH0EPF000C6186.namprd02.prod.outlook.com (2603:10b6:a03:33f:cafe::59) by SJ0PR05CA0050.outlook.office365.com (2603:10b6:a03:33f::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Sun, 15 Feb 2026 08:50:02 +0000 Received: from mail.nvidia.com (216.228.117.160) by MWH0EPF000C6186.mail.protection.outlook.com (10.167.249.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Sun, 15 Feb 2026 08:50:03 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 15 Feb 2026 00:49:52 -0800 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 15 Feb 2026 00:49:51 -0800 Received: from localhost.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Sun, 15 Feb 2026 00:49:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Rg77g5uEC5gNjTa4jfY88iT9GHsjFUF/4wC5VIQKjQ3puEjZhCX/3HnAaolgKRYrckf3QOC/KEnu9tDB3aV/iOikaeRMu0v91uv+IIRgtS1+Px5lAVKZjvgY/NnyLxf3/QReccyr013QEtFv1kSuBc1sdY7Fc9XoVWO2ZqvN2MLASUfIHGO8znrmtQ1OVlZa9Rv54/wtrXdIaOHImE0b/0xWVlLvgJLE14cfXwWlwCQzhinWdN/huZMRDyoMXU3JvTji0l3Hu6FlRVrMRvxXCMIHT3yijzYJ4vFR6tbHmD2p2tP+svpfqJL+1L2E4X0qGzfDujnCIq/MBZ8y5WoNqw== 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=QlJi4GalqPmHNwIpq8wYzWqCs7zDASkjSD5PuT0qwPY=; b=tZRHUU76b+sgmzafd9W8ly1b0zQ+QujQb5vEGrSsAOBzIfQINk6xjwIXhEhLMsWvL3cMx8Xi6dHWUWgf+4lGk6jU0M0IyHSsb9OiB5HNYLAKiARX+VtG2kzToZ+I1dI0PezJCLwekWj2dA93YovphAq+95fgiV6vyjKYk1JnXgpXwqEMK3HrKFyRdppHKfhqiJ/bq+sLkCDS8uqKz+v4jw1FcwHJJrTnFlAU2o/u0ifSDEtsjXnZArodCCLsFNuBEESeG3GsWl8pxtVTMNQEwZeeJybxSiM9Mq4KxWZYWm3ZThRMs2rZljkRhAtzHUC6qeMu3qZat+77WrvsM2p1bA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=shazbot.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QlJi4GalqPmHNwIpq8wYzWqCs7zDASkjSD5PuT0qwPY=; b=DOne18eOHEoqafv0BG75xfi9OQ0BwC53iK6Pn7B2J2MMLgogocz4L5wdV8rjqD17WjDecc+B5F4EJ+2kP287RIYm1lnJY7t5sjG8ZJpJO0TlMvWZ8v0UhGgT/Tc5+cxNGWTFNiYPEbSM10FBmGg5LdLEElvsuDD8w0jrHf2i1xGJVCkpY9L+7WPmoe8Rjn/G7wphL6EB8tQw5VmQ2SEVW4s86sCz4+TYhGcGIFIDmKS4fq5SyauFAjEE+j9JhqQcJQC+92ju57XRcNfoaEGJ6Q+wN56JDydW0DWza1Td2XWsZIb/qL9NSv/muE3NEuSqyBPzLPYv38RRVjX9ySGwUw== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C From: To: , , , , , CC: , , , , , , , Subject: [PATCH v3 2/3] vfio: Add Error ** parameter to vfio_region_setup() Date: Sun, 15 Feb 2026 08:49:49 +0000 Message-ID: <20260215084950.4657-3-ankita@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260215084950.4657-1-ankita@nvidia.com> References: <20260215084950.4657-1-ankita@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000C6186:EE_|CH3PR12MB8995:EE_ X-MS-Office365-Filtering-Correlation-Id: ff313f6f-831a-4385-d8b0-08de6c6f35cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IeH9S7Bcisx9kv16TgwBu+qx7GRvIVFSLFDvfQFUl3T1KlXdxVmXXar/1ILq?= =?us-ascii?Q?VRlohCtta5a4Jo2Honm7CHgI4vE1VFPcsSoja1CQSvK/X2PhWGNPmJhbVjkK?= =?us-ascii?Q?SW21uZ4gBmJpc5R3PjDmy4vENDwPESUuScuZxflDe1MQnPdi88G6m0y5Pu+r?= =?us-ascii?Q?TNmxUhoD7OV+khQggEFNbyr5XylN8Rgm+XCqDy9sIXALORyJda2FqWC77ryG?= =?us-ascii?Q?RHW6qGVtx+JTZTcBn5J9MQZRFsyx/x2qaWKsXxEZk+FkLY/+x6QRVowo+L4M?= =?us-ascii?Q?EUl8ZHwYHZ7jJf5+9XZQfxVnGc6/eoCa5whRZpguQRCaXlL7X+WXjj0SlruJ?= =?us-ascii?Q?ST2aeo8cKp0u4rJ9eJtQ4R1JTymWjU5gRGy9cnv5+RPKhsPUYVEGRYJm+zNQ?= =?us-ascii?Q?t7GBHMWVKYGTA9tWHfpCfZEhZC/s29JGxPTYmD+vwVtds56re1pMaZfHwS1y?= =?us-ascii?Q?JnCmIUDgjUEIHdDEbh44Q+TixVqWYL4K1DSmYRJHTr10HSDCJU1jLI86dbga?= =?us-ascii?Q?OujpzZacwHtz3UdYpVcTGESdCFXpbjbe67rRaFaYcG6QgXo4MFdRU/PVubQe?= =?us-ascii?Q?gP29iYI48MdlaQ4FhNJdIhf+i5gSHXeqP8mH5QqGTDONNWP7GaC4vA4cg1Qc?= =?us-ascii?Q?lrpRNGc0JDcKEMo3oetZE2U71FjmVMMc8o7+vnJAFZ7VckSoMb6yZI6qM5GT?= =?us-ascii?Q?Ir0ZtG6yUEuxmvg51QUcPnnzycTpkh+dBfe40VfwZ9dpRqU3BsYPAG6QqwDI?= =?us-ascii?Q?M9qss9CY4mzUKzgrWci+Le9mvowyATUcGx6Ez1PSFgS3j2vSePmZ5fWq7NHl?= =?us-ascii?Q?YjJwXjh1xcj9gZESP9Krpwe4baJbKclWPgq/jioeNcNkfN6h8sSvxIrN3+o9?= =?us-ascii?Q?HxiBqj5BrfFFrIw2Vlo+BS2O1QoLu/oKvoQUgcefYlhVMfcHyIDQ3xAzj4Ym?= =?us-ascii?Q?4IWjWluTsJz6j004p4Jcob4XbZeiXNTzQA/WNF4aoD8bAhu3WWeL2vLqncCL?= =?us-ascii?Q?NjtcaXiK+yZt8WuZVbGiSiV4/MGLNnEW7EkT+54PITkm5ZUrGuHpnLDOV3/y?= =?us-ascii?Q?1eDMgOqky6krlvuZBhtSqbuo8F9fbmlyMq7/nJ3she5WrZ/TxGwmbf2avCxU?= =?us-ascii?Q?2Rl5WXUNmEY19ISswn968KnoQeFXNj+3+dkOswWE6Sd+AXuls4KOv8qTrp/1?= =?us-ascii?Q?MxUjwAXFytZAzxZV2pe3lpbS76lVBznPlq+AlkQvmbT8dYnqJC2OI6eMHVmL?= =?us-ascii?Q?aKaMHdyWpygSC31wLbcciuyjIFLJE/pk2IREfjRwJczUae5Us/LyEojG6q3F?= =?us-ascii?Q?jdhwYxHnQfbIVXZqyPI0sC+CGVN+SS2+y//KXaQfcaPthDsIv1Zn1Bvid7/2?= =?us-ascii?Q?Xt7wNvRIuzp94QUhIT6t4CGfg2sTCQBxHQVWjF9WthQ3kmoC1TZhj/ciNqGS?= =?us-ascii?Q?KgZp8XdhnrkqxfYIC+toY04LmmzN12e8MMHym41PA9GdZy7NA0wrWwtChTTc?= =?us-ascii?Q?R9PHNXiaxRC+8z+dW4s+UunL6B4c8Yq60Qxv9d1Fw1VBOXZ5bBjwohqApOvO?= =?us-ascii?Q?8u+XJFb8DOC0BqKx9LaJol0DOzdOfUESHyiMOROW1afSLV0OPe2BgVSC/n+2?= =?us-ascii?Q?f5IRUz5b670IQjJ1QI32pwe8JJNoql6ZVQ3CKrB5vylJbGVejnEwWe4JhCOi?= =?us-ascii?Q?hJzsvA=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(36860700013)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dLRvJyx6O2VRbZEbGNsHAw+0P5D8PPyr9pzm28lJjR4ZlgxLvXLTq2ZqdVEEluWMck4gEWEbXaY/xKJNJ2OOVY7EelQApBClO8jY4DR3cX1iy79qy9XzNf94JEnI9mvgn8p8X7x8XOcV4HgOrfB+3aImBGii7asdg3rCSKmbTeuVaL63+wyftpBfySiSnfkxn7BnlynIqRjV0YOQptJzTOYftLff4KbMQ6ZOEoIA8pVhswiO1eUtKXzyAFkbMKqx0MsEZx82sFLqfmI6vWQVra0oER9YyJu//xKfu+eQKVyRPfnrsNxE8ZIWlC81iumx3hlTB2SebS5e7pEgYPBS5DkPWjK6ceP/NKQ+xcURcJpMaETm1GBw7AYXBqfEo7jH4XQXDIL7+5AP9IYXhNZgESQ1v9Xj6Fs8iSJ3c/VAEL10Rxr0WpuWP+BRDTFVqUy6 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2026 08:50:03.1735 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ff313f6f-831a-4385-d8b0-08de6c6f35cf X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MWH0EPF000C6186.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8995 Received-SPF: permerror client-ip=40.93.196.7; envelope-from=ankita@nvidia.com; helo=SA9PR02CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771145779985158500 Content-Type: text/plain; charset="utf-8" From: Ankit Agrawal Add an Error **errp parameter to vfio_region_setup() to allow proper error handling instead of just returning error codes. The function sets errors via error_setg_errno() when failures occur. Signed-off-by: Ankit Agrawal --- hw/vfio/display.c | 2 +- hw/vfio/pci.c | 3 +-- hw/vfio/region.c | 5 ++++- hw/vfio/vfio-region.h | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/vfio/display.c b/hw/vfio/display.c index faacd9019a..bb9015804c 100644 --- a/hw/vfio/display.c +++ b/hw/vfio/display.c @@ -449,7 +449,7 @@ static void vfio_display_region_update(void *opaque) ret =3D vfio_region_setup(OBJECT(vdev), &vdev->vbasedev, &dpy->region.buffer, plane.region_index, - "display"); + "display", NULL); if (ret !=3D 0) { error_report("%s: vfio_region_setup(%d): %s", __func__, plane.region_index, strerror(-ret)); diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 36d8fbe872..c89f3fbea3 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3056,11 +3056,10 @@ bool vfio_pci_populate_device(VFIOPCIDevice *vdev, = Error **errp) char *name =3D g_strdup_printf("%s BAR %d", vbasedev->name, i); =20 ret =3D vfio_region_setup(OBJECT(vdev), vbasedev, - &vdev->bars[i].region, i, name); + &vdev->bars[i].region, i, name, errp); g_free(name); =20 if (ret) { - error_setg_errno(errp, -ret, "failed to get region %d info", i= ); return false; } =20 diff --git a/hw/vfio/region.c b/hw/vfio/region.c index 177494c379..b83b09fa2f 100644 --- a/hw/vfio/region.c +++ b/hw/vfio/region.c @@ -227,13 +227,14 @@ static int vfio_setup_region_sparse_mmaps(VFIORegion = *region, } =20 int vfio_region_setup(Object *obj, VFIODevice *vbasedev, VFIORegion *regio= n, - int index, const char *name) + int index, const char *name, Error **errp) { struct vfio_region_info *info =3D NULL; int ret; =20 ret =3D vfio_device_get_region_info(vbasedev, index, &info); if (ret) { + error_setg_errno(errp, -ret, "failed to get region %d info", index= ); return ret; } =20 @@ -260,6 +261,8 @@ int vfio_region_setup(Object *obj, VFIODevice *vbasedev= , VFIORegion *region, region->mmaps[0].offset =3D 0; region->mmaps[0].size =3D region->size; } else if (ret) { + error_setg_errno(errp, -ret, "failed to setup region %d", + index); return ret; } } diff --git a/hw/vfio/vfio-region.h b/hw/vfio/vfio-region.h index ede6e0c8f9..9b21d4ee5b 100644 --- a/hw/vfio/vfio-region.h +++ b/hw/vfio/vfio-region.h @@ -38,7 +38,7 @@ void vfio_region_write(void *opaque, hwaddr addr, uint64_t vfio_region_read(void *opaque, hwaddr addr, unsigned size); int vfio_region_setup(Object *obj, VFIODevice *vbasedev, VFIORegion *regio= n, - int index, const char *name); + int index, const char *name, Error **errp); int vfio_region_mmap(VFIORegion *region); void vfio_region_mmaps_set_enabled(VFIORegion *region, bool enabled); void vfio_region_unmap(VFIORegion *region); --=20 2.34.1 From nobody Sun Apr 12 04:21:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771145771; cv=pass; d=zohomail.com; s=zohoarc; b=ZMuOC2mPULWAMjXYs3cpvIAw1cLHFuksUeRQGrayadJFuOLduNDMthgRdaEme6NckO8kS58jL+M8uxWvbOLuRwbGIstPhSXqqDLp1B+5trM2ycc5p4eFwLPG8hEgb/Q+Nsr3cTWUtuoWU8Lt9GxysO+GeST6evdZa8LQf6ZUoVM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771145771; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CCtaeA+J9txp0JDlPfz3mNWLzYpinIGsU51LoSBjUhs=; b=LkyEqOcOTfDI2Xp0bGX8rOYg7wN8i4iFcZTG/sXNwH+jOCYIy5HsUkCVaysF+dSl+JuWUiahytq9krrLsZ0HPjqsFuNphlv11tRRbjRFjiZ/shQWsxu0zW14ljITnUccmJkwHGF5zgcu+l3alwxfFDM5Rik6fDtjIVQ6XZZOn/w= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771145771090590.7939235795086; Sun, 15 Feb 2026 00:56:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vrXub-00024N-Am; Sun, 15 Feb 2026 03:55:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vrXuM-0001yO-D6 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 03:55:17 -0500 Received: from mail-westcentralusazon11013057.outbound.protection.outlook.com ([40.93.201.57] helo=CY3PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vrXuI-0003L4-W0 for qemu-devel@nongnu.org; Sun, 15 Feb 2026 03:55:13 -0500 Received: from BYAPR21CA0026.namprd21.prod.outlook.com (2603:10b6:a03:114::36) by SJ0PR12MB6943.namprd12.prod.outlook.com (2603:10b6:a03:44b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.15; Sun, 15 Feb 2026 08:50:04 +0000 Received: from MWH0EPF000C6185.namprd02.prod.outlook.com (2603:10b6:a03:114:cafe::5) by BYAPR21CA0026.outlook.office365.com (2603:10b6:a03:114::36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.10 via Frontend Transport; Sun, 15 Feb 2026 08:50:04 +0000 Received: from mail.nvidia.com (216.228.117.160) by MWH0EPF000C6185.mail.protection.outlook.com (10.167.249.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Sun, 15 Feb 2026 08:50:04 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 15 Feb 2026 00:49:52 -0800 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Sun, 15 Feb 2026 00:49:52 -0800 Received: from localhost.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20 via Frontend Transport; Sun, 15 Feb 2026 00:49:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MDZ2N9HVJ/i3Na0VquYoF+NQkGF1h17xi4igk27+Cdmslh4sgoOccNiRlgjYibxQqy+7tX2m1qRxsP7+MB8rIy6Rct/ZhnYu6qsM5n3oVSU334SBfNj9MGS6MFGLA0+0TCwALpyYnnE1WHBIH76rhRj8D/uzMYtbc+vmDSE/Yx18thkovIXrPXHu8ONM871/51QP2/7OFoxYtw4Jl3J4ZEq8rFrETP2VFgJ6O0y3FEglLpBibKIg/yJ1v2NZcdAuL7YM3cDVILFlzNm7n/wNzJGOdgv/o/7Q4YTaDcEp7Q665vKysO1bNHZ/2B2qoX9of6idlZpNfGKrYp4O9+Ulxg== 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=CCtaeA+J9txp0JDlPfz3mNWLzYpinIGsU51LoSBjUhs=; b=k6uGc8uxhQsN9GrLBVFeIKVKr1Gv86Zs3ncbMPaPeYACW26qph1SL0rel/WHvJlgOre6S1VzME4SWYOZKEdqjVk/zxij2J4R769w90YiDBZJijvwRVnaA0k8tKWigCAu6aqY7nukuPiaKiUUy62RLACFlUGA+3TdKC32dLFGdK1Z7F7nSlKLe54hCNCyBMWLqz2qqBwPA4XFkARhIj+aU0NtYmL4Z8p4HKp95nQT/1L8/Re446IZL9l+t88i4mUhGbLEwDZ53IfaudieKuKLE1oHFpOq4/h08N7MpTE3XyBC8v7uorOnYULhfUo4nMiF550Nr/TDT0N2d6dDNUsbPA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=shazbot.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CCtaeA+J9txp0JDlPfz3mNWLzYpinIGsU51LoSBjUhs=; b=ZVgF8iyg0g4QpsOHzcGjembhdiYdnzjrbUpevrpEbh8lIrGCF6TCgj5bM5IzxmSwRLocglHs0iXDcrUlLKjAfG3osqd0gON6rAkaT7UiXZbS2Zu1RakMEwUO/byuqA8pvEa4cpm/mYhoQoS0xIKdWlQz1FVonrjB1D8FO1UkyvJb5+I5v0n40Nt/aBR4ken6PC6xbWtaz5OX7T5qN9xjc0qZ8BEM59CLiK/UrqhyCBAZAwE9oaTJqMtWQqlfXfcMBv1FPu4oS/il7A1ZcgHgCTW5YIB+0mLOypsn9+2uLJM8hQMDEBlCEGb1bGmXUVRrjdcWNkrMJZFErUlMK/LA0A== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C From: To: , , , , , CC: , , , , , , , Subject: [PATCH v3 3/3] hw/vfio: align mmap to power-of-2 of region size for hugepfnmap Date: Sun, 15 Feb 2026 08:49:50 +0000 Message-ID: <20260215084950.4657-4-ankita@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260215084950.4657-1-ankita@nvidia.com> References: <20260215084950.4657-1-ankita@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000C6185:EE_|SJ0PR12MB6943:EE_ X-MS-Office365-Filtering-Correlation-Id: 1dc42f12-4d49-40f9-d133-08de6c6f36a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NlE2RKnzOdX5P3jTLtDyVrJFw1EZwpCw65dxzOB0E5ihQgHNro89PQuAfnpJ?= =?us-ascii?Q?J9J8OqCIgNy2K696h+HpGxjiiA/6Si+s9R6QZjsPrvtLpN4ySJHW9ByfD51j?= =?us-ascii?Q?ek/YlJVHVOGMfEaZexWIGX4dIQIy0p+eiM09Zd+Hl+QEHw5/o7hDHaIzRXdr?= =?us-ascii?Q?yoyONH4jMzeDG+camzLQ3P+H91NOqeC5DLzDJAJwCtVQtY8FgGvcmP4VlTbE?= =?us-ascii?Q?FXCe6dxlPrumRhame2GXbbB0l+LUH3gdZxE9C1U1chrtbF2QIb1Ub4/BoCXT?= =?us-ascii?Q?f2kIr8LYX1gs8PNdkjj/QZh6J9SMIe0r+fWRpWyaefNk0WSKBcyUjVyRtDL3?= =?us-ascii?Q?sJPjE/9c2K+l5yYdjY+gNOGtb9zNsXhyyXP+Qs3TpSHZhoQwmCDei6uSpbEp?= =?us-ascii?Q?FHRDUsV3oPthAy+v6MwJH6YJ0PmnKMtDwQ2c+d4nHEUP6K7FC8cdX9i+ZV04?= =?us-ascii?Q?JuIEPZiCBIB2aI9ea8UpuN1AKXDi0O6w9KhF7zLNKGxatWUtalQ6kzfIRVSc?= =?us-ascii?Q?OUfnSPfXQWg+EsqxzLi9y/byXQbvdalxYA9OcmoYZdHM9gnqe/nHLHsyKOQs?= =?us-ascii?Q?TNDR6aFgJBrgKIBN6gP4FAcDkaF/w4eoMY0EnH75MSHAbKfRL+iTUD+3SvSk?= =?us-ascii?Q?tNA1HVQAQHJ4CtpGvOlstoX491pDdNwnk28m4DeWtFv7AjcBJJ4DW6hQ8a+T?= =?us-ascii?Q?Ho+94F5/4v6+IFf65gu21pdgm9OEVZgGUxUgENRvN1DvRcMgXH5eTls66DTd?= =?us-ascii?Q?etrQRcluL0AgMI+okGcRb6TRC2VGHfnOOjJJrZvfH7Ww9RMM2dexlBfHj7c8?= =?us-ascii?Q?9+7R51g8C8BOrNzV+F5bf2V9Iw9lcso3pRjwBQLgTmFPCPCFl49cIogDNJVK?= =?us-ascii?Q?PXt1Svy7PFKQ2g/TyuEBDK+Ptag4+PT5uxfkmg+7puFuqCZaxWSANtrFYvqC?= =?us-ascii?Q?R6OK34llohwDD1FsDbg7p4GPA6W+0fGAKFIIfogRqPZoayMMZSARR9CZFIsP?= =?us-ascii?Q?Xy+59IADd17dXNy1THO/bI1mSv/nm+NFio7jvlpLje6r7Cst4hkpHim3QzkG?= =?us-ascii?Q?uuLlufzuu+k0a6vwjvTAIKekFDDiuLBTw1KdhmzyMOCTOP0QTLYWwxwNbCIi?= =?us-ascii?Q?kArWBRS77HhTuXwd6vcnEG3MYrsh1gEo4qym0eqtoniFpTmPL23H+Y7yGqdB?= =?us-ascii?Q?HTbdXLxRdKGa2yFei4A83U+CUnFXSTK1hcWYycFyIj/Od4YA+g0UOSDL8RKr?= =?us-ascii?Q?iCae53/4Wc98QdaAXu3WKbdnqZmIe0v0b9dqJayB7F+8iBck0WqMWHw4mQCn?= =?us-ascii?Q?mXadicZmfmHnXc/zr5n/YI1kYsToBiD2l5YzQB3gj7nywjDuGth3tPwmEa3x?= =?us-ascii?Q?bMZhA5mOCGZzUJK8u7SdgeiDr6GfTFj2TDQAEYeywi+x7PH8dhLVX67/bx7q?= =?us-ascii?Q?XIWab3x70nPTb0hF8qxPz9SoDRBwGMYH2UuW4Q1pUJ9yIq29JacE1JYI/HfW?= =?us-ascii?Q?+xQURp09zmVoQjtF/6LHPD4G4n04nNH699K8tBJFirxMsfH6sdMGA+8XJZ7X?= =?us-ascii?Q?9+45tGglJmFCBeeJZpXSiKnihH6Vs2FbDgwIQGptN7kSYRkMTLIeenJczHq/?= =?us-ascii?Q?yuSuZGXvmu9xwmJj4o8ib+vMU0Hrutkss3EHrWeikButmuLfoDbe16CczrqH?= =?us-ascii?Q?VSTy+g=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014)(7053199007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TFYXJKJWkmnZW2IYd60BrGuBdyXw4iCeLRvmw9MwGDtyZQpEvY7gA+hNmXHhXSnOR5Ftvtoe8RKDGTb4dBJnvOTJAe4GI/sBe1cdqf/5FTNDtcOk21VDGsTEdox970oHxifggx6J7AEBDe1a9IdHnxiz9TbBnpIf4l0Sipw+/AWDroGNd28C/418F7/clcF1wWaZWHhYexXd5iBo70P/3u81fDYbOflt/Vgy0EgZT2zr1TTo9a77zYDXGZ3oPzShREihq74kSpAf+RfKliYVm1gII7lPQ0L2NgeFqgfUJPHoNYzt26ZK9YENbLvnWuKPqyO97y38J9jaolhHrIRdCkUXEVLq9nsr7TS699RpugAugfC/KNc+YIwSG9V+PEKJ/sn0qArMWmTGu7k365w1ZekaL6QFHk19q0+2D2nKZ6RReqlObIaRn57+TCrj2TCT X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2026 08:50:04.5845 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1dc42f12-4d49-40f9-d133-08de6c6f36a6 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MWH0EPF000C6185.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6943 Received-SPF: permerror client-ip=40.93.201.57; envelope-from=ankita@nvidia.com; helo=CY3PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771145773975154100 Content-Type: text/plain; charset="utf-8" From: Ankit Agrawal On Grace-based systems such as GB200, device memory is exposed as a BAR but the actual mappable size is not power-of-2 aligned. The previous algorithm aligned each sparse mmap area based on its individual size using ctz64() which prevented efficient huge page usage by the kernel. Adjust VFIO region mapping alignment to use the next power-of-2 of the total region size and place the sparse subregions at their appropriate offset. This provides better opportunities to get huge alignment allowing the kernel to use larger page sizes for the VMA. This enables the use of PMD-level huge pages which can significantly improve memory access performance and reduce TLB pressure for large device memory regions. With this change: - Create a single aligned base mapping for the entire region - Change Alignment to be based on pow2ceil(region->size), capped at 1GiB - Unmap gaps between sparse regions - Use MAP_FIXED to overlay sparse mmap areas at their offsets Example VMA for device memory of size 0x2F00F00000 on GB200: Before (misaligned, no hugepfnmap): ff88ff000000-ffb7fff00000 rw-s 400000000000 00:06 727 /d= ev/vfio/devices/vfio1 After (aligned to 1GiB boundary, hugepfnmap enabled): ff8ac0000000-ffb9c0f00000 rw-s 400000000000 00:06 727 /d= ev/vfio/devices/vfio1 Requires sparse regions to be sorted by offset (done in previous patch) to correctly identify and handle gaps. cc: Alex Williamson Reviewed-by: Alex Williamson Reviewed-by: Shameer Kolothum Suggested-by: Jason Gunthorpe Signed-off-by: Ankit Agrawal --- hw/vfio/region.c | 81 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/hw/vfio/region.c b/hw/vfio/region.c index b83b09fa2f..51523a33b1 100644 --- a/hw/vfio/region.c +++ b/hw/vfio/region.c @@ -344,8 +344,11 @@ static bool vfio_region_create_dma_buf(VFIORegion *reg= ion, Error **errp) =20 int vfio_region_mmap(VFIORegion *region) { - int i, ret, prot =3D 0; + void *map_base, *map_align; Error *local_err =3D NULL; + int i, ret, prot =3D 0; + off_t map_offset =3D 0; + size_t align; char *name; int fd; =20 @@ -356,41 +359,56 @@ int vfio_region_mmap(VFIORegion *region) prot |=3D region->flags & VFIO_REGION_INFO_FLAG_READ ? PROT_READ : 0; prot |=3D region->flags & VFIO_REGION_INFO_FLAG_WRITE ? PROT_WRITE : 0; =20 - for (i =3D 0; i < region->nr_mmaps; i++) { - size_t align =3D MIN(1ULL << ctz64(region->mmaps[i].size), 1 * GiB= ); - void *map_base, *map_align; + /* + * Align the mmap for more efficient mapping in the kernel. Ideally + * we'd know the PMD and PUD mapping sizes to use as discrete alignment + * intervals, but we don't. As of Linux v6.19, the largest PUD size + * supporting huge pfnmap is 1GiB (ARCH_SUPPORTS_PUD_PFNMAP is only set + * on x86_64). + * + * Align by power-of-two of the size of the entire region - capped + * by 1G - and place the sparse subregions at their appropriate offset. + * This will get maximum alignment. + * + * NB. qemu_memalign() and friends actually allocate memory, whereas + * the region size here can exceed host memory, therefore we manually + * create an oversized anonymous mapping and clean it up for alignment. + */ =20 - /* - * Align the mmap for more efficient mapping in the kernel. Ideal= ly - * we'd know the PMD and PUD mapping sizes to use as discrete alig= nment - * intervals, but we don't. As of Linux v6.12, the largest PUD si= ze - * supporting huge pfnmap is 1GiB (ARCH_SUPPORTS_PUD_PFNMAP is onl= y set - * on x86_64). Align by power-of-two size, capped at 1GiB. - * - * NB. qemu_memalign() and friends actually allocate memory, where= as - * the region size here can exceed host memory, therefore we manua= lly - * create an oversized anonymous mapping and clean it up for align= ment. - */ - map_base =3D mmap(0, region->mmaps[i].size + align, PROT_NONE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (map_base =3D=3D MAP_FAILED) { - ret =3D -errno; - goto no_mmap; - } + align =3D MIN(pow2ceil(region->size), 1 * GiB); =20 - fd =3D vfio_device_get_region_fd(region->vbasedev, region->nr); + map_base =3D mmap(0, region->size + align, PROT_NONE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (map_base =3D=3D MAP_FAILED) { + ret =3D -errno; + trace_vfio_region_mmap_fault(memory_region_name(region->mem), -1, + region->fd_offset, + region->fd_offset + region->size - 1,= ret); + return ret; + } + + fd =3D vfio_device_get_region_fd(region->vbasedev, region->nr); =20 - map_align =3D (void *)ROUND_UP((uintptr_t)map_base, (uintptr_t)ali= gn); - munmap(map_base, map_align - map_base); - munmap(map_align + region->mmaps[i].size, - align - (map_align - map_base)); + map_align =3D (void *)ROUND_UP((uintptr_t)map_base, (uintptr_t)align); + munmap(map_base, map_align - map_base); + munmap(map_align + region->size, + align - (map_align - map_base)); =20 - region->mmaps[i].mmap =3D mmap(map_align, region->mmaps[i].size, p= rot, + for (i =3D 0; i < region->nr_mmaps; i++) { + munmap(map_align + map_offset, region->mmaps[i].offset - map_offse= t); + region->mmaps[i].mmap =3D mmap(map_align + region->mmaps[i].offset, + region->mmaps[i].size, prot, MAP_SHARED | MAP_FIXED, fd, region->fd_offset + region->mmaps[i].offset); if (region->mmaps[i].mmap =3D=3D MAP_FAILED) { ret =3D -errno; + /* + * Only unmap the rest of the region. Any mmaps that were succ= essful + * will be unmapped in no_mmap. + */ + munmap(map_align + region->mmaps[i].offset, + region->size - region->mmaps[i].offset); goto no_mmap; } =20 @@ -408,6 +426,15 @@ int vfio_region_mmap(VFIORegion *region) region->mmaps[i].offset, region->mmaps[i].offset + region->mmaps[i].size - 1); + + map_offset =3D region->mmaps[i].offset + region->mmaps[i].size; + } + + /* + * Unmap the rest of the region not covered by sparse mmap. + */ + if (map_offset < region->size) { + munmap(map_align + map_offset, region->size - map_offset); } =20 if (!vfio_region_create_dma_buf(region, &local_err)) { --=20 2.34.1