From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042059; cv=pass; d=zohomail.com; s=zohoarc; b=aI0xup4qJP8tYaZGv8Bd73ilnqjdvLJQ9m0LFGYvAQ1V0MwI7LpYvIWZ5h9jfazEHxqLAOEqhAWrA0puYL4D6RWr3zrZfWG4+jmnyDA6LsqwwB1KzTatI+Rpdkm1kTq+y74RreaqtgyhjgEI0lJwamsA47Nbb6J9PuCUfYqNEWI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042059; 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=BYtCtFYOuat60rVCiRSDys1XNxLglKwaD7uVDHmVvws=; b=jiSYo0hLEImaOU4aUVKrAGubImvw791YKaxYxh9PGc/wXT41z7OL3nYd901dxAqpz+1O834WUUC5CxJWUKE3lJPmmFHGfeCp3tq7UzzIGUV5RBXACUO8Le+g0flf/bjy0AnglFgEWbQb7NRR4HwIsqbSzy3zX8YtqoIESwlg5eM= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042059185663.6077696401908; Wed, 30 Apr 2025 12:40:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIK-0007oA-Sz; Wed, 30 Apr 2025 15:40:36 -0400 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 1uADI8-0007ju-1b; Wed, 30 Apr 2025 15:40:24 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADI5-00069m-30; Wed, 30 Apr 2025 15:40:23 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UHdkq0028201; Wed, 30 Apr 2025 12:40:16 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2172.outbound.protection.outlook.com [104.47.56.172]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468utu9tpr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:16 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by LV3PR02MB10054.namprd02.prod.outlook.com (2603:10b6:408:19c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.11; Wed, 30 Apr 2025 19:40:13 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=BYtCtFYOuat60rVCiRSDys1XNxLglKwaD7uVDHmVv ws=; b=pVEM4k18MZIUu6siWqNkmUh8V0TRgk0pdb08vHercWW/WYQZi5232qDqL DcRYTbbxQRmxtHTnS3qDXKRjcFYvEb01lo6UWicJVMBeJoKLRJH7jo7B7FLzkaRp KUF+2U6S643XuA6FKlIV9Jz5+bQdl7mlSwhjS4erBHLg6hAiks0yneJtPvEAFLUd q3w6OFPL+Mjz+RK/qjgq3xuyU+2JGu0OBjQbWIMF259X7ANJ2J2JM/t60YBuuZYY 1Na0bJ8tgBwKmf/G4M3bBNPji54bS/DYeMocgqjL+82NOHljbwxgz+QRKTXiUuEd 84RNyf7QT7vesi6dZc+13KJJ+koTw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ABrozOICY/yyccDvieHSQX3XZloqhoD3K+ex7V4RdC2zqM0B9lCtpUZeLbZTC2EN6m5KGwOtbFNmlBGUWn4zI+hfviJuJI0OuVLZ522IohSWHw8dketW+7903hcmAD8/bSZGnZrPlnl+Dxbhn39LKPO9LIOh0l12qDPr38nNqfvgJylSKuvZbxXKBkUqMaVASOCndHxxpHn1PcAxeaYWI1Pg1OMwVbKl3Q5uoqpCYiDUE8u/I5Bh5vRr40gbLoaptnOuO+csUQQFiB3zYUnWGerharogIZHxmWrom5oIHQXjI6PGyFqVgHX20CKiL7mDgDElbvNri2vg/9aLtuJDSw== 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=BYtCtFYOuat60rVCiRSDys1XNxLglKwaD7uVDHmVvws=; b=b1w842BECxPw65D2fBZtalgwNIs3u3J+O0iU0ASiQ8G8pN4ddXXJuBHyVrxwmGsihPFd6CVdR/iX3CchnmIAahZ62YT0S8VioZQZC40oTrukFRDFWs1V7FIrUMXDlAzyuLZgt8y01sMptacLotlrUIaZ2nK1azs+mkWUV9WzUbcMSqMNmhdIH/QCtIR+MfT7CLZBsoHoFZDRkZ0rr11xBT3ab02bN0KG6TbIbrcPCHyV86sbQ67PKRfgtkhW1sfWaJr+sLsCF3jO4WpflRTlacuspkRmeJfZeS/25/u5AVx/alrj6fG1RnlEg1I2eZaJLdVlLaSaOd3lgut81p9zCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BYtCtFYOuat60rVCiRSDys1XNxLglKwaD7uVDHmVvws=; b=fnEd9UxDi5wEis6IWJ0aOgticX35BHwTtIjhb9RJMFbArrWplSKtDfC9TywJdLiN1clKAvQ9WzerKl2c8XboxQfzuRx8EKP5kaDMNE9NzhhClubThECF3h05fnZaPtWv6E7YLv8LRGRbbRkB3bIwrAJaRFylgmxbIdKd8g34JOuvtkeCfU0ZodHnGlHEm+tD0Jlm6fC+50soLNDQZqEDlWtxaJUcdlajtrXqdfxS5Vgjm693UANU21Tgbd8K5pF3McyjRalVjP9ZxC5MIfLkQLQLOXGTwcZtEt+q1uFOZsWxwmkr/XX2GRZg339aaWG6X/wnWMQfNN0OsEio8LIEhw== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 01/15] vfio: add vfio_prepare_device() Date: Wed, 30 Apr 2025 20:39:49 +0100 Message-ID: <20250430194003.2793823-2-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|LV3PR02MB10054:EE_ X-MS-Office365-Filtering-Correlation-Id: 04e21e03-5ec2-4865-2097-08dd881ed351 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RlgzMEswalFycmt3amdRK05HWUxNcjBpVEFsTkZ6Z1ZoZ281WGlKK1ZuVDRa?= =?utf-8?B?TW5CbHkzUGVnSkk2VVh5S0J4emVWTzdJWTh3Z0ljWTROTENONlZYRmNzcjRY?= =?utf-8?B?by96QnRSUDBtZThLQ3hlQ1NMYktmbU9TSDVocGNEb1pNaUxvMmtSUGZtV3Fr?= =?utf-8?B?ZHBkanJOM01yQ1ZkNVpSajJNMzk2UUlTTFNRSk52RlFiMm4xVXZTTGFUeEZ2?= =?utf-8?B?MTB5Vk0zcFlGWEJtb0VOS1g4RU5Wa2lwN0lBMHlkcXJMc1d5VGNVMnEyV1No?= =?utf-8?B?cFFRVW5vVHl3QTMrckxYaHlUb3dxbzVsNVJLMnlTaE5zcy9Memlwa2lab014?= =?utf-8?B?K0QwYll0aHhSNUt5RDdFdURvdnR0TTB5d1Bxd29BYW83b2FNMFZIUW1UNWox?= =?utf-8?B?SFJWbHdzV1BYZk0zY1FtV1dTZ2FjQWdSYzRIUlNaZEg0MG14MHNHTjhMTjJr?= =?utf-8?B?SlBadXRhK3BiTkk2UWpXNktaUmVzZFU4MnRFc2pza3VOUTJzSU5wQmNZNXk1?= =?utf-8?B?cHBTVXdKeUxkaUg1Z3FHQWRXeXEzaHpGRFFveXNNN2h4cStKazdFZWdpbEt1?= =?utf-8?B?UVBBUVdNNzVCcVdQVnRPWHpRTGFnQ09uRmpBcXlBaEJ3d1Z3aldrWHNOOCtp?= =?utf-8?B?SS9zUW80L2x4aEh4eHNKcmxibkRYZkw5TmNpbzdEYjMza1lTNUZabS9pYlQ0?= =?utf-8?B?ZFhtWjNUeE15U1dQVnNvT0RRSFUzbzREemNxWGVNNDQ0UXlFdXBvaTE2NUFO?= =?utf-8?B?L0FRMVF1Ty9yZmd5ZElCYmRYRStNbEJIN2daMVBJbTFSaHF5MWxRb1Z3UWwr?= =?utf-8?B?VnNSN0M4djQ2MTRTLzFrVmkwaGZGVjBqa0I5YVZqc3IweEdqUFlQejFxdXk2?= =?utf-8?B?bEFkdm5zM1NoRk5IMUlrWTFyM0NHcTFmTFI1UE1JWXdVNWdLYkNVZUJWaTJw?= =?utf-8?B?WjRBeVBUUW1sdnZ5dkJzbmJicExlMGpoN0FIdkRyRjI1dDJOeUxCc2U5SGlk?= =?utf-8?B?RSt2SzJvdUdqMjJiSnlKaHhNVTJsZlc0V1hZN3VFNW9tamhaSlhDT1RMYkc4?= =?utf-8?B?cGpQVjhQaDdyV050T0lkZk13UFVXTUZDcW9pYml0RTBkRGg2bjFWZnVwc0hp?= =?utf-8?B?TDdjRzViMVdicHgvYng2U3ZrNjZCaEVzNWJ3SEs0dElHN2pPdGxBeFAzOWxv?= =?utf-8?B?T3h1QkFrMldQMVhSRmJyR3VUang2SGxFWnprdldsQU51bFJpTUFsT0svaW9z?= =?utf-8?B?THF1RjY5OVRYSm4xNkd1MDI0ajByY2Y2UzBKL1dnZ250QlJ1c210a1MySGNU?= =?utf-8?B?WU1EVGE0YXdwUUhsWlAyNXRLUURHV21jU3lOMEdyNExjckFIbExxTFMybldE?= =?utf-8?B?cWhsNGcvV0RmVERGSlpNdVc3R0xCSFp2ZjlSNk9DVFFTaFk0TmxjcVZDdms0?= =?utf-8?B?V1cwQk5tYTJFaUVrenk0YjJDc2FXWmdmTHB3UlFod3czUWd2VUNWZG9QRlRt?= =?utf-8?B?N1BnU3FtWVVFeS9VVHA3L2xkaVV0TXJSM21vWWc4Sm5OY093S2Vxa1kyRjFQ?= =?utf-8?B?RGk4WTJrZHJOeElTQ3BHT01uZU04b0FoL0UrSVRNa2tyNHF4SVdMcnhGelRt?= =?utf-8?B?ZDBZY1dtcExqdG5id3E4WUdWNnB6ZnJFc2lQeGFjQk9NUm9Na0gyUTYvV0dZ?= =?utf-8?B?WTdPK3ZNUEFRSjhKdkUxQ2twRXpUb25aa1lZVFBvNUVCcHZKNzRTbnJ6VU9J?= =?utf-8?B?ZlhsVVhNZ29abXVoM0pqSEpNNUxlTGR2U1BZZnJpOTQxSytJVFdDS0ZhZGZk?= =?utf-8?B?SFpieTNiVW1PLzBrU0FWR3lzSHFjLzYycXZpVmV1WDJ6TDhoSlQvMWVhWFE2?= =?utf-8?B?MXVNb0MrR0pQWkRyTG9FRUEyeVdmU2lENEVvOGVNVHVMZW1NaTVubkhOS3Vl?= =?utf-8?Q?/FvXpETl0w0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(7416014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?am5EVmFKaTdKY2lYMllMQ0RPNU9ON0s4aU5Db28xZzN6bjBDVTFPMGduZXB1?= =?utf-8?B?QlZvbXNWU1NLdnJDN25ndE4zTlVoaXZKMDRsUmxuazdVQ09GS0tGRjVYRW9B?= =?utf-8?B?NGc5eG9VTkFlWG1PNmVnM3d6SHFRM1kvTHpZS2k5L25rNEkrM05HUm9tY2hr?= =?utf-8?B?T09KeXBoZGpPVHVtbTlacjU0ZC91b0phbEpyVXNhcVo1bDc2TklUQUdKbGRx?= =?utf-8?B?RFdFblV4YVl4S2VwRkxQbW5KalNWZEZrdndBZjYxYUdTRTVsYnZVOUNpWFlI?= =?utf-8?B?blQ4VlNKelF3WlVzQWpzbU1QSDR4QnV3c2w1eWQxTHd1MVErZnNBbGN5bW1h?= =?utf-8?B?cWR3MTNxbGRtdHM0SVgza3htR0FvaFFNb2dxVWIwU2RyeXVCaC8vYlVCbFB6?= =?utf-8?B?ZUMwR1UyM2VkUU8wK3VBMmlFME1wOUZiOFVWM2V1V2t3T2hDbExlTXhOWmxk?= =?utf-8?B?R0YzMmJGMU9PWnhKcGtzN2pWN3RpRWNTd1d5OGZwWGpiako2MTVxQ0VYWUxH?= =?utf-8?B?NWllNUZzREdLTEwvOFFPbFlaaG5Gc2FMeitsdWVES1laemlKSzBnV3I2eW9q?= =?utf-8?B?aW02OS9semltY3hOVndvMUQ3bGIyRVlMRmlPV1p2NUJmeW1QN0gzUFdwNVhL?= =?utf-8?B?VEs1eWl5MmdBSkNES0V6M013TUxWMXhZQjd5aXpjNTFMT212dWhtcUpZbEJt?= =?utf-8?B?QjNoYTFvMkdUa0dlL3JrN1dYOE1Id0E0WVg5SS9jMU9zaCs3RmNFK09YWlE4?= =?utf-8?B?V2ZvSzVDTmpZWkpQR2Q3Y3Bzb1hZbDNQakdpVHdrK2NPWFBhVHVQcEFqbk1k?= =?utf-8?B?SFMyVG5Ia3RxbC9sLzFtZmcrWU5rT0taRUxSZ3M0WkVCTmxKWW5IQXR2S1Aw?= =?utf-8?B?eDE5TUFKSFJTRkJvc0JJRy9vdy9jWjlPeE5BR1hRSDl2aTJWSTZlSUxqZnV0?= =?utf-8?B?VGJqQVh6eEZWQ2pqeFRpeHE0OTJjaitiU2t5dVFxTzZRWHpqV2xldEpkMFlO?= =?utf-8?B?VUFtY2d5Nmowb2F4UVd3SUJFcEFpUW50WXpYTW5sZkswSElpQzN3YU5mN2c4?= =?utf-8?B?dlQ2NWFCQ3V5d3YydmhuZzRKRHpwbU9oZHI0bEMyQkhGTjc4RTdhTEJsY3Zt?= =?utf-8?B?YVg3WE9WcUlRQVVBWU5HVGdtbmNhakVsc05LSUhiRVRUT0JGbXlKWVJuM1V2?= =?utf-8?B?Y0xKU08ybmhCWUx5MmlTREpSUS90ZHo3ZnhhZGptWVVxZ1FsaDRqejNTdFFj?= =?utf-8?B?VWdkS1BkMW5vcllzTHVOTS9KWDlPYUhDM2M0VXVqOG40VTArYnQ1UDEyTndW?= =?utf-8?B?ZG5KNHg2azg2aW1mQkVKU1dya25YVWduTStzUnFKbFFiWjczMm9oVkdUWFl2?= =?utf-8?B?WW8yc1lvSE9acUxqYmF0bDN1OXB2S1hNOTY1R3JCR1Q4WHphUjh0b3RSU3Fu?= =?utf-8?B?bGRKZWF3bU9kNFQ2VXVQblhta0JPNzJNc0M1K3JFLzFGN3FhZU9EdUZPaG84?= =?utf-8?B?ei9oaVdSUjlCak1CemdhUnJWUWhkcDhkeFRRV25mdWpnMDNONzRwY2lRUVlK?= =?utf-8?B?eHJydHExTzJoRTlmYnVDMWdHRGI4VG9GMjJzVkdlOXNPeml2c3JMdGFoelM0?= =?utf-8?B?bWppdk1mMVo2Tk9SSHV6Mit5bDlsZVdQQVdOZWJBMHh1SEp0dkVCTzA0Nm1J?= =?utf-8?B?cVlzanpWODBVLy9iN2lBSFdUQlptWjFiVWc2cDc4Tk5tdXVWdE1VcFV2RTls?= =?utf-8?B?ZHJ2TFFqN3U2dWZWYnFSdHNEU3BYL0hYNW1mdXBTdk1hay9uOVF6d0tHQjVM?= =?utf-8?B?SGVjTTQrOGJnWmc3bHo0cVNCVmtJc3Q4QmFFNUh6U2NLWjlyK3lZaG5uclE1?= =?utf-8?B?VVJmSnAyKzMxZUY3Y3R0TnVRMTVzdFpnMHliTTV1U0lQVVhydTZZaDdSbFp4?= =?utf-8?B?YmZqSG1rSWhscTRVMWZKR3orYzV0NG9hUjQycS9BeE9RWnpSbzJXSGQzL3dI?= =?utf-8?B?a29MaW5mWEdJL2Vrbk5BTGNmVWNDR1NXMFhkS3N1NjgxR25xUHJ3L3NRZE9T?= =?utf-8?B?dUlTMUlKZXVjUEpUZ2htNjFEY1FPVkpwMWFENXd3Y1FtRG1MWDFrM1RBSkFz?= =?utf-8?Q?bGgK6DiCJopUR4wMYSLIkLqSF?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04e21e03-5ec2-4865-2097-08dd881ed351 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:13.3659 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pKFMDnwaEjoCgfn1f4JzHMydernl3rUJtzUzJY1u0t3FcHGWvd3v6t+I09j+4SR6IUeXQL1V30IKgAz0N8MKaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR02MB10054 X-Proofpoint-GUID: t_ovXdkYnQbpuYFdo1YGgZoddWCA6GRE X-Authority-Analysis: v=2.4 cv=GcIXnRXL c=1 sm=1 tr=0 ts=68127ca0 cx=c_pps a=kqCqMoaEgQjRYYKBKtAp1Q==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=20KFwNOVAAAA:8 a=64Cc0HZtAAAA:8 a=PEtKgAuwMexoxjSetS4A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXyPLvDpcvNaSS ITpys4qHUlA/7DJ/DoBDQKJ5UnhCm0KTIDZqzRUfwSlk8iAsK2BKuMFGciszPsxJYZSjXuM7CTD 8+ZZhpdMPlT7Pv9X97dhKJ/Iw77+0HQyGm2+fLlenpNH030ivnIwZ5/9UPfEsQT24rJmVqO3ya9 gkQJAgnNj0AqDgw2Y9G3aQCKU03xbIyhRU2vY4v0ci7NnlkUO4WyK3mogC0appU0uY9ZCh/fjMK I73tmM69p9Q5OK8GAqlSMYjbIphzA+b19fvuc3zkGK7vlsHxXGqVyJQO/kVh48DVy3mL0mpfS+D JL0k5Qu1F9mHLX35prL2+5+7eazEWHHSrMdktEToelG3CnHoWitQr0ipRWuZoC4WJG4hhv1Oydz 1Aq8L2bLucMwvqRHkrDv37jJ/6EuiFSqBmuulUtPihUUlR4JOKzmAfamPYMaZSpTRzmU8SkO X-Proofpoint-ORIG-GUID: t_ovXdkYnQbpuYFdo1YGgZoddWCA6GRE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042061346019000 Commonize some initialization code shared by the legacy and iommufd vfio implementations. Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: John Levon --- hw/vfio/container.c | 14 ++------------ hw/vfio/device.c | 14 ++++++++++++++ hw/vfio/iommufd.c | 9 +-------- include/hw/vfio/vfio-device.h | 3 +++ 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 77ff56b43f..aa9d5b731b 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -811,18 +811,14 @@ static bool vfio_device_get(VFIOGroup *group, const c= har *name, } } =20 + vfio_device_prepare(vbasedev, &group->container->bcontainer, info); + vbasedev->fd =3D fd; vbasedev->group =3D group; QLIST_INSERT_HEAD(&group->device_list, vbasedev, next); =20 - vbasedev->num_irqs =3D info->num_irqs; - vbasedev->num_regions =3D info->num_regions; - vbasedev->flags =3D info->flags; - trace_vfio_device_get(name, info->flags, info->num_regions, info->num_= irqs); =20 - vbasedev->reset_works =3D !!(info->flags & VFIO_DEVICE_FLAGS_RESET); - return true; } =20 @@ -875,7 +871,6 @@ static bool vfio_legacy_attach_device(const char *name,= VFIODevice *vbasedev, int groupid =3D vfio_device_get_groupid(vbasedev, errp); VFIODevice *vbasedev_iter; VFIOGroup *group; - VFIOContainerBase *bcontainer; =20 if (groupid < 0) { return false; @@ -904,11 +899,6 @@ static bool vfio_legacy_attach_device(const char *name= , VFIODevice *vbasedev, goto device_put_exit; } =20 - bcontainer =3D &group->container->bcontainer; - vbasedev->bcontainer =3D bcontainer; - QLIST_INSERT_HEAD(&bcontainer->device_list, vbasedev, container_next); - QLIST_INSERT_HEAD(&vfio_device_list, vbasedev, global_next); - return true; =20 device_put_exit: diff --git a/hw/vfio/device.c b/hw/vfio/device.c index d625a7c4db..f3b9902d21 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -398,3 +398,17 @@ void vfio_device_detach(VFIODevice *vbasedev) } VFIO_IOMMU_GET_CLASS(vbasedev->bcontainer)->detach_device(vbasedev); } + +void vfio_device_prepare(VFIODevice *vbasedev, VFIOContainerBase *bcontain= er, + struct vfio_device_info *info) +{ + vbasedev->num_irqs =3D info->num_irqs; + vbasedev->num_regions =3D info->num_regions; + vbasedev->flags =3D info->flags; + vbasedev->reset_works =3D !!(info->flags & VFIO_DEVICE_FLAGS_RESET); + + vbasedev->bcontainer =3D bcontainer; + QLIST_INSERT_HEAD(&bcontainer->device_list, vbasedev, container_next); + + QLIST_INSERT_HEAD(&vfio_device_list, vbasedev, global_next); +} diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 232c06dd15..83033c352a 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -588,14 +588,7 @@ found_container: iommufd_cdev_ram_block_discard_disable(false); } =20 - vbasedev->group =3D 0; - vbasedev->num_irqs =3D dev_info.num_irqs; - vbasedev->num_regions =3D dev_info.num_regions; - vbasedev->flags =3D dev_info.flags; - vbasedev->reset_works =3D !!(dev_info.flags & VFIO_DEVICE_FLAGS_RESET); - vbasedev->bcontainer =3D bcontainer; - QLIST_INSERT_HEAD(&bcontainer->device_list, vbasedev, container_next); - QLIST_INSERT_HEAD(&vfio_device_list, vbasedev, global_next); + vfio_device_prepare(vbasedev, bcontainer, &dev_info); =20 trace_iommufd_cdev_device_info(vbasedev->name, devfd, vbasedev->num_ir= qs, vbasedev->num_regions, vbasedev->flags); diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 81c95bb51e..9cb5671ab5 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -130,6 +130,9 @@ bool vfio_device_attach(char *name, VFIODevice *vbasede= v, void vfio_device_detach(VFIODevice *vbasedev); VFIODevice *vfio_get_vfio_device(Object *obj); =20 +void vfio_device_prepare(VFIODevice *vbasedev, VFIOContainerBase *bcontain= er, + struct vfio_device_info *info); + typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList; extern VFIODeviceList vfio_device_list; =20 --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042106; cv=pass; d=zohomail.com; s=zohoarc; b=PpMNg6w76Drn8hfDFzCvCM//W4NYkYD3U1Ku6pDAJRj6sNV4aTCyOS3XCdeFVnJ7suokOSxhrkiAWtAzdoxxm+oN/D6+Jxsd1fOPo4dppc0kwvNKRmtYS6FvCcqQ2vIm9NNOE1DFVWf/DPFcOTYhZqBQbYcvjInWdrr2Yq86ovk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042106; 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=f4C2RMe5Hvw4SKlnQsjx4UtmiBGPZo9d+IGw3JrDYhE=; b=HHxagdPM8dS3yXZ7a8ILKpx085ZVYMPmjMfBRBh5pXdx/TbAlEXlzvejiERbQ/K2jMuZX4tGRNipZfM6QwaUuRga2zsXp8KD7iGmOwIbO4qF8hOSs9OlBiwqi7qf0ymnSzfMluQ+ISH/4ZT0eavEZjSok2qYXv1r0V9ntzruhpE= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042106826548.9463739560033; Wed, 30 Apr 2025 12:41:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIN-0007pp-4s; Wed, 30 Apr 2025 15:40:39 -0400 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 1uADIB-0007kf-0b; Wed, 30 Apr 2025 15:40:29 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADI8-0006AC-9B; Wed, 30 Apr 2025 15:40:25 -0400 Received: from pps.filterd (m0127837.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UJ5kk4022290; Wed, 30 Apr 2025 12:40:19 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468ud8huef-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:18 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by LV3PR02MB10054.namprd02.prod.outlook.com (2603:10b6:408:19c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.11; Wed, 30 Apr 2025 19:40:16 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=f4C2RMe5Hvw4SKlnQsjx4UtmiBGPZo9d+IGw3JrDY hE=; b=urPYSaQFbgx7CNFQYJSzr3c8NIp+r/nvy4oswYcWngTsiTHFi9RvargaF hgswb+cCWiJkS19a5mSFXv9SfItYo0+TOVPcl8pomO+VkgDXHcjsGeOEIkuT4X/t 5B+/kbE1smy/+dlsElMJ3xcwJpP1B8HZN4oTZvv5fvAgZuP65i341lPY/EDouDGL E+YtiVZiOCzFOgktC5+5GX2VnvdIB9/UYX8PXxeJELis3L/ZJp9EfSJ7kURbT7Eo Ybd8TllbO/x486Fbl59S1k5lupQxI5VvVFt2+RVdSkzt9sKkDxf1vwHcrUS+965h ucBBu+vDjc1qEbnRbX7UKL41n4USQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HyUpCMhDGt4HZ8CHTdBWZS+FAlwXofz3HH5s77Xv9vzGm781/xQKTpl15hUlFNQVy62FQthj2Nt4tKW5Bffwh4ucqq77JJWUMiqZfyAm0dB309ZcMUKRLtGhyykk59cyEJNtLVnAOlOXLTrP7QGBb1mjN6BIOf8c8Z7ocgt/i6W961TR8A0sQe7rvFENTJKNvsGjbG+l7Xp40/Qtk1dogeg3PLqVN0iQJJghMOfGD7BVICANmMaTwb3h7t0fmpb5u4qEKmZ+SSEGPlHj/CgIt2h93o7Qcyc5aTEwaBqh9Yi8bXkK0zKL9DQPin+6uKjQPw3G9HpWDCtgiVOtWWhmrQ== 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=f4C2RMe5Hvw4SKlnQsjx4UtmiBGPZo9d+IGw3JrDYhE=; b=VNgufZVOBiB5LOUkgX1Tom24QPNa2/TsBOy5GHc6eS4FFRnVMXWd0ZkUk/Jk/961S6Ow1qnx2GtzhNpIafD3PNu+FBQMHNqr+TDJ3QbJq1FXAO7CApGYIUpzJYpDw9PHWIyY34Rgsb0vW+bP339dEjRtphAijz0mkWfSY0j8zRd0ftLpt0+6Bd2ZxHJ08RpIUANdMLZy3s7sKEqfUHBTNgVbrxGx6DPzKixB+fgJsQy2eaG0PmhWHjnjSINgvs3w4vc95CroMYcKUCeBGxLLPbxxkUixh+LBTKhQ/lQrlFdox/LpMrnnIoRI3swghI/SccWmBwUAaEPHcvb9xjJm+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f4C2RMe5Hvw4SKlnQsjx4UtmiBGPZo9d+IGw3JrDYhE=; b=VuiIjHg1FUX193tFFFMLvCnAsbjbj3D8Et3EAs97+n5Ro34Hxpi4NLzVt6boCYGf93nxqWm9yZ1zMR/Yar4/GWqvwKobsgdHOQWiA21KXBi7tse87+ZkepmToGt4QGmOllUVBdOVddX5lxqWHlognyqq2bpyZJUytkHQlqrazERW48YuqdaJv/UisjTGnidAUpqFPakLJi2uSOboHT8UAovMbVajDQdibM81OxmkUSfZSbu14YpgrWIWNYNhIlXJeDf0OXSbDBslm1BH5VVJfsBLO7ss9COlD2m4nFVbkHGwoRi8Jo0noeWzO/G0L9iWtz43qwT2n5t2yn8oBzCHPw== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 02/15] vfio: add vfio_unprepare_device() Date: Wed, 30 Apr 2025 20:39:50 +0100 Message-ID: <20250430194003.2793823-3-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|LV3PR02MB10054:EE_ X-MS-Office365-Filtering-Correlation-Id: 86d55b22-fc86-4d27-475a-08dd881ed53b x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qD1iTHRxQgjknu0h7VLLBavHGvlxYbT5hunCQGqlKARkg7P9c4vUUeEssAVh?= =?us-ascii?Q?RJ0wRwGOli/zxGWFS94M6rJzaaque5Yfsp8pFcW5kdQ8rghdtrr1Rgwff7Pm?= =?us-ascii?Q?rcfRGjmgrf5fZU9a7bP/RgR4TthYVvTiBpInKMlJsEYV2ziTrVL0yalwraqa?= =?us-ascii?Q?HRvvWxb/SbaU05ufJYedkH24eVuBKz4yulmXcAAXLgda85CkHekGVQROrpuR?= =?us-ascii?Q?RKytAs+qqGw9S/d/k0g6s6EyPam48Rz2ww7hAJvbrRrt2/PnJQS0L+vHfyxD?= =?us-ascii?Q?N/KiEPRifRGhD00GlG8DUnbBP3S7A15/ID6buzu5RIQuBzsLOhcpowdGd2L7?= =?us-ascii?Q?mzHvJja3DHx7uLq65t3SarGOUF+7cdifo8fv0vdh/AcR86hHKxU5pWlaGE07?= =?us-ascii?Q?t6/LSaEdGAkNCkVNOWzKAWn/teEkSwYk2CKx4n4BpNekTnZ+UtA9lY9g7F3x?= =?us-ascii?Q?dML05Gqwyup1nO7UgPmyTxlaxpg27/9ce9HRZqV6xV/K8oYvnjeV/WVh0okU?= =?us-ascii?Q?BTVnS28r8GdlTI/UhswM3XrYnGNGPGkrSIWLfA66jnqU2kQbOxwc4ssT4Gd2?= =?us-ascii?Q?8w8e6rAYZcsVVLmNPWC9of9w7xJQD6400MCaruYrg0DPSSMctvX2guMqoRqQ?= =?us-ascii?Q?RG/d8/KcilE/NvoMk5AKfN39kuklqpuONLNYO4jxMgkoMb8h/ms5VYmsExUT?= =?us-ascii?Q?vfAYk19BOsAHJt1O/wUCLx+OeAjnn5hm5C4c2hQKaejkVZaYbt26OIet33+R?= =?us-ascii?Q?KXIq2yOxMDyxSuB67lCa1xC9N/EzsWMMevja2kg6aHBRyBb2jTZacOiPAgX1?= =?us-ascii?Q?ZgdMGwF9KjBDIW10YGnu9rThwLC2gP2pwWsEl0st/ge7O/3oskU6IZtMHr1B?= =?us-ascii?Q?X2wxL84krlW4lv05tPmGQwP0mnGVbrlPcU6AdEaVfVWpp1ot2VWd4jEOKFQm?= =?us-ascii?Q?nozUbWLARQ26dFER+kzVDCLxFiLy/1NP0y0ZMYbHYINdPksPZTiDqZkgs1gq?= =?us-ascii?Q?IEpiQBzoBHfZidqt/3AJN1INQ47T3DOgFyG/OoHcrIogTTX61Uw7oX3VKfFN?= =?us-ascii?Q?ER0ZDOzxpwFW8gXP7SruwFLqWf79g/swYG2bFJQIliLMNnG1onL8tMYJ6yBn?= =?us-ascii?Q?iJd8dD5btAOyrU1SYbkgUW2mPyzb6gkLwadc5MHx+svN8V8pbCWNMk0u5xzw?= =?us-ascii?Q?jKt3SyQ3o7RcJbXTRY6mcPcod+cf0cpJaUTzQZppXVw+DQsp2d+6E/Imnjeg?= =?us-ascii?Q?4U1fz+XJ0ElYkvEeI8lYtZaiHeZzOc9nsdmFFsOsYd/MRQg2FEX60i2oqdpe?= =?us-ascii?Q?YM/YdlZ/XnURnX2NubmT4KH3FNYPMlrC3aV3NIcdwnmgaSRN/GXRNygN8yDj?= =?us-ascii?Q?ez8mpSJLDowm86RJL52X0BSFA3Y5e/lI6+1Ha/47wsx535/0+nVUZSgPtog0?= =?us-ascii?Q?tdaucexcWkI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(7416014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5wlf0D8lifopZICkb4HPJU97gTF6/LejY7+Gd4boN/jh293qPSsBsCrxl3I0?= =?us-ascii?Q?8q/MVDdei96vjtKHbfHDT9frfSCnRGtWqnWl1ZLckirjEa11+KRw4dVyera9?= =?us-ascii?Q?wZ6eGA8seVRJod3MKeMxX4IGlHWcnrG3EntjU20gu7NSc13QLl7HoGk/dbzj?= =?us-ascii?Q?zdb0q63GpdKouljo2mOiWb73v9VbadGRBY8xvaD0O5XhaV9o75PMhTQnIRww?= =?us-ascii?Q?hBMjvbWK+ToWP9Gj8HZAqCQT+b53swM1fM2YFWIBZITaGYk1cFTShpMcEjP5?= =?us-ascii?Q?Vwedkssl1G1vEemJWB+jM+EOuA3V3PqHmqH8VATfYRLXoCk2DkQT540XgoZC?= =?us-ascii?Q?Y0PUfumu/52SmM3KCdqrkqZ3mMarV4O7P4Fk1GYe1jytcOEL/YHlfO5W/jYK?= =?us-ascii?Q?6q+1j1g15Zuo0caT6OgtZSX3rQLA59UyROwB7kLewo2hnMJtHNgilQKxLRnd?= =?us-ascii?Q?ewg1irXSJwyS/j/7bYqx6PHh/VnwTQYYI35+8QvC0f3Hi3TCE05iCmGZKIu9?= =?us-ascii?Q?omyP8adlnOpjdtM5Xjd8QC4As9hEmgn4z9fviGsW3XiYpl1515ArqjZWHRko?= =?us-ascii?Q?BjNlg/rTcOwscgfr0svwFNDN3yros6jGCdvR9c+pXb9SXrdNAW1m6Eek4XP8?= =?us-ascii?Q?C/2eR+2Oz4sWhe92GqF3qwwd9drw0qrn/NwvFdxZyb7ntOIEjdB/eOLcQbp9?= =?us-ascii?Q?0nP+TcREzz4X5pcsNz3u3Px8p5us8vxUmagVZeVw2NEUgQprynbZg2qvzkbw?= =?us-ascii?Q?mricDZTksWP4fYQNKheFshSS+noUYP4sOXcq8vT4n+2oAGEG8qS9u5tO61oy?= =?us-ascii?Q?2vxSi8zzP5ZTscGYXY0nL/cMV80hzRlPK6j58YDZjm8IH0qIb6yNODEzrlCL?= =?us-ascii?Q?qhvO1h7zOK8hDiqakyziXWvu5RIIgD1I/rxpeTH6c0kdx62dM0CS14/3lBAv?= =?us-ascii?Q?TBOUAeMpavdJb4aCg5kJFoGg6z9uP1ETXW+J2x1s0tU3adOgz44ey69ZxYmW?= =?us-ascii?Q?FzwmtLNiLI1irYvsPOvLXk+ttF9Z6gyZ54qFtxPpZMpj6FZJqX4e6fWJIfR0?= =?us-ascii?Q?IR7ilLQV2N6CVyMhljA/y9Iv0cokRMyg50ZOGLUFLTUjWL4n+SxRlf6l0XwQ?= =?us-ascii?Q?AhKpzo+X4j+a9LVl2i0D5oEEYLIs5PsF7pzHt3yU5fTsUUrF6oqZP5sXKPzR?= =?us-ascii?Q?10CSZ2ynaCH8/o2gs1QGNZF93cRX3dKr7Mx1AE2E0GxuHQtEGrR/rDlKNH7P?= =?us-ascii?Q?SDQ8SdwnhMMiMqFcgfEyBgz3m27c9LTR3YvWT3gfqSrp+0beJvLYAg30ZEqj?= =?us-ascii?Q?ZuECdB7w0G1uthTtQoPnp3Ui5lTHTKQLHYcytlhxObjswCuer6LT0dGTRAX5?= =?us-ascii?Q?lsAnsYfCx7RlpAvHhg/wmSeCybEWhUI801RSPZZ6185oU1+uxkCa7igx5n6z?= =?us-ascii?Q?thimTIAUnaoyFGKamIygk+LgU5bIWRi1uuchYvkiMQqUYRhFqK0EurnfkiE+?= =?us-ascii?Q?6945maaE2xq3F7RkxegAugavUVgKjG+oTX7qFnKP4EvZ2NLpSEFKUuIVH8CP?= =?us-ascii?Q?GeRX/q+G0bP5h1pigcb7ExdJGPokpvJwT2u2goDh?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86d55b22-fc86-4d27-475a-08dd881ed53b X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:16.6319 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 54s84FOXZDJjtow1G2gCPZyGUJYbI5RvJ3sQZGVpnd5fsOj83P+rhfJr8bzTZ+DM1yr0ByaDF4Sfm0y4QuznNA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR02MB10054 X-Proofpoint-GUID: mN-6CiFRCze3rCQ0Yhq3US7xIZj7AQga X-Authority-Analysis: v=2.4 cv=IugecK/g c=1 sm=1 tr=0 ts=68127ca2 cx=c_pps a=vIBLTX18KUGM0ea88UIWow==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=C_v9gYMq6tuos7APg4EA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXwO6NOM23QRov Q7sUyOWqJ4jcz6cTPxLPTfFBqaGFhfRDiVAdRiZSNAOYMUZwkgTqmpon1qFZqJvXHJsL/5CwDi2 G7t0FSI53kZoK1am8IzBqL4AMXwAeaGMTPuGu+5aw781N7z4kP6yUW8xKARbIXU8BXr9Ode2EYs 1/6H9qsTcS+r0wErhJ5Qn/s5yLnXXhYJHnVVVW4zMpX+FxV1jY3LUbFF5QvwRdIZyBZewIDDo5q bii0EA0qYTm484hlE/r7riio9VVFIUDpF9p2Vx7H+Q2Z9ZE4Nt4LMZun61emWWcN/mI+1+BqIYC wIIIzOVyylWAiLwqw/Cx4UP8R0x3UA5/6kbOSbrQ2qa8gDUdj2ZIrhBQPkBAEFT+VuSZyyQasmh EAWG+FyFsIozSctpCH4WhZXg4RYmAdzoqVxlIWAXHfb1iw3gr1INjKuM0wm46CCTEb/6L+F9 X-Proofpoint-ORIG-GUID: mN-6CiFRCze3rCQ0Yhq3US7xIZj7AQga X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042108655019100 Content-Type: text/plain; charset="utf-8" Add a helper that's the inverse of vfio_prepare_device(). Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/container.c | 6 +++--- hw/vfio/device.c | 7 +++++++ hw/vfio/iommufd.c | 4 +--- include/hw/vfio/vfio-device.h | 1 + 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/hw/vfio/container.c b/hw/vfio/container.c index aa9d5b731b..1dfdc312bd 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -912,10 +912,10 @@ static void vfio_legacy_detach_device(VFIODevice *vba= sedev) { VFIOGroup *group =3D vbasedev->group; =20 - QLIST_REMOVE(vbasedev, global_next); - QLIST_REMOVE(vbasedev, container_next); - vbasedev->bcontainer =3D NULL; trace_vfio_device_detach(vbasedev->name, group->groupid); + + vfio_device_unprepare(vbasedev); + object_unref(vbasedev->hiod); vfio_device_put(vbasedev); vfio_group_put(group); diff --git a/hw/vfio/device.c b/hw/vfio/device.c index f3b9902d21..31c441a3df 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -412,3 +412,10 @@ void vfio_device_prepare(VFIODevice *vbasedev, VFIOCon= tainerBase *bcontainer, =20 QLIST_INSERT_HEAD(&vfio_device_list, vbasedev, global_next); } + +void vfio_device_unprepare(VFIODevice *vbasedev) +{ + QLIST_REMOVE(vbasedev, container_next); + QLIST_REMOVE(vbasedev, global_next); + vbasedev->bcontainer =3D NULL; +} diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 83033c352a..62ecb758f1 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -615,9 +615,7 @@ static void iommufd_cdev_detach(VFIODevice *vbasedev) VFIOIOMMUFDContainer *container =3D container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); - QLIST_REMOVE(vbasedev, global_next); - QLIST_REMOVE(vbasedev, container_next); - vbasedev->bcontainer =3D NULL; + vfio_device_unprepare(vbasedev); =20 if (!vbasedev->ram_block_discard_allowed) { iommufd_cdev_ram_block_discard_disable(false); diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 9cb5671ab5..6d2a112734 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -132,6 +132,7 @@ VFIODevice *vfio_get_vfio_device(Object *obj); =20 void vfio_device_prepare(VFIODevice *vbasedev, VFIOContainerBase *bcontain= er, struct vfio_device_info *info); +void vfio_device_unprepare(VFIODevice *vbasedev); =20 typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODeviceList; extern VFIODeviceList vfio_device_list; --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042183; cv=pass; d=zohomail.com; s=zohoarc; b=GNYqbSVPWCVIlAQMTEfPvllHhKyhcCdXqBh+Rr0KuMqbBXvGSljxun29y80Glzagn3XdWt41k6PGeU+SBoSSALMG6pPvtHVOupUEkwMFw0nsTc/M8JEcYyaE6q8rsy4uvtdE6dlgJkj6kEyvLA3ojEZBtx1T58vO1Q1kL2OkegI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042183; 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=7G/+no6VwIjsBnW2vj7MtseocxnotOTd1I9Cnqfim5g=; b=JFiwfis6s33el3QiITaoEe+c0VHtI0apyCDf69+7WwlWv7WTZYHX1bqTK8H85utjEp9z1X0cDsjRStWJkKR43vELRzcDaAYobeO0x7TdhZVDb+PlY+F8fh9DCrK9XWKPvFnPtqHcSNlm027ZvT4fUN25wAf4JQfo5QSTmyCt17w= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042183457608.2587594867331; Wed, 30 Apr 2025 12:43:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIR-0007rU-Jp; Wed, 30 Apr 2025 15:40:43 -0400 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 1uADIC-0007l0-QY; Wed, 30 Apr 2025 15:40:29 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIB-0006Ac-4M; Wed, 30 Apr 2025 15:40:28 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UFsDcE012615; Wed, 30 Apr 2025 12:40:22 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2177.outbound.protection.outlook.com [104.47.56.177]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468w18246x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:22 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by LV3PR02MB10054.namprd02.prod.outlook.com (2603:10b6:408:19c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.11; Wed, 30 Apr 2025 19:40:19 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=7G/+no6VwIjsBnW2vj7MtseocxnotOTd1I9Cnqfim 5g=; b=qmDAsmMvcqyT/Yv6ERrqT319XsBEZ6Gl82SJs2uLkxgeWsY7YD2HUv7Oc 5Td5PtyMi+8923HE+8AZfN3/wli+DOKGeKoiY5XYxWzBSw47/umOTKMrFWPYCpIb xOiz+DEoVMEWH2qIBdWyKFvxIcG6DipP3aeFkBVEgYIKnwsN2aSaB+M8NroBCX68 xYlsgYbi6OqfZuqNx3VvrvNpt2NmE3XuE7L+7/UubCBwPYw2SbLbcgUbErm+ZH53 9jSiRH2zbY4FJ5zYVSh/kqFEhmIUlqefyoihg0T0F6aDYq5h0Ahp489fa4zUf8re EXRzsubbhoeydzkUrA2/frnBtIKCg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q8KSmW0XDcg+/7tMo4TGup5KmMdbEJehno4n9ow0Sz5BsuvwdrKOhZuUUq7yehULd0xgYcOWDdj3Fp2IPqYkVeQCtCA6ITl3dK2fAzcZd/1bbJOdhGGeP4+cIYdI4Cj8sCLXSPjrlzITxY9KiSi5lviZgWmvs4wAEyC/KNCCAnPbNtmyX+wnZy8NhDmgY8tyztnbos9nRx1W40uZS7XlkDcN9TmiWdL2KitSZjg0gGHRgg6x+3HSn7HTXFR77hLuaU6nvT33kJkplq5aa1KUliBqi5W8kaOPPOgBuSbD0onRaMJicx1Y5xPrMJekBfXwrml69QtEXYxe/y5HHhD3+A== 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=7G/+no6VwIjsBnW2vj7MtseocxnotOTd1I9Cnqfim5g=; b=x4zFEcPR+zg48pGNs0BpDf/7CiZoGlvs7uN2jBE7H8EEmirLgOyvX3CFq2fb/hN2T3AFvzlqXqsA96+mAZBWLSAVpvNrhQWWYmkb5jjLB55VBEJ9pJBesh6nTbt8KRVAG6wN7ZyLASJ5gnhq8sVQTymZIRv1JlbgEpNbk/J/oyRaNtCo5O9B3BOTQ3iEhzJG2xHpJYLoNkxKgGZiuo+IgsRHAy5tbmHzZ8KCIRyfZlP+h0WEkLwA2pBRaC7jzEnovaZc7vBSP4/A99E1YcuX8bkYux/r7HJyx13QSxSM2J5GFj+lkB1/d0MOdT+f9C/V70p4d+aehgahZXN1h2Zsrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7G/+no6VwIjsBnW2vj7MtseocxnotOTd1I9Cnqfim5g=; b=vJcP22NdhybLatCPb/nmNhOvGq69QlD+w+k/yGuMPAFCmv+eczJc462uBibW/IYQcy76ru+9FLUn8aQcLmEJnE5ozmcmGRnVEGwtyFzw7j6Gk8DT1Xz2oCMrmorMcQVdbDXFhqxXOhPXHoykoVEIa/NZ7SZ00twK6QKSA4Bptpv2z8SY8mWTIE2ZG4EI5SyfUtFd6i1qzaADjTwQeE6E6chKFZ4HjAq6VjjsQ2c0HSBIeTBKcB4vl3jkIj2Pue9zA00I0vba8+D6IvbTLTp2wEeyyEdGtIuP99UkXQ/XtdMoLkcBTJXUc9Spn72N1RMFfVq6hsS4AbxZq7hwZhwMhg== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 03/15] vfio: add vfio_attach_device_by_iommu_type() Date: Wed, 30 Apr 2025 20:39:51 +0100 Message-ID: <20250430194003.2793823-4-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|LV3PR02MB10054:EE_ X-MS-Office365-Filtering-Correlation-Id: ad90ff7f-fc7f-4194-ab7e-08dd881ed701 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?aE56OFJvSnEwL1VQancxTmtqQnZFRnRVa1NzQURlelhnY3VYYmVJK0tSNWp4?= =?utf-8?B?TzMzN3NiK2d4a1VUeHJHblBYNTRkY0xVbE1FdStCK3pud1k3L1VEM2UzcjFs?= =?utf-8?B?YzhDZGNEL2lDVUdPaExld1N2THg2OUhsYmVMd2praFdVK3FaNkxpZExxY3VG?= =?utf-8?B?Y3ZESUxndWxGRHZjSWZYYllvbElTL1E3Myt0RmxhRjNrZ3hwei9YUEF5Tk9V?= =?utf-8?B?cGNYZG1zYmV2aWcvRHBaZjhrMHRvZU90NTJUNzgxU21RNWkxQVV1SHFzWXhw?= =?utf-8?B?Mjdka3dRTDdxWEFQd1BTdkhUb3g2VDhLa042ZVhUL3NETWJsV0ZSWGNrOWhW?= =?utf-8?B?bkNwTUtKV0lzL0Nla3RmNHZYVEdUQVpyc0F4dzdjVVo0cXBYK0JXQVZLSGhl?= =?utf-8?B?ZGh2K1dTcVJWY25CeWI1UVZhUDUvcEdXcVF2cmd2NlpoN3RjOUdQc0k1d2ZP?= =?utf-8?B?MHlKcUVUQ0NrVk8zRkdDUFNxNXYvR3p4NjkrMXl1L0FPY2lmcjhFc2xwaGg5?= =?utf-8?B?RGkzRzZKWmlXTkt6MVdLNEdaYytnbStRTEIwcmlwdGJ2L0dLaVAyTEtKWUNu?= =?utf-8?B?NjA4SmEvd2RMNFl0QUxvUGhmcFpySGc3MFhBWlJtdHZHWEdpVVV2ZFVHbmlG?= =?utf-8?B?WStSV2Y5amRWV3VoVjFmajF4K0dTcUpIQmNBNklJVGRLWHlMSExSZWM4Si8r?= =?utf-8?B?T3R5SVB2ZnFGVjZMNzE1OTd2NnNIdmN0bHkxbzJKRTkxdjFHekMzVWJ0THpu?= =?utf-8?B?amxhYWVkd2tlcmd3RzJjaEtqQ3c2Zkd5aDczN1BsYVd0M1dNMU9pVFlwQmNh?= =?utf-8?B?dmdHN2FSNno1RjlYRDVSUmNmanQxZ0V3dGdvekpGcWdCKy8zaDNJZjNNY3Rn?= =?utf-8?B?SEYzN3Vqc01EUHFzUjNBSkNTNE5DQmhZd2p1VnVGZTFaUWZOVEJQSkVJeWR3?= =?utf-8?B?UFh0RUZrcFA5VUxNUStTcHVXZlE1SEp5WFdXVEdRNWoxK3Fha045aU5sRk91?= =?utf-8?B?YzRoQUo3M0lZYkRrR3l6Yndyd3Y0akdidFM2a0tVRlR0L0RpK2VpSzZqd2cv?= =?utf-8?B?Z3drMk9WYnFlLzZzNlROaStoZHV0OGUwaWdPZkFxaC9aVjNoVzFLb0xtd0Vt?= =?utf-8?B?elcxdGk1QVY3eGlCb3hpRlJtWkhXakpSVzkyZEZRL1BUak8zdnlTN2x4Unl5?= =?utf-8?B?VkMrUFZGSkl6bnlzRWszbEVxSFlGTlRjN3ZwZlk4VFZXemFrNmd4eFI0Yndu?= =?utf-8?B?Nmw3N1hpY2Jna29MYiszenIwR3dNb3Nzc3ZzZEVsZHRXc2ltNzI4YlpzZjhN?= =?utf-8?B?aEdFczAzZDRPM1pnd1NjVGlqc3ppMkRLUFlLVDZpcjJwQnV6aEdqUDYwZFBv?= =?utf-8?B?WWFyUmdETGtVL1lFMitpOGI1UGIyZnpMTG1rdFEwOG1pK1hKZXdiS0kzMXMx?= =?utf-8?B?elZMSnhVUjlSVHQ4RXZRaEZWbXNkdWM5R2Q3dDZ4WkkzT0ZmdHpjMkNuMVZw?= =?utf-8?B?dWMxWkYySU1WeVNqK3V6d3Fjd2x0NjZCNTFaSE5RSDZZYkoxMUh5eENiTDdT?= =?utf-8?B?d2JoVHB0NDhYbGZNSjhxc2xzWGtOZ2picGZJZzJtUHpoeGNiSW85dDNlVkNK?= =?utf-8?B?VSt3OGJYTitMRjcyaGgrYVhKbnozZFJNTTdLdDhPRCtiT1NWVkgzQTgrRHA2?= =?utf-8?B?SU1ERkg4dER3MFhKNmpDay9aWEh3dnpWSjh6NDBadTN6cnk5azhYTG9EazF4?= =?utf-8?B?eTZWakRNa0hYL2w5bFBya1lkOHZFayt5S0VZT0xLWU9LeWRnVzF5ZjEybmlI?= =?utf-8?B?eGNLdytFQllJa0VkN213RXZGbnd2K2JQYUU2VEtyUk1MUlRTdGYwUUlJVW9T?= =?utf-8?B?eTlqOHhETGFPUzR1RjlzTHFCS0FMRUhDVTVTTUxxVlFBcUtXRzlRQTZxa3py?= =?utf-8?Q?yQY6+Wjdd08=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(7416014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WTN0L0NOajYxU2czZ0dzVWdhSW44ZlduUXUzbE9PZHRNeGVsK28rM3JXN3lu?= =?utf-8?B?c0JMK09TbFNtYjRVV0ZyUDA4dSs5SURGOTBBa2lXR05LSStWejJSeDVCSGhC?= =?utf-8?B?NlNBUUQzbmRDcURjc0dmM1QvNUU0dG9HVVp3WGpEazhXR0xRMjJtYmJoWVRm?= =?utf-8?B?N0RPZDY2YmVsZzBYQU5XV3pnMlI2am1yY0Z4SzhzeXlHblBnV0N5dXdvZ2FC?= =?utf-8?B?d0tidFZuNndRcXJYU21IM2NYTHVWUWl5WVE4QkNDZEZSYUxEZDJBNDhmbkJH?= =?utf-8?B?a1NTOE5vYU9NZ0p1aDJ4eExnNHp0RnIvY2MrVTluUnlJcVRkbFJYc0xLNlhF?= =?utf-8?B?QTcrNUFpMWIrZnFFNE5qTTNobXJsMnZCWW9LQVBwYWNDK2w1WlZQUm11WTJv?= =?utf-8?B?S2RiNU9zckZabjdoaVh4U0lHUUdJaTZaUFliSFRGTllJOVF2Nk5qNW5Nem1L?= =?utf-8?B?VlVVMlhtSjdIbnFWMzF1TmxjMjZkM0pRUmZSdzBpaXFxaFYvQ0V5ZUFhazQr?= =?utf-8?B?Y0tHeHdpcS9sQW9KTXFpVlFPOWVZc1pTdlRNaGNqQy91ZHo3WWx6aVlLNlJO?= =?utf-8?B?RlJVdjNjK2N1UnptQlJMNllEcjhSRkx1OEpuRzRzY2o2UlF2alBML0VEbHBw?= =?utf-8?B?d1BKWHFMYjlEUWw0MXVRbnBvcytVS09YeVltdE1IQkQvRFFBWW9BbitWZFdr?= =?utf-8?B?dG9YS2FlM1lWWEJrRmxqcGRZWnIxNk1TS1pRTEZaSzROUklkby8vemlxWWw1?= =?utf-8?B?dE51bVJwQkVwK2ZjMDMwbXc5VUZ5c2o5QzlzelFQdVNpSzNBbTljOGZJSUhI?= =?utf-8?B?TkdudDRBb2U2T0tpUVgzUVR1eXc5d1ZoTmpJMDRWUkx2Wk9TQzkyWTFEVlZG?= =?utf-8?B?TDJuMTFmbWE3UTUxSnZPT0gzNEUveHFzbXkzY3RQVisveXZFVlZWalJCU00w?= =?utf-8?B?TXEra2Y2eWxkZ3dIV25BYm8rbzhueVlnb0p5UHkwZDR2cUhrVVRidFpGWVJp?= =?utf-8?B?dU1MMm8zVmhYVW91dVpxdk1keEVIbXZJWDdmaUhpYXg5M0V2a0JqR0U4RkhK?= =?utf-8?B?RnBuUDgzOXZoSnM2NVV1bmplS0ZUYVVoeUtSWFp0dmtzQUl6YTNsVmd3dy9O?= =?utf-8?B?N2I5YVAxVUlYUkcrY3hpMFhFUlNLZ2ZjTk9xcnJXdU5UenF4MFFWVzU1eDJ5?= =?utf-8?B?UU93ODVlZGhuYzNoMjJwdlZwbG96RDZ3ZGNYVkZIMGpPbHZUelBmVHZXYWtG?= =?utf-8?B?UmgrVzZ0ZEVJOGl4bndJcHNuc0UzNXE2MXRsZEpROUxIMXVqR2RzU211eWZ2?= =?utf-8?B?eW9nVUpvbnl2KytpVGhCdERSUGxQRmR3dlVwVThnV1hGbWRlS0tkV2hBeG5J?= =?utf-8?B?b1lhWEU4SVpWc3lubHN3Smt0dFV5S0wxem5hL0JXbGJPY29EdHJEb3AyL0Yy?= =?utf-8?B?c1htMUtBMU4xWXA4MEdTS3UxNTNSaTVhbW1Hem9YQXhHTHFFUXR2RnU1Wis2?= =?utf-8?B?cmkyMzkxZmVZY05UU2Zyc2pYcDZoa1RRUEcxMlFReExEb1BaRTJuZndlRVJJ?= =?utf-8?B?UEw0Y2tFSFpTeDI5WFY2V3VPUnJqRkJxd05CSlJXYWRreWw0ZW1pOVgzZ3o5?= =?utf-8?B?eWtSU255NkdVU3hUNTJheVhaNHpLRWdrYkgxVTZobXdybWFWcWUxRkl6K3R3?= =?utf-8?B?eVBGbVdJY2UrMk9nMmhreGtKTjFrMFJNL1VneWdiNWhQYkxkSlVtR1lmZlFs?= =?utf-8?B?cUxFaEpWT0xrQWhHTSswcVFLdU9hcnhuWDllb2Y2Q3VxZVowWWxoWjN2c2FG?= =?utf-8?B?aS9yL3d1bmltMWdmUnd5K0tGMTlaNnNQM1NXNjlCZjI3dTgrc1hiSm1taE1n?= =?utf-8?B?T0xnK2N4Z0lyd0Nzb2VDMXhJUVlPTk9QRGVGSm5qT25ZaGZDMUVFTzNoYlB5?= =?utf-8?B?Y2QrODJzTjA4RFRHamdTKzkySUJuTEhJMkhDMEpGdWxHTVhxY1F1akhnU1NY?= =?utf-8?B?TDMrejFTRzUycURiOUYwZDU0MFM3SHQrVU9VUnA0enFnQlNpSXlVMUhydlN0?= =?utf-8?B?RVlxTzQvNk40U1NuaVd5T1k4WTNsK2VuUFVFRFlVVjZaUDExRVg4UjlyMFVR?= =?utf-8?Q?J0j+hcDWFcKjg/aoSrwBanmon?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad90ff7f-fc7f-4194-ab7e-08dd881ed701 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:19.5954 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fRsJRRfvAsfUhJRIZCGCZtVfmvR9D742bFnIdFFnllReV8IZi4uzMIIyTiZpCYQWiir83NuXxWwMJQcHNy0E7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR02MB10054 X-Proofpoint-ORIG-GUID: mZ6adnwp1GzBE6OEvbYMkkhIie9kXz1d X-Proofpoint-GUID: mZ6adnwp1GzBE6OEvbYMkkhIie9kXz1d X-Authority-Analysis: v=2.4 cv=VITdn8PX c=1 sm=1 tr=0 ts=68127ca6 cx=c_pps a=hHPfuxNGWHHq0fQgDGst2w==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=20KFwNOVAAAA:8 a=64Cc0HZtAAAA:8 a=QBjBLJMD6KpLvVksgCMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXy/fu+IOh2wlC M35YaVZitEVu1ipi679CDH+8CiUUwe5wsSZnWcfPFtPe/2Z5INGp08LwbasXCj/FCq2j/90dJ8I NPXi1qdtBOQwFW4OHtUJwafZ2M+RKFkiz6nxSssPwuCmUBtRUVdRzqFQthmvXwktbGWtaQOL6wz njLTdH1qQWzhPdo3PTLmIif6IKhL/oQGQeDqKHwGyvy8v6gx3r4E1t3yehRmuXzXkSvi+jVbXk9 pJLPhZB/R0vXf+T25L7Sk+ZxNwALOXwARfGtXZL2HiPgGsxlk8cPT60KVeMQfwlm9UFZi1vv5xR /W4S5U5vCHweK+I/gs7umZsDLSJ+UuXGnz74WP7y82URcANCdJfTlyn9IFr+ONTApLm++nAP2d/ 3Jc0XQ8TZfW9DDwgWaXieYeFV7Xt4of+eCLunIqIGXvhv3lFekk4jpofV0IqqDIeNz5dDsmt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042184007019000 Allow attachment by explicitly passing a TYPE_VFIO_IOMMU_* string; vfio-user will use this later. Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: John Levon --- hw/vfio/device.c | 22 +++++++++++++++------- include/hw/vfio/vfio-device.h | 3 +++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 31c441a3df..9673b0717e 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -376,21 +376,29 @@ VFIODevice *vfio_get_vfio_device(Object *obj) } } =20 -bool vfio_device_attach(char *name, VFIODevice *vbasedev, - AddressSpace *as, Error **errp) +bool vfio_device_attach_by_iommu_type(const char *iommu_type, char *name, + VFIODevice *vbasedev, AddressSpace *= as, + Error **errp) { const VFIOIOMMUClass *ops =3D - VFIO_IOMMU_CLASS(object_class_by_name(TYPE_VFIO_IOMMU_LEGACY)); - - if (vbasedev->iommufd) { - ops =3D VFIO_IOMMU_CLASS(object_class_by_name(TYPE_VFIO_IOMMU_IOMM= UFD)); - } + VFIO_IOMMU_CLASS(object_class_by_name(iommu_type)); =20 assert(ops); =20 return ops->attach_device(name, vbasedev, as, errp); } =20 +bool vfio_device_attach(char *name, VFIODevice *vbasedev, + AddressSpace *as, Error **errp) +{ + const char *iommu_type =3D vbasedev->iommufd ? + TYPE_VFIO_IOMMU_IOMMUFD : + TYPE_VFIO_IOMMU_LEGACY; + + return vfio_device_attach_by_iommu_type(iommu_type, name, vbasedev, + as, errp); +} + void vfio_device_detach(VFIODevice *vbasedev) { if (!vbasedev->bcontainer) { diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 6d2a112734..666a0b50b4 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -127,6 +127,9 @@ bool vfio_device_hiod_create_and_realize(VFIODevice *vb= asedev, const char *typename, Error **err= p); bool vfio_device_attach(char *name, VFIODevice *vbasedev, AddressSpace *as, Error **errp); +bool vfio_device_attach_by_iommu_type(const char *iommu_type, char *name, + VFIODevice *vbasedev, AddressSpace *= as, + Error **errp); void vfio_device_detach(VFIODevice *vbasedev); VFIODevice *vfio_get_vfio_device(Object *obj); =20 --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042075; cv=pass; d=zohomail.com; s=zohoarc; b=MxEEIOLm/dqb1S2dZLBBxoCBsAx//0RYmA4PawfoJfOHsmNnfkESsJ73ftv9ZmcEg3AGwbyOV2hHOFLhyouR9pD5UMTUhb1/iv8o1vyLVb5KgAU1Flo6rL6msZlhwF6bCudtfcg6ua6wubrIKDFvflVPZMjisAZQ+m9sRubhITM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042075; 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=E+lRL1bobcdFN88qyL5jZfY6472X7XpXva0aDq64BFg=; b=WIAYpHvlE2GM2MHBBnPG1XPKfi/9rCamCnJ7f6p4zZIn25QYzOYxD6SWKjMXA1WLxWRnef50xYsQBN9rT5kIsdvlUuUfc0fsrFWIeCFAzi1tKNldkCPL8EnXI4MDkEG5NQikfLo1EK2qxgBSxu2QhUQ/qCcTeYH2blV2wi6kKU0= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042075285132.8604088351849; Wed, 30 Apr 2025 12:41:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIL-0007pD-Mt; Wed, 30 Apr 2025 15:40:38 -0400 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 1uADIF-0007lq-Qt; Wed, 30 Apr 2025 15:40:32 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADID-0006Aw-Qr; Wed, 30 Apr 2025 15:40:31 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UDpuEo004896; Wed, 30 Apr 2025 12:40:25 -0700 Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2177.outbound.protection.outlook.com [104.47.56.177]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468y109ybx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:25 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by LV3PR02MB10054.namprd02.prod.outlook.com (2603:10b6:408:19c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.11; Wed, 30 Apr 2025 19:40:22 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=E+lRL1bobcdFN88qyL5jZfY6472X7XpXva0aDq64B Fg=; b=G6fOnpi876UYOj5dISZQax9RV0YFwCNmgG2Mca8fVCcD7GdwS2VoNFNgh FkdCFR7TR7Aq1ZpgBfbS+Jh9NiOEJy+/CFHx3r4qDKUwLIxAoKWCdzX8vZMUMWcg TRuFNGySB//1dHc2xiStcCbWUiMGYX6o8dlTYJIDI/m21cGy+ID5qZcEiD9cE3rN 93VPOWExSf+mY5ad/5pHSwQ6ichY56OuAFH7/oz6AfM+em8IklFk7m5QR7QypcJw YgVvZuZp+LRUl+KVQNvAfUv4z0eHuM/AzWeW5A2YKTqM6/rczKpmmP34uYpgfR79 u6uF2VjuHs+9g47OxXoZl7I1l7jag== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HGuJPoF81zgEnSKe2V5ecxFyM0EgFisEBFV36UCuNkGqPeKpIvRwUsh5elQrff/8llK+2/Wrwt0xci4mrHsi+2jjKWFZd3VvkeJzRitHr6DRVf5OFA+KHmEfMdoWKc26ifdAnfbJ8LMcVUBxl5w8d0fIkKS5QlHSfW8MZDcPpJ7E1EPUNu3/QugaOOV+D/A62LVlFoo7IuuubekTryOFHHxx0FwBn+LEcy7YkL2yR/xZe+zxIpYPpXn7NLPYWcHnwSTybUdly+p9qxy9+kyMwxN9pe8nEwTp5WI3PxyDgDJ4wYDSnfHvjy1nEx7KSokHjKt7hjZpEX5/ssHfXIi29A== 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=E+lRL1bobcdFN88qyL5jZfY6472X7XpXva0aDq64BFg=; b=MfsHf8HEhQcn02Ml9rZ1JFLcaENBkvQxR+c9wD1ToFHNp0mVxmJi+a1Q50EeICCVnb9WhUh12YYqGDWTSYHazx+N1PYNtz77cObl03WI8OM0HbG4uxEeI1PVnD4Xo3lw9cMuywr6wyUW+kteX1dojVietIUjOtc6RVUW4ZFb3O5UtpxZpdye0H+7xGvlROhp5ag7q90xRxXcsEUsqasjno0YTscV6e0rGRZNXITIe8BoK401Ej7ax9CsEWGyRX+TWUr3M7PlSRRQv35CJ/EOkgMNq2bIQ950Lz9oslwueo4tVqD4nOQQjI/637w84e0wyyh8xV0cP/ALMq5dmzqIlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E+lRL1bobcdFN88qyL5jZfY6472X7XpXva0aDq64BFg=; b=njCVmS+JCYyE7/sP9h/PR2gtBPTZQbbZV3ozA9NV8NDIX2XFquMLWCZDITgvWFwxKofPSlLHYpPbEpthia0DhWlpac5vRVdiAvLuMNWNhO8/Q+I0ShHSPGs6XT8GaL+LJT2AH7jZ8sI4Iw35LnSn+v2lgCtAa22Ktn02A5Ao6yrveY0Wbw7f+ZnHdSxYAiOjd7Sy0NE3IWMxmFGrUjLnYnU4PIYZdMdg21BDvsxcM/mw8SBZgxRB6X1yBPFz5i5QQljs2ajoS/+Hng3JnNAxfxgN7b18i9cpM5PIDmG1Pu2oTyX9686V5IBxQtl3A6Uex7isQVjPVMW5d0/eaR9qxQ== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 04/15] vfio: add vfio_device_get_irq_info() helper Date: Wed, 30 Apr 2025 20:39:52 +0100 Message-ID: <20250430194003.2793823-5-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|LV3PR02MB10054:EE_ X-MS-Office365-Filtering-Correlation-Id: 2902e732-5900-4d48-324c-08dd881ed8c7 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Mk1IQkdiL3VKVEtUd01LOTlLZlRnd2lIM1VSS21RWllTaWRwNlJlRVlIbGU2?= =?utf-8?B?Q3gxUjIwTmNYa0Y1UHV6QmZEN0k3ZDZLRnp3QmlIYlpVQlREVEtUdm1XYVg4?= =?utf-8?B?QTlVc0tUZ2ZPbmI0bEJuSWMya2pZSWE5SFIvTWNDOXc1RlpDZ2FuNjFxY1hq?= =?utf-8?B?Q0xlaUc4T1FDbi9zbXNpTkQ5Z0MyOFNvRy9vV2JxYUZMRm10RDV6TWMzcFo0?= =?utf-8?B?V0lLQS9GaS9XZ3lwa2FoWmU2eWJOTkpaS1k4VGlCYkdKeFEvSDR4UXFOMmtR?= =?utf-8?B?eDlSQjk0K0dndTVYRWlHN0FoRHpzSTROSisreHFSczhDUTJ4TWRtQllBVWww?= =?utf-8?B?ZGNEaEZUL2NrcG4rdG5lRTdWaHhlcWM4YnZjdlpneUVTTS9QMXBoYU9uZHJQ?= =?utf-8?B?QktjdnNnT0pJZjF2Q3RxTDFaV1ZOc09tVnl5WGh4ZmJhd3hEenVoRU5LWEpj?= =?utf-8?B?cjhBVHZhajVNelJMcGsxNncxQjc5cUpEenhpUjVjNGhlRFh3R0xiRE8xZ0pq?= =?utf-8?B?NmdhRU9JanJqaFFZRGg4cG5DaEFNeEtPL3Vpa1VkSWwzR092am5YWUlVNWR2?= =?utf-8?B?bndiZ0FYRlFBci9INUVTOVJyQTNZZ0tyeVZLUFZOaWFxRU1vUkI0Ym1BOWNw?= =?utf-8?B?OEgzeXUycUhzYzU1N3hFWXNBNTZGa3d3Rm1BMFZmZDI5WHBjL0Q5Y25hWVAy?= =?utf-8?B?ayszY3cwcVF4dGF3UUpSNkRtNDEyUkx5MC9YNVg5ZFBUWWFQRFhCdjFhakhB?= =?utf-8?B?M1RkcDNaQndoRnhTVlhrMmZBVTZDOE5QdTA1OElVcFNXNkZYamF0R3JFelJU?= =?utf-8?B?VVowN1RjcVBnWVlwM0QveGhtUEk3N202QzUwRjVVVXNDTndRcGFXamowY0I5?= =?utf-8?B?M0JSc1dHckpkRWt1TzZPU09WeDdFLzBRZEVDVnRNRktEbDBRbytNZ0xReXNa?= =?utf-8?B?cm5yT1RKVDBhcjE0TGdGMVlwYlN3SzQraGl1YkVKRUI3dUYvblg0Y1dYOXlu?= =?utf-8?B?cFd5Q2RmKzBJVkZid3Ixc2pqYkxiTWY1ZTJQY0EvZ0cwY0svbk1KVmZxMGhu?= =?utf-8?B?RWZxdkZMWUQrTmIxMzZWZjBLUkZsaDV6VEhVTm0wcDVZY1V5RDA4U1d3YnVl?= =?utf-8?B?U1FmVTdiNGtJRnYwS29ZUWwvVkk5MDR1R2FuRElvbEtaQzVBelJZZm1IRmhr?= =?utf-8?B?NGxUOE1OVE1FbnlENFB4ZUZEaisrU3FoN2tYdjB4Y2NHZi9KMTd2TzQ4STky?= =?utf-8?B?d3ZocU9vWUJuWXlGYWltOXdyQ3R0UFkvK3Y3aTZFdVZwZDJ2WDNJUjFvK290?= =?utf-8?B?TkpGbjMvM0FVZXFOdkI4dlhlSmNrQXBVKzc1MmhKVjR2OGNTSjgyNlRlU0w5?= =?utf-8?B?TWNsUzJ5OHNQaS95NWZ4ZFloZDJRdlhtQzJGeHRINURFSngvY1lMUFZCVmpl?= =?utf-8?B?MmRsNjZLMkdEUE9UVDV4NnRQcDQ5aTFNRzRSdGFhZTc1Lzg0WCtYVHVZWk9Z?= =?utf-8?B?bWF3YVlZNnNVczZNT0IwYnpCTlVGVTB3RDlGZGVieUNyNEhsVGVWa2RJc0tE?= =?utf-8?B?MGk0ejBuVm4xSlgrcXRtdE93RmVnaElKY2FKcHMxQTUzZjJTemdtUXZDUXht?= =?utf-8?B?K2hlWHZibU52YmhRMkRZRlFxaUF5UGpOVkUrcC9pN3M1Z09lTEc4UXhJOExE?= =?utf-8?B?YXpRUm02R1VXUXJTTjNrV1A3eTA1UnpLWmN4UzZ2dC9rdFZzUkgwaUhsdk8y?= =?utf-8?B?RWIvdFVaVW5VTDZVSkR3NmtORU9hdXlTSUtVb2U2NmdBZmxRYUdZK01hSStp?= =?utf-8?B?SEJaRW52SGFaK0tHc3FrLzhKQzc3RUdNVVRJbHZRVXJkcE95US9VcTN0ckov?= =?utf-8?B?cEhVYVE1angwSGRMVUpiL1RUU2RhWXJZQitMZHNxdVpyZWZWam1XRXptVW9i?= =?utf-8?Q?WywtheOQDUI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(376014)(7416014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NXdJcmZaOWtOR1VDWGhkZHBZSDVSdDYzSyt2NnZlbGhMc0srSzhDOUVjK3g4?= =?utf-8?B?a1owSzNOdXVQbjlGejNlREZmMDNsWkpLSEFlZURUTmlGUUwzRGJNcUdmQ0h4?= =?utf-8?B?VVp4WlUvVW5QKzdtVjFtaE5KV0NiMmx1clpTMm92ZlUrUUxSbkJ1bmlybWJk?= =?utf-8?B?K21DL2FQRUp3SnhwTVA4YU8zTS9FQXdVa3NiT1NCcHdLQjJ3dytWUStTZGpp?= =?utf-8?B?Ui9pMXhidlhXUnRKRE9halZsT0owWjA1bFh6TWJUQWVLazFGb212TW9USkQz?= =?utf-8?B?NXA1SGk5eHozUmhlRGVyN0FJWTBQK24wVGxWQU8wNGVZdk5HeUtqL0lRWWFK?= =?utf-8?B?WUowUkVtMW51NG9MdmxxZnJQWTRjb3VvbnFxMFd0QlFMbFpMcnBGbkVRWDVr?= =?utf-8?B?L1g0SVVmQnZNdUtKYmZGeHJYTnR0cW44SHJGazYyc0VVL3g0U0lxemdWU1lk?= =?utf-8?B?L2Rxb2NOMFVuazRtbjBBMFA3THJITGV0eHF1WnhpUSs0WU44ZGovQ3paYlBW?= =?utf-8?B?V2RMREFqR09pb3lZYm9hS2xYUUhCckJXWUVPRGRxVE41RXNkWUVoZWloYzRz?= =?utf-8?B?MlR0Q0ZGNTNvck01ZXpwMURnWFhCVU1lTmRWSnFwWERVVHlmWTRLYm1Qdjc1?= =?utf-8?B?ZmJoZmtLZlhYcVVsVjVwVzJSYW5oM1d4ajFMODc2aVZwSDFLUEsyQkZaVmNV?= =?utf-8?B?UDBMdHdHbGhIa1B0QlpSMWFlYm1FbVVLYmpoZ0E5SjZIZzdSK0VGb1pQbytx?= =?utf-8?B?ay9aai85Y0dGSGdzQVFPYnhyTDRqbDFMM1RHRWxVK2ZITVhzbFZCNzlVV1M2?= =?utf-8?B?QkhCOG9IRThWM1dQdTBSMkxOSjdseHhIY0sxTHRzc0hEcWJJcjJNT1BoYzkz?= =?utf-8?B?Sk9peTRDeVFCc3NVaG5mRWJ0bDUySTJVTEszUmZXZHltT3ZtMjBWdFVYR1Vj?= =?utf-8?B?TjNhODhrVkwvL09aU1d4ZFV1UVh2cUF3MHRwRVFyVTQvQUdwc21hZVRYamVX?= =?utf-8?B?Qmd5RnZ0Z0NLVHVmd3ZTUERQTHZHejdPV3czN0tBKzBQTzY2RDRVNCtsSmFu?= =?utf-8?B?QjRXaGlhRGpEWTBRdzdrZ0pKbnVmZVBPNERKWWtTeG5mRVNCWmtVbUpKcms4?= =?utf-8?B?V1lXdXdZeTYyQ3RqSlRVWVJVZ2p2WkdNaHVEWU1DRk45eGVreWllRXA1cHRL?= =?utf-8?B?d3E0SEM4aklaWlRMY1J4U3dmczdRL0ZGSUNiYzBKdjVsUkloNHozWStYck1l?= =?utf-8?B?STQ2ZVNuQlpSNzlkeTFmQ295c1BvdEFyNVBtREVjYUJjNC9JR2FrRktwUUJl?= =?utf-8?B?b2ZMdTB5NGlWQzhNdTh4bjY4SDgzdVVjRnZLMzF4WkliaysrTmdvVCtZTzc3?= =?utf-8?B?MWZ4cSs4ZFZOUlZTTFZaekVKaUlLU1VsM1I4Tkt2ZW9ZTFFLMHBOdWh2UUxH?= =?utf-8?B?RSt1WWg4cy9MS21Ob1FpRUpua3dHWXhsT2RDQUlLaDg5NEJ6VzZJN0I2UCsw?= =?utf-8?B?QVA3bFo1RWVlaFBvZEFxOTZERzlQUHJCY095M2MrNTlQd215UzRVcThub3kr?= =?utf-8?B?WGJ6alk2NnBkeElTbGNiQWVhWDhpWGhZRytncEN2cjU5bitTNXFrUGl2UVdk?= =?utf-8?B?a1N3T3B4VG04cTgvWkMyWXJuU3hHb0lyUk1TNWJtVG9La09uT3lxNWNNNHcx?= =?utf-8?B?MUV4QnFNQUYxQVFoUlVEckZ5Qm1GTzRtZ2FoM3cxN29QZW5UNWxHQUZvOUtY?= =?utf-8?B?eG8rOFpxRWt5NzAyRjlHb1RJbVZ6ZjNtM0tzR2NLVEI1MVZmWmh3YUxvK1kr?= =?utf-8?B?a2JWK2R4cjNVY2pVamJGbXpTNU9zS2x6OWRBOGlqUGFWQXlnQ1hENlgwWHlN?= =?utf-8?B?L2w1b2ZDYkhlR3ptQW5pN3Q2MkIxWkttME9ZZmZRb3BqTjNOdmtWQStuV1hQ?= =?utf-8?B?c0xoS0pLdlhnT3MzNUZibTJlQnFqR1B6aHdHY0RuNXJDRGhzaDRRVkF4SS9R?= =?utf-8?B?eEJZZGlzODVtelRPR2p6V284WCtZMk9jK3N5eGw4K1RPNGRYVFY5UURtTzc4?= =?utf-8?B?Q0gwZWVEcHV5SWRNSnVWY0wxN0dsdmwyeHVTeUplRU1xeFFnMkQrbS9LUkt5?= =?utf-8?Q?FaAbT9LliF3ZsZCF5/CV2n4Ta?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2902e732-5900-4d48-324c-08dd881ed8c7 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:22.5199 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: p9Hxu4hwcUka3Ru3QAbv2zDeko1ppLbmzGRenqK6+nTg5Ws6dV/k2uTd4vOLEOjdi7QvggWYhbrH+3Q5lbIurg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR02MB10054 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX82MMm3nscu9Z GKiLxEA2oECysrdWIQs2QqDR42inr6kbS6+1PJdVBA5sRFWrXTRxNIZZR0bPClQUIEGY3G1obGw kWwunmqfWGjrhpkGvIyRE3oPAUH233D+kPPLYy1IBjxRONd+9i0UvUmkybRR6Y4/QO3YrxZVFz6 rNICdKKs1WQZ5gSLKqPeBZQBp7gC1pLuGEUZImpt7XnOv5rjK4q7jAI7/iPw9mvc1LulFEvcHvm WaOuutu4fTeIYAHbWR5dSgBNHOSosaOPuX6DA7mWnOHmiYs4s86i7lyymQWI14I99vw0TUEfC3D Dpw5Y5hIK2uPLtVBSTd/mV4//hzzcs6NWL8P+it3Hb/DTEaXZdZJkGh7/JG+Hz0LxsazzPSTNJC vIQoAWNmUteOyPqAkbNLu4R8L5tPVaA18X1NNi5kBJiZ0GADEfcrWY99wt3dEzIzu6BBVxMw X-Authority-Analysis: v=2.4 cv=MNVgmNZl c=1 sm=1 tr=0 ts=68127ca9 cx=c_pps a=hHPfuxNGWHHq0fQgDGst2w==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=20KFwNOVAAAA:8 a=64Cc0HZtAAAA:8 a=Hi8EXRwGPg4AD4QmvAsA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: g-l7WZEFSmVCjqUYNrGe2tKn3QAfJhuD X-Proofpoint-ORIG-GUID: g-l7WZEFSmVCjqUYNrGe2tKn3QAfJhuD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042076567019100 Add a helper similar to vfio_device_get_region_info() and use it everywhere. Replace a couple of needless allocations with stack variables. As a side-effect, this fixes a minor error reporting issue in the call from vfio_msix_early_setup(). Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: John Levon --- hw/vfio/ap.c | 19 ++++++++++--------- hw/vfio/ccw.c | 20 +++++++++++--------- hw/vfio/device.c | 15 +++++++++++++++ hw/vfio/pci.c | 23 +++++++++++------------ hw/vfio/platform.c | 6 +++--- include/hw/vfio/vfio-device.h | 3 +++ 6 files changed, 53 insertions(+), 33 deletions(-) diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index 4f88f80c54..4f97260dac 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -139,10 +139,10 @@ static bool vfio_ap_register_irq_notifier(VFIOAPDevic= e *vapdev, unsigned int irq, Error **errp) { int fd; - size_t argsz; + int ret; IOHandler *fd_read; EventNotifier *notifier; - g_autofree struct vfio_irq_info *irq_info =3D NULL; + struct vfio_irq_info irq_info; VFIODevice *vdev =3D &vapdev->vdev; =20 switch (irq) { @@ -165,14 +165,15 @@ static bool vfio_ap_register_irq_notifier(VFIOAPDevic= e *vapdev, return false; } =20 - argsz =3D sizeof(*irq_info); - irq_info =3D g_malloc0(argsz); - irq_info->index =3D irq; - irq_info->argsz =3D argsz; + ret =3D vfio_device_get_irq_info(vdev, irq, &irq_info); + + if (ret < 0) { + error_setg_errno(errp, -ret, "vfio: Error getting irq info"); + return false; + } =20 - if (ioctl(vdev->fd, VFIO_DEVICE_GET_IRQ_INFO, - irq_info) < 0 || irq_info->count < 1) { - error_setg_errno(errp, errno, "vfio: Error getting irq info"); + if (irq_info.count < 1) { + error_setg(errp, "vfio: Error getting irq info, count=3D0"); return false; } =20 diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index fde0c3fbef..ab3fabf991 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -376,8 +376,8 @@ static bool vfio_ccw_register_irq_notifier(VFIOCCWDevic= e *vcdev, Error **errp) { VFIODevice *vdev =3D &vcdev->vdev; - g_autofree struct vfio_irq_info *irq_info =3D NULL; - size_t argsz; + struct vfio_irq_info irq_info; + int ret; int fd; EventNotifier *notifier; IOHandler *fd_read; @@ -406,13 +406,15 @@ static bool vfio_ccw_register_irq_notifier(VFIOCCWDev= ice *vcdev, return false; } =20 - argsz =3D sizeof(*irq_info); - irq_info =3D g_malloc0(argsz); - irq_info->index =3D irq; - irq_info->argsz =3D argsz; - if (ioctl(vdev->fd, VFIO_DEVICE_GET_IRQ_INFO, - irq_info) < 0 || irq_info->count < 1) { - error_setg_errno(errp, errno, "vfio: Error getting irq info"); + ret =3D vfio_device_get_irq_info(vdev, irq, &irq_info); + + if (ret < 0) { + error_setg_errno(errp, -ret, "vfio: Error getting irq info"); + return false; + } + + if (irq_info.count < 1) { + error_setg(errp, "vfio: Error getting irq info, count=3D0"); return false; } =20 diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 9673b0717e..5d837092cb 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -185,6 +185,21 @@ bool vfio_device_irq_set_signaling(VFIODevice *vbasede= v, int index, int subindex return false; } =20 +int vfio_device_get_irq_info(VFIODevice *vbasedev, int index, + struct vfio_irq_info *info) +{ + int ret; + + memset(info, 0, sizeof(*info)); + + info->argsz =3D sizeof(*info); + info->index =3D index; + + ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_GET_IRQ_INFO, info); + + return ret < 0 ? -errno : ret; +} + int vfio_device_get_region_info(VFIODevice *vbasedev, int index, struct vfio_region_info **info) { diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 6908bcc0d3..407cf43387 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -1555,8 +1555,7 @@ static bool vfio_msix_early_setup(VFIOPCIDevice *vdev= , Error **errp) uint16_t ctrl; uint32_t table, pba; int ret, fd =3D vdev->vbasedev.fd; - struct vfio_irq_info irq_info =3D { .argsz =3D sizeof(irq_info), - .index =3D VFIO_PCI_MSIX_IRQ_INDEX }; + struct vfio_irq_info irq_info; VFIOMSIXInfo *msix; =20 pos =3D pci_find_capability(&vdev->pdev, PCI_CAP_ID_MSIX); @@ -1593,7 +1592,8 @@ static bool vfio_msix_early_setup(VFIOPCIDevice *vdev= , Error **errp) msix->pba_offset =3D pba & ~PCI_MSIX_FLAGS_BIRMASK; msix->entries =3D (ctrl & PCI_MSIX_FLAGS_QSIZE) + 1; =20 - ret =3D ioctl(vdev->vbasedev.fd, VFIO_DEVICE_GET_IRQ_INFO, &irq_info); + ret =3D vfio_device_get_irq_info(&vdev->vbasedev, VFIO_PCI_MSIX_IRQ_IN= DEX, + &irq_info); if (ret < 0) { error_setg_errno(errp, -ret, "failed to get MSI-X irq info"); g_free(msix); @@ -2736,7 +2736,7 @@ static bool vfio_populate_device(VFIOPCIDevice *vdev,= Error **errp) { VFIODevice *vbasedev =3D &vdev->vbasedev; g_autofree struct vfio_region_info *reg_info =3D NULL; - struct vfio_irq_info irq_info =3D { .argsz =3D sizeof(irq_info) }; + struct vfio_irq_info irq_info; int i, ret =3D -1; =20 /* Sanity check device */ @@ -2797,12 +2797,10 @@ static bool vfio_populate_device(VFIOPCIDevice *vde= v, Error **errp) } } =20 - irq_info.index =3D VFIO_PCI_ERR_IRQ_INDEX; - - ret =3D ioctl(vdev->vbasedev.fd, VFIO_DEVICE_GET_IRQ_INFO, &irq_info); + ret =3D vfio_device_get_irq_info(vbasedev, VFIO_PCI_ERR_IRQ_INDEX, &ir= q_info); if (ret) { /* This can fail for an old kernel or legacy PCI dev */ - trace_vfio_populate_device_get_irq_info_failure(strerror(errno)); + trace_vfio_populate_device_get_irq_info_failure(strerror(-ret)); } else if (irq_info.count =3D=3D 1) { vdev->pci_aer =3D true; } else { @@ -2911,17 +2909,18 @@ static void vfio_req_notifier_handler(void *opaque) =20 static void vfio_register_req_notifier(VFIOPCIDevice *vdev) { - struct vfio_irq_info irq_info =3D { .argsz =3D sizeof(irq_info), - .index =3D VFIO_PCI_REQ_IRQ_INDEX }; + struct vfio_irq_info irq_info; Error *err =3D NULL; int32_t fd; + int ret; =20 if (!(vdev->features & VFIO_FEATURE_ENABLE_REQ)) { return; } =20 - if (ioctl(vdev->vbasedev.fd, - VFIO_DEVICE_GET_IRQ_INFO, &irq_info) < 0 || irq_info.count <= 1) { + ret =3D vfio_device_get_irq_info(&vdev->vbasedev, VFIO_PCI_REQ_IRQ_IND= EX, + &irq_info); + if (ret < 0 || irq_info.count < 1) { return; } =20 diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c index ffb3681607..9a21f2e50a 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -474,10 +474,10 @@ static bool vfio_populate_device(VFIODevice *vbasedev= , Error **errp) QSIMPLEQ_INIT(&vdev->pending_intp_queue); =20 for (i =3D 0; i < vbasedev->num_irqs; i++) { - struct vfio_irq_info irq =3D { .argsz =3D sizeof(irq) }; + struct vfio_irq_info irq; + + ret =3D vfio_device_get_irq_info(vbasedev, i, &irq); =20 - irq.index =3D i; - ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_GET_IRQ_INFO, &irq); if (ret) { error_setg_errno(errp, -ret, "failed to get device irq info"); goto irq_err; diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 666a0b50b4..5b833868c9 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -146,6 +146,9 @@ int vfio_device_get_region_info(VFIODevice *vbasedev, i= nt index, int vfio_device_get_region_info_type(VFIODevice *vbasedev, uint32_t type, uint32_t subtype, struct vfio_region_= info **info); bool vfio_device_has_region_cap(VFIODevice *vbasedev, int region, uint16_t= cap_type); + +int vfio_device_get_irq_info(VFIODevice *vbasedev, int index, + struct vfio_irq_info *info); #endif =20 /* Returns 0 on success, or a negative errno. */ --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042207; cv=pass; d=zohomail.com; s=zohoarc; b=fyPIL97TQSY6PSwE4YfMkfvcJnfPpGMTYDaBTvtLvOCh07BZoQE92tXM7LX6V8iQZjSGSb4qoA5Y0N//66U48/KHjI/FKUoFWpS+i5WnqsBFJQRROIj/VEKBQWDE+z3LuDDOMl3DpQI6tKYXKsFPQqm7ss7wrqkxaiUp6aN3QyQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042207; 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=v/Xc9NYc5YfwDjheWnOv06hGZg8UB7ae+Ab+UjQs46A=; b=QYG7XKXjcOeQ3x9CUF4xfLeNNzyPsv7Cur8ZySR22Aq7y5jRPzGx6J/3T+kYhAszf47d3TVV9JUF37HBc8RxRQ2V+8uzQMPRaRFJoXJHA01cPYla3kW344WZ4gbjDlrar1Ma9LvQPvCctwnB7FLp19d/nSjih8uz7MJZTiB9z8c= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042207059285.33867578071795; Wed, 30 Apr 2025 12:43:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIS-0007sU-BH; Wed, 30 Apr 2025 15:40:44 -0400 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 1uADIK-0007oG-RC; Wed, 30 Apr 2025 15:40:36 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIH-0006BX-Vy; Wed, 30 Apr 2025 15:40:35 -0400 Received: from pps.filterd (m0127837.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UI1NNI022427; Wed, 30 Apr 2025 12:40:29 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010003.outbound.protection.outlook.com [40.93.1.3]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468ud8hueu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:29 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:26 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=v/Xc9NYc5YfwDjheWnOv06hGZg8UB7ae+Ab+UjQs4 6A=; b=GeMC+Q/D7CWOyTug3wBpT4xSPqcgkvP2QsYTmF4FvP/+LrchC3YevEnQS HOj3+WGfIO+SriBlBnzTsaEFjLaUhriexUBiEZ8js7gC/wD1SyeoHZE5Dnq95K86 MafZ8E96LsLAE6W1IOgIMfjxtzcHA7tUYspg7reIJvl+E2w1JnHdMAuIgMg/66ND 8C1M1fi0cfzKoTdzJjykCFBA+H8/f9n/pfdpHDGrQ7wlsfnqrRpeYHjX7IOAoo4b kYbV1fTH4C48/4ODoBqDRprEKPVq/K5CyD9MMOOamcSTWYGPGRe8ZK970MFqtLWS P/Nc78skkaZrCS0RwMAWsUIpyIkbA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fCawU7CPI9QjwbCOnbxtcKEBXjXhO9eN2uN4woVYLmuNfTJRRzseASWjTuddfmdkfdXgmGPVME85bP3aVMMG+/jrWfzLdDKGp3IF0v7cjG7xqMBsLA/01hUrzHTjmv8d40ZX1FVWSKiBA5Jqp3YriPzOeRsNgTXhw8UlXMPCHNUurWTQkc2GyuNl4X1obobcSJH35QGB+GPI5MHWgfC3kdE177xrFflFkKUlz1JiQPIqF0okQXNPl07usfdkxwrIlDuT61CWVjfSbX0RCvRbSufCv77/4v//nNLY/m8UVsxmPa3anNudJ4JaC4JTGWhwrL4Zmwh8TSYsuALcI2xQfw== 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=v/Xc9NYc5YfwDjheWnOv06hGZg8UB7ae+Ab+UjQs46A=; b=MV57IehHFJNucB0SkbaCK77vRCrtdW7wCd+MDEt3kApJhCwos+Mqjf6CD701Xq8KwB5pUigpU4QfLV7saBPy+zfbB1mxCtkDN9pfzz4lofTKGTT8Yt/XX8fP75LPOLhN2vq+6pkCTCTTL5DyA4EwuiGIOQBB2pn7F6Ed/nkRNHrW6ZoZsYuMBFVvJECvrUweh0tb4bLK+uuRZ4df9JLszLJrnO4taJSG/waC6KMPU4baI8B5rzQNo5im1lTzxI5/KySasQ7dCLGC12xQUn6sVEpcIVs5xXeY5Csc0yAuhGcMyDCwg0JXXvAGRw/U+Lz225OG5jPgGaGITuKp8us5pQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=v/Xc9NYc5YfwDjheWnOv06hGZg8UB7ae+Ab+UjQs46A=; b=TxcIaty0yYOdlYgBy6mdyRlvCejZZTT3USgqfv3SvDPKsTBXOoLA4zU7a0WoCC0nA7EZUNr/cAT4MbuxrfJd+xQlAL1d7aX4Hz8D7KLJLIO4jgPOVw5107v7FVAFKBR8aV7NM52mLt5ZfTYeduEPhgkgZH7l/FDCBpleXziEw5dvcV/89lwW4QXNR6gsGYc1f666NWIXPwnqQHOUn9HcUI19lIZHZP3L8kFz0HxQ/FrTOumRrLy22Cc++UPYRIn5DYXbiKPmKOUhWtGOFCkogmf00OUJW/6juvin15GfLCMLNSvGxCwfNTIU4Z2Aw3loyJb9eX6nGQFCw9uUECTc/g== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 05/15] vfio: consistently handle return value for helpers Date: Wed, 30 Apr 2025 20:39:53 +0100 Message-ID: <20250430194003.2793823-6-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: 973a80af-c87d-4731-971d-08dd881edab7 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Oti1Sm2/LxHfOMb2LpXntCJAfEi6T/Bxb0TbFX5bGaSOjVX1NeFvDemn4Wbt?= =?us-ascii?Q?qSUUaMqjawC/4U93acRNpqhfj/3eBShqDQf9y2cawY4ukU1a1T3yi8knnN3z?= =?us-ascii?Q?CRQyJ2oxeBu3vCgW9caeHCxKgGcJnHXpxqvx7BQ3L+sNfCphDMyQjRP3YVbB?= =?us-ascii?Q?bm4yhyK3kiwJcc0et1NmlG61cbjYgs9LyUudMXHwJpcKAhSyWE1NxLAbPt17?= =?us-ascii?Q?qF0kWP50DyZDWPGbRooq+cqt0t7Vca86cGbLtGEDvZf9v6CY5q7qGp/UHTtH?= =?us-ascii?Q?M9kRL7THUXwZn2uunLBwsNrMd4C3eMQ+RJmGFKmzno3iNfCD97FMIrh5qVgD?= =?us-ascii?Q?74HArrqdtQov8jlir/iN5MSvSmH4Efi3tZQQMM2rp1VAaiKtXC2m3r0QjRR6?= =?us-ascii?Q?X87Z4ftkc/ItSNBQ0fKc1fLBb3TT2/T6H6yQRGmzFtZe2uPVF1VyLTb2Zhen?= =?us-ascii?Q?jUAVBRzkfLiyGEis+J2sH/i7/Pe+JU4hqLGYpAgLPeYxFSbst4s2PWc7w1wT?= =?us-ascii?Q?n82zJAhGt54EsFyuAII0HfC/zJFQRamMADFGoVCydl1o39i23ON0g1RaneNm?= =?us-ascii?Q?J/V2yCR63yEXoX2CJsT8XhSxG8ooS4/eMEGvsID46E9ZPvd5HtxhddjyONpj?= =?us-ascii?Q?9CRJ1duMOI9rjXaK4EHlY8PYWQgOAT8rvXCZ8rj4DRecxDWj/3SK1UptCi8r?= =?us-ascii?Q?tx6fHf/132V3R5QBdaAOlD/N0Z78Acc9a4xL6rjprgeyZoZB/zgZUBnkNUC8?= =?us-ascii?Q?1ATl0Bz8MWmrJPU0HrzlMk8FLa+hqn6Z/L0+NmjSju/NwlVNEapIo6yDTfHp?= =?us-ascii?Q?gO6TZ2FpFg95UqrziaAx7r0SVC5zQpSQHQCRrd0LZn1tduWpeBZJ0EH2Gk7/?= =?us-ascii?Q?n+pCBgfqmMTYfmIuknWOba4w/siecMzs1XvyDvZHfKPuhj5zvPPCsoQUZDPT?= =?us-ascii?Q?/6PhrG/aFD38GUYv3Y2TI+FggaiMqR5usurnaT/Dxg+7I8StAMAbJZyWQQSS?= =?us-ascii?Q?BC0mvBXac6f0vboPnPF/cMJnCme5dkni0ZNTbLAnk/V0x9N716f3pMpkLmmH?= =?us-ascii?Q?SSwIYKiuMk4zhTKU1UOQ+PqydwRooX8+jYA99fSywJfCf0lM3fKGfHnvq0fC?= =?us-ascii?Q?Or/6L24uuFFaapLbcj1Frf6RpT9mSXyIZEWP7G614pBUz4EBk8T4ev7lfsY7?= =?us-ascii?Q?toTOuNLCVUIs5KrBoV0ATDbNwx3MkpdsmLKdG6un2RFBCXeApMkOnIUmjlYb?= =?us-ascii?Q?BS2bHSwpLeTsbs6o9ZEg8WGdv5MXjw2byV084bsyEduuSgROhtSuD4qfPsBy?= =?us-ascii?Q?0ImvahRaxWw/uqZUUqlmNL8BDc7iVTTn4FcpRpHXSvn2xZJQHq1H69tX9no2?= =?us-ascii?Q?h24I1AzGYXTWa/iGrcupiN1Jwszvs7V3sIRNclUzQ1342Nyh5EVRwCBtO3FM?= =?us-ascii?Q?SQhMXPeOjfM=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Q0HK7rt0IUwFy/EBzmi+RltGcd+ORJ2w56XeBa2HYYqKYm3QDuuvJ6k+AMis?= =?us-ascii?Q?UHQbP2TeDC6yQJYyi2Bp1UpHPUrX00G3czAPO7bZX3/ctjXEItJJ2RmKY/H9?= =?us-ascii?Q?USLbd6/0b9Vr+YDTL+1rQ26LrB4SITrUxLKT7oyNlHBkH+OreGQ+Pb82Q0ad?= =?us-ascii?Q?GBdi+H1RaxLTdKM/OwxuC+jpvpD7BQ7jB/RjGlUu+uk2ESjy84GCJC673upi?= =?us-ascii?Q?A8MNMY0bMGsYOVAyc9GAVVeMIJV89rk7BcDk7JbK2woNNsu8hS/Q5Jc63S65?= =?us-ascii?Q?fFXxjGY1f0LhxRhPwfL169JstytCiBJeTBvnzboOlVjMSSvEDmH8no4Fzcaw?= =?us-ascii?Q?L+XYYL4daGcTNf2x9MzINQYtIoAB6nmzctftRJXAqNWPaCOv+fdmk6XbQ4zA?= =?us-ascii?Q?M5awwGVqNf5si0J+OKcS+nqZyx8otAr9q7wZXdj98h0vIGumj+UMpv8gp+ck?= =?us-ascii?Q?SmTECHFUlP/vDiwL1zZDHWBheu431gFIHPUodIjHf4gwzMrPHWGxPQwUanOr?= =?us-ascii?Q?Ns+TinbR5fGeNDwN5PDjFp8HkMxAKYuX+qNuZxqTO62a1GSotbuatOVhiRPT?= =?us-ascii?Q?Jp1bMnb1PH5OJUVPkKD1MVPy8W1HmPcfzv/ubncAGLJ+65z62p2oVdtsrnWK?= =?us-ascii?Q?FaTsrF5F8xzLXzHJtkGMZMaJ8oBlMgjWna9yoMIomo8FdZSFEAeN+Fv/V/76?= =?us-ascii?Q?0N2rOQp13P0ovabXPAVq3l2LYzUaLYJbSCuc3fQY6mR/0XjPUWRK3Gwww0QE?= =?us-ascii?Q?GXzcL55J7RZnL6wZGsUy21Yas9uN7IfjB4/g5HAO8y/PNseILIKGwvAgUiZt?= =?us-ascii?Q?104FmqbMY4JKLMyAqDcarIdlE+kJYJO9ZVn/4p/jFYeZkevyk4a+agCV+4zQ?= =?us-ascii?Q?47cIYavRNLeQssD4cZzaXqn/cNzCYQYotSJGovxxOc4PK5YyBc53oamHbPJZ?= =?us-ascii?Q?fdbDgBngfbCXp79D0ed8JQC2KnzEtNnMvZ9vM0bAUpuSZ68GiOUGMhZ2S3OF?= =?us-ascii?Q?ACDk5FOBcUmeDDyCukhKCnWlTw3MXl4TM6nsFsjy1mhqgkQIGNbxHevsxk5J?= =?us-ascii?Q?faB9YkVNpaS3iiLJBCuJacn2tEB+3zzgF5aCsfwbfGZFkp3IIzmsBbT3C1+d?= =?us-ascii?Q?Ar5GCB3mkeLXiCmDn4Pfw/mQPwaOCRdgStwZUx/PrvOC0OlS9G6FwX/zg6Gn?= =?us-ascii?Q?DBb2IDwH1PKUcfDqtU285QqzPT6vgoqMY1Fcvi+0xv/Mrbv1JV1OBduf7/Sz?= =?us-ascii?Q?Xxqt3lzufiuK8GZ6vVee3TNQcdfRsLFVLAZfkx4jOHkwga0dbGL0AcPODKCD?= =?us-ascii?Q?NP3Mmv7jtrDFXGk5imJgqFUhPsqdZ2VPR+Ar2gOnTurLYu1DbgaQ6yfHMZJ4?= =?us-ascii?Q?bIELFUol8vJ6ybsZc39AuuDsXW3w+qeyBDbkb5TUkSRparHD4WY0vNlKjDkH?= =?us-ascii?Q?AhVzb7nnyGUYga2h43ALXvGf8oxjjEqoF52KC/nnAweW2RLS01X5/S7HPUQW?= =?us-ascii?Q?l7Ic+CHnjSn8DIQf6x/EvJh3uVSl1Xp5e2ocw6Xr3HMNIdKoxnPVZrGreBjq?= =?us-ascii?Q?qOvTNbeD5ggTVLVmgw69kYonNm5MLFepWqyQ+q9l?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 973a80af-c87d-4731-971d-08dd881edab7 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:25.8010 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TFI3X8/t7EZtW9fxdmFx/OLzylHMzy+8ItRfuhdtDdavU0NlhFqzNR6ljB4WJ4zhJvqJPQwYFz6G1TIWSSNj2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-GUID: WrIDY82h6B-NmebkAzlBkHzh2xGdaIFA X-Authority-Analysis: v=2.4 cv=IugecK/g c=1 sm=1 tr=0 ts=68127cad cx=c_pps a=X0MiYUndXFlT04tAhnTHEA==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=khE_JiE8E1OrqPP4vgkA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX3IFo9C5z9On4 0No+gt/eZV4oO6RyF7chEegMfLXR7kcqalK6ewFaw1vMzzpi65HudwEQJT/Ro3rgsX6pvG86DSG Up5uBx2Ca+tZVWb6yhllamCKJBXdtxMub+c+zq608oHj/4eGRZTMrYT3LkHjFwigslRBU8h7RjL 2/0wgVQ5e4tO/uGh2G6r+GIp6KLmB60wvsHa9UvPAyFHsDuygiN4Uo01F8Eu3jGXw5bwwQjwcw6 l1vLgHvQmki6blx9YEvlGm8dPpWEWxV3DcB1GbQWsWM0FrfmKZxA/ixt9FHVqmt+pkBSDZwkO3E WakhFwOgF6SgoAURRj/ewEANvRE3QkZ4278CcjjcANGmMVWt5TnW8CZeYTI21ccEbk5zhkVjAcU Oz3AvVLLkvrfUKz7vAhyA0lK0ajHnnzTtoh4fk+aWdFUv5OfmMPn+mKqrkhAnqgz99GOzN9e X-Proofpoint-ORIG-GUID: WrIDY82h6B-NmebkAzlBkHzh2xGdaIFA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042207957019000 Content-Type: text/plain; charset="utf-8" Various bits of code that call vfio device APIs should consistently use the "return -errno" approach for passing errors back, rather than presuming errno is (still) set correctly. Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/pci.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 407cf43387..768c48d7ad 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -398,7 +398,7 @@ static int vfio_enable_msix_no_vec(VFIOPCIDevice *vdev) =20 ret =3D ioctl(vdev->vbasedev.fd, VFIO_DEVICE_SET_IRQS, irq_set); =20 - return ret; + return ret < 0 ? -errno : ret; } =20 static int vfio_enable_vectors(VFIOPCIDevice *vdev, bool msix) @@ -459,7 +459,7 @@ static int vfio_enable_vectors(VFIOPCIDevice *vdev, boo= l msix) =20 g_free(irq_set); =20 - return ret; + return ret < 0 ? -errno : ret; } =20 static void vfio_add_kvm_msi_virq(VFIOPCIDevice *vdev, VFIOMSIVector *vect= or, @@ -581,7 +581,8 @@ static int vfio_msix_vector_do_use(PCIDevice *pdev, uns= igned int nr, vfio_device_irq_disable(&vdev->vbasedev, VFIO_PCI_MSIX_IRQ_IND= EX); ret =3D vfio_enable_vectors(vdev, true); if (ret) { - error_report("vfio: failed to enable vectors, %d", ret); + error_report("vfio: failed to enable vectors, %s", + strerror(-ret)); } } else { Error *err =3D NULL; @@ -695,7 +696,8 @@ static void vfio_msix_enable(VFIOPCIDevice *vdev) if (vdev->nr_vectors) { ret =3D vfio_enable_vectors(vdev, true); if (ret) { - error_report("vfio: failed to enable vectors, %d", ret); + error_report("vfio: failed to enable vectors, %s", + strerror(-ret)); } } else { /* @@ -712,7 +714,8 @@ static void vfio_msix_enable(VFIOPCIDevice *vdev) */ ret =3D vfio_enable_msix_no_vec(vdev); if (ret) { - error_report("vfio: failed to enable MSI-X, %d", ret); + error_report("vfio: failed to enable MSI-X, %s", + strerror(-ret)); } } =20 @@ -765,7 +768,8 @@ retry: ret =3D vfio_enable_vectors(vdev, false); if (ret) { if (ret < 0) { - error_report("vfio: Error: Failed to setup MSI fds: %m"); + error_report("vfio: Error: Failed to setup MSI fds: %s", + strerror(-ret)); } else { error_report("vfio: Error: Failed to enable %d " "MSI vectors, retry with %d", vdev->nr_vectors, r= et); @@ -882,17 +886,21 @@ static void vfio_update_msi(VFIOPCIDevice *vdev) static void vfio_pci_load_rom(VFIOPCIDevice *vdev) { g_autofree struct vfio_region_info *reg_info =3D NULL; + VFIODevice *vbasedev =3D &vdev->vbasedev; uint64_t size; off_t off =3D 0; ssize_t bytes; + int ret; + + ret =3D vfio_device_get_region_info(vbasedev, VFIO_PCI_ROM_REGION_INDE= X, + ®_info); =20 - if (vfio_device_get_region_info(&vdev->vbasedev, - VFIO_PCI_ROM_REGION_INDEX, ®_info))= { - error_report("vfio: Error getting ROM info: %m"); + if (ret !=3D 0) { + error_report("vfio: Error getting ROM info: %s", strerror(-ret)); return; } =20 - trace_vfio_pci_load_rom(vdev->vbasedev.name, (unsigned long)reg_info->= size, + trace_vfio_pci_load_rom(vbasedev->name, (unsigned long)reg_info->size, (unsigned long)reg_info->offset, (unsigned long)reg_info->flags); =20 @@ -901,8 +909,7 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) =20 if (!vdev->rom_size) { vdev->rom_read_failed =3D true; - error_report("vfio-pci: Cannot read device rom at " - "%s", vdev->vbasedev.name); + error_report("vfio-pci: Cannot read device rom at %s", vbasedev->n= ame); error_printf("Device option ROM contents are probably invalid " "(check dmesg).\nSkip option ROM probe with rombar=3D0= , " "or load from file with romfile=3D\n"); @@ -913,7 +920,7 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) memset(vdev->rom, 0xff, size); =20 while (size) { - bytes =3D pread(vdev->vbasedev.fd, vdev->rom + off, + bytes =3D pread(vbasedev->fd, vdev->rom + off, size, vdev->rom_offset + off); if (bytes =3D=3D 0) { break; --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042182; cv=pass; d=zohomail.com; s=zohoarc; b=Qu957mMs6d29cuJ+NuG1Es6XBi012ZvWcbMBYSZ7mNcMLFzf5g2AcTx6PJ6nv8SR2FoPO2qUryhdsNv2Fukz49JDuzD9xvkqtnQJ22vTnahw/+y1XICH25viT2W/yjkkEz8i9UQWeQZTCmXZdxMInWQQiI16eBwUjNlAiy+YtuY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042182; 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=1CBuDYSti8UgkeCHP+Bwa5i368bO7/UQoR+qz975bjw=; b=deKu/X7zPoof2G/4OZvrqNZaB+MOzclphGfrKOraaXFbZiiJ1bcfQgYaidrpKbLNK5pC3bCnhd+7oMJPHcCHB2k9dPRgxNDJmEMnMZMFFb3VtGpkXXBBJNUZY5Gz2AaM1u0HfI4oFGeipHn6wNFd11maHITotc4WEcak0cRvkBw= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17460421829251015.9782800885905; Wed, 30 Apr 2025 12:43:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIU-0007ti-6N; Wed, 30 Apr 2025 15:40:46 -0400 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 1uADIK-0007oF-RZ; Wed, 30 Apr 2025 15:40:36 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADII-0006Ba-Bd; Wed, 30 Apr 2025 15:40:35 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UJPRsc031241; Wed, 30 Apr 2025 12:40:31 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010006.outbound.protection.outlook.com [40.93.1.6]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468w182472-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:31 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:29 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=1CBuDYSti8UgkeCHP+Bwa5i368bO7/UQoR+qz975b jw=; b=tlb40u4w/nLDNv/BKGzfjSWFq+g+q+nShk2IjHOJux0twr5Lwb+IuRI8O uhVsP4aCEA204+blFMWm5uZocf/T9zCXrADpoTh7tCJeN2C3haRtKfka848Vc9yE yHKTY7xSMs/KsSIPGBuWcKGBrH8D5Z9E07s6FekdBWjNHXlnoK9JO0C+rlVXaVvP SXdmwvqlNKWCDuK8/Vazxo/QnSY1ZSb2c+Kjb/142C7+zPMuVX/+/Xjnm6anHf3Q rNHnO5NO/KY5LwEDfYXFceiRGUmL0SIzEd+Xn7mGc2L0PS5OAqj1r/3UMC1Zrnq6 YoqDJy4hwVOM6CYr6uv91V46YBvYw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=t5b4wJILnYTLAF5PQ8gpH80aJPLa8y03GnrDHMNqYI3nTpLkvumkjbXH+gxnh9BVuI2ebV75qEZ9bb5iqqZAdVHSRVD2kpurWZXzfx3rraJZLijnY2PdD0pOzguy/AqFnMMpQ6LIKebBBxbW/Ih4un6Y22PD/WtIyMX3bFTW2BKdXGASRf89NgekDA91mZI1JJog72dO3ayqaxfjMIVTVSX2IgAcGIATOe01danP+eqVv76ZXbtJFCBOCzW6cIpG7boEQeRI3CbhO0hJ9Dlna6WOhEV3tFUylfh8ccpPJw5clqjfjgsCMOURbLJMmket/6snrsu9yf0def1J/jwekA== 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=1CBuDYSti8UgkeCHP+Bwa5i368bO7/UQoR+qz975bjw=; b=Wv6oGOdf1ljGxVYPtX5GNW6h4vhnpSTti+aMTd4udc4OipVUQPNJ2mMzOZN9+9jKmC6fDefyxnU23AZcZ5SYomkTpJvCskZMK5UlbFp3fK+21WHfqSVKQjSYq0Lmc5QjdDUOBD8dT6npZw7XOF94Xr9sad+54mcHKlRpkXkOLvvB87o9Bs+SVRMKC5o86GM5nUC6iUzW3MN63H2zQtYXlLO8FgTJnRNx0fhptE0khpWkQb7xxy16W+sz9JjrlOtznznXIcOTh1kE1MIkEB7gpyYHrwniIaH3erufa//lh8YHyQxYoKMKkyxOU5zRy4JYudhosPmZC04DaVvUIs5i8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1CBuDYSti8UgkeCHP+Bwa5i368bO7/UQoR+qz975bjw=; b=RJNEM4k930PRviefqKY4+ZYn6ayubgdOTLaKLMVmFZLuPoLRvXYXOYN2VSBU8yXZ10U2ygDXksqJ0fD1WU8UnwKgIqEXKD9JTPFKD5DDbPO0VH3ew/Kny6PWdGVyJk4Eh3b6sfcTht0Y2JX3ylWXnJeSia/qAWz3qJIbePfp2AoPVii0OFvjkCdiiphScigEqp1zQvL3XyH+W1mWeg8veQ/74tdbzxQTMeViXgsG31Sy6Rii7zbAOz7nCs79PQ8+Q5f92+Ifv6HESb6HTLBEa6kQ4ym4c82Hk5JOb1tZzgrWjJzRF6F8MidiYraQM5qgFJMxnHHLNSuLFSQ7xJ4jzQ== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 06/15] include/qemu: add strread/writeerror() Date: Wed, 30 Apr 2025 20:39:54 +0100 Message-ID: <20250430194003.2793823-7-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: d1f0fbd4-39d8-41e1-d19c-08dd881edc82 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?o8N2kNKY1lZKmBm7qf94K7Xg1QVZyY4ZRRj2qMPk2bC+snLWonXPbjiPDrCI?= =?us-ascii?Q?00CIc2+duRRsh/k1ytqnr2djWuZDu1lqiZ8IHujwLh0+1avC/O00IRyE/7z9?= =?us-ascii?Q?ORJ9wxFCkZ1whA0+haP6HZ0Nxg2rn5qFFSmz6voYzDyCzcDrhkcKYU2mGErV?= =?us-ascii?Q?vRnMKV9YmbMUjb/0OZzIGzTrUnEKQCdEsaTvjgbT32j/uO/YUIqOBS5fc5kq?= =?us-ascii?Q?nq3maWaNxNThNKnTuZuTLX8cykiwyrugM65E9sQUrew5soD/OR4j0Xh11M9i?= =?us-ascii?Q?40o/bHIIW+tutibkAgnzoCEXXg0G6A+5/oy5nsadCCKkvKIkgVUvEtUMAb0m?= =?us-ascii?Q?zWdfkO0j7mXDGTNSBEaUZ1s5xepTnSwWWbgve4Kvv5MC9OxqrECGs4Z+ogal?= =?us-ascii?Q?9aF76P73SsXDf4dak7qdHuELaFTGewjDwVdgeqCNGdwmnE6TTeP9KTCmzA6/?= =?us-ascii?Q?JqpCQ+VOfOni66eGGMesxTaJNOgIuzP+eznaFKAmqFtHX0uqsanFj1mZAGBB?= =?us-ascii?Q?uT7EBdls2CyzYKaF+nwXf0kKY8a1QgAa5meRtCBNLI4segFshbsF7jHiIq1D?= =?us-ascii?Q?tdcrZL4PsbmjyXQfsrXRAQxmtRr1GwEyRQ+hjc+zrHrmrevLvRv5Ka0FlDKM?= =?us-ascii?Q?1UK6zncHXCzEAB03LcuLvoEW07J4EoT9elCkYsruwHMzv5qMkUczCR1PWNtI?= =?us-ascii?Q?+dhes19r29Pr0vOkVLjUAm3dnA9CyzLa5PUHwpdITMZhflLLZrIKlxatteUd?= =?us-ascii?Q?GsKd0acqZGF/jaVcrIz2mE2fpHHIX5AkeYZn+0vksSTjZR7yBVt4Y4mpx/9Z?= =?us-ascii?Q?IoQ5GHYTyzB2/B3dCnBY0kcqWWnVF6qqeGPJXd22AQ06Uj8lMY1AKVtX9wtM?= =?us-ascii?Q?JueSJF/BG2ti59aIe0hZuXio7ODyfovulqhNWmYzJMMCOpf2LtCCX9XWVw3L?= =?us-ascii?Q?KAyCmKMsFJ7lyPU7Qm5uc269aUhqS+sJecHPBwxx10Rd8rq5BUxJzLIHSMt1?= =?us-ascii?Q?P7pt2UbQS1kNpGyGxogOnwmp0OQ7k4XpItsLtvYB/VQbDY+tzLeQc3Zyzzjf?= =?us-ascii?Q?JXqfvhWCS4IVZLxykpgu39VmUZ8BBpiD1SvFhOnJBkfHppXWIJn6B9x5MgQn?= =?us-ascii?Q?KaNR7KE0US/RG07nOWNlRC/ILHNOOECsskVJhI/rUEfyDTGKy+VRnXEvYiLt?= =?us-ascii?Q?ndchhuFve4uf4i8KYGhpTGeVp0aArDzUmfKMFrwwDkfLMteM98SWKPXJRVQQ?= =?us-ascii?Q?s4dqbA/jsQD7TV8K28z1oG2BPXdV/fPJ24nxAKN5T5HbY9CKVE2KUdP74iEA?= =?us-ascii?Q?7/bO83QWk4OIphTPSclsGIPgc1gCancfN/muR6E5KJixjWX5Aj6/HFuoQ4dS?= =?us-ascii?Q?BH4+QS/kyurNQA0I4DI/kl+2RlLwtE82aeaaHo8ZM5qjdkelkOWkuwlZnZrA?= =?us-ascii?Q?gJqUTMG1kAI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?icyAZH/SjU406Ouot8bHtvJIb9poqF3Tr4gPzz/DTgFNOiak230UG1EWuzi7?= =?us-ascii?Q?ZoVLpUaQXmbjsYu/M3f3K84rXuoZ71571RL62LFGaBmf59RgYODB4YJB0pUB?= =?us-ascii?Q?l0tKzg9V53ogq60tnAEUP5N45VIFabhExNNz86NF+4rXgo5Hi9CnW2xfxpOU?= =?us-ascii?Q?QSdOL8KOp6rqq8s5CTFmHb+wHfOgqqTFEsCruiLQ98yTHPNBxY1RtY4ydRF4?= =?us-ascii?Q?IDajsX+aO1RBdNbRa4/rwpAiAdW97GyqQTdmBskKutEEqiKa9NhZkRAsuKcC?= =?us-ascii?Q?6OiHdzRZf1ZYMGoIjKAXKUb1FLvddJihD53v3pfx7lapBYD/G6/klrvUiFNT?= =?us-ascii?Q?qF6CtK8Y8DGY1C+heuikJwCbD4V7Y2DiRZgskEF08pQpAB+AogyBYCrxT+cz?= =?us-ascii?Q?kGBFUl7XbFWsvC0hIGODkEX5uQzQtcktnMZQTCJPcuV4w2+z+JAAvzOFxPIm?= =?us-ascii?Q?OSZcRU9D6Uqk1Hed+WsCqKfNPPSNSawYp8yO9QlvXLy5dz4oYRP0WSZiYhAG?= =?us-ascii?Q?73iN7gzoDrMWBLlnZ8JXxbdTs7D56giOL6vcladtCqJEx6cTXnNHE4AdA1Q0?= =?us-ascii?Q?8LjmeSHY4NubbcYDchsHBaWGOG3Pq1Xcm8JSZWQqhkztpQdhtSRzT7QntjI+?= =?us-ascii?Q?HEcKTy00fi77Gl1svJNArRE+QHKshzUvMALxz/vfs3ZF7ALJ9+ecz+0Oyrc+?= =?us-ascii?Q?Ap+F+E+GPJ+0qBTGD9gxyp8aHL+1vdy11QPk2Y5Idi4xUFGLkpDXwfmee20t?= =?us-ascii?Q?Ku1rKmWaVwGBh+JHcELlfYNmZEBz6PcwQpOe9j+nLxmJj/QeNbj9EUiNPoap?= =?us-ascii?Q?mMQN/Ko+MtZFD5TRSRMq8UpYlv7t1fC5n3rlmUGNslR/L91qJIpSYULNb1PI?= =?us-ascii?Q?FfRwoAENb/oiV5+STQ6EW3tClZlyew4aACJ0irUdWqAMpdoxEFmOsywLGTce?= =?us-ascii?Q?qo1F5tbwPzSovPosj24I5HF36JBorrmmroAzCQXikBoikqkrSkLsgF1qsOVL?= =?us-ascii?Q?o31Vo5RAWIlDwzDa3q/LCW9ftjEDcLjE5S2qDcl1n0HzU5y6uB8gOT3WKK+y?= =?us-ascii?Q?10F30ALtH9OX/tM1gJq8+3p0XqzDuJsweXcTsDuvJgZ0CiO7dfQFi4MthV3w?= =?us-ascii?Q?VVs98Rw2uQBPf4HjRX0/EmhvMbDGpie6d50NodGJ2pI9bOlO2TCmMrPWfjeH?= =?us-ascii?Q?6pIuF0pwK558CqNhgtEISrYcV2Ilv7gDF9F+Px/z20LYv6l1OnuAMX8Kw5Dg?= =?us-ascii?Q?+QoMpD9bj9cDObcKpfOdT/BX7tHXiZFXJQD4b/Nj/yqqfdszzPP0uZdplOk5?= =?us-ascii?Q?5sVrIdcY2Uept+Upa6qX1QpuncWcMH7/52KDduetzfO+YBkxp7Hkw6hGnIeH?= =?us-ascii?Q?gxKzTGOgZ7CsJVojJCWBHGvEuw8R3KezbTwcnIhSJcIw5LZ/UyO9oyBHHn/H?= =?us-ascii?Q?nwqVmLB25ivpRbWae0RnoXgu23iQVh/tdb+hiOyAxTjNhePhszLqH2TEl+SW?= =?us-ascii?Q?4j0IJdHjKnFbSNubnUVI2wYHr9yH+kJCI7yghDi1EDrv/FscYGgKIKuObjwC?= =?us-ascii?Q?d8b8bQSmmr1qMwmJKIMlezwBj2KyTPoxteUR5pCF?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1f0fbd4-39d8-41e1-d19c-08dd881edc82 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:28.9168 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pu3WCwQt5ZBmpC7MvPbQJ7tc4O63vl0qCHuQ5W0JPStYxBn1mhrlKx1eN5GEP4TX4uKCBr5bER6mImXALYTU+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-ORIG-GUID: Ycdwzmlt6j5Ed6dOuSZ6NZD40g-AVIrd X-Proofpoint-GUID: Ycdwzmlt6j5Ed6dOuSZ6NZD40g-AVIrd X-Authority-Analysis: v=2.4 cv=VITdn8PX c=1 sm=1 tr=0 ts=68127caf cx=c_pps a=CbxOEkXH4sIw/lcH++vrDQ==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=peWRwobBIUiJGWitIvgA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXx+N1Z6QAkxcZ 9tMdAtFtyQCTztALLrVkk93/rk8/AUdrVsE6m1Dy/GJfrrlID0+3H+SmavU8YhP3E2Nmj/4GBow /gEdYPq/bEOZWfl63/xIWT8dEHC8Juc1zvNrrc3hTtR0o09VsOg4phCLL85HjSGfYQX+9QstLKH kR08xpnJXgMrLuYMFQRNDDaKegWBXB6gRom+DdWBjABPnNp5NhS8lFFYh6dOO/Ufh+gquLYdH/U Uzh1cXSBa01BTQA5u/810Oor6hzvwQ7tljBjp1FgNCU971ytCeINdPOUJnXxfyiZMfiE7ogQLdz nyQYlzAozADAthln9V3R+ACSmx+wxSfje3ZWy1bvQ8Jl3U2IlHJPdh5pPb2M9cvZ+icPmqMyaPJ SFAV7FaAojXLfZp2kKNKfdv3dGWGGhZqCAC6v2s+oyco0R4aQyzptoBWtTyaalaSWvUpyQZM X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042183950019000 Content-Type: text/plain; charset="utf-8" Add simple helpers to correctly report failures from read/write routines using the return -errno style. Signed-off-by: John Levon --- include/qemu/error-report.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index 3ae2357fda..67afe5a020 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -70,6 +70,20 @@ void error_init(const char *argv0); fmt, ##__VA_ARGS__); \ }) =20 +/* + * Given a return value of either a short number of bytes read or -errno, + * construct a meaningful error message. + */ +#define strreaderror(ret) \ + (ret < 0 ? strerror(-ret) : "short read") + +/* + * Given a return value of either a short number of bytes written or -errn= o, + * construct a meaningful error message. + */ +#define strwriteerror(ret) \ + (ret < 0 ? strerror(-ret) : "short write") + extern bool message_with_timestamp; extern bool error_with_guestname; extern const char *error_guest_name; --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042176; cv=pass; d=zohomail.com; s=zohoarc; b=NJQytho+kxMg8wczjNUtBNht/YeCNqNRgW1tbLQ//v9riJPeXPv/gDuKy1KeRtTQTvMApFyhIzTgfUNz8ChMzwSrxD6lMs9W7fbM2DCt2WFx9aH/4cPzo/0F2ah61TUzp5oUd2cVK3W1+psD53RBLsYWy+Xvqf0yWCbOuM4kds4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042176; 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=x04Hjy4po/YszhwNxQA3sSqmcQf8X1dCG/9HUs9rAbU=; b=IfgSFh5PA9R5+0BlzvCdD6QhDKaRIzFi3y4tIq/Rjy1RUCIOeze6WX/pOY50ZEgZIxvCRuAbtUtnEj6fVHFTVrhiNSQaOeQcL84bJEA9z2SCUSq2Rn6tPyq6fvP/UWgOup9JaOiFsogWRrgvWsYKDLG0HufWu9b+umoLeQgq+aY= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174604217632541.26367526255933; Wed, 30 Apr 2025 12:42:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIT-0007tQ-UV; Wed, 30 Apr 2025 15:40:45 -0400 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 1uADIS-0007sX-EK; Wed, 30 Apr 2025 15:40:44 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIM-0006CO-Rk; Wed, 30 Apr 2025 15:40:40 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UBU2qB020471; Wed, 30 Apr 2025 12:40:35 -0700 Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azlp17010021.outbound.protection.outlook.com [40.93.12.21]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468w182476-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:35 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:32 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=x04Hjy4po/YszhwNxQA3sSqmcQf8X1dCG/9HUs9rA bU=; b=m19QNlcwcbR7yNa/lcHKwlnF9Q1a6RuF2YaypN/cr9gxBPEE1QyIl7u0/ r1ZzyNu633PCNnge9T/ek/wiPwYKDBg0XfyS8t9KbpGT4qx2F7wfiSiTgZHWc+ep tHILs37n9runfwYSCjZBjyFyj0iGl5gCgm56a8ew+CmqiPLP53RsDb+7Wb4t9K+7 JzFi6jDLiBZnPTqPc35ZDGwu/v81/7CgyOn7yHeCN8c2du9lHPm5me9rai773Us9 BCM+iSN0HjeO86Fh/phLJeo0NR5En5OFR0qY5Zf2H0EOEKzdp90XdbWO9jrg8U0l Jqb4qaWItyDdELvtEz+xWYFfqIzNw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z/0GBSbg09LwouNgtgcqVpUaplSFWE9rz4+2S7k+ZrS9pQw8BxdpeAy8cE7FBjDezRz1bnTg7cY+tAvZ2cHgGUX7oV5ffAfY69yWGdMd42Ke74skQ1AokTI/uRVTlo7PvBlT7hCpbEKRQnjRwZOzacCfLlbIskcDwEZfHjTc9qmUL3vxSU7cb8113sjPyzhX/1uKFkRJuu9JjmpMSr+wbZ0vAm1cbVkWlpgUP0DXnWkKWyqHtZ0OZlP56ugkDZGWw8cwFY9ZmSLM01R/OGXIoUUzFDTU0UhVJkR3ARN2n+4z9V0gf9usuq31s3UnSwqHFXhZbehz3SK4gFXnO6vYsw== 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=x04Hjy4po/YszhwNxQA3sSqmcQf8X1dCG/9HUs9rAbU=; b=vCUU6p9S6tQ2MZCyoRFrB5LtcsR9MDvvoNOw7PBYhLKQAyE5eDV8qPoAAQxSo68+vaPS/0NCwSo1QC9vEXm7A+dxr8u9juls3Dpz5casr3jt2zdO7HU1U3Pwg8wHyyFKeyD7hVBZa00Cmo/kjyTzstMlolUsJ2Co0X4hokTFuNjSSD4gHKtQzbL0N2hAcV+ASv27RpOSy62FMnnI1idUsBc/mGBikxdhCa9isxfyH+uAPsWha2/CgC2mXk5pK2+pDmzr9RIjFqy1I3onC2w3p2csKLpE4GEZNp3mplGnZE78w4+IQ+9+eucgBRJ5XONeM631snTnRD4rWZg81FnWTg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x04Hjy4po/YszhwNxQA3sSqmcQf8X1dCG/9HUs9rAbU=; b=ErUGuKXzZh7qSZCUKlKmx/PmktYRAcsatrwKXQwzOgjUfaT75yaLGh5Ude0+yzG9pvbpIKxiiEoZVP/2cjLnOaTEZwEgmo0ZMQYdpuO6CGTWRxGI5tOUjvmUOfCgbhY3XcmXSl/1/VfVMqkB/1fMb6Lgubiw5OOfE9R5Fm6O+qF89Yj4mYnWouXxED/kvGvKQ9Ch5ZT5TW1kc9oqVH1MHjIfc6ymqWQUFjLZ+CepZ6LjxGhkupv+jYocCy04wzr56Ysy25IQXQ01MDIX3dX30s/0WbxyO3k4FSUOLU5IPBbNg+dMp3bHEnTbZKfsFuZytICib/OqW63hRCO0YMVR1Q== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 07/15] vfio: add vfio_pci_config_space_read/write() Date: Wed, 30 Apr 2025 20:39:55 +0100 Message-ID: <20250430194003.2793823-8-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: 6c0807b3-c486-46d9-1961-08dd881ede7d x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ukGk1PboKdFmH9Yjc5oI9OHqi1YJrPg9vvk/NbkcEkXEOwz+NCy8JuyKtUux?= =?us-ascii?Q?sozW59bqQKIeVlEwdu+nQUuW7SZDVTZpUQg4NXsvtdxAsMhaWQ+H0TZLeKwf?= =?us-ascii?Q?uS763CSbEii2/nojHwvhvjwXB0ZWd6B/QhJdWpcZ32QQHN4+wMuzrjwQhRqj?= =?us-ascii?Q?H5XyHne/2ZBolJDtKM5eKSjBz31yH3UC0D+2jYiGDFkSkrIuljX9KYlb+st0?= =?us-ascii?Q?uKkQQGtpDUGKtWmM8izOKrbLfRETz7hCXiC1cUB5678aLBIr4OIpXM1o6lUn?= =?us-ascii?Q?/cdpOtnCVgKGzET0O6cOzomEDHcRYBasOgYqk/kPxCQ9IsRAFIRCb47GedTt?= =?us-ascii?Q?O+w0XG/3vOhIGQxTkHHeZ3fPWUaH/pk7jb8b3csw8xtfATLQnBvpZjSK7HXK?= =?us-ascii?Q?K31rfXi2BjQF9ImbXnJkjemDIWPBwCYngvplujqYnn0S4fk1sM3b9pT+5lez?= =?us-ascii?Q?dVzEKrX03jFdhRMG0j1rq2edZqq8E+CVoX/702DaxnMSBKMLFi1UlCft84a4?= =?us-ascii?Q?xfEaULnSdw31RNcpa4nmVUp4vQ83jVG/VBKZCZl6gDxavJ4C1eH42nS4Cq9Q?= =?us-ascii?Q?DRgW64OwYv7BVF3z4A23qEooMtFTJwHuAqwlY5bxBih0QYSs7fPYUPTsopYA?= =?us-ascii?Q?xXE4X2H1IOYVkfTqIMBRRdrV9nLu797DeL0MuLBhr4corAMiVsSxDuzmIvTU?= =?us-ascii?Q?LHIJQck7vZd55pP3EEOnv2sKu+Y6oYIztAes99Fr+Wil4sttqWPl1PBx8kKo?= =?us-ascii?Q?TL6Sv/xg+n5nmw1FRM+ES6ZKOuJI8+c6D42FpSncGzZyw72Jlq0NjBUAXwAq?= =?us-ascii?Q?lmC16I7P+qCMEBfp0veoX7VYAf/FVUwRDBT+NNI+6WEf0Vu9zI4aWoco2H2/?= =?us-ascii?Q?HI2RxrSgPQjdoir63nzRUQx3Ek5Un2Yu5uO9KsfayH3azl+UYv6nlpAZU4MY?= =?us-ascii?Q?2EGF3pHIuRrTTFkv5k9UcRggw+XVGWFjWjxb8NArJD6a9At1BgKrIH35wvoH?= =?us-ascii?Q?FVtuvojloEz0fN5UqPebKiZjmSscos/IxAyYnyOYoFyzkL+9T3WC+qPr2w+t?= =?us-ascii?Q?M32H/20ApuHzfbUQiIBsDph1jhJ9+X650LogS1Drttvdrbs7ir03M4SMAlUv?= =?us-ascii?Q?4Bmxt7tyhylTKDs5AmzhAJ8Dl6RRUv3DInYrMFv46gz/NacTq4HmuhAopjZw?= =?us-ascii?Q?wVwLdCDL6kRRgUxBqFM+tM0e1JuUdikgWHfLqLL149mzUWZj6BNRNfe/FLO9?= =?us-ascii?Q?NW7PVAk1gXEbxud1+uw8vB4DQeYc1Ruper9xrtVwppWKDKfZAFX+Hh3+8Yq7?= =?us-ascii?Q?Y8UM0zG6eF9hhT1td56+ch9eUVekR94/IpsbdJPnGJ1iQV9cHhVAB4MjjK9A?= =?us-ascii?Q?RW02iIERRcpGuWFzpciMHCfmQPXeh9r/udxde3YznUjyTZ5Pe5FSfWajEa1C?= =?us-ascii?Q?gL55FSyH2cA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QdJlwgDk9st82QtPxfSbGmZ7cLKG3KQhSDExcp/bxEAYiJ7B9xU8IH654W/f?= =?us-ascii?Q?sAiI+PKvwBlZLH1rmU3TC/41dgAo2Rqj9knoKXCTXOrmtWBYsTud1PM7Pkky?= =?us-ascii?Q?Rf8SJPC0wDzM9/gM3+b4q90BZByWeYXFSSKPX0Rqaof2B+lfLe67uUq3+7Ud?= =?us-ascii?Q?0WMB82PD3YUStzVVzpFgeDbCUcu4eFXjQMxl6vJkWlJHrC4RK81ztJg4/hQo?= =?us-ascii?Q?r/hGqztCY32wqDQ9vJnWpyCP4+79JNu81ncZDAloXdQELD4C2DfEIc61slnM?= =?us-ascii?Q?h9ityH5CseWpk3HPYrXEhmyWFaPnga5Pdm5SL43Riw9XnqsT9jMRnPcR2Xza?= =?us-ascii?Q?WrmYWNy39OxeAxslY6ooZewpTI2zehmlSEolkUEi0jqPR+imnhgxamkiB1Dv?= =?us-ascii?Q?7wacIadXOcBDq1zoR8jHvyJGXNjTOyLKlsv4FpvDSSjPP+JWGwWDWstRYe6l?= =?us-ascii?Q?8yGD1k8MjtQmg8CS3n4SbMf/6gUUCX1SVADFv1zlRttCr/qeCBnleMn1Lhgf?= =?us-ascii?Q?FXceADWCWyYDUUJ2f94mhaEJFU6REwusF1yQuU6ltNKHLNGxT4oht9SxX7bJ?= =?us-ascii?Q?1PeqiyOQ9AeLK/4oBdioy+SVBomiJQo72AMHBtCIgOp3GOuIkR8XPtzJCsGt?= =?us-ascii?Q?PYakVgRGqQETf/oAtrZ0JhG/Ck5Hdrwuvpe09srpdm3GrihPeuFPeCXt9T4l?= =?us-ascii?Q?cMKMWbgSipR9Nokt7nUnXyrxaaIGl87pXZOJlgfBvNnCYXCE02kZ66VPwWEr?= =?us-ascii?Q?QUOLA6A1OTGma/qKc4degqBixolJpWORPAk8RwHEhzw2NSCIEUpE18/s7YlJ?= =?us-ascii?Q?fZobBNlnRDEKR0rEEgEyU57tHlA5oFh35+xgT3g9qCAW8xxUAEVP/Tm+x1nT?= =?us-ascii?Q?YfZjDb14dzqyxWR4aArUfG3c83L0CvYmirg3+I/egv1ivYb5kjgu0mB3a/zS?= =?us-ascii?Q?L1ff4T2OnBQaAG4L466kr6wCtjEpizYyIpLCy6P0holOwTGY41wWqlwiODwo?= =?us-ascii?Q?hMKualkfep6MTpFOEOxTKCE2ap6ztlzXSsU0db+Xy9aDyukbFMgHV0fpeClv?= =?us-ascii?Q?i/W/We0uS3b7cdei91d6cVYiu1m/KfTdl9d+svACHhQbUs7NU9g4pwfnAxCv?= =?us-ascii?Q?bOol7QQDH6ao5hYNgQG4ui7L2rM6N7XQCAMO0xKl4uXKvjXRPcUSMyi23iN4?= =?us-ascii?Q?jdaDTOIlalRY1RRXQVnDCPgn9yRKauhKH5HbF4eF5TqQLuUtb2S1Ngymxhgi?= =?us-ascii?Q?wGLoNJy6vVoQ34UVmn8CGx1fE/RhzD2ortc8KUbowxJLuWDQsuhXZHCbkWFT?= =?us-ascii?Q?MuA9+eR0iKeJXvGQl/CI9nLmrz4aa9bsKeW+lieH+f65yH3XD/lvQxah9ix8?= =?us-ascii?Q?aN088O0WSoCwt/JUWnfjK5eQhtTHGphKkKSWJ5mrOsX0aL6bqb4FMbIH50f5?= =?us-ascii?Q?WZhfs2d4a/NINWUdwUf/JUJS+un0dct0sT7NmT3xxlz5oV4fW0WgCVSHLKFI?= =?us-ascii?Q?uKr29P8jo0lcuPxpPC1oNKqPl8JwX0Petq+Mw98v4iAofHqIx0u+D1woI8wy?= =?us-ascii?Q?uff6YVSWtA+hMUaA9ed5Xwgi+O9pB3qjaYx5/YVv?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c0807b3-c486-46d9-1961-08dd881ede7d X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:32.2223 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: tTG6B6fW0bkoh2ZXAQtXJUwuSWbOL8k0fpqxAtWV5DlhXflOBEJmFTm3KJUCq1tg6l3ity0PQGCr1KEeRg/p8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-ORIG-GUID: Kvybf0QaaIRCGeb1OFEZegRRh_lnrPHa X-Proofpoint-GUID: Kvybf0QaaIRCGeb1OFEZegRRh_lnrPHa X-Authority-Analysis: v=2.4 cv=VITdn8PX c=1 sm=1 tr=0 ts=68127cb3 cx=c_pps a=6dLVn7RwcbTzQ1hpYGxp6A==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=uWZQxr4v0eqUK10gj4gA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX+DjOaTJcR4nJ oDw2PrsepWFMUNq0AN29f7mJ0Z/XLSNXwe89N9cSEdwsDojdfWi6Go6nL/zZzH4d8znGpkX6AF7 ZeFFun6f7QTl8qadlI90hjutdSC6nbPruXbN4c8eAUSnmoGeV04nUReva5/DSGwxMdQkT6vr2t3 uCGeZeIkFt9fmoshFxGiTt5CXVHO6PVuhDMxlIHd3tp4oyOhT4yVtJsK16RgEDPYXVfbGq8Cv24 /QTn9JPpj3QKKovnwu5eG6qnOCWlsFDCWR/c3d2ArUKXrzSiT4pYpKscExWvw0bh2wGAW09zCSK 4KwHHSxssomvevJdyExCTo/carve0w85xA0Ywi3UUtKrNf1nwwDm+B8rnotmOJnCAOGcS0Uy8Ff qi827qaUtEqOAKlKacj8j+h6kbKyhkO9zfnt7omDQMVSeVLTV2ZhtrZSPfEGlrqfUS1eWYSf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042177765019000 Content-Type: text/plain; charset="utf-8" Add these helpers that access config space and return an -errno style return. Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/pci.c | 123 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 80 insertions(+), 43 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 768c48d7ad..8455010d62 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -967,6 +967,28 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) } } =20 +/* "Raw" read of underlying config space. */ +static int vfio_pci_config_space_read(VFIOPCIDevice *vdev, off_t offset, + uint32_t size, void *data) +{ + ssize_t ret; + + ret =3D pread(vdev->vbasedev.fd, data, size, vdev->config_offset + off= set); + + return ret < 0 ? -errno : (int)ret; +} + +/* "Raw" write of underlying config space. */ +static int vfio_pci_config_space_write(VFIOPCIDevice *vdev, off_t offset, + uint32_t size, void *data) +{ + ssize_t ret; + + ret =3D pwrite(vdev->vbasedev.fd, data, size, vdev->config_offset + of= fset); + + return ret < 0 ? -errno : (int)ret; +} + static uint64_t vfio_rom_read(void *opaque, hwaddr addr, unsigned size) { VFIOPCIDevice *vdev =3D opaque; @@ -1019,10 +1041,9 @@ static const MemoryRegionOps vfio_rom_ops =3D { =20 static void vfio_pci_size_rom(VFIOPCIDevice *vdev) { + VFIODevice *vbasedev =3D &vdev->vbasedev; uint32_t orig, size =3D cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK); - off_t offset =3D vdev->config_offset + PCI_ROM_ADDRESS; char *name; - int fd =3D vdev->vbasedev.fd; =20 if (vdev->pdev.romfile || !vdev->pdev.rom_bar) { /* Since pci handles romfile, just print a message and return */ @@ -1039,11 +1060,12 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev) * Use the same size ROM BAR as the physical device. The contents * will get filled in later when the guest tries to read it. */ - if (pread(fd, &orig, 4, offset) !=3D 4 || - pwrite(fd, &size, 4, offset) !=3D 4 || - pread(fd, &size, 4, offset) !=3D 4 || - pwrite(fd, &orig, 4, offset) !=3D 4) { - error_report("%s(%s) failed: %m", __func__, vdev->vbasedev.name); + if (vfio_pci_config_space_read(vdev, PCI_ROM_ADDRESS, 4, &orig) !=3D 4= || + vfio_pci_config_space_write(vdev, PCI_ROM_ADDRESS, 4, &size) !=3D = 4 || + vfio_pci_config_space_read(vdev, PCI_ROM_ADDRESS, 4, &size) !=3D 4= || + vfio_pci_config_space_write(vdev, PCI_ROM_ADDRESS, 4, &orig) !=3D = 4) { + + error_report("%s(%s) ROM access failed", __func__, vbasedev->name); return; } =20 @@ -1223,6 +1245,7 @@ static void vfio_sub_page_bar_update_mapping(PCIDevic= e *pdev, int bar) uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len) { VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIODevice *vbasedev =3D &vdev->vbasedev; uint32_t emu_bits =3D 0, emu_val =3D 0, phys_val =3D 0, val; =20 memcpy(&emu_bits, vdev->emulated_config_bits + addr, len); @@ -1235,12 +1258,12 @@ uint32_t vfio_pci_read_config(PCIDevice *pdev, uint= 32_t addr, int len) if (~emu_bits & (0xffffffffU >> (32 - len * 8))) { ssize_t ret; =20 - ret =3D pread(vdev->vbasedev.fd, &phys_val, len, - vdev->config_offset + addr); + ret =3D vfio_pci_config_space_read(vdev, addr, len, &phys_val); if (ret !=3D len) { - error_report("%s(%s, 0x%x, 0x%x) failed: %m", - __func__, vdev->vbasedev.name, addr, len); - return -errno; + error_report("%s(%s, 0x%x, 0x%x) failed: %s", + __func__, vbasedev->name, addr, len, + strreaderror(ret)); + return -1; } phys_val =3D le32_to_cpu(phys_val); } @@ -1256,15 +1279,18 @@ void vfio_pci_write_config(PCIDevice *pdev, uint32_t addr, uint32_t val, int len) { VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIODevice *vbasedev =3D &vdev->vbasedev; uint32_t val_le =3D cpu_to_le32(val); + int ret; =20 trace_vfio_pci_write_config(vdev->vbasedev.name, addr, val, len); =20 /* Write everything to VFIO, let it filter out what we can't write */ - if (pwrite(vdev->vbasedev.fd, &val_le, len, vdev->config_offset + addr) - !=3D len) { - error_report("%s(%s, 0x%x, 0x%x, 0x%x) failed: %m", - __func__, vdev->vbasedev.name, addr, val, len); + ret =3D vfio_pci_config_space_write(vdev, addr, len, &val_le); + if (ret !=3D len) { + error_report("%s(%s, 0x%x, 0x%x, 0x%x) failed: %s", + __func__, vbasedev->name, addr, val, len, + strwriteerror(ret)); } =20 /* MSI/MSI-X Enabling/Disabling */ @@ -1352,9 +1378,11 @@ static bool vfio_msi_setup(VFIOPCIDevice *vdev, int = pos, Error **errp) int ret, entries; Error *err =3D NULL; =20 - if (pread(vdev->vbasedev.fd, &ctrl, sizeof(ctrl), - vdev->config_offset + pos + PCI_CAP_FLAGS) !=3D sizeof(ctrl)= ) { - error_setg_errno(errp, errno, "failed reading MSI PCI_CAP_FLAGS"); + ret =3D vfio_pci_config_space_read(vdev, pos + PCI_CAP_FLAGS, + sizeof(ctrl), &ctrl); + if (ret !=3D sizeof(ctrl)) { + error_setg(errp, "failed reading MSI PCI_CAP_FLAGS: %s", + strreaderror(ret)); return false; } ctrl =3D le16_to_cpu(ctrl); @@ -1561,30 +1589,35 @@ static bool vfio_msix_early_setup(VFIOPCIDevice *vd= ev, Error **errp) uint8_t pos; uint16_t ctrl; uint32_t table, pba; - int ret, fd =3D vdev->vbasedev.fd; struct vfio_irq_info irq_info; VFIOMSIXInfo *msix; + int ret; =20 pos =3D pci_find_capability(&vdev->pdev, PCI_CAP_ID_MSIX); if (!pos) { return true; } =20 - if (pread(fd, &ctrl, sizeof(ctrl), - vdev->config_offset + pos + PCI_MSIX_FLAGS) !=3D sizeof(ctrl= )) { - error_setg_errno(errp, errno, "failed to read PCI MSIX FLAGS"); + ret =3D vfio_pci_config_space_read(vdev, pos + PCI_MSIX_FLAGS, + sizeof(ctrl), &ctrl); + if (ret !=3D sizeof(ctrl)) { + error_setg(errp, "failed to read PCI MSIX FLAGS: %s", + strreaderror(ret)); return false; } =20 - if (pread(fd, &table, sizeof(table), - vdev->config_offset + pos + PCI_MSIX_TABLE) !=3D sizeof(tabl= e)) { - error_setg_errno(errp, errno, "failed to read PCI MSIX TABLE"); + ret =3D vfio_pci_config_space_read(vdev, pos + PCI_MSIX_TABLE, + sizeof(table), &table); + if (ret !=3D sizeof(table)) { + error_setg(errp, "failed to read PCI MSIX TABLE: %s", + strreaderror(ret)); return false; } =20 - if (pread(fd, &pba, sizeof(pba), - vdev->config_offset + pos + PCI_MSIX_PBA) !=3D sizeof(pba)) { - error_setg_errno(errp, errno, "failed to read PCI MSIX PBA"); + ret =3D vfio_pci_config_space_read(vdev, pos + PCI_MSIX_PBA, + sizeof(pba), &pba); + if (ret !=3D sizeof(pba)) { + error_setg(errp, "failed to read PCI MSIX PBA: %s", strreaderror(r= et)); return false; } =20 @@ -1744,10 +1777,10 @@ static void vfio_bar_prepare(VFIOPCIDevice *vdev, i= nt nr) } =20 /* Determine what type of BAR this is for registration */ - ret =3D pread(vdev->vbasedev.fd, &pci_bar, sizeof(pci_bar), - vdev->config_offset + PCI_BASE_ADDRESS_0 + (4 * nr)); + ret =3D vfio_pci_config_space_read(vdev, PCI_BASE_ADDRESS_0 + (4 * nr), + sizeof(pci_bar), &pci_bar); if (ret !=3D sizeof(pci_bar)) { - error_report("vfio: Failed to read BAR %d (%m)", nr); + error_report("vfio: Failed to read BAR %d: %s", nr, strreaderror(r= et)); return; } =20 @@ -2450,21 +2483,23 @@ void vfio_pci_pre_reset(VFIOPCIDevice *vdev) =20 void vfio_pci_post_reset(VFIOPCIDevice *vdev) { + VFIODevice *vbasedev =3D &vdev->vbasedev; Error *err =3D NULL; - int nr; + int ret, nr; =20 if (!vfio_intx_enable(vdev, &err)) { error_reportf_err(err, VFIO_MSG_PREFIX, vdev->vbasedev.name); } =20 for (nr =3D 0; nr < PCI_NUM_REGIONS - 1; ++nr) { - off_t addr =3D vdev->config_offset + PCI_BASE_ADDRESS_0 + (4 * nr); + off_t addr =3D PCI_BASE_ADDRESS_0 + (4 * nr); uint32_t val =3D 0; uint32_t len =3D sizeof(val); =20 - if (pwrite(vdev->vbasedev.fd, &val, len, addr) !=3D len) { - error_report("%s(%s) reset bar %d failed: %m", __func__, - vdev->vbasedev.name, nr); + ret =3D vfio_pci_config_space_write(vdev, addr, len, &val); + if (ret !=3D len) { + error_report("%s(%s) reset bar %d failed: %s", __func__, + vbasedev->name, nr, strwriteerror(ret)); } } =20 @@ -3101,6 +3136,7 @@ static void vfio_realize(PCIDevice *pdev, Error **err= p) int i, ret; char uuid[UUID_STR_LEN]; g_autofree char *name =3D NULL; + uint32_t config_space_size; =20 if (vbasedev->fd < 0 && !vbasedev->sysfsdev) { if (!(~vdev->host.domain || ~vdev->host.bus || @@ -3155,13 +3191,14 @@ static void vfio_realize(PCIDevice *pdev, Error **e= rrp) goto error; } =20 + config_space_size =3D MIN(pci_config_size(&vdev->pdev), vdev->config_s= ize); + /* Get a copy of config space */ - ret =3D pread(vbasedev->fd, vdev->pdev.config, - MIN(pci_config_size(&vdev->pdev), vdev->config_size), - vdev->config_offset); - if (ret < (int)MIN(pci_config_size(&vdev->pdev), vdev->config_size)) { - ret =3D ret < 0 ? -errno : -EFAULT; - error_setg_errno(errp, -ret, "failed to read device config space"); + ret =3D vfio_pci_config_space_read(vdev, 0, config_space_size, + vdev->pdev.config); + if (ret < (int)config_space_size) { + ret =3D ret < 0 ? -ret : EFAULT; + error_setg_errno(errp, ret, "failed to read device config space"); goto error; } =20 --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042207; cv=pass; d=zohomail.com; s=zohoarc; b=B28UYDGjq94G62dchxaUZ3lAsLsU3X8JXPgg47ngh63IrzaKUaqdf69EutYf0buhOyggSXjyiugY20Ta1Owozidvjx87Pxa38J46JtS61AYRwBGbH4Hjj2mmmz0VhLajcB2UAzgBfZzf2ArgB/9UfIXFMzf0nvm1v5WsG1s1JBQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042207; 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=c8G705wh7baCQWEEkVRqNGfftJXik+4JIAlCjHjbpBs=; b=X9F0DCnIvQoKlLVgxuUzCBMltKzdJhWuzMEzXkDKeQntRW1RviL3pmfhPpRfs/c2J/gqcUCtViO0LD4fE9pYJilPXIV3lKDqU1Ew78N876EHQOqcBgXwESO+s+J18C/6MqE/qO+pGVXDCv4U+zM9PHxt5MF3qSR1EgSsuNedgKE= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042207020962.2871720516086; Wed, 30 Apr 2025 12:43:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIa-0007wN-Gd; Wed, 30 Apr 2025 15:40:52 -0400 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 1uADIS-0007sW-DC; Wed, 30 Apr 2025 15:40:44 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIN-0006CX-Lh; Wed, 30 Apr 2025 15:40:42 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UJ5CYv010420; Wed, 30 Apr 2025 12:40:37 -0700 Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azlp17010022.outbound.protection.outlook.com [40.93.12.22]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468y109yc8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:36 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:35 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=c8G705wh7baCQWEEkVRqNGfftJXik+4JIAlCjHjbp Bs=; b=GQjJj2HiChwC4uIw9VSjI7gWQ9tDKfVsodLcDUFv4Fq4puhmTv+FMkZcU 6ZaQaqycVqc9kIt4U29sEJ+lMoMcr5q51aiCyPTTeGKImGtual0F+pf6RJJgkOYo sFiCh2ZThEyWQim2EdxieCFkH4Dj/GIV1YEthsaEkgD4FghYBrmzGFAoff3s6zh9 QvGTK2NOBSj3OXdpFSWu2sMZAjVZZLiSSMHJGknx+rN9ilYoMIF94Eo2WzEa5eSd Dqrz1SNmt+aSsKPVL1R9AmG3a8kxN50tb8RJmPBhh0DGeK8dhvgHge5+97femAmA tu7+YJxGszst5mQSx6qbtySFGcBIA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Jb0HyEWcA8o3Kxs5DH+LoB7RGe/4zc0ggtNlsfpGJ7hhQ1DkZ+ntte3OkXr+yxnsgUWgkO2k/Wi+54Cc+lTiRhJ+6WWEJmeL8QSWaGT03Sd5ZS7rlv78Mz/cEbYrx3jPn+nXhgZOSQfJeS4YCKEVnj2ZrKXd3Cc1lzpHFACvJTJGQRpySwI0fyO4zvIvAiocGc4Stw+FM3OScev9Lh3XxQvsxnLqD57wJpSE31oWjYeDIejqG4domGLM3ZzUigs5Uk9MG6/G/7LPPR+zJNrI1/VoZGVUv7Di0boTigw4NESZhq59yPLfx3EWeATHSuqPNaayMbFnWpoz/cp8K0Ypew== 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=c8G705wh7baCQWEEkVRqNGfftJXik+4JIAlCjHjbpBs=; b=sJkLWMJmr7wXFMXleCipY9GAbUY7A1HsYIxLQ2qCYACnkeI0aBsXGc8eR+28pJGvr/EkmDmPQBl7S3eMXWT9bFIEK5PuTigySEnZ5ZimGQVJpmRooY51mIcWBNquIojMLRMRND70sbBevz3Pha+RiiBbRj5QaZ3DFOZppUjMkmK7BfBk7MSBlvlZbeDIWpDakGXgobCrrGRKc7ZgG1Gt0XM9+KaaOFHYs5pXg2aV8pJkrinhVqwSd7L1tDBsxopZwojDUT/tdBSlY2Uxb+V2P6mxxcbutxCxPzocKmpHqFgUhEUyf9cS6U9cW5S3OFOUZF7wMJ+C8VSN3DWHWZHigw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c8G705wh7baCQWEEkVRqNGfftJXik+4JIAlCjHjbpBs=; b=vJI5Ka0x3Scl7m4N4PZz9y5t7vqPubsUmme8B5JblWddEHHnMmlsQkTypQbD9Mza0lNkY7tm9sdGAx3sFkujQWYw+oUwjxl4X6slrq+gbho6diQ4xRsodt3jG+28ezz9gTPN3R+lJO7y//WU7hWnMkICiOmYzm/sQ8N9CzQ90MBk1G7iC6VwvCjgJtJD3TO3bpTTTt8shWD7JZ/k+dfk8BWSUgghhZCUHmEmpeE8NPkH0+RRK/ZJ+m0zKQBRbqSLCWUv7CNbE1IACv2CgeEf5bpzGgh2sm1g6etMMPPP8XRSLzJog71pvadY0iu/PmLjuHmrt5SX3ANWZo5UzmDc9Q== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 08/15] vfio: add unmap_all flag to DMA unmap callback Date: Wed, 30 Apr 2025 20:39:56 +0100 Message-ID: <20250430194003.2793823-9-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: aa464d31-4ee0-4eb0-960c-08dd881ee073 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?bGHyfnWDSBGG3l9y8fnJuXfmsg7ZfR9bkwv1u6+bLXyq4JuFTuw28JAjm7ZM?= =?us-ascii?Q?0NuekV2/hDGW7ZT1b/TJ6pblScopi1iGuOHCsPffKmK6PvTiRhrVxjtNYY7Y?= =?us-ascii?Q?ML3kPxLJSb1mtOhkCNpWnyaPoCluTYwCX1sxXUBcM7zhnx1h5TTiDI1WnV1Z?= =?us-ascii?Q?L8FhmDeEbyk9k3vZl89p/G8XlKSPblkdJxm9Mwy9kFoJt7+n2cjS3WYq3aWX?= =?us-ascii?Q?7q8wdUkhW7cyP17sB42WMkQM1Mw0xbQKceYs0tASm2iuJwt1Xu/9Y8kOBaHS?= =?us-ascii?Q?waL4x0ILORyW3L/TD5DPoR2kR7rkI3RgavhGteq4h1hounb3hhQvyP6SxBHe?= =?us-ascii?Q?JLXBkWb5085uAHmeKIejbaTl8jSQOfIMIebQ1wEIRmhugdCUi/XNTVikW+HG?= =?us-ascii?Q?DjdwihcL6qMrSePy/hQZFJOU2tUlsNo8O2uEWcKtE4Xstnr0Y3cWx/GcM2rY?= =?us-ascii?Q?nDcje1NI6g84h30vQJDzF29tsTQ1tahvlJV4hy8w0ZPJ3mU6umZZuZP45oZy?= =?us-ascii?Q?X25IvsNgLNSjiaIzNBFGXqMLQ2m6q9y4qfB2frq+wagwPErV/oPxML7BB1Cl?= =?us-ascii?Q?LmoQrXzZcsLGGnzSzljkC7/mcliKwWBKl9Hr27pUAlnWG/i3sEjLS0Chh8HR?= =?us-ascii?Q?rb0zS6zbE65m1oIC6WoX+lbr1G+36t6IcnQp63BibaDL9OF3YsRprOlIBJIt?= =?us-ascii?Q?uJFhlg2dnDiRGiXyfVBEs+pDwiW5UkHpqHwH4VVCmiy9AHJ370/UIucD6V1i?= =?us-ascii?Q?9SNE+nZSd0KryRep1qmrvt8OT6IyMIsuY9xbYq0n0U0f8moTYXyLCGJAoVQ9?= =?us-ascii?Q?qH4qhuxaAtmPY+zczl0xacae/Kbu8hC8Yxa0oP+YV5BtAIDpEUq6Jr2u3sui?= =?us-ascii?Q?bbZjjVOE3VDiY2r+ZbYYEmTZdFSitYJbeuYm1cWYYzRB+1Ywa4DQUDtuBSJa?= =?us-ascii?Q?QJDY+cOLUD9QcicHOe4rlz7BkzrIMzl911D6u0TTTTY2NhN7fUKgPMxNlv9L?= =?us-ascii?Q?vtZvSNSEkmAKhhIiKbsDRbjNaMpF5CG5RgBoK7kibprQujvNwSasyE2nPFmm?= =?us-ascii?Q?edhC2OYwkr+GR8MtZooE17Gxs7UoQ9qkEhliC7thw7yZtu24Cq85HvWDOjMx?= =?us-ascii?Q?qyT8ZXluzjv+2sW0MnZw0umUJrObV6KEeIDpvWG8Yk7ZOqRXhYzyLhKA9Wh3?= =?us-ascii?Q?mg7/pFh4HX5VcRLIoxoU4x0Lolc00qURnrcKin60HpxVftDx9vbeAwliD0L/?= =?us-ascii?Q?P5Y9FZDXrn8b5VkdDq/EX+hEGWcMBCOQczs20jYMw1AsOfzbxG/GskDJd00x?= =?us-ascii?Q?wP3tuTqx/TSJVNNB4p/EAZPJnVthAH1r4IXIjRQZC3OLK5LHQ0pbydKn9unM?= =?us-ascii?Q?LWfXJam7JLZwXUuxp8Tcwzil4m+11kCFcHwMg/qG0XH1S6JkzY7xZMvxhYrY?= =?us-ascii?Q?BzOso2Lr370=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SSrsecwJP6gG/6ryP1+WRsTkVv0dWsrOjhj0S4o+gDV+Jk86MWWXJDm+heex?= =?us-ascii?Q?txUNfA561uzDqLymPtiHi6+0QaJ9H+15bD5H9v21FM31SvbSL6jpwkdV20Fx?= =?us-ascii?Q?q/t/ulfFCZVH2cEvQTLGAleXLXILKIXDnCwUBcoFKMQbxO8jh9A8AqkktRXR?= =?us-ascii?Q?tcoz6J5O8zQZd9Q31N9l2lysrd4GZNoZ0U9pT7thjr9X0/K5IsdhjNZ/y7U+?= =?us-ascii?Q?MqwtDKYO2k1DVx+BBJCk7NcUHGJRWn+zAofvnKn8zEpmqDw5IZV96RN5CcNe?= =?us-ascii?Q?yy2pky814FM3NqfH/GgpNusc6NX7sMvvcSlPV6Gd6HgWiS6mpHS6LT+VyyxR?= =?us-ascii?Q?Bhptn9Tz/FKmiXfdAbaMEhNkdtpociH1X5BKw3j/j+PaWkRlEj4F4tE24nAx?= =?us-ascii?Q?M53pkbRPSICqUoYc65VrczpwE60RnqE4YkriYQWy87s1Z8cR5LX61QEYrG14?= =?us-ascii?Q?JqPRxcPxG2DlXJFdvUiIh+W2MFeqzZ1I5R0rYRPd1M3ixX4RrIdtyHaMtTIL?= =?us-ascii?Q?Zhow+nSXPfKwU8snhVF7p52+nqN5e2lAIvLr7Z3boXsRbqscKUWeay8tW2x5?= =?us-ascii?Q?vcrM2LrE23YQvR4uw75asd1bqtqOvkbgVyQIEnCRvwV1rzQb98e9g+sI/n5/?= =?us-ascii?Q?uniUCfVPrrYCLJPw9FAushCd7GQEGybcuu6WukqPI5Kpev3YMSIpGwsoyXw7?= =?us-ascii?Q?jGZ6VbWL7J63reT7p9Iz0499EBF5vfzgY4szNip6l/dAe5RdwuPKYPcHQCOF?= =?us-ascii?Q?V7HzloABKcMjrkGJ4usoxE/M/OqxOdy4vMXZqJXT8x+tmf6IjvH3pEtnGjF9?= =?us-ascii?Q?2Mr4ERDzjCgnp43LSsqtWLlIynUntQWj9BAOHTFjYR1ZaCn+3T9ZGBWWOPNB?= =?us-ascii?Q?2Hl94L46PEFi1YjWnO/HxZWRBGX97sJudhgb2lkJt7iEYMg+v8MsFfA/P89a?= =?us-ascii?Q?TgMEq5MejdMPklrnXLJDorOOu1DApgHoVWlJFfCwu314NXiQoqR9mUKyxVrX?= =?us-ascii?Q?pM9+AFpWiqLb6g58G99jJmP8YJnyRVS2U7d+duXVe7NZp9PctGi/N4LlZqgv?= =?us-ascii?Q?kBljUdl1/sIn33AmnJ7DAbjyxM57pqMSCUKhMd9lK9sD1VoyZnO+OP0PiGwe?= =?us-ascii?Q?SzNxuIbvWnaQ6+PTcjCW4CBXDqefuLeZ00SjB9u8BXrc5jc/wwiqZPFK6pUI?= =?us-ascii?Q?ikd3On5dlz/PXq6TMYg5Yi88EUe/7NkvOHSXOuTBleNfdIG2nhMmU2GSiebR?= =?us-ascii?Q?REQBawRPn5j+gXM1q91ctsMMROBL5KgqyUbnM60SysgHNEJtZNVFJ2uwDdno?= =?us-ascii?Q?/Tv3y6ZGsQTnvSsZdotgjN6uQJVRxcmh2maKUMKN1RxHXmDpEVPA7fZj77l/?= =?us-ascii?Q?+GkDXecXKHyha5XVY5W4PL2LPq6GRLoxohy4CjIuuRXcsLhroGMizAfYJcut?= =?us-ascii?Q?hSnCPhlccgqtmyki32vHdmbLHiips9VQkPAtxqMSMduUBVxWkwPwGLasSATY?= =?us-ascii?Q?JAvPyBCWraYONql611P7ck+JHFjH57eeKOQGTlW3atBsS9TKQTvhZCmyWx0+?= =?us-ascii?Q?FMS5xejidxZsc1YA7e/i551vBDTVQSU6Lvkddbur?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa464d31-4ee0-4eb0-960c-08dd881ee073 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:35.3901 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: apVTRwKJkG5Z4SDalsLpTg/nnDhYpsQGFjVRVPX237Dleufq4yBmYUK6Fm4+10Z0PQ3nHT2lrryI4tBrJO1XNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX9gBEVpK6yEQh 1whWz/Hqeb9Efh77m4yZpjlSiyuy2+i5Agj7qFJWrtqUyoL8fcQzQuC3+1DSZ6BWjhpXB5dKKBG MwEsxJmKDp09ZvEWwS6Yy9oSmUSjf2qRIpxgLT8kfZUqMbdjDsf3n+QVNRT4WaS638OygsAL79Q UgIp13htqLsdN9kK1BAbxknW3HHFyKi7WeDL8SjYFetikr/DU2kc3zYv4iA0CjHhtTF+84GdgHS SwtxXt51I9rsVukE6+gfI9iHSi3LnajcUCTazcXXT+T0PvkBP5ETBmcSKKSe8kxWIV7GFFlwAXQ rXTIbf1iOG94/PcwAoTIK0tfEtrDPQNjwbijpIyEpGbTl/f8XaVwwxixCTjft0uWE8sS46f5sCH l/UcsXTmmcYnhCLNHHPA2jmUuC7ZBm6+T/v/p78+C2PXOt7uPVIUaXx4BLgztzNIWCXi7xMz X-Authority-Analysis: v=2.4 cv=MNVgmNZl c=1 sm=1 tr=0 ts=68127cb4 cx=c_pps a=tQsPtMi3p37jOgXbkrwZvw==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=wam52ssa2_Y8bD6HYSEA:9 X-Proofpoint-GUID: RJFqMh7BVmpDHVJoGZyYakN9klYcBbD1 X-Proofpoint-ORIG-GUID: RJFqMh7BVmpDHVJoGZyYakN9klYcBbD1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042207752019000 Content-Type: text/plain; charset="utf-8" We'll use this parameter shortly; this just adds the plumbing. Signed-off-by: John Levon --- hw/vfio/container-base.c | 4 ++-- hw/vfio/container.c | 8 ++++++-- hw/vfio/iommufd.c | 6 +++++- hw/vfio/listener.c | 8 ++++---- include/hw/vfio/vfio-container-base.h | 4 ++-- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 09340fd97a..3ff473a45c 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -85,12 +85,12 @@ int vfio_container_dma_map(VFIOContainerBase *bcontaine= r, =20 int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb) + IOMMUTLBEntry *iotlb, bool unmap_all) { VFIOIOMMUClass *vioc =3D VFIO_IOMMU_GET_CLASS(bcontainer); =20 g_assert(vioc->dma_unmap); - return vioc->dma_unmap(bcontainer, iova, size, iotlb); + return vioc->dma_unmap(bcontainer, iova, size, iotlb, unmap_all); } =20 bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 1dfdc312bd..766ba5a275 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -124,7 +124,7 @@ unmap_exit: */ static int vfio_legacy_dma_unmap(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb) + IOMMUTLBEntry *iotlb, bool unmap_all) { const VFIOContainer *container =3D container_of(bcontainer, VFIOContai= ner, bcontainer); @@ -138,6 +138,10 @@ static int vfio_legacy_dma_unmap(const VFIOContainerBa= se *bcontainer, int ret; Error *local_err =3D NULL; =20 + if (unmap_all) { + return -ENOTSUP; + } + if (iotlb && vfio_container_dirty_tracking_is_started(bcontainer)) { if (!vfio_container_devices_dirty_tracking_is_supported(bcontainer= ) && bcontainer->dirty_pages_supported) { @@ -205,7 +209,7 @@ static int vfio_legacy_dma_map(const VFIOContainerBase = *bcontainer, hwaddr iova, */ if (ioctl(container->fd, VFIO_IOMMU_MAP_DMA, &map) =3D=3D 0 || (errno =3D=3D EBUSY && - vfio_legacy_dma_unmap(bcontainer, iova, size, NULL) =3D=3D 0 && + vfio_legacy_dma_unmap(bcontainer, iova, size, NULL, false) =3D=3D= 0 && ioctl(container->fd, VFIO_IOMMU_MAP_DMA, &map) =3D=3D 0)) { return 0; } diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 62ecb758f1..6b2764c044 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -46,11 +46,15 @@ static int iommufd_cdev_map(const VFIOContainerBase *bc= ontainer, hwaddr iova, =20 static int iommufd_cdev_unmap(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb) + IOMMUTLBEntry *iotlb, bool unmap_all) { const VFIOIOMMUFDContainer *container =3D container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); =20 + if (unmap_all) { + return -ENOTSUP; + } + /* TODO: Handle dma_unmap_bitmap with iotlb args (migration) */ return iommufd_backend_unmap_dma(container->be, container->ioas_id, iova, size); diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index 6f77e18a7a..c5183700db 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -172,7 +172,7 @@ static void vfio_iommu_map_notify(IOMMUNotifier *n, IOM= MUTLBEntry *iotlb) } } else { ret =3D vfio_container_dma_unmap(bcontainer, iova, - iotlb->addr_mask + 1, iotlb); + iotlb->addr_mask + 1, iotlb, false); if (ret) { error_setg(&local_err, "vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx", " @@ -201,7 +201,7 @@ static void vfio_ram_discard_notify_discard(RamDiscardL= istener *rdl, int ret; =20 /* Unmap with a single call. */ - ret =3D vfio_container_dma_unmap(bcontainer, iova, size , NULL); + ret =3D vfio_container_dma_unmap(bcontainer, iova, size , NULL, false); if (ret) { error_report("%s: vfio_container_dma_unmap() failed: %s", __func__, strerror(-ret)); @@ -638,7 +638,7 @@ static void vfio_listener_region_del(MemoryListener *li= stener, /* The unmap ioctl doesn't accept a full 64-bit span. */ llsize =3D int128_rshift(llsize, 1); ret =3D vfio_container_dma_unmap(bcontainer, iova, - int128_get64(llsize), NULL); + int128_get64(llsize), NULL, fal= se); if (ret) { error_report("vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx= ", " "0x%"HWADDR_PRIx") =3D %d (%s)", @@ -648,7 +648,7 @@ static void vfio_listener_region_del(MemoryListener *li= stener, iova +=3D int128_get64(llsize); } ret =3D vfio_container_dma_unmap(bcontainer, iova, - int128_get64(llsize), NULL); + int128_get64(llsize), NULL, false); if (ret) { error_report("vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx", " "0x%"HWADDR_PRIx") =3D %d (%s)", diff --git a/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-c= ontainer-base.h index 5527e02722..92cee54d11 100644 --- a/include/hw/vfio/vfio-container-base.h +++ b/include/hw/vfio/vfio-container-base.h @@ -81,7 +81,7 @@ int vfio_container_dma_map(VFIOContainerBase *bcontainer, void *vaddr, bool readonly); int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb); + IOMMUTLBEntry *iotlb, bool unmap_all); bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, MemoryRegionSection *section, Error **errp); @@ -122,7 +122,7 @@ struct VFIOIOMMUClass { void *vaddr, bool readonly); int (*dma_unmap)(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb); + IOMMUTLBEntry *iotlb, bool unmap_all); bool (*attach_device)(const char *name, VFIODevice *vbasedev, AddressSpace *as, Error **errp); void (*detach_device)(VFIODevice *vbasedev); --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042205; cv=pass; d=zohomail.com; s=zohoarc; b=IvQlCY80FoCEt2+IGOMrRW2CJvSps90f5KonXUyqnbzPbH+1iplpH7jAZRLEF/VtTu5DwzE+Ov7TXmszDBaMCAQNJ5xRvzBlWKtgMLxTi4yu3oLkUNIGBas+3a2TBOma+wn//Z0rYwBeGpCaO9EkTU4x8KEZYVzDVfBBYpxEYeI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042205; 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=0JCQklG/D+016dQeqWDNDFJ8upw4pb5CR+vFnJ/gxK4=; b=OVYo4TcJkzG/gHJ1bRMA2schICYi2b8Ulr4/xJeoZEKNaj9P4T7Nwg7uOv2Yg1nXCXoypFsIWMdxbmE7U3F9tIHJ/WWnPTwNb++bEAfIi/zWvdGgl9pXKjShgtim/lFflshg7Nx1+qIrEyQWlVYPyBi7W2gp93r0Cjv88wL9ykU= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042205483808.3661242833997; Wed, 30 Apr 2025 12:43:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIc-0007zo-60; Wed, 30 Apr 2025 15:40:54 -0400 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 1uADIU-0007tl-EY; Wed, 30 Apr 2025 15:40:47 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIS-0006D1-Jb; Wed, 30 Apr 2025 15:40:46 -0400 Received: from pps.filterd (m0127844.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UDpuEp004896; Wed, 30 Apr 2025 12:40:40 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010002.outbound.protection.outlook.com [40.93.1.2]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468y109yca-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:40 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:38 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=0JCQklG/D+016dQeqWDNDFJ8upw4pb5CR+vFnJ/gx K4=; b=TZJEUrKkrtyR7ShD9+wXnT45Z+oZrd6L+2OxZdhVKdoxQJcG/2me7qn6n VB5nrffBK7MzUfsY5hjSn7w9N7xJWdY4HgajqXXgS9BtPBtRY95JMQHdyxa+L7v7 qqumYKvNx+Q2kJXCb220qpHS5l3N2UZQil8K9rT0KDEQ8RlebQxdEwZ1yeXcDsNi 4GIJKnrlN95cPGRQ38nkMXVUOWtOT0Sgh2sX67R4GnyYlc8gIZng8dg1x02Y2kz8 Duu+urRQ4LQ4HPgDcZPioLuZmfNJVRgzzvhDeC6rVVtLeAkyNMPgrF+eVOdDOMGs HtXWX51KaallWu1H0Y0wZu12J6eaA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h9KNEfculltHKpp5TRccrnAGvw95fudu7iAWWNKoIz7eaoFxlOYQ7MgTGPoVkmfxZR/4lakT+mbCfRxZ3Z5WEs07sYIJgdT0YTNyPLam7WZrUNppK6UI87Amim0wepGnHwXGuEz5Can3Ksdh6353uMXu40wj3r0TpLVjmjjoJvMni/eCKc8rFOExsWcodJdLr6p5G90tYhibXciaaeUcDBu28trMy1K5qsyWbZoM1pBk7G9Q4jSd4u2jeH4OKtVQrcKUf4Ap/Ws4GBXrZb+NKo0OA4Svx1XhzPZj8YsTGsGc88/PSzEEd9ZIyjAM1SB0aZEEEVf0fQFQ4/FTGipxvw== 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=0JCQklG/D+016dQeqWDNDFJ8upw4pb5CR+vFnJ/gxK4=; b=qN/THOfbn/3051bMwJozhG4XEAd5nYylIJM8mbS2CudR2dPFoVUmh1hsRo4VIUyhKa1OxwAK9hBtbq6tudLZq41JOwO/WChlVb0kmIgwVt7upKWFK3kabAGWpTxuDMdG2kUigimXxeHk4AbrVMcSsYEO1TUMGrBHHGbD6B5z7lzQTlCIjHXMnuFyhMPCIiTfB/dvopbDk35cNA5LC/6Ig8DMP8UTw67Td+yH6FY8Q+98MAVkX8PQPWowMOBNgjyLv4vBiqOKQH9X0a1jp4BUDBo8iHI6zKcX+aTMnIKl+GKn2eo60mJFCoNmRVGx1uHK0AvL3E41MACf1dmOEE4L+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0JCQklG/D+016dQeqWDNDFJ8upw4pb5CR+vFnJ/gxK4=; b=N6FhnJyUOq9laA5OLMyfbuSxrN/X5eEgawKx7PeC9QCJWG7UcjTHkvpc++qZ/kGO+ZnaFRIN3wK65wWRPeM7WbGRZSBnzsB58a7XI0BiBRJCBJlRG0UOOUEKPse3JfpEVr/42C543J9gh6k54SNd89QzQpjSSTbHImETd15ywEDZOMB3P9UsaOgBqdUar4XzfyVzAl2giepxwj/E4ekXESUXTgbOq6gxchOr03xoCaHdqFuZm5km5kwFRrcZs06rFLBerxFGI7ZGnXXivuYRlf4gLPtVCL+9B8KwuzAETI2aYcH3MjTQk7Flp60D9kNlEE8mqH895VO7V//9jOR0jg== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 09/15] vfio: implement unmap all for DMA unmap callbacks Date: Wed, 30 Apr 2025 20:39:57 +0100 Message-ID: <20250430194003.2793823-10-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: db7fd43a-13d9-451c-40b7-08dd881ee22c x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?sWRo3uvKiveRtE265o8rKjL9ZrWOJ3HJi/4FGjuu2CUMYfCxjuUCNjhYJGQD?= =?us-ascii?Q?js+ats5zxsxYu+N1jtVKiuTumnVpN8Eg55/g+pGV487HjJIL06crceMm5PYM?= =?us-ascii?Q?N+9/tfAEib1hFILwH0K4ubITP7BfqeOXFRp2iHRPqlpCe27EPKon5fuHLry7?= =?us-ascii?Q?bLEDrfai/kY9tDKtDEox5IxjESqARDf2MZiKbn7N0ZI9SKrDMu+YW76nSM4U?= =?us-ascii?Q?0oipIGnLeGc9LtcJ2dYl0bqcAETkkmMNjHySeET6e+F6140o31zMZhCTqYS4?= =?us-ascii?Q?r/fqLJDzJAaV/o3Y5OYYKNKWX1wzMjPqxTxdl3OKxl2Q6epwxpZr1LEN818o?= =?us-ascii?Q?SWPt1jZt8bXHDfLB0BEBNUewAswzqSHCveTQIivxIKaWXvb7lRmzV318l5iE?= =?us-ascii?Q?R7gAUGXeYDjfSKpaxnOibQP5k2OwZOej/e0rYaPt5CwwT7Za3qQkjfSdCGhV?= =?us-ascii?Q?Q3dli3pB4WOKq4PH+s2NHeUZAwx4oGCODMlPt53I0I7QzGdzLx5WFCZS2aZN?= =?us-ascii?Q?jO3V5Kk+JGcbqedRjeDrFDTT3ECS09mb0hOuiwXNXd/+Q5K8MJRyfgMEYWDA?= =?us-ascii?Q?xvw5GelF+i0NXhIXKhT0iRPccz3QrYPlrecZMqf6xB0d6X97BAzcxvk6C2Ci?= =?us-ascii?Q?p/PNCjC6rIa8T6duNSVzgB2Z1mhoaZp764vJ56udw/ocHcOavUNHKe2M1Exk?= =?us-ascii?Q?1uybVOGftb+97iLHE2329tCnucOPKWyZm+eb/UmuvhZTwgWUsdqy1ZPWgdlL?= =?us-ascii?Q?tEiivXi3RYNUIZMNiDJfyJhOG9sCYLWEEjBN622lfEF8HJLcFmZVOJEEcUkp?= =?us-ascii?Q?1tG4ACeBeUnZmas5Y068mUZuyswbYF8IvNe19sA15dfioVblb7OuccFIbZIo?= =?us-ascii?Q?mntU4bDzG13Yihekp9JHzLKvvevXCVD1F3woT11YvJA1OUkD+32kXmCLjpbl?= =?us-ascii?Q?DbHGvnPf3FHL8eghJlI6wht4DlQyPotWmIgAIO1sY/mXcLExt5AK51UR5dyF?= =?us-ascii?Q?GnLxim/rB0ybK1LYIkF9zbJjtzDQs96p8jsEXZ19RApyzw9UGUWOKzIBjKBy?= =?us-ascii?Q?fnAw9rIbIlx9RlBCdecCOuOLOKlCiXBaPwqSe6Ts7PSYvGJNVjPNvYtYjgF6?= =?us-ascii?Q?yBwDoHQyZl8Nomxg05YwSjgyIGQJ2lrlbf8C9c8UnvvlUpixFpS9GkxPtvcQ?= =?us-ascii?Q?177ZC7V5aG43yRmH3aHdKdgYwvoNDcOVyMyGaGoy40zqxvwvoU4P3vBPah9e?= =?us-ascii?Q?NwDVabarP0ilzLet2KaG69dQ1v8ezfbzsCpom0j0VQzdTjcKicYSE4JfcQ27?= =?us-ascii?Q?JWuyMlOQ2eVCsqq0fZRILuRDjZ8br64oyaoQYtElgYy1vx297z5MQ07j6Y+A?= =?us-ascii?Q?owKqTEdXfhFrNkd1MzqaoSrKvDyG1pXhXrNCAif1BQV3UQdv/ZWFfGzPvvjl?= =?us-ascii?Q?IWBXTuyrKcI=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?S3zD1MxkrEkeNfDqQLR/XaS8r0Pv79gFwHOyTFuboKy5Ii+Prq9+i4avOwaf?= =?us-ascii?Q?DcYdjQEd9UuokUZkkmN5eB4QpGbYFqZZdRVC0zJMgUoycuannXub650Rm5IZ?= =?us-ascii?Q?JFjhTV4h4fVuQiDRLZmYKtdqngAB2OJNIceF3U5XkXmbwBTvenXEpff6EvbL?= =?us-ascii?Q?iQtyacy9W489cFkel55WU3jrdi6Tzc01ZCoTGxAgvtqUnxaxbbVzr9clVHyB?= =?us-ascii?Q?K2E4LqwREEH8WxOmz1mxqJb1iA4T8wsZ2YNjflR8kFZ6mqpx9b/6WJ6hXdDq?= =?us-ascii?Q?7Mt1D3tv34p2WAkkGFVM28nteA8IQhjrng6pl9QDyW40sd138Sv7vPoyfHL9?= =?us-ascii?Q?Ss/qGnbmcofXXH1D795bfoNol0BZTCOmEKPSr3LmpW8TvsxAdsBj6asppAB1?= =?us-ascii?Q?oLaOpZJa1aqH2zgTChp/VrlG0/VdiH+kw8imFZz7f3gArDbxnOyuW+5u6Rk8?= =?us-ascii?Q?oyWnrxSbnkhCCtfgfcN0s7oR6sU2iEAft13qui+o0tVCr3ScnmB2zif8QeL7?= =?us-ascii?Q?YVwrFKU6OslDjph3a37jguIgEgN/jr5/ywWIx60Fl0TgIslu3G4vi9M7ivMv?= =?us-ascii?Q?+ZwTfayhnuEgHs5ehezXFwuTgQk3SuU9zwxo4R4lqx8gPxleFqJs3t1UPgZ7?= =?us-ascii?Q?tsRtk9WWP5bxRLBJSPn3GbIJDCrN9mciigMeoQ76NsUSX8LfiqqIrxuzPJQv?= =?us-ascii?Q?g7Y+O+rEdVNgFl4ufTeVLviQ8amzNk+XlMBoXUgWKB24TlOY4mOk/J5A1NoB?= =?us-ascii?Q?4fc9raejiuUyfJkCb6DL6HqbA6v1JrZUvOEnStxUifftaXRVf43tAp33WYHp?= =?us-ascii?Q?9SMW58upSIO+ivRRhJYmEERquOQrSTKM+aj+japemhYBkejpdyCfNPu27Fh4?= =?us-ascii?Q?j/j/1a6v5RfE4MKiCf2KRiX9Ced2j0b1M18HQWQ8dpZu60hh/g32JZavVrrj?= =?us-ascii?Q?4Hz8CYO99Y/6SHkW1mWRa3BjUbCefN2sIiYPMI7KDjOi2vjl2Mgk+QR5lExQ?= =?us-ascii?Q?B1/bUS4WB1WzT03JJ3FG3tzIcK2EJXC1D5N8shrAeqyIlB+dB8VAmnLenD6j?= =?us-ascii?Q?D0Zi8gAzFblIu70NaM7Uo1rac8cZUjHAJQMCcoCLAdCVFn65RtP/EM8FyRWa?= =?us-ascii?Q?F5QmIbJiYU4QhYxLFTL72rUwrPg2T0zDF58EoOJ5yAZzIKPzxSdmViG1uA7y?= =?us-ascii?Q?5EOOZgVzHzxvyaV1DqGNWiLza+USropLJVw9+/au/WhkULt0bEAolrtSG2fk?= =?us-ascii?Q?oHQoJDeu0U6EUn7OhKVrRIuG56AnQitcs4hcUWAcnM1jrTxgOhcEjNMfq13Q?= =?us-ascii?Q?9jebgZDl6/Uq4zahNghXNFMKNEOxJLgpa5bShy9qrqsdKkTMtTQ32JwXGmrT?= =?us-ascii?Q?hAKTVnQ70PPvIXFbPVIl9iBjicbaAVbOn7owYFEftqP6UwWZz2af4qw7CaY6?= =?us-ascii?Q?nRa94mtHdnacK8TcM/Y2QvtXXnAxHc5+HJ7s+A5y54YvycioCEpqGqljyoMa?= =?us-ascii?Q?Kj+Y3b2T+k71Sa0Ieq/ICPIc1dQhxGZF1vaAU8QOas1N743RVq+8Sq64abxt?= =?us-ascii?Q?FTUkBXI38HPvqymI6vJRuCNBbz/YKc2dE6v0e9Wt?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: db7fd43a-13d9-451c-40b7-08dd881ee22c X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:38.3613 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: T+qRtHyNDCcBoURcElk8zOt4QAMclgIE0KYH6CFAAVZ+0RsLU6Esj9voLMdDM+upVUVeX2sbT87eNWYoeHjzRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXyHb/mKHoQ6C4 u0DXMiqx0qVtJ81VcbK8tH4AGnT46WDWmQuRB3kdaOSZ6mWObpbUpBG5JgHYRptsWqlWzePsvw9 doK+F1yhjYChD8UcF8OiPsK5y8H0IHCMzVXUuksyeJfdTmu8lwyX+1HExUgfDJ24GuQFyjLXrd4 2ah98uxqJccbC8QI45pivroaA3+HnC2lYhYrJqF7APHXnTYGycUHdTYjgG5BZeBAhfSPFq2F8wG rIru4QSBmGCoV0QY8xkD86YXAnoos/RR+DgVdZuS2FSrUhj0DEGeMxdGovjBDzo0uFISFefgt6V Cjn8b0WiHq68C2Mvqi2gjwumQ90z+cdzH6APO5r7nYfoKdROWec8Lxy+XAThHaMePpQiLzBDQMZ 8JZq6JlJNnMma7pKRFgVRsT+8NR17C/DFm3cSr0H8itciCz3y1oEpaPxA10s2cdZK/ayVJuc X-Authority-Analysis: v=2.4 cv=MNVgmNZl c=1 sm=1 tr=0 ts=68127cb8 cx=c_pps a=Ku5Q1SXtyGRHaGBacwLxwg==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=q38O2AW38pV3Lvc8SEkA:9 X-Proofpoint-GUID: hMTCmfnDzfIIGs5xnJHJO2gghMHLBWzl X-Proofpoint-ORIG-GUID: hMTCmfnDzfIIGs5xnJHJO2gghMHLBWzl X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042205984019000 Content-Type: text/plain; charset="utf-8" Handle unmap_all in the DMA unmap handlers rather than in the caller. Signed-off-by: John Levon --- hw/vfio/container.c | 45 +++++++++++++++++++++++++++++++++++---------- hw/vfio/iommufd.c | 15 ++++++++++++++- hw/vfio/listener.c | 19 ++++++------------- 3 files changed, 55 insertions(+), 24 deletions(-) diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 766ba5a275..1000f3c241 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -119,12 +119,9 @@ unmap_exit: return ret; } =20 -/* - * DMA - Mapping and unmapping for the "type1" IOMMU interface used on x86 - */ -static int vfio_legacy_dma_unmap(const VFIOContainerBase *bcontainer, - hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb, bool unmap_all) +static int vfio_legacy_dma_unmap_one(const VFIOContainerBase *bcontainer, + hwaddr iova, ram_addr_t size, + IOMMUTLBEntry *iotlb) { const VFIOContainer *container =3D container_of(bcontainer, VFIOContai= ner, bcontainer); @@ -138,10 +135,6 @@ static int vfio_legacy_dma_unmap(const VFIOContainerBa= se *bcontainer, int ret; Error *local_err =3D NULL; =20 - if (unmap_all) { - return -ENOTSUP; - } - if (iotlb && vfio_container_dirty_tracking_is_started(bcontainer)) { if (!vfio_container_devices_dirty_tracking_is_supported(bcontainer= ) && bcontainer->dirty_pages_supported) { @@ -185,6 +178,38 @@ static int vfio_legacy_dma_unmap(const VFIOContainerBa= se *bcontainer, return 0; } =20 +/* + * DMA - Mapping and unmapping for the "type1" IOMMU interface used on x86 + */ +static int vfio_legacy_dma_unmap(const VFIOContainerBase *bcontainer, + hwaddr iova, ram_addr_t size, + IOMMUTLBEntry *iotlb, bool unmap_all) +{ + int ret; + + if (unmap_all) { + /* The unmap ioctl doesn't accept a full 64-bit span. */ + Int128 llsize =3D int128_rshift(int128_2_64(), 1); + + ret =3D vfio_legacy_dma_unmap_one(bcontainer, 0, int128_get64(llsi= ze), + iotlb); + + if (ret =3D=3D 0) { + ret =3D vfio_legacy_dma_unmap_one(bcontainer, int128_get64(lls= ize), + int128_get64(llsize), iotlb); + } + + } else { + ret =3D vfio_legacy_dma_unmap_one(bcontainer, iova, size, iotlb); + } + + if (ret !=3D 0) { + return -errno; + } + + return 0; +} + static int vfio_legacy_dma_map(const VFIOContainerBase *bcontainer, hwaddr= iova, ram_addr_t size, void *vaddr, bool readonly) { diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 6b2764c044..af1c7ab10a 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -51,8 +51,21 @@ static int iommufd_cdev_unmap(const VFIOContainerBase *b= container, const VFIOIOMMUFDContainer *container =3D container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); =20 + /* unmap in halves */ if (unmap_all) { - return -ENOTSUP; + Int128 llsize =3D int128_rshift(int128_2_64(), 1); + int ret; + + ret =3D iommufd_backend_unmap_dma(container->be, container->ioas_i= d, + 0, int128_get64(llsize)); + + if (ret =3D=3D 0) { + ret =3D iommufd_backend_unmap_dma(container->be, container->io= as_id, + int128_get64(llsize), + int128_get64(llsize)); + } + + return ret; } =20 /* TODO: Handle dma_unmap_bitmap with iotlb args (migration) */ diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index c5183700db..e7ade7d62e 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -634,21 +634,14 @@ static void vfio_listener_region_del(MemoryListener *= listener, } =20 if (try_unmap) { + bool unmap_all =3D false; + if (int128_eq(llsize, int128_2_64())) { - /* The unmap ioctl doesn't accept a full 64-bit span. */ - llsize =3D int128_rshift(llsize, 1); - ret =3D vfio_container_dma_unmap(bcontainer, iova, - int128_get64(llsize), NULL, fal= se); - if (ret) { - error_report("vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx= ", " - "0x%"HWADDR_PRIx") =3D %d (%s)", - bcontainer, iova, int128_get64(llsize), ret, - strerror(-ret)); - } - iova +=3D int128_get64(llsize); + unmap_all =3D true; + llsize =3D int128_zero(); } - ret =3D vfio_container_dma_unmap(bcontainer, iova, - int128_get64(llsize), NULL, false); + ret =3D vfio_container_dma_unmap(bcontainer, iova, int128_get64(ll= size), + NULL, unmap_all); if (ret) { error_report("vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx", " "0x%"HWADDR_PRIx") =3D %d (%s)", --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042137; cv=pass; d=zohomail.com; s=zohoarc; b=R3dM2AeqqDQOIOv5VmS/PTgL5VwES/D1DE2e0pcaPTmEoDBOtqCgIV0cEJephuLX2fGidmjYKJbzB4cEKorvNJdvrxgAkNhxcLgu2EJsaxnnMashFsRvAfX7Qj4poza+85Y7YhRQJ9uQJPlU23zl1NieMFf0R3P6fBgHv/3FBdY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042137; 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=4V3KAhpFN9rZ4BExTvd+54vQcmDN9WL4MkpPPpLJGP8=; b=MeGzEIjNyGuuL3wxGMmx0w7pPXOsHL4VV0HKUTFlXXHGOEX8BFlPYHwf6vXn43Rvyg3gXU0VkVq0VSO+xy7+mjeWb00lVHOSkvUQavYnn5PdHJYzzf5wY6YR3OmUk1WJHRKDCSA8bTRcCAkP22t2m3CLQLHV+6fL8vVJyN8xhng= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042137550632.6942201558237; Wed, 30 Apr 2025 12:42:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIg-000845-EQ; Wed, 30 Apr 2025 15:40:58 -0400 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 1uADIY-0007ux-Ce; Wed, 30 Apr 2025 15:40:51 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIV-0006Dy-PF; Wed, 30 Apr 2025 15:40:49 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UHenkL030287; Wed, 30 Apr 2025 12:40:43 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010005.outbound.protection.outlook.com [40.93.1.5]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468utu9tqq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:43 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:41 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=4V3KAhpFN9rZ4BExTvd+54vQcmDN9WL4MkpPPpLJG P8=; b=QtqlJq+eP8g335NSS4uIJLNxahw0EVyDvlGFcDfw5wXGUiB8bAKgWJ0N3 6py20TKTvFm8SIy3IxrykTRWEMuSiMSEdSOfaTLynV5GstrIV/fVyosS/T/SikbA f6FFSd3WzQrpbxDgehv5Rh2cJiVt+cLw/GRESJYs3xkg4p6fiyGCY/Jc/8rHYdGh QakqMvn7fLcpV3YJyLC5G+HRVccIqhzCaRJSp/UflTPaYRKc9aTIVAfq3tGLR6II gFilXkctmD4HbAeWgxY8+Z3CTPQ+BAOo+YxKx3orHPXHk4Kaf5sx5Wf8oqoZH/Vj YjzbG+xUzk9+jLdKdyaVwTdr2IPCw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k6daMNgrdtwvfyDanO0E1xGR5NJIZ60KLcZYBfIebyppxjUTY9fmLKziaJWdCA89fW7W6qK/MZEoyWKIYVfJyVbfpwOOl61LSitncpz2ze7mQgKZtBAe++rYyVUASFz2RVG0DhzzcTVx9xvpqgPjl+bPk8EV/u5f2Th7d3YKwArupakGtqu2fdM57/XwC4igbSKe3kxmzLzZwceBtR/RcuDIbs//td7Mr8GPu2V4dKvSc2R2IlqRbUbMaHKyRQghVdQf25oukhmx59mKfYlyN8ACnv8GTblIJHGZxKv7sZZvLpzL7IaSIEkqx0OEV1gfTdaClpAaO0VON65bCOBn7Q== 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=4V3KAhpFN9rZ4BExTvd+54vQcmDN9WL4MkpPPpLJGP8=; b=Ojmx5MoEJmLHOdXXeV4J3z3v0kEoZTb41P4kCHgk8Y/ZjWo9Hr/42+otYgoRG4YcNz6MTz3SqrhmLbQSCeTD71f1IER8dNP/4l3//bZQEMbem0AMgJoxp8qefYi4LA/GEB+INbyGVLuBqclc/22xqbVBrKnMfWMDPPi5LAkClbCZvjHU860IY4ZzNiCHIuz/ZxaRc0kKplyt0QY4Nu5qkg8ajjDcqs2coNyLJ+gNbWMuhPAZgnU5rsqd/wx8Q2+KuzrFdoonWmrm59t4kuenjsVEEyXnD9IU9XfROU/HReJD9UV7rKdSsI+w881rb7eFZSrkSyV53Xg/bmgK07FV/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4V3KAhpFN9rZ4BExTvd+54vQcmDN9WL4MkpPPpLJGP8=; b=b3fl5xZlxiDPr9b/kVr6jkfWhb6Zdb+MWdN/YMptlgYVMWgJuyIh3M8W5bL/Ti+4XgVgmZ2xbg4YNKxPhaJ4X9CpMTU2z5DCTvLqM8vs4yKMYtIBi7pbQ7EChQn8ZmebotjYPnoEbzXaghzdJ5IL9A3kcTQNCB1XDI47KKvMJxnbm/8UFdhgBSitlBGX28r0RHEwWcFSxMvssYkgWSbVh5iDOD43HxLhuHCZYDLIZkH4Luz0X4rUkF7iT545lZi2Ppxszvrv0t9lLKLSssD6slo1ftHEdKxsUmFzHVK5zp1UIr8lw6jZdnxDTuJiDyhCsA66TmGWxrhMkfvdb57XYQ== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon , John Johnson , Elena Ufimtseva , Jagannathan Raman Subject: [PATCH v2 10/15] vfio: add device IO ops vector Date: Wed, 30 Apr 2025 20:39:58 +0100 Message-ID: <20250430194003.2793823-11-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: b43f50b4-e86c-490c-ddca-08dd881ee433 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jSPjp0Fq2uGTlPCQ+2QjibF2/vcpCIMzS4FQ1lcHhqYsdiDEDqVlGUnfYw2Y?= =?us-ascii?Q?Wz2ow0juH/7iiXGQzobvZm/jU8jrVhP2sMz0d7e1LiDdmWHzfuYksQyu70Pj?= =?us-ascii?Q?NMxnFpA+l0WfNsc7NvsFgqKajTUCZTuxnQyQAT08ffy7RMPCzQYE17mpa+Ul?= =?us-ascii?Q?/JfoqO8lLOwLjNKUI3ckwQJAxDO8erWrsFrMUnLV/aBjtuBVlf/x2kGMabKq?= =?us-ascii?Q?pjwTpl1S5icib/cYbBK7F0eBBIwPkcQlZfrHK27OB2S8Mzy8oKox2fbtEP4G?= =?us-ascii?Q?5rJUStjwnzJxJKvE/Nt728M6CTyu/w8Hzy19BnteWCpCkhcHhpIxW3kqTrIo?= =?us-ascii?Q?CahKiccvfWijvL7Gzi6RiJX9XtHZxXeg1a+adYixV9/Jox4NyZmxkRcskfOh?= =?us-ascii?Q?pjUX3hj2Q162Kvtwq+Shxg/+HSxoZpJYSrcJYzGutU/LT6/KHl/2B9zf99NV?= =?us-ascii?Q?VWUFUOT5qI6Uz1BIVXhVVa9EE8TV5CxNRXkdQ0hNM9tVMTy79394rTyWCL6N?= =?us-ascii?Q?FDEGYvc4QcZ3wYwESNWhdRK1Q1KlZzf5FLdIcgK9FdFJSXNxPb/L6bpK7Gvv?= =?us-ascii?Q?V+TBS6NsjrlJi63HnX+DpbSdt14r+1KRT621dsLrxQb5l5AXUir634lpv+bf?= =?us-ascii?Q?qZaejX4/JEZoxzhmIUJSpG3piDScHvmmCxinUK/NcRN6sH+77R4bcnBacZ7v?= =?us-ascii?Q?nuQyO12WcBa5mL++WqWnOdjMwO7VA/Efv7RdJcHhvGTq9M6v9nJv05hdzHXX?= =?us-ascii?Q?0Pz9BkJA7zrglG8BDitCC4/H5F6JHM+IOcCyspbDp3B42YPwlWUQwkhOZDlQ?= =?us-ascii?Q?QE1TWvol49q7UptSvtkgzCJENroVMAqFtzNLmFrPEF76341VtFaspJc2bPNW?= =?us-ascii?Q?f0ii845S26o3JKU/v+Q5j0BKeUKvezCykIRKkeXOWrB3T7erU0R074bN3YaY?= =?us-ascii?Q?F7Y8bVFMRfcX5T8E19mwYpoEBfNWvVMxtWOc4f/Pilk6kCTS0DA0OZQ9LZ0y?= =?us-ascii?Q?ngzOZQIQIaDi0/lDSBI2l8IgWtwipUWncIWP850vyanrvCu+akkUYnBh+Hvw?= =?us-ascii?Q?/F5xgY4duixRGv9N8tQPW+01tC7XqY8VANCSg2lob29K97r3skBz6/AOHvcv?= =?us-ascii?Q?JaEtKxrtppIFm/QB2Yy/+HrNT73CawA0UNSlamv8VpG6bRdsuDtHebfj/GrC?= =?us-ascii?Q?HWcEbD/mLXJv9lKMtthwGjD2kRa9fiZ0fJaf+yCY8hsHGzrDaUuMKBXmJyG9?= =?us-ascii?Q?gjZtPqxIBXhM997S1Xc2+cmFxOV8D/zG2E0VN5hsVOUzQaDnP69kZEDGB+R9?= =?us-ascii?Q?/aqSJ8NsfDt6PipvUD+p8+yGjgIsBVjKDcOEYsmKUguAiT4t3Nv5UIi+5fos?= =?us-ascii?Q?Qj4s/pIbCnV/uLLTB2ivTg2d6pY0p9A10SIEE9/WI/JHRlm4Nlod4b95r3Sl?= =?us-ascii?Q?Dyg5RivCX8A=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?83dFGMQVGOXU54A2Zf2HsnRL5xCc3kq7J+hIJPz2XhKZqeJHtDwoVNoBokWB?= =?us-ascii?Q?V5EvL4xmaAqj5SLSihwhjpjpkRQ76gg+chnRLCU7MBR+L8wrak7wovw5bVAR?= =?us-ascii?Q?GQsXC9O+dngd3+Z0UKJdhe3BIizsOr2f/HrsMg9V/ah1gSVlhiMRDqQ/0qKe?= =?us-ascii?Q?G5ze5T1+l+dUAOdTD8sU0r2KihLhoal83LjIs4Y8QfyfJ7fVyWqFF+Hq54pz?= =?us-ascii?Q?fUQ9/g1ZkAUwsV1dP2h3aMwULMNiWp7a9d13ZAbMMQM4RsjsQHLB6AJe1AQv?= =?us-ascii?Q?C6mZS7EIIvpfREb7yMjypBe29SGgerDAiemblOBc5PA/Ws9FInnARQVBBqCE?= =?us-ascii?Q?WgIak8HxL7CFGG0cY/Q+6qCNGItpfxZmW0sVSOv26/zaC7wrm9SXQsePPGL4?= =?us-ascii?Q?UvQk+I3Y+yaAgYFWeepIzbgEvSAgwjgnmfkG6XYO9cGgpbMP6mI/NdK8XgQA?= =?us-ascii?Q?lonHx1AaUgR5pHJd21RSGVX2//1kR7Y8sT7h6BbKwAUjuT0CIDtrNzo+CyTh?= =?us-ascii?Q?SV4B+5/QZqa/Mu4knFuqZWDXWgNgiPMj1V22+aTTZ4q2ybzSRYtDM2C4KaS1?= =?us-ascii?Q?+PRXl9uYI7/xKGEUVZezLZxMbbwVa95jyjg6KhL45QJlKWr8qubuNp8Gp2sJ?= =?us-ascii?Q?PmtGNm9XSNjVUql7qkKLxg7RQDFwrwBwz2O3vxX/e1tc1sirDVL+B+PCafa5?= =?us-ascii?Q?hKItFCFOXcG6eaKpQkM7OTZu5z0qWXwz2W6VdwN+AzBcRTDSpQ2CGLH34whQ?= =?us-ascii?Q?uo9e//CexjwDagy/FHBhk4Nr/bKyYTkjaHN8QcciDS4Z+N15I4vULf2CnAlp?= =?us-ascii?Q?bJVF3g1UmAxtqNBeFyv0KjIYYgNTHqwY23VxmmZGV6DPKH/+sDi27JLaHmsb?= =?us-ascii?Q?+/YKuXwPQUxs4VG/Jv5oZ0Dwf8RdPVuY8z/hLdSLq8fys+1qknAVK9wnFWBM?= =?us-ascii?Q?mOdUiEI6VHicC70KNEsq2bwGra30p7l+zluou48OUPN86O9LcnC5dKJZf46S?= =?us-ascii?Q?QxXAHCpSMcfsJDIynMx9pJSk06Q+bDdtft4Lh5N75tv8S7Ozrjf0g9sIVvv/?= =?us-ascii?Q?i0+waJg5DM5q409BpR5fIXi/DOzR4zcaJ4N9QXkJckCaMd2zlsEHig171qXw?= =?us-ascii?Q?qDsKskoj53N2L/mdTtGLz7jF3kdhqWgZG4t4VzbLJZOnurKF8UZ/8JAfm37f?= =?us-ascii?Q?GqTODULt/e80p6dpUoIdvUmR22L7o/oYReHh+nTxCO2TJnB+JLQXgJ4H7UqP?= =?us-ascii?Q?7+ssDZjmlH3j/vbWJ+jjWYwNzAVemdyHJojklx8iY/OO47R4uiOsjj0nOn6h?= =?us-ascii?Q?Y55SjbJq7CDoI22FvcFArO+OwWtRo1pJlUpOm5nLVKjHhXSDmWMbIkQOlstI?= =?us-ascii?Q?+dRszAaT6OoXIEFFKb/DHN+99vJ+rURsxYYkkArEIB9I4RVpXLp+hzuDxueK?= =?us-ascii?Q?iiRRA1XE5RxgyD2+YDXkPCm/Orl6ak9HEWuoVcZEAavGKczesiJLH9iXBJpL?= =?us-ascii?Q?YBHLoeO427Y/vCsH2woHjMQzhyv0FaK9C7FpzsAF6uAudyviu3o8HgpfXO/G?= =?us-ascii?Q?MJK3diUh/3eASIeDD8El0VvN09HfwQZX0NQOVcw4?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: b43f50b4-e86c-490c-ddca-08dd881ee433 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:41.8535 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: XfXEQvBxrBlTKR97W0dv3S8gD+X4Sze90Dt6JKqOssf2fHC5GDTh0X3HJFFSjE+VSpXJjiOneOmkHcg73Xnrqw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-GUID: SVKBpiBLzURdfkkCPGFBrDd3YK_Lu1-V X-Authority-Analysis: v=2.4 cv=GcIXnRXL c=1 sm=1 tr=0 ts=68127cbb cx=c_pps a=94i1PXq8WVRBNmfdvHlv4w==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=yPCof4ZbAAAA:8 a=64Cc0HZtAAAA:8 a=EI333REZRzQfoknhNBQA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX/+7TryW4gDMc pShr5THXjk+O6vvDk1C3FeHgoEAXNwrLgF/4zz0k7uDnbST3q+Vmai7nT61bzWdf+SY4qDEMYgK RTF5QKnzAEdYf+UJvJFY7jVutrNWtYGbRzdpOeQN+7PNxzKeHYxOK1b9jdX2yQlyiooLSbSkAbf AzEhxDSIe8k1giQMX7lPj0to6OWOeRfFWlaCziWiJ6MjnL86UH5VIvBy+fFj5E00lfSoABQ2D+6 VwXPh/RBxmzJhPbtohIvyDm0mh/mm3WDiO3fecydTEa/X5jZBm6OouCpalhSMqMz/pxmXxqvGVq ND44/UZ0NuhK1H0Tuj1A+tGc656LNqDRBSLpsmn4m6AT38e8AXyO0szZh5WU15oCyPYfJQR2tSC 48jBpVt7pTETxd+nQe0x1jJw0qNhjp4wUDOlNVQ+5ElFBPvZ9tC9pT9H2yyYkoMUlT9dLrup X-Proofpoint-ORIG-GUID: SVKBpiBLzURdfkkCPGFBrDd3YK_Lu1-V X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042138664019100 Content-Type: text/plain; charset="utf-8" For vfio-user, device operations such as IRQ handling and region read/writes are implemented in userspace over the control socket, not ioctl() to the vfio kernel driver; add an ops vector to generalize this, and implement vfio_device_io_ops_ioctl for interacting with the kernel vfio driver. Originally-by: John Johnson Signed-off-by: Elena Ufimtseva Signed-off-by: Jagannathan Raman Signed-off-by: John Levon --- hw/vfio/container-base.c | 6 +-- hw/vfio/device.c | 77 ++++++++++++++++++++++++++++++----- hw/vfio/listener.c | 13 +++--- hw/vfio/pci.c | 10 ++--- include/hw/vfio/vfio-device.h | 38 +++++++++++++++++ 5 files changed, 117 insertions(+), 27 deletions(-) diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 3ff473a45c..1c6ca94b60 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -198,11 +198,7 @@ static int vfio_device_dma_logging_report(VFIODevice *= vbasedev, hwaddr iova, feature->flags =3D VFIO_DEVICE_FEATURE_GET | VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT; =20 - if (ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature)) { - return -errno; - } - - return 0; + return vbasedev->io_ops->device_feature(vbasedev, feature); } =20 static int vfio_container_iommu_query_dirty_bitmap(const VFIOContainerBase= *bcontainer, diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 5d837092cb..468fb50eac 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -82,7 +82,7 @@ void vfio_device_irq_disable(VFIODevice *vbasedev, int in= dex) .count =3D 0, }; =20 - ioctl(vbasedev->fd, VFIO_DEVICE_SET_IRQS, &irq_set); + vbasedev->io_ops->set_irqs(vbasedev, &irq_set); } =20 void vfio_device_irq_unmask(VFIODevice *vbasedev, int index) @@ -95,7 +95,7 @@ void vfio_device_irq_unmask(VFIODevice *vbasedev, int ind= ex) .count =3D 1, }; =20 - ioctl(vbasedev->fd, VFIO_DEVICE_SET_IRQS, &irq_set); + vbasedev->io_ops->set_irqs(vbasedev, &irq_set); } =20 void vfio_device_irq_mask(VFIODevice *vbasedev, int index) @@ -108,7 +108,7 @@ void vfio_device_irq_mask(VFIODevice *vbasedev, int ind= ex) .count =3D 1, }; =20 - ioctl(vbasedev->fd, VFIO_DEVICE_SET_IRQS, &irq_set); + vbasedev->io_ops->set_irqs(vbasedev, &irq_set); } =20 static inline const char *action_to_str(int action) @@ -155,6 +155,7 @@ bool vfio_device_irq_set_signaling(VFIODevice *vbasedev= , int index, int subindex int argsz; const char *name; int32_t *pfd; + int ret; =20 argsz =3D sizeof(*irq_set) + sizeof(*pfd); =20 @@ -167,7 +168,9 @@ bool vfio_device_irq_set_signaling(VFIODevice *vbasedev= , int index, int subindex pfd =3D (int32_t *)&irq_set->data; *pfd =3D fd; =20 - if (!ioctl(vbasedev->fd, VFIO_DEVICE_SET_IRQS, irq_set)) { + ret =3D vbasedev->io_ops->set_irqs(vbasedev, irq_set); + + if (!ret) { return true; } =20 @@ -188,22 +191,19 @@ bool vfio_device_irq_set_signaling(VFIODevice *vbased= ev, int index, int subindex int vfio_device_get_irq_info(VFIODevice *vbasedev, int index, struct vfio_irq_info *info) { - int ret; - memset(info, 0, sizeof(*info)); =20 info->argsz =3D sizeof(*info); info->index =3D index; =20 - ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_GET_IRQ_INFO, info); - - return ret < 0 ? -errno : ret; + return vbasedev->io_ops->get_irq_info(vbasedev, info); } =20 int vfio_device_get_region_info(VFIODevice *vbasedev, int index, struct vfio_region_info **info) { size_t argsz =3D sizeof(struct vfio_region_info); + int ret; =20 *info =3D g_malloc0(argsz); =20 @@ -211,10 +211,11 @@ int vfio_device_get_region_info(VFIODevice *vbasedev,= int index, retry: (*info)->argsz =3D argsz; =20 - if (ioctl(vbasedev->fd, VFIO_DEVICE_GET_REGION_INFO, *info)) { + ret =3D vbasedev->io_ops->get_region_info(vbasedev, *info); + if (ret !=3D 0) { g_free(*info); *info =3D NULL; - return -errno; + return ret; } =20 if ((*info)->argsz > argsz) { @@ -320,11 +321,14 @@ void vfio_device_set_fd(VFIODevice *vbasedev, const c= har *str, Error **errp) vbasedev->fd =3D fd; } =20 +static VFIODeviceIOOps vfio_device_io_ops_ioctl; + void vfio_device_init(VFIODevice *vbasedev, int type, VFIODeviceOps *ops, DeviceState *dev, bool ram_discard) { vbasedev->type =3D type; vbasedev->ops =3D ops; + vbasedev->io_ops =3D &vfio_device_io_ops_ioctl; vbasedev->dev =3D dev; vbasedev->fd =3D -1; =20 @@ -442,3 +446,54 @@ void vfio_device_unprepare(VFIODevice *vbasedev) QLIST_REMOVE(vbasedev, global_next); vbasedev->bcontainer =3D NULL; } + +/* + * Traditional ioctl() based io + */ + +static int vfio_device_io_device_feature(VFIODevice *vbasedev, + struct vfio_device_feature *featu= re) +{ + int ret; + + ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature); + + return ret < 0 ? -errno : ret; +} + +static int vfio_device_io_get_region_info(VFIODevice *vbasedev, + struct vfio_region_info *info) +{ + int ret; + + ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_GET_REGION_INFO, info); + + return ret < 0 ? -errno : ret; +} + +static int vfio_device_io_get_irq_info(VFIODevice *vbasedev, + struct vfio_irq_info *info) +{ + int ret; + + ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_GET_IRQ_INFO, info); + + return ret < 0 ? -errno : ret; +} + +static int vfio_device_io_set_irqs(VFIODevice *vbasedev, + struct vfio_irq_set *irqs) +{ + int ret; + + ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_SET_IRQS, irqs); + + return ret < 0 ? -errno : ret; +} + +static VFIODeviceIOOps vfio_device_io_ops_ioctl =3D { + .device_feature =3D vfio_device_io_device_feature, + .get_region_info =3D vfio_device_io_get_region_info, + .get_irq_info =3D vfio_device_io_get_irq_info, + .set_irqs =3D vfio_device_io_set_irqs, +}; diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index e7ade7d62e..2b93ca55b6 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -794,13 +794,17 @@ static void vfio_devices_dma_logging_stop(VFIOContain= erBase *bcontainer) VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP; =20 QLIST_FOREACH(vbasedev, &bcontainer->device_list, container_next) { + int ret; + if (!vbasedev->dirty_tracking) { continue; } =20 - if (ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature)) { + ret =3D vbasedev->io_ops->device_feature(vbasedev, feature); + + if (ret !=3D 0) { warn_report("%s: Failed to stop DMA logging, err %d (%s)", - vbasedev->name, -errno, strerror(errno)); + vbasedev->name, -ret, strerror(-ret)); } vbasedev->dirty_tracking =3D false; } @@ -901,10 +905,9 @@ static bool vfio_devices_dma_logging_start(VFIOContain= erBase *bcontainer, continue; } =20 - ret =3D ioctl(vbasedev->fd, VFIO_DEVICE_FEATURE, feature); + ret =3D vbasedev->io_ops->device_feature(vbasedev, feature); if (ret) { - ret =3D -errno; - error_setg_errno(errp, errno, "%s: Failed to start DMA logging= ", + error_setg_errno(errp, -ret, "%s: Failed to start DMA logging", vbasedev->name); goto out; } diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 8455010d62..bbf95215cc 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -381,7 +381,7 @@ static void vfio_msi_interrupt(void *opaque) static int vfio_enable_msix_no_vec(VFIOPCIDevice *vdev) { g_autofree struct vfio_irq_set *irq_set =3D NULL; - int ret =3D 0, argsz; + int argsz; int32_t *fd; =20 argsz =3D sizeof(*irq_set) + sizeof(*fd); @@ -396,9 +396,7 @@ static int vfio_enable_msix_no_vec(VFIOPCIDevice *vdev) fd =3D (int32_t *)&irq_set->data; *fd =3D -1; =20 - ret =3D ioctl(vdev->vbasedev.fd, VFIO_DEVICE_SET_IRQS, irq_set); - - return ret < 0 ? -errno : ret; + return vdev->vbasedev.io_ops->set_irqs(&vdev->vbasedev, irq_set); } =20 static int vfio_enable_vectors(VFIOPCIDevice *vdev, bool msix) @@ -455,11 +453,11 @@ static int vfio_enable_vectors(VFIOPCIDevice *vdev, b= ool msix) fds[i] =3D fd; } =20 - ret =3D ioctl(vdev->vbasedev.fd, VFIO_DEVICE_SET_IRQS, irq_set); + ret =3D vdev->vbasedev.io_ops->set_irqs(&vdev->vbasedev, irq_set); =20 g_free(irq_set); =20 - return ret < 0 ? -errno : ret; + return ret; } =20 static void vfio_add_kvm_msi_virq(VFIOPCIDevice *vdev, VFIOMSIVector *vect= or, diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 5b833868c9..e89ed02c0e 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -41,6 +41,7 @@ enum { }; =20 typedef struct VFIODeviceOps VFIODeviceOps; +typedef struct VFIODeviceIOOps VFIODeviceIOOps; typedef struct VFIOMigration VFIOMigration; =20 typedef struct IOMMUFDBackend IOMMUFDBackend; @@ -66,6 +67,7 @@ typedef struct VFIODevice { OnOffAuto migration_multifd_transfer; bool migration_events; VFIODeviceOps *ops; + VFIODeviceIOOps *io_ops; unsigned int num_irqs; unsigned int num_regions; unsigned int flags; @@ -141,6 +143,42 @@ typedef QLIST_HEAD(VFIODeviceList, VFIODevice) VFIODev= iceList; extern VFIODeviceList vfio_device_list; =20 #ifdef CONFIG_LINUX +/* + * How devices communicate with the server. The default option is through + * ioctl() to the kernel VFIO driver, but vfio-user can use a socket to a = remote + * process. + */ +struct VFIODeviceIOOps { + /** + * @device_feature + * + * Fill in feature info for the given device. + */ + int (*device_feature)(VFIODevice *vdev, struct vfio_device_feature *); + + /** + * @get_region_info + * + * Fill in @info with information on the region given by @info->index. + */ + int (*get_region_info)(VFIODevice *vdev, + struct vfio_region_info *info); + + /** + * @get_irq_info + * + * Fill in @irq with information on the IRQ given by @info->index. + */ + int (*get_irq_info)(VFIODevice *vdev, struct vfio_irq_info *irq); + + /** + * @set_irqs + * + * Configure IRQs as defined by @irqs. + */ + int (*set_irqs)(VFIODevice *vdev, struct vfio_irq_set *irqs); +}; + int vfio_device_get_region_info(VFIODevice *vbasedev, int index, struct vfio_region_info **info); int vfio_device_get_region_info_type(VFIODevice *vbasedev, uint32_t type, --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042121; cv=pass; d=zohomail.com; s=zohoarc; b=b0J3ib3LqX1HwpMzgi+tOIY5mWTc/laK81ggOXtiSEjkTiZpJDYtNTunLCEw+gu+FGPxXvgeXhgLw3v07n+L7vysYu9Wmbm7JpeCA9f5adrNHh6fuZmJkDd6toCtV6C11q8IF7MH4bGTVwrKdQQNKlNf3L8o/G80qez/eDMcjEg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042121; 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=gBDPuFVodxZSeWzqdov9AjdHIbFaNUF+RcewLL6RNss=; b=lR/sIFIq06MO4ppOZQ3Dm5+pnJlAmLt2MeKkO7F7BmuqRsIsrHJp+2czwQhMscvtdEJv3xU+A/s/uucUbOXyKu1h7HzZ4C0KCHoQ+9PBmvSaNoAXbY8EXoHUV+hDfP/NJ9DeDNbuOl4rJfEVfWrwfo0vCfAQaFM/bTWpDYzaPzU= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174604212123949.09600343933232; Wed, 30 Apr 2025 12:42:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIj-00086B-0M; Wed, 30 Apr 2025 15:41:01 -0400 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 1uADIc-0007zc-1N; Wed, 30 Apr 2025 15:40:54 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIZ-0006EX-9k; Wed, 30 Apr 2025 15:40:53 -0400 Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UJ40dP013771; Wed, 30 Apr 2025 12:40:47 -0700 Received: from cy4pr02cu008.outbound.protection.outlook.com (mail-westcentralusazlp17011030.outbound.protection.outlook.com [40.93.6.30]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468xjk1pbd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:46 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:45 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=gBDPuFVodxZSeWzqdov9AjdHIbFaNUF+RcewLL6RN ss=; b=ihJeowZOTaZplS8OnLWHbihYdtx/yeEZCZqm3Cip7MDlhSOT6XMMaaAm9 jLGqc2egNHpdiylow6w9SE0oUyrUx74gLB09kzueu8ZC31Z0aDJqki7JmRzYyJxh QVUf+PnHtWnGc66amAVn+/ZJ+T6j+8g/54hs5XN25xB7FaRrsdp9xQPPMte5rKE8 YnMpX+XplaYG+xqkO4pANd+oHwAtrFf50O/96CCzwSA3DXAyxdrhw/1bVkJMVBsL c+7A3TQuxYS0wrnRar4PGiHResHvNqNIqQmGnI2zud+AXXNoe5Ez+vw2xTyeoDcm e22vCu+GphWfD/m58KaDNz722rhxQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PeFshofFXp3xxcUUjnuLj1mbi9a6nNPV0RGsRbxI1zBn60KXh/fEyGCSI4gIdJKXbrkn8mCLSCsB4LEfHRgO1MNPP4zg+FtMN5LlMbRg99briaSNyUSspImSGJcL+n1dT6HmK2bo5mWXuAhanzD9gMmt8N/vypEsW+hngkNG7XmGDxsYu8h/pFND74CdTX0Xs58y0NHOfrgjpbrvLvJSguJkJpISTiUeHpMxaYXz/cHGpRCjINR3TVhTFCIbxR3sah9Sv2Oy2kDKJYpiau5x7FK0viVM2r+6mWouecrPanVUWGD0nQOmL2fBAKuKPQANNUg3li2l8MXP6pkvbhi2Qw== 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=gBDPuFVodxZSeWzqdov9AjdHIbFaNUF+RcewLL6RNss=; b=WhvvBdjPaHZlZOfbj8EzOpKif0vKXH+1YvsTe6JE4rHw+928RFqvxTIxn8p4nCZNdlVJW1Pyedvvspm3G7Nevz3+XgaEvPMHo1FTLGzClW1/CNDn2Bv95pFzfKp2Bfg6YFr8DdvlVyGRy+GRlaTG0PKpCcgiAXnyMy3HwvLAJLdqALDPa4qwoHhIolYsIYQozk08P8dM5+nuYtJdHJBybVCRlqTx2WUn/w/mwAKDlGnMTaw5tURxXFXRJ2wXNlKHT74fyc1WmC96Tk+3ZEpgS1bgUj4O98oEMYSfqnWO2kB/xlwfahyPEW4y303pJNT1Lt+1BMuCKgdDvomMWhf/0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gBDPuFVodxZSeWzqdov9AjdHIbFaNUF+RcewLL6RNss=; b=WSAgYjbQikBLdR/6bd9kL5cByotH8M8evvYQHj2wgLii5EAg2H95AdjSybsLkJE6XDlxeVNIs6flUbeKfqYEUIp5fc5o4YjAuP3nBa6SIgdh/aaW/SXPpxi3HMHGCVFpPNBmCOafMyb2PfaFwuE/aS6Z4i3kqMi0FgClmi/8fVM71JqESbLx8YhJXX5fSls6X35cTTRnGV4taKD6cd8qKLOu7m4Z3R+lAhbizAbza1GZNH90/WOCMj15Jt93u1QBJVvaEZLATp9TxiCZHJPe4WplIOMzY9KYmFsQwGIwR8Qu2f3ALoXGL/eF+F7mof70bCv6NFjFLXaErJdTV1fkqw== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon , John Johnson , Elena Ufimtseva , Jagannathan Raman Subject: [PATCH v2 11/15] vfio: add region info cache Date: Wed, 30 Apr 2025 20:39:59 +0100 Message-ID: <20250430194003.2793823-12-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: 497d9d85-4dca-4772-aa7f-08dd881ee640 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?A4a/1g/wtlyzZm1uID8ATEHxJsp7is9uu3tlc0bvRZ+p78vtAHZV2UlKqkAR?= =?us-ascii?Q?T09OukfxNTQRWPDjkdArYH4hTpghWZxlrnHPso13spqKp/tx7+zK6xfiiZKB?= =?us-ascii?Q?g+MgsMXv2LxbHg7Z4uf5dBTz9DXcS8nPbR0d8rKpTmt/YVHywBes8YwgB2A8?= =?us-ascii?Q?qKRIQkuGV8El7CrEB/tuSoaPybfv3yo0SbacHIKH1h6GRkjAJV7BakOdTaBH?= =?us-ascii?Q?aGhYAMegJpItxBA+1ahpH0MrpmbT/2jx/lyHAOaqYLES/CdqWViTZLNLPheB?= =?us-ascii?Q?/yG+G+6BL/QsQ9O0gvc9lHbjqOhER6nmXwuZUNXijQKqaUD6Y2JkIxXCspMO?= =?us-ascii?Q?/haRhWdKUx8L71vVkx4jPs6ks7pxJF0OWuxt7Izvpw2URGKC9EL9syz0QRiL?= =?us-ascii?Q?M8Lo/PaGx+rFRpHOoIt679Lc+GCWECeeXZ2E0T+gO5cPJldWjs+/M8GNtszC?= =?us-ascii?Q?cJPVn3UZmLehd07n0DJ7Fc4pCrNABgqzj6zeNFAcKOH1Qw1Zv3B8jNlKxzdB?= =?us-ascii?Q?eO/Dl1ZOW6s2gdjjWT8At1co87DXpEXhKmxw1ugVccI6qr1IyCq7jeIX77If?= =?us-ascii?Q?W4uzp0cjA1gj5uD1e+qeTATqxNK0PwjuQuycpbRn6scxu9nOZ1bR45A1OcD/?= =?us-ascii?Q?teerR8M7BaqfJyVlhqK9QUPaC5N2ZkrzoCpWNNbqY9ZPlaBRmGXj4a6lKvxI?= =?us-ascii?Q?9BUovBo084XSVSzpIZfR3lxIrP4ncLGnwx6Oqn+Mt8J+itIleecKAFaB1+b6?= =?us-ascii?Q?Z44c/3adquQhP2a/qitl/g3Zxv4T7ytaYAXxfcPVDKRtYIb3A1NJXOYEq9lM?= =?us-ascii?Q?3Cfxjd03Y4qUx50zSEfW3YbIO6HTR4zPcFuKuZpYx0mqh0lySadq0JRFohQ9?= =?us-ascii?Q?OhWnR0u3qIns40AojJ99EbPpFXHkxPn6plglUtjytyVeMDldoIUmIdx3bHiw?= =?us-ascii?Q?tu+kuxyKZ2fAX5CNs6xv0N+SyHSkoXyOX+BriX+7E7Zqwy/9dApIU6UdpNok?= =?us-ascii?Q?iCzaNHPs0wAs/VfsdfaYAW0sRLPBCIZt2vtJbqm2STzgfy4G2a9TbEBXuboN?= =?us-ascii?Q?heUZryPwPt0osHXvACOPmpXIMwq3L2tvt/2OduN6YIRNJhOf8AaoSg+r17zm?= =?us-ascii?Q?7zUUC/uiTwktdgl0SPbvrvDsHNcvEI/t0nrIhjQp9yh+lbzhyyIQOKhm6WG7?= =?us-ascii?Q?3Qz2UOUUx1/L0pBrYUgDGGRJaOUGktr6jYvF93jc0X7Mtdjtl8NzD16Mbyha?= =?us-ascii?Q?ZyoVyLsyGKcDd1RVvTICpvEqz8IEY4eHHCXnvpbofmMhlY3bl8ikRe52aWAH?= =?us-ascii?Q?E3tlA+kjqpLKQGCqmY+Vjzjb4C3MNwAIcamkdi56MBLzk7hs63w9N6QhI1tI?= =?us-ascii?Q?9zFUyBJRXaSQ86RnWrgv+bHcrNvDmOOGXMxzl+aHh3/2ERCJgQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?e19EHRVKb8YwNByGbfNHfJfyKX0rJVr2oOV/qvZFxiCKivf4CN6DbMsJCPGQ?= =?us-ascii?Q?w7Cp/q1nTuBxPhWBFimGv67f6RAUhv60hSb6p+NBubiquIEUl+PJRcWE2hBK?= =?us-ascii?Q?lUDmleV0ouBAJXK7PD6+cTcx+QGuRdINXNFfEwrBSEQwPIQqo9vrb1gXDf8f?= =?us-ascii?Q?5c9w1VCOKr/6+VcHccbriKSp9mWQNXs+ES0iQijudVckBtd46s3/8fVNtt9Q?= =?us-ascii?Q?ZgBc5Lgm7Qx2Hkr/VIhrVlntWecMvat4IPygOtzEak3i5+vY013hTpKItQ+S?= =?us-ascii?Q?Ot6cEAgiEqvxEehyzmBHazvO6no3XzlJviA4LRqrBawnB3TfRV2uYaAGhkLb?= =?us-ascii?Q?OIbKsAxM84XFuY3C0YOz99fgumI+sH60mU6+o1PwWXyigUinZ0b5u6onM2MC?= =?us-ascii?Q?+ARwfbTsFX6YCtMpcS5e1mR1yHzslDAlCkRShKa9IVPz7espd78jGHZtCbYL?= =?us-ascii?Q?yUrXrrRMnxvPF6uKmzxNI4lfKF6IpxDnjG7NS/WXSxJEEgfGWkO+iGl1YOtE?= =?us-ascii?Q?Ds/STS24ezwZVwKOytOVlFR8QGrANXTHU6KqujcCAeLixWIRsOEghGzISWSO?= =?us-ascii?Q?xZEnk/1+7mNPvO1DPd+Qb8cna3/sWDN6meCURZwjQnas0+ARXIpqM7syL2/D?= =?us-ascii?Q?D68xmoLE8tlwAiEKBgi66RjHSenJbl8mh4bwUOeuyy8MQFV8C9foTYjEJfVi?= =?us-ascii?Q?ZF39na3c9+umsJH76c32yUFbvUH4NHCZusWyqdUrczTnM96J+jaWJyDiKFjn?= =?us-ascii?Q?Gbmz0fhp0JD6XkcHQkso91sovZJTnPed6VzaOcl6x8Pe+pgfqV97JwYNijGa?= =?us-ascii?Q?He6ssxGPELDY5UaWq9/Xwwx4z9Jzh/7iP/TMsDtWeu1N3ljO7xjucSHe/9Iv?= =?us-ascii?Q?ku+SOwCL485yI1j2Yhj2mkkMWM6W1wUcvh+Y0BWzCY17mryPw2MHSCAPGDUq?= =?us-ascii?Q?h6OIQPg+9IB//iwqDtKdUyE6yh9hclUgAE0JpfxIvCvbIm6Y75ZDJemFJ8R8?= =?us-ascii?Q?+fnYGZwQS/4iaNjZqZzO1G8V7Kd7zp14UXXKYpnoT2TYD0bEGhm9GFESFOOd?= =?us-ascii?Q?9zGs3HEWexXzkWQmi07ZIbBudukGTEgjR1EN6OYbqpws4JTz1tpP+XFcurzj?= =?us-ascii?Q?SFdMreClqtf7BWRdYyE6QDmE48nn0FsWkymJeWONsT7BQ6415fDPkKLbANj2?= =?us-ascii?Q?hkee86y7NPmzbW1Ico9UKfvfmHVglL8NpONvt2ju6oEOC5mYjIGGDHTy8MiX?= =?us-ascii?Q?Jrw1pEVeytMs+YvB2SnB7tlbUbGoYQ7u5kT+IEdEE6pboRvWztz4fvd8QFvc?= =?us-ascii?Q?BC/wtA2F+an0EErsSugok1c+2rU2QfqQMvJaa8KITVFBNKNLuD0ii/yvKfdq?= =?us-ascii?Q?BMyv8kQI6Uq5ND4dUrlnfTQXGEpESH3HCn1zo2TiSNBZDnOxg5zTiY4wG7dN?= =?us-ascii?Q?+461039ma9BZMZTOtqjBF743aNeXMMknjyLIRiJFsLY3muPmzi7Q/I4CZwZO?= =?us-ascii?Q?CJIXLqXT5z4bEFBs0eeKkbHxYoXgry+ZJn6YvMaq2iY68FVL7dX3iT502Ht+?= =?us-ascii?Q?nJZo3Tv0ACxMJScRNiaya0MqST2WzFajx7guhir4?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 497d9d85-4dca-4772-aa7f-08dd881ee640 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:45.1907 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: APSVqZVwYdF+QGNgtLMSnG9GhxdnYjzgAGOD7/G/vGx2nYePB0F+Bm7W0ml6to5NXPtWk8VTfHLKGUWSV7yThw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-GUID: y4dn0ho1CDKWENFCCVbpbL5jHg6ZRE5u X-Proofpoint-ORIG-GUID: y4dn0ho1CDKWENFCCVbpbL5jHg6ZRE5u X-Authority-Analysis: v=2.4 cv=RcyQC0tv c=1 sm=1 tr=0 ts=68127cbf cx=c_pps a=yZcDG7BW7OBBh6O1hU8nvQ==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=yPCof4ZbAAAA:8 a=64Cc0HZtAAAA:8 a=l_MCg1Kh9GJPLq-LlQoA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXwnq6P3UURvYZ I2MusJ44ucl378mHJ2k5tnzh6rnLLsLHJj2ARnUqK1l63iD8fsVVXhyCBOYOe+L5hNZpTS6jfMl H9QrDBH0TwLbRNwAf7XAeHPGHU+colXuRoej/0SubwCq9HXJMmA1mgWB7UrQZkt7Vitx4L91H3I r5qZW45oP6OLl6scKcD5dTHGekSLyRIxiGUkrNOI4BXhf8ozu92PX/yRIt4N1/zGtHU/GhhVYH2 SIy7oa93eexCseVzHRaMIfRVhqI0UppnMwBhx5E6mu1hHkClXRB2xAkjwFlwKFswPybufXsT/se 4pKQbNgFm6jU7hMF3roE/2Q++GHCQVh2j0jEhJHYVcqQpUoNO7muQesI1kdHXxrMHkXD+OXFa2y BcRFyjp8h7PeOXkamS0kvk4X799AuAZGBacmBGk3djpPneZMQ+DrQ/0FIcYosv8q8laQO38k X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042123766019000 Content-Type: text/plain; charset="utf-8" Instead of requesting region information on demand with VFIO_DEVICE_GET_REGION_INFO, maintain a cache: this will become necessary for performance for vfio-user, where this call becomes a message over the control socket, so is of higher overhead than the traditional path. We will also need it to generalize region accesses, as that means we can't use ->config_offset for configuration space accesses, but must look up the region offset (if relevant) each time. Originally-by: John Johnson Signed-off-by: Elena Ufimtseva Signed-off-by: Jagannathan Raman Signed-off-by: John Levon --- hw/vfio/ccw.c | 5 ----- hw/vfio/device.c | 27 +++++++++++++++++++++++---- hw/vfio/igd.c | 8 ++++---- hw/vfio/pci.c | 6 +++--- hw/vfio/region.c | 2 +- include/hw/vfio/vfio-device.h | 1 + 6 files changed, 32 insertions(+), 17 deletions(-) diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index ab3fabf991..cea9d6e005 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -504,7 +504,6 @@ static bool vfio_ccw_get_region(VFIOCCWDevice *vcdev, E= rror **errp) =20 vcdev->io_region_offset =3D info->offset; vcdev->io_region =3D g_malloc0(info->size); - g_free(info); =20 /* check for the optional async command region */ ret =3D vfio_device_get_region_info_type(vdev, VFIO_REGION_TYPE_CCW, @@ -517,7 +516,6 @@ static bool vfio_ccw_get_region(VFIOCCWDevice *vcdev, E= rror **errp) } vcdev->async_cmd_region_offset =3D info->offset; vcdev->async_cmd_region =3D g_malloc0(info->size); - g_free(info); } =20 ret =3D vfio_device_get_region_info_type(vdev, VFIO_REGION_TYPE_CCW, @@ -530,7 +528,6 @@ static bool vfio_ccw_get_region(VFIOCCWDevice *vcdev, E= rror **errp) } vcdev->schib_region_offset =3D info->offset; vcdev->schib_region =3D g_malloc(info->size); - g_free(info); } =20 ret =3D vfio_device_get_region_info_type(vdev, VFIO_REGION_TYPE_CCW, @@ -544,7 +541,6 @@ static bool vfio_ccw_get_region(VFIOCCWDevice *vcdev, E= rror **errp) } vcdev->crw_region_offset =3D info->offset; vcdev->crw_region =3D g_malloc(info->size); - g_free(info); } =20 return true; @@ -554,7 +550,6 @@ out_err: g_free(vcdev->schib_region); g_free(vcdev->async_cmd_region); g_free(vcdev->io_region); - g_free(info); return false; } =20 diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 468fb50eac..d08c0ab536 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -205,6 +205,12 @@ int vfio_device_get_region_info(VFIODevice *vbasedev, = int index, size_t argsz =3D sizeof(struct vfio_region_info); int ret; =20 + /* check cache */ + if (vbasedev->reginfo[index] !=3D NULL) { + *info =3D vbasedev->reginfo[index]; + return 0; + } + *info =3D g_malloc0(argsz); =20 (*info)->index =3D index; @@ -225,6 +231,9 @@ retry: goto retry; } =20 + /* fill cache */ + vbasedev->reginfo[index] =3D *info; + return 0; } =20 @@ -243,7 +252,6 @@ int vfio_device_get_region_info_type(VFIODevice *vbased= ev, uint32_t type, =20 hdr =3D vfio_get_region_info_cap(*info, VFIO_REGION_INFO_CAP_TYPE); if (!hdr) { - g_free(*info); continue; } =20 @@ -255,8 +263,6 @@ int vfio_device_get_region_info_type(VFIODevice *vbased= ev, uint32_t type, if (cap_type->type =3D=3D type && cap_type->subtype =3D=3D subtype= ) { return 0; } - - g_free(*info); } =20 *info =3D NULL; @@ -265,7 +271,7 @@ int vfio_device_get_region_info_type(VFIODevice *vbased= ev, uint32_t type, =20 bool vfio_device_has_region_cap(VFIODevice *vbasedev, int region, uint16_t= cap_type) { - g_autofree struct vfio_region_info *info =3D NULL; + struct vfio_region_info *info =3D NULL; bool ret =3D false; =20 if (!vfio_device_get_region_info(vbasedev, region, &info)) { @@ -438,10 +444,23 @@ void vfio_device_prepare(VFIODevice *vbasedev, VFIOCo= ntainerBase *bcontainer, QLIST_INSERT_HEAD(&bcontainer->device_list, vbasedev, container_next); =20 QLIST_INSERT_HEAD(&vfio_device_list, vbasedev, global_next); + + if (vbasedev->reginfo =3D=3D NULL) { + vbasedev->reginfo =3D g_new0(struct vfio_region_info *, + vbasedev->num_regions); + } } =20 void vfio_device_unprepare(VFIODevice *vbasedev) { + int i; + + for (i =3D 0; i < vbasedev->num_regions; i++) { + g_free(vbasedev->reginfo[i]); + } + g_free(vbasedev->reginfo); + vbasedev->reginfo =3D NULL; + QLIST_REMOVE(vbasedev, container_next); QLIST_REMOVE(vbasedev, global_next); vbasedev->bcontainer =3D NULL; diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index d7e4728fdc..c7db74cde4 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -191,7 +191,7 @@ static bool vfio_pci_igd_opregion_init(VFIOPCIDevice *v= dev, =20 static bool vfio_pci_igd_setup_opregion(VFIOPCIDevice *vdev, Error **errp) { - g_autofree struct vfio_region_info *opregion =3D NULL; + struct vfio_region_info *opregion =3D NULL; int ret; =20 /* Hotplugging is not supported for opregion access */ @@ -355,8 +355,8 @@ static int vfio_pci_igd_lpc_init(VFIOPCIDevice *vdev, =20 static bool vfio_pci_igd_setup_lpc_bridge(VFIOPCIDevice *vdev, Error **err= p) { - g_autofree struct vfio_region_info *host =3D NULL; - g_autofree struct vfio_region_info *lpc =3D NULL; + struct vfio_region_info *host =3D NULL; + struct vfio_region_info *lpc =3D NULL; PCIDevice *lpc_bridge; int ret; =20 @@ -532,7 +532,7 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice *vd= ev, Error **errp) * - OpRegion * - Same LPC bridge and Host bridge VID/DID/SVID/SSID as host */ - g_autofree struct vfio_region_info *rom =3D NULL; + struct vfio_region_info *rom =3D NULL; =20 legacy_mode_enabled =3D true; info_report("IGD legacy mode enabled, " diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index bbf95215cc..1aeb4d91d2 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -883,8 +883,8 @@ static void vfio_update_msi(VFIOPCIDevice *vdev) =20 static void vfio_pci_load_rom(VFIOPCIDevice *vdev) { - g_autofree struct vfio_region_info *reg_info =3D NULL; VFIODevice *vbasedev =3D &vdev->vbasedev; + struct vfio_region_info *reg_info =3D NULL; uint64_t size; off_t off =3D 0; ssize_t bytes; @@ -2710,7 +2710,7 @@ static VFIODeviceOps vfio_pci_ops =3D { bool vfio_populate_vga(VFIOPCIDevice *vdev, Error **errp) { VFIODevice *vbasedev =3D &vdev->vbasedev; - g_autofree struct vfio_region_info *reg_info =3D NULL; + struct vfio_region_info *reg_info =3D NULL; int ret; =20 ret =3D vfio_device_get_region_info(vbasedev, VFIO_PCI_VGA_REGION_INDE= X, ®_info); @@ -2775,7 +2775,7 @@ bool vfio_populate_vga(VFIOPCIDevice *vdev, Error **e= rrp) static bool vfio_populate_device(VFIOPCIDevice *vdev, Error **errp) { VFIODevice *vbasedev =3D &vdev->vbasedev; - g_autofree struct vfio_region_info *reg_info =3D NULL; + struct vfio_region_info *reg_info =3D NULL; struct vfio_irq_info irq_info; int i, ret =3D -1; =20 diff --git a/hw/vfio/region.c b/hw/vfio/region.c index 04bf9eb098..ef2630cac3 100644 --- a/hw/vfio/region.c +++ b/hw/vfio/region.c @@ -182,7 +182,7 @@ static int vfio_setup_region_sparse_mmaps(VFIORegion *r= egion, int vfio_region_setup(Object *obj, VFIODevice *vbasedev, VFIORegion *regio= n, int index, const char *name) { - g_autofree struct vfio_region_info *info =3D NULL; + struct vfio_region_info *info =3D NULL; int ret; =20 ret =3D vfio_device_get_region_info(vbasedev, index, &info); diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index e89ed02c0e..b4a28c2a54 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -83,6 +83,7 @@ typedef struct VFIODevice { IOMMUFDBackend *iommufd; VFIOIOASHwpt *hwpt; QLIST_ENTRY(VFIODevice) hwpt_next; + struct vfio_region_info **reginfo; } VFIODevice; =20 struct VFIODeviceOps { --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042180; cv=pass; d=zohomail.com; s=zohoarc; b=jSvIUb22yQ+fhG12CAT5unItN9OLEu1/1VmDv/puv8ocvyurjLyzCSzstGviMrQle1VERNUXWR1CnPHvh6TgDvGUAOcCfpVx3hduM6OE00m+Q1uu7jtBRVm3aOQxUdpdX8KVD5QOCmzDllZxQUSYlNPQN9f3NqqUCN7xxtFtsik= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042180; 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=h+Uj8iE7DGovWgXv7Wf5Nlgs7XnUqdRkOql7LB3pHHA=; b=CyA8CLVQrO/rilf5svchbquzKD2jtej+n5Ktw1Xrx6VZXjt/+NEF5gV4uec96/n1Ne5SLVRaUTE7V+c4LJYgLmvzVXXqx5jlJXAlrvgl2bUEHVRw/zJEcdhZN08E+WboBuU8zuYjalDcjvuulmyKXpHAY4GFcK6ZJW2qjo7yxpM= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042180164365.7511232035812; Wed, 30 Apr 2025 12:43:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIh-000866-W2; Wed, 30 Apr 2025 15:41:00 -0400 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 1uADIe-00081Y-Ia; Wed, 30 Apr 2025 15:40:57 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIc-0006Eu-Ib; Wed, 30 Apr 2025 15:40:56 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UJaWv3001285; Wed, 30 Apr 2025 12:40:50 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010002.outbound.protection.outlook.com [40.93.1.2]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468utu9tqv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:49 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:48 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=h+Uj8iE7DGovWgXv7Wf5Nlgs7XnUqdRkOql7LB3pH HA=; b=dmS3AmFGhI6/iVYC04a5CAmrAEGW82rg6N1r+PrpvbCq9M2x6JJSkbjjt Lp6VpC/NsqMgb8Kji7hvsAhJ9XnqPx+hCyohlZlZfEZdvaWvGWxdP7s3/6OvS5cl SWejYoiS1KfUNW8Hr6/Q6L/X/mz1kzw+tmb1De6WfQKpE3vHMH9oPFNOTKyF6BAp DNcyaBT2H2hQ6IgCnfrlioD/jemeDEWj09MPPlg9VpsMc5J4wndVd3ThVvv8Wwd+ eeV7R9UQ9myWC4xVIRv0UFTapQYhMYQPu1vP2aMcgnYy7y5jTZ6UD9rvGLVZTAr1 lItVo9ZbXwnXuBiZwrTZcg8v6CKeA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Aa9rvmpSqidOJi8Oe+0cx3mkjhSr/fNSLPndcs3+ZQq9P63pMf8NNU4sflyPasgtEgAjZcAb9d4HKBooG057Knd3r274ITtdoSGzW4J7IYrnFl182zJl+dSAENOGzKoozgHnaSa85Pk6VnrHKt1Bw83my8Z3IOniuctK+RLWrM523KSMvTFzw6Ksc1ajy62Fvhv4IM24A0KwO+jpm1w2PEkzh7BA53006vliiGv3OkX2E65TtkL4HyQSwvJxNCZgX+/QWp+oYlzi6+GH2Kk9zaqHA8n3yQw0EiftQNtTun0/ugYKZHWOqs1tvqrw/3q+i1Un9zZMv4BAjIth1nuqhw== 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=h+Uj8iE7DGovWgXv7Wf5Nlgs7XnUqdRkOql7LB3pHHA=; b=XiZwxNWdqQnv9gjp0j0FzYXRrUxqx6pwEUXLjwaeTegOTDrd3GjdaWjSaCxBar24dDVoxywc57EZBjlp3PZVlMfs6hvnVTfF0Ru9o8NfWNnrTE1qHXsWJGQawiOeud2O55xlEqECTnV4NZw2HesKnwNnnF4e47vOG7hkW7E324SBtHe6Emna9DWpbvUSrN1JYGgV2djRBMwW12d3bHiHFaQDDfhcLqNBWuAt60YxCvwrIpMXMbdF6R6b4HD7KkdqCmu1INnXmeflM2NEk6E2t99khSP96aLz/XHhrpEsywXgPGMUtoSoa8iKTAEL0NyrK3S9KTewWZ+g9StIN3fO8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h+Uj8iE7DGovWgXv7Wf5Nlgs7XnUqdRkOql7LB3pHHA=; b=dQLMZ+tzX32msMfpLGRncmjv3+0cre45rIyQUKVdDhO2J4m0WY96wcoY6rhxKKPJUYHyZsn8glpKWhI0QpnFeF4UN0erBKHvOss4k9KFypnStLMK/k+GCi/tQ1B1Wnu2F1vMbxxySPefL+84rkemTEaJqL8sgdv+Hqfd5rlyz6UJJZuDyIVXIaIOq8Z7v2eyhVDbgRwY5XazRFYBS3lTLw+prRCeMoFIxWZlDmlTWKR9RWM/+wJenGLIBecZ+gPX18b7WTauJSo/gB6m8qhVD9Co9xmUQgOb33nbXBL21WRJGg/JGu1fz12Vv0o5LsGP3FzF+y04LmU95ej58ZsxjQ== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 12/15] vfio: add read/write to device IO ops vector Date: Wed, 30 Apr 2025 20:40:00 +0100 Message-ID: <20250430194003.2793823-13-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: 7be3e002-0123-48e6-785e-08dd881ee80d x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PPvninh4zk5zsmUcJ0q6iTj8YVtWl9xLfJLjdpfekSzFmaLnjnYWniR/E7Fb?= =?us-ascii?Q?oI4099bUfXknnr0gUKzd1S8RSt0ANUxp9tOt42RVFobCAxmDBJem4q4cdmkj?= =?us-ascii?Q?jx4ECiN2KOHRAiIYpxfqkBvknAp75OAHE+TsKdVXqXfdgQrhMB+11uXFzo7+?= =?us-ascii?Q?rAmD7MhX4nfP/792Cfh59fkpX0bI/hdGhHZTIvkA27hgxYHhvlZUg687QIrP?= =?us-ascii?Q?SM17QVYoCf116MvKP3rt1M9OwN3iY9+q2UsQ8HN3uimBM5m5VZKolCUPGCBP?= =?us-ascii?Q?MrASwDy+RtXzLgvpG56Dxxss8xStAQD4fm2iNELMPs9QgnGifT3dwCaNOmgR?= =?us-ascii?Q?jeR7wha2nQqG9BvsqMxTcoljdHb+qMrJ19CVZ54pUFuAt9rmRZIL/oxaukDE?= =?us-ascii?Q?IaBsAWxPj/c/cufRZloERv1UIpLGQrcW/nuwMW9dEZ9nq+h8Km9IrVqulJth?= =?us-ascii?Q?Phptq6piwCMdZ4OgBSeEvvYmtPBuMPmaXtZJrpHrPxz2mvcCvfW6t2tlUjz9?= =?us-ascii?Q?zWs8AQS7TPcs8R/Y/wmKM8rRcyzjvsCjDMBd1Tq3biSD2GfnCkKboKh7IziV?= =?us-ascii?Q?hpJZf0IWlOqjLeUgA71zsb3kVDjsmHm11UaV5wG+0i0OaMRfAv0QUkgpAlT8?= =?us-ascii?Q?oEEveRJvVEgQMOJTcSs/mNVZeWnRE0zmDiT3bWEiNGHx8jBkJqa6elqSeboE?= =?us-ascii?Q?5egFOeSOECYSFSxVi7ft8kPKRlvdPeT150EQjm/qOqOk36VRimzccMEqont4?= =?us-ascii?Q?2UhEmZGDQiG0J4ueWoVhnXRQT26VUBq0VAcCpQbuBWfRbYGRL60hHdZzDDFT?= =?us-ascii?Q?USSfyfOJCwK1yAWVFZHNCSqluYwK+Bo84js8dPwx0czCEq8oNzCi2+HEbMqG?= =?us-ascii?Q?dTiC6YPnFpGSE+bSoOZGBCRVLFk1WubkEWdjheafeRiE/sBqVdZcirzQf+A6?= =?us-ascii?Q?fdYfaAih2QvKRsjSuoy8eA0e3LuE6lm+gg9aOPVNP4B4YnC+2VDlNUSTQKtN?= =?us-ascii?Q?surFfvKw1UvrwTtvvlGS5jmY+FpeI4MrMoLhgzAsnkIUxEl6FmCIJvGAd6T+?= =?us-ascii?Q?G/PbcjRg0bQ8PX9WLzEITPpMolqI5ME1jvuTmggY4XNKAanhxpQoitha52Jy?= =?us-ascii?Q?gNeziZeI1CoK81oPwZnc7SrOTL2oE8mbdlf+frB6q2Y3yTuKKJTLqxwW9oCE?= =?us-ascii?Q?HUUjAwskOToZva13IeZPAS3KIUjGBMOjq2mbseZR8vqayMJFWFjIFwqpRVcQ?= =?us-ascii?Q?e+fD4Ykip7WJQx6DkSetTxi4urTUmBuOaiOikDXb07GtLYn2If5cdjHSqzC8?= =?us-ascii?Q?m07xeDxTCuUdA2ZNWUUYmlz5GX2hHQqlIlwokbXDsIPZQJr8ClAcAWGX7882?= =?us-ascii?Q?dqHhIRizI5LTJIqyiZDjF8oGbLv6RNUqqmLwR2tiYXlJ8pUqp/XS72wcjnTs?= =?us-ascii?Q?ttRrAtnuCoA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Mb8z7Bso+r8+a1KvmJHYUu2RMjka3gQHGOo9Js093UMddxojT04QAnpYKaoT?= =?us-ascii?Q?vA9pICDkz3mjt/TGAvQXnIjYaxlA26NEHKcDs7brOaXlWkHuhFuKbY4739Dz?= =?us-ascii?Q?WHgFT65fx5ysz5DUmELa4dP+whHc5jJqwALDwXavMz9HyzbiH7ziCPktHG2s?= =?us-ascii?Q?oYffY8YU3l7QXXjPh0ytUqFeuPtqCyH78FPvG3YOr+YeYkstxEqgMfr9olAx?= =?us-ascii?Q?7/BVn2usXJuNijC9UTdrLh3s3fv21zsWVIB/op/zIo3KXNvy+KGFXJK3cE90?= =?us-ascii?Q?rWBUCHY7OumJghHTzC9ocJUdmexo5Atu+gBAC9SVDy+VYYJKHHWaZ1jxBaFo?= =?us-ascii?Q?JYq4BMvx0vHUvkncJY525xQhBplgTo2rEDBO9hd43dDa3IcfYB8W+vpzfA41?= =?us-ascii?Q?rgnnreEbSs0H59S6K1+vUV+Lmvbz71HvsGwCae9vatqAv9nuTvCyUCTeSP71?= =?us-ascii?Q?GoRBlcbj+YeRACeAYfEDBgssv71e2SnT1ItiN3W5kJHORSCK+H4JEvOcaEL4?= =?us-ascii?Q?94qJIV+Tm6yvb1bkUCg1VEFfJSXdGe0fok07AaVX64UCOw7xIVWZ5s7zYUzw?= =?us-ascii?Q?83qTPgAYsboOz9NJSS0P2Aq2TMyGc8FG4GvrRjlsXwdxL62LSj6Q72tN5IoU?= =?us-ascii?Q?gW03Dv4ywOyxZHzh+OqWPPwnkmTCuJN3KaUp1eN0l8vJ1YS3VgHEseksPRav?= =?us-ascii?Q?mrZPgqKNglvvXkaJ55NY8JJWDrr0mTnc+DGkcFFzUk5KOV73R+EW66mQBsWo?= =?us-ascii?Q?Oe86Qta+tmdmLxj5gc1E7OQ+dG5E017mxHBaiVUcSfO/aoc0DUa9pz26oQRs?= =?us-ascii?Q?HTaTk0S+08+U9TLMLz3lRYX+5dBAEBu+h0iVBdZbGdi+T2RQfRPMehf5mGdl?= =?us-ascii?Q?WGbDw5sabYIVtRdowHO/LtgYRrfbyozouNEnT43glD3kq4THRibZkUZaL/4o?= =?us-ascii?Q?X6/+wOABy/uCULKRsYHrc4/XZHlab4SZrjpbj4kp93jmC/Ld0Fxp7navl61R?= =?us-ascii?Q?Twm+7Foico7AZvpC9HfbewmvvkQ+Ut0iXEDMyUnJd1JnPSDu0fvt2HFgEKNm?= =?us-ascii?Q?2wbDs/F+TChoguyloB/vzdJk3MtGRhDzeEhy2uQ3hSeJbv2tQp2IcxOV5yk3?= =?us-ascii?Q?nQhxyzYSuKGl4toZmNyYOKUxpsUT6CyL7NDG1x/SCDVW6bTlFEL/I64YOTLY?= =?us-ascii?Q?wP10EjvBj2UfuQhfwpBuPmBZSNER4ihHyOaSstNLVnP2ccGmbBE4YHXtIKKq?= =?us-ascii?Q?ik2fGjv9c3uFKkVmgHRFf/fMtXNsU83gRQKLxvRBwQsTDC3eAc/Gdfd2zV8T?= =?us-ascii?Q?S506ijounKs2IyNtfLpG9RO6WCg01Y2UIAJ0Lm51UIxkbSIgTIt9Lh3/2Tdm?= =?us-ascii?Q?i5HaLOpo4gDaPrU9baPTJqN/GS4PicoVns70G03/YTPvOEY1u1BeSCpbYUl1?= =?us-ascii?Q?/q4WNIfC68GEkn8/8KmRFYloqNZyErzfiBOw6wnY4azrTkStk0IZHs/zdGDB?= =?us-ascii?Q?Cs6+DWwqOAAi17uelJAEVvl/wjpHJKwe/gyQVbuuAV8/uOnBFCA34UJ0mZQe?= =?us-ascii?Q?e4hDU9R/boTXvVHXO+UuwzKCPH8dbQMcUotLlWU2?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7be3e002-0123-48e6-785e-08dd881ee80d X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:48.1869 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: D0Jpvc/2Otr5vcfHN9c8PhQAoY5RyFq8HyjpgjSIlaa8rqcradrOf2DzgVo2/Z0SDsifhs9HbM4Jrh14nlLABg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-GUID: 81fFr-B8r6Rj1y11-bDc27oCnoVsvRbU X-Authority-Analysis: v=2.4 cv=GcIXnRXL c=1 sm=1 tr=0 ts=68127cc1 cx=c_pps a=Ku5Q1SXtyGRHaGBacwLxwg==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=YUCnVxA6LD9_ozL8f6kA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX8fqifdIdHaSO YaOCMrG0K/rs1N9Lvkk3iIlOhJZSn1A9FOZdi7/yW8n1nusvFEvjiNjgPU3d5kL0jTln8Jwp3hj ykr1iKzKX5fcO8wbEMlbPpA+SiXvqONM5PY9tW53O8olpbxUPiBqMOk0y/Cirt0GWJScXQtoeHQ Squ84+wSy1puMr91Oi1dfz7kqfKYavYanqhKRHH5QJT5IGvEB+18j3CfrhQey0ntvUf265CtcJp jPkRugKusWvo8AiGFRNPEJ9IWjLXaBbQRKh6fHXNfmdRrhNCQMM4Em7Nw+OYEfgBYVpOcmzgLYS GqZEuvDYUl79Z7dvNpg8qnRLmte+m2ChR94nvmPOiC3TyFcn2xSR16Z/NAwx50FsgV2f1oXE5oF uuXlG2Xi50DEwzzFhPARXFh5h+TcYn0Dj20aotv09LYYwYexXAItGkoHB+GV/aREa0VgOks0 X-Proofpoint-ORIG-GUID: 81fFr-B8r6Rj1y11-bDc27oCnoVsvRbU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042182893019100 Content-Type: text/plain; charset="utf-8" Now we have the region info cache, add ->region_read/write device I/O operations instead of explicit pread()/pwrite() system calls. --- hw/vfio/device.c | 38 +++++++++++++++++++++++++++++++++++ hw/vfio/pci.c | 28 +++++++++++++------------- hw/vfio/region.c | 17 ++++++++++------ include/hw/vfio/vfio-device.h | 18 +++++++++++++++++ 4 files changed, 81 insertions(+), 20 deletions(-) diff --git a/hw/vfio/device.c b/hw/vfio/device.c index d08c0ab536..ceb7bbebda 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -510,9 +510,47 @@ static int vfio_device_io_set_irqs(VFIODevice *vbasede= v, return ret < 0 ? -errno : ret; } =20 +static int vfio_device_io_region_read(VFIODevice *vbasedev, uint8_t index, + off_t off, uint32_t size, void *data) +{ + struct vfio_region_info *info =3D vbasedev->reginfo[index]; + int ret; + + if (info =3D=3D NULL) { + ret =3D vfio_device_get_region_info(vbasedev, index, &info); + if (ret !=3D 0) { + return ret; + } + } + + ret =3D pread(vbasedev->fd, data, size, info->offset + off); + + return ret < 0 ? -errno : ret; +} + +static int vfio_device_io_region_write(VFIODevice *vbasedev, uint8_t index, + off_t off, uint32_t size, void *dat= a) +{ + struct vfio_region_info *info =3D vbasedev->reginfo[index]; + int ret; + + if (info =3D=3D NULL) { + ret =3D vfio_device_get_region_info(vbasedev, index, &info); + if (ret !=3D 0) { + return ret; + } + } + + ret =3D pwrite(vbasedev->fd, data, size, info->offset + off); + + return ret < 0 ? -errno : ret; +} + static VFIODeviceIOOps vfio_device_io_ops_ioctl =3D { .device_feature =3D vfio_device_io_device_feature, .get_region_info =3D vfio_device_io_get_region_info, .get_irq_info =3D vfio_device_io_get_irq_info, .set_irqs =3D vfio_device_io_set_irqs, + .region_read =3D vfio_device_io_region_read, + .region_write =3D vfio_device_io_region_write, }; diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 1aeb4d91d2..5e811d5d6a 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -918,18 +918,22 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) memset(vdev->rom, 0xff, size); =20 while (size) { - bytes =3D pread(vbasedev->fd, vdev->rom + off, - size, vdev->rom_offset + off); + bytes =3D vbasedev->io_ops->region_read(vbasedev, + VFIO_PCI_ROM_REGION_INDEX, + off, size, vdev->rom + off); + if (bytes =3D=3D 0) { break; } else if (bytes > 0) { off +=3D bytes; size -=3D bytes; } else { - if (errno =3D=3D EINTR || errno =3D=3D EAGAIN) { + if (bytes =3D=3D -EINTR || bytes =3D=3D -EAGAIN) { continue; } - error_report("vfio: Error reading device ROM: %m"); + error_report("vfio: Error reading device ROM: %s", + strreaderror(bytes)); + break; } } @@ -969,22 +973,18 @@ static void vfio_pci_load_rom(VFIOPCIDevice *vdev) static int vfio_pci_config_space_read(VFIOPCIDevice *vdev, off_t offset, uint32_t size, void *data) { - ssize_t ret; - - ret =3D pread(vdev->vbasedev.fd, data, size, vdev->config_offset + off= set); - - return ret < 0 ? -errno : (int)ret; + return vdev->vbasedev.io_ops->region_read(&vdev->vbasedev, + VFIO_PCI_CONFIG_REGION_INDEX, + offset, size, data); } =20 /* "Raw" write of underlying config space. */ static int vfio_pci_config_space_write(VFIOPCIDevice *vdev, off_t offset, uint32_t size, void *data) { - ssize_t ret; - - ret =3D pwrite(vdev->vbasedev.fd, data, size, vdev->config_offset + of= fset); - - return ret < 0 ? -errno : (int)ret; + return vdev->vbasedev.io_ops->region_write(&vdev->vbasedev, + VFIO_PCI_CONFIG_REGION_INDE= X, + offset, size, data); } =20 static uint64_t vfio_rom_read(void *opaque, hwaddr addr, unsigned size) diff --git a/hw/vfio/region.c b/hw/vfio/region.c index ef2630cac3..34752c3f65 100644 --- a/hw/vfio/region.c +++ b/hw/vfio/region.c @@ -45,6 +45,7 @@ void vfio_region_write(void *opaque, hwaddr addr, uint32_t dword; uint64_t qword; } buf; + int ret; =20 switch (size) { case 1: @@ -64,11 +65,13 @@ void vfio_region_write(void *opaque, hwaddr addr, break; } =20 - if (pwrite(vbasedev->fd, &buf, size, region->fd_offset + addr) !=3D si= ze) { + ret =3D vbasedev->io_ops->region_write(vbasedev, region->nr, + addr, size, &buf); + if (ret !=3D size) { error_report("%s(%s:region%d+0x%"HWADDR_PRIx", 0x%"PRIx64 - ",%d) failed: %m", + ",%d) failed: %s", __func__, vbasedev->name, region->nr, - addr, data, size); + addr, data, size, strwriteerror(ret)); } =20 trace_vfio_region_write(vbasedev->name, region->nr, addr, data, size); @@ -96,11 +99,13 @@ uint64_t vfio_region_read(void *opaque, uint64_t qword; } buf; uint64_t data =3D 0; + int ret; =20 - if (pread(vbasedev->fd, &buf, size, region->fd_offset + addr) !=3D siz= e) { - error_report("%s(%s:region%d+0x%"HWADDR_PRIx", %d) failed: %m", + ret =3D vbasedev->io_ops->region_read(vbasedev, region->nr, addr, size= , &buf); + if (ret !=3D size) { + error_report("%s(%s:region%d+0x%"HWADDR_PRIx", %d) failed: %s", __func__, vbasedev->name, region->nr, - addr, size); + addr, size, strreaderror(ret)); return (uint64_t)-1; } switch (size) { diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index b4a28c2a54..d3ab13ca6a 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -178,6 +178,24 @@ struct VFIODeviceIOOps { * Configure IRQs as defined by @irqs. */ int (*set_irqs)(VFIODevice *vdev, struct vfio_irq_set *irqs); + + /** + * @region_read + * + * Read @size bytes from the region @nr at offset @off into the buffer + * @data. + */ + int (*region_read)(VFIODevice *vdev, uint8_t nr, off_t off, uint32_t s= ize, + void *data); + + /** + * @region_write + * + * Write @size bytes to the region @nr at offset @off from the buffer + * @data. + */ + int (*region_write)(VFIODevice *vdev, uint8_t nr, off_t off, uint32_t = size, + void *data); }; =20 int vfio_device_get_region_info(VFIODevice *vbasedev, int index, --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042179; cv=pass; d=zohomail.com; s=zohoarc; b=B+cTiK/0ZELfLgMUmAhxbmI3QjNNbuCk3qfpY6VD2eNPCYMlGosXROeoyoGyLGFsASID7tKXMLZsp0ZZtQ/PZ7Mip9MXPMNhfBiu9vECg1FUbkeSjkuaQjU6YcuW51V3Absgsb7Ty6VvNNTa8vgJ0CTsFiClVWeGo/MDW3rehV8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042179; 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=3cWts/br90n3r72SmkLiuwTzLZ/FmKG/8K8ZfIZr1tg=; b=no7JubAXIK02iq9KrVmo6fXCN/wJqv6jxeL0AVn9IEf6fmjklmgDzWqRcrhPi+gG9kYNnSIkf8rkdjc/5oJLbDJOGSfq7cSLKT+tq2KUWnA1gd+UGhiqtMHAOwtizOmj5HDn19dG/bW5PUUTQP9xKDshznAiUjcLs3PQBD90SJU= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174604217927181.14024463086889; Wed, 30 Apr 2025 12:42:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIl-000889-Rt; Wed, 30 Apr 2025 15:41:04 -0400 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 1uADIg-000848-Bp; Wed, 30 Apr 2025 15:40:58 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIe-0006F7-6Q; Wed, 30 Apr 2025 15:40:58 -0400 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UGnnZi026909; Wed, 30 Apr 2025 12:40:53 -0700 Received: from cy4pr02cu008.outbound.protection.outlook.com (mail-westcentralusazlp17011029.outbound.protection.outlook.com [40.93.6.29]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 46b4m1jxpq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:53 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:51 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=3cWts/br90n3r72SmkLiuwTzLZ/FmKG/8K8ZfIZr1 tg=; b=abEvlBIR16dtDipZTmRXT903FC+dDxuTSUHbw7hOLphfgSwcBD3E29bMn fMKxqVLB/DdEK8Kfc4nRrzaofEu+1t5lOCyY//EWBBhFZ540bjM2Qj4yfSK+yb7e w5sU1fe2UF7xusqXUQ/x+Pwrhug5B//kLfK1Exx/3oBRbcPEP2LNJthoIAEYHWLB Ix0LoKanHgrFixzwjeG8KEjkNc/z+HL1DFcOd/iNeg0DIKNi8T5JtgxCNc8cfMRN mSNcNQ7imYoJIme/bO92idOwlwrq+peSbrDtZr0i8zArNnA8nG8lNaB9cgABreXR UgVBKVLmrSfrV4nr9hF4/4MgxNvpg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SD9lgKC93r/L26376ciUXfJec3a9z9Uokz+YkykCauCbrdq997xgDMCInbQyQTM3uzL0KDmCSmkWvxDAgx3VYu8w9U5+nFIhcX9W36O92TS5oRY0sW+Nc1RVh/MgPbc2JRgo6kZGT0yaP4OC/tm6KJno+m6HnJZaS1LsV3prNaShL2e3qDl1A7m4pnx6jxEUooqpOGteKeQMi1XvuXMN57NVYzSH06WMhzZCNGxTL057wJfjmE/u0wyeXENAXCr++rIQCP2GoAzQB5FpXy6bMriZGjmJxZ0+W6ESNOmqcKzAT2OZoHSRiBYBtKbSNu0bxD+FlGulyx8Eu9tbvjY1lA== 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=3cWts/br90n3r72SmkLiuwTzLZ/FmKG/8K8ZfIZr1tg=; b=b1I0OyhKTv2IWm5MsJ0sf/rH2vRk6INvt3ZiWv6rtKlocbH+/NG58AoHxEALfItr0ySOHJS2wT25Ts5PeCWEf50B77gwCdeqE1uM+0TGG63yQjMQ0FHomYHOq0OayF4uZg3i3ZUvkQ2ylnic/3y6pStTqdHkkJOzpMKu/YJ03pP93admklKFbsLZGlz5VuVjZ44jx37fy348fwX3X3lk8PWq7+r5UdqwbvL5urQDrbwH9Rv4zzc+0Bdx1hr9t+JaLiGzNfbcH5Gv9EMLcEtJMGLd9RoEc/g3QEC0NsM7ByCo+NDS2nFpRAt+NzhlqPVm6WaKopnupXaxOBAr4j51aQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3cWts/br90n3r72SmkLiuwTzLZ/FmKG/8K8ZfIZr1tg=; b=gwz5MIQGKOqxoosHtzTMv/Wh9nTINLRd0YN6DHB0+zn50FsTYentag5B9Gfe9GDQEQIfLRxfGa2mND133chxX3ufUeC7PIXwxd533UzSxh3AXhR/aX8WagGOB58pspoINLd8Q6USx1X0Mk86/vz1triKuZxJWnlKUEA+MoSDt9chsDoBQ0Pw2rMwN5XyHH9i9N6t6bZd1mmVgv7W3KrPxkWo5hxLElmSWucSrMI9Ox5XMcEwPXTlr6XzytlJOgIRz6qiJtC+DhXBn1CxP9qTnbCV4AxjseF4Q+EWG2Blda3gp6FJMLrAhWYL69K2iiUvnEf/InmslkjFVmkUCpB+0Q== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon , John Johnson , Elena Ufimtseva , Jagannathan Raman Subject: [PATCH v2 13/15] vfio: add vfio-pci-base class Date: Wed, 30 Apr 2025 20:40:01 +0100 Message-ID: <20250430194003.2793823-14-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: 97d7e5e2-879c-4504-c6e0-08dd881eea11 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0QFByOseXQZG2Kblsf908ai5n8gjL3L4wmba8UoQ2r2lPixHf0c2LfbGFTrP?= =?us-ascii?Q?yFdPuYzPQ1TS5KfpVfAUl+MBPNFkH/rLQ9f5MCZOdcRRGK4bbQkq0J/tKfHT?= =?us-ascii?Q?CkF1E+CUCbJQ6cqabzeLTaO4H8+SVftywHcoi1DyRbyo5lx0OhamBvMph0XP?= =?us-ascii?Q?spMp9bBWcH5UtkEgn1Jpk6BEk0GzL6ikao8LonrLbEa10qKEHdGJHq8CBQpd?= =?us-ascii?Q?tPob0taRvZv619CPfdfwrWh/+/5aSkChsLU9iiqXlXcVhF1k4H3jLywWmChM?= =?us-ascii?Q?pzX0Jd3O+L22vOF0rnyO8L0HVZK8/8VrhR8KIhhEt1kxKqCyq4HLCemSN0ja?= =?us-ascii?Q?2T925LUpDzFFAXLOeJabfvL5rlPSHt3jv3SgBKB0uoxG9RvYUmTr9YQHtT+3?= =?us-ascii?Q?tJSq+Q8sfjoOOEq/Y/18TBULcc9pcAWW7wT8YNstEat2S01VsbglptQ/HX4H?= =?us-ascii?Q?8/nGEG08GkofVi98Pc09GZJvtuRcvE5A3ugVkfmENfGwY9U3grOZErU+TV4p?= =?us-ascii?Q?jyJLC+t0RBTEXDA7XKK6R6FG291dVsjIrnsVXm6fWg67bRZDBtuy11yuX7Ib?= =?us-ascii?Q?I8kFD3iw/vXsSy6s7s/0euerCuySuVGH929ybA5gOzCtItWp+5Ot/ANu42ga?= =?us-ascii?Q?vGpVV7vWq3rIqQChuRMiyyVUEPKUvIylIcK5Kw5UrSgx0kQwf4Nd6i4smcYZ?= =?us-ascii?Q?Qqw5oj7ndeWFTrosHeZAHzo8CaVpYVJurd3BOnLW9+uPRM1nUxUJRTtjZyqw?= =?us-ascii?Q?B/Mwi/a69ju5XHJEHIs43diLmhWQQ+B9Da30qOR2m6gV7KNlY6CVfiy4cobl?= =?us-ascii?Q?TT1IlpqCMSAz6BRpmlltll4e4FdYYArEz6dEz7ErhUNpFm1/aglGqu378tKo?= =?us-ascii?Q?9prOz76twaUBof30evqJwwStBhIJ8oU7chIAbOiZYaM1c4HBdSfTOAFsWim5?= =?us-ascii?Q?7yzUIJY9gNnRWthGRKTJml7hFn36//CEtqQyF7i2kAialYXKdWSI567fa+9w?= =?us-ascii?Q?b46GLCBu8O9PlOxVR8dzVDuTYI0HhMNJxj8EnTazqn1pLQISgEy+6x1X/zk9?= =?us-ascii?Q?Qqwg2uSzTdhNjoDwgvm5zPMNG+Qa7So3KrboN8cfVc2fA3j+t5Vcg4NUJ7y9?= =?us-ascii?Q?6Sea6F1paxhqzPFjUp8L+vSfXgPTJOmvUd14ly8OGX4GOk3sbpWxfGThcOM2?= =?us-ascii?Q?vjJ7IMch0g+b6ENRHBn21tN53Vd5CekvaFJnY8/S9gLtdyaouytdNZL7aDjl?= =?us-ascii?Q?gvyh+KsLbJFGt/CSzxP+hsgmNMrez2HXF3ab9TJ1j3A0eJ2q7ZX0vKCC/It6?= =?us-ascii?Q?142sPMkZoUZf/lWtsFzSJVWn7jxSdzPP6Dr/uIQtNVzYGUjDnGTk4E1ClC8R?= =?us-ascii?Q?CuqgGwkKEqBEceEKRQW0ErKRho3hZrzs8QJbRN5yf6DgBk2TID5Et/QppnmJ?= =?us-ascii?Q?zqIWjoQ4DaM=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?09IPius7LIic6tWXFeblWcI6cZTZ0dyaA/l6YR6CdDc+JENEzVYa9ij/qm1r?= =?us-ascii?Q?Wg9XGYg+QKrtYsVQQPtnADs06/ZGmzIbZIJS/VMHslF14KfsPAzzfp5Mg0o3?= =?us-ascii?Q?n5fg71gTPHxCILSHwiAw5mJx/l7UoFJFCNNE242jgUp79blMDNEZSFWT1tXH?= =?us-ascii?Q?mYxA+uGY4Xq/G0T4b6X9bDOAr9kBeeoLAD+AoLhIFI3ebYhqyDse2H7ajark?= =?us-ascii?Q?uJ59I1h2zVIsGgLCFGyOWo1FZjCINLTzbmsQKnA3sxw8cWuTHVKYTkOXijiG?= =?us-ascii?Q?GyjDBpHCv5uQY0/5BRTEmsskxA/UZbQV+vxzrHegG+N8u5owLvhJn2GRYRxH?= =?us-ascii?Q?LR/un8eG85XpzMb1Eff2PA1/HFd9SDV4vVGpctgzmnlSDG4eRTpPcxPhj1/k?= =?us-ascii?Q?5uae0ljG606XwC1CCnimMqlhNj1FHwk6Hq+bUEEh2k9qVgoDFDQwu47szNbF?= =?us-ascii?Q?zW40gYdrqxIEpr02niZ2EYEGkTSIos5yhZokT4njtgdF3BZ4JFoZKuWn+mOQ?= =?us-ascii?Q?8YF24XPtEygm163ba3HIfX9aNPyLDWYCkM5ua3sLKwoUiTZ338D0ozSD2NX9?= =?us-ascii?Q?hv/taKCWxW0lzxqDKdQHhJFw71jUXHNrNdZgBd7Xeii1V/a1ivAImKA9GNyc?= =?us-ascii?Q?4XWgq7MIXIl7iLdZvpi2TPwiuLCMDEJ1x6JvYEleI1zylYh3r1V8x0EidkKw?= =?us-ascii?Q?XsIGGCvy2vhGlcrZBgukA+epVwHEG8Fb6LBtgoOsJnJXDHKiOvs5F5qmPM36?= =?us-ascii?Q?oFDI8iSSgBy4qrQ0KGePcGV85dAC9JnCjqpOtLaaaNXBdrTsiZcKRqvVMWFD?= =?us-ascii?Q?nSiTgYATKxvtciqgvboyC9K6TZ6GnCrdoSPf5nseh/JftqHlgIhlTIE+d9xv?= =?us-ascii?Q?9ABeyTZqPGXadPuae5sUlTFw20mMuI/2h4cRgdpalLUHcClvXUWQ3gXBNog5?= =?us-ascii?Q?mAzCJ5/hyzZieG4HkK+Fekx8FF2ppBQcG/4vwr9YQBQ2VdfVvhKGaunVfdQP?= =?us-ascii?Q?bWHWl4FAX4wL6jukORhk021146abKHypa1ZJH+lKNiCeaskb4ad/86mZ6IYh?= =?us-ascii?Q?tEWK95MQMjVK9oXBS2YmXD9Rfu7STp1a3AuN3SgqR2Tp8yntwCgSsxEvUhHc?= =?us-ascii?Q?U48G97OQJD24hzX9I+jxmaX5XW+1MHLN4FXzI3Cd9Cxnd+qqUKxUukO4HQ6+?= =?us-ascii?Q?Q5QyHxE+L2vb8EUCH7tzGA2omGFenYnSSYekm33nVMntv+rh0Z4uGmtedQLd?= =?us-ascii?Q?v3Z4LGBzxk0o/5OgYIrDgF1tCGsLYl5JALCrOSEUj1QnBje5FP3RtnwNYjHN?= =?us-ascii?Q?LxCXfM42gnrrd92jJHhEaKXgYEHhsszLj13DyzK8j82N8Ay+GWdF2uBaTliu?= =?us-ascii?Q?3cP5jYbViiytbsdmxUXZe9s/28yexrjMMrq5YUB253DmwN2COZYWBrX2v0oT?= =?us-ascii?Q?JR80bzkF4OlZ4M4Sj/aM8xAKeFgBJU64FFB41bAfjVt/jN3wQJT62Cnwlp4a?= =?us-ascii?Q?kNGJbednhqzSY87IpOnIq8ZtwH60QB0uTcHfSL+Y4hcMEx5qcHBzU7GDiNQv?= =?us-ascii?Q?cnJVQpZhcQLv/W9oz3zdv0QHb+gDatISwAIPrLLS?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97d7e5e2-879c-4504-c6e0-08dd881eea11 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:51.5345 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6sxFc+s6bYVTMI1KxfDdRbhxjGtJ2ByU52xr8TQzaNf/wl5dTb2QL/HNwDM1y20Eaa1Ggy6Z5EpzX5z/6RiQ+Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Authority-Analysis: v=2.4 cv=Y9n4sgeN c=1 sm=1 tr=0 ts=68127cc5 cx=c_pps a=MGIL9jhmtb3Hqg0nl2vIzw==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=yPCof4ZbAAAA:8 a=64Cc0HZtAAAA:8 a=4KTYh4CsxjRY1Y8snwgA:9 X-Proofpoint-GUID: OzytvnbApeDNlFdfYhYoxrgMGx5Pch_t X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfXzfyafYgGGV2X UiUiuxv/dVou88Qt1+7LVYKWWadORYKpDBfvfNrXq6VFpohcHQ25z9BwhvynKfCgH2wbjE0XWRj 5+sSlavNMyTVjGWmMHtvbrGJXFt9Up0LXTxD34viz1DmohN1bF+vLqdWUOh8V6d0gGBxUUtRU69 LMK0cGx5oDhZlIEqieB292bQkIGzvWuhSOYXtGKQr3ytbJ8XlCCRxLYsKp5F3nyOTBYI8Trmfsm P965cu/tRT3zWYcMHBE5Ejq/ytVNimvcaBthhDvfPLTg2uZveSlt9oskZdb1tCAFYu3rJ2Q5INn P+w7JaK72ZcAM46e5Wl3BiED3zXC2/7Q+N5vG2ZBCWkh5LCO6ZmzTrQoCM0AawNuN/LvZkoExFo dwwjBworA0Mps1cWUHTSmdogHfe3V9ab+5vQxA1OpuGs1H33vDK833gDYydGq0cqU4L6w0i0 X-Proofpoint-ORIG-GUID: OzytvnbApeDNlFdfYhYoxrgMGx5Pch_t X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042180944019100 Content-Type: text/plain; charset="utf-8" Split out parts of TYPE_VFIO_PCI into a base TYPE_VFIO_PCI_BASE, although we have not yet introduced another subclass, so all the properties have remained in TYPE_VFIO_PCI. Note that currently there is no need for additional data for TYPE_VFIO_PCI, so it shares the same C struct type as TYPE_VFIO_PCI_BASE, VFIOPCIDevice. Originally-by: John Johnson Signed-off-by: Elena Ufimtseva Signed-off-by: Jagannathan Raman Signed-off-by: John Levon --- hw/vfio/device.c | 2 +- hw/vfio/pci.c | 62 +++++++++++++++++++++++++++++++----------------- hw/vfio/pci.h | 12 ++++++++-- 3 files changed, 51 insertions(+), 25 deletions(-) diff --git a/hw/vfio/device.c b/hw/vfio/device.c index ceb7bbebda..70d75b271f 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -395,7 +395,7 @@ bool vfio_device_hiod_create_and_realize(VFIODevice *vb= asedev, VFIODevice *vfio_get_vfio_device(Object *obj) { if (object_dynamic_cast(obj, TYPE_VFIO_PCI)) { - return &VFIO_PCI(obj)->vbasedev; + return &VFIO_PCI_BASE(obj)->vbasedev; } else { return NULL; } diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 5e811d5d6a..8d29b4552f 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -241,7 +241,7 @@ static void vfio_intx_update(VFIOPCIDevice *vdev, PCIIN= TxRoute *route) =20 static void vfio_intx_routing_notifier(PCIDevice *pdev) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); PCIINTxRoute route; =20 if (vdev->interrupt !=3D VFIO_INT_INTx) { @@ -514,7 +514,7 @@ static void vfio_update_kvm_msi_virq(VFIOMSIVector *vec= tor, MSIMessage msg, static int vfio_msix_vector_do_use(PCIDevice *pdev, unsigned int nr, MSIMessage *msg, IOHandler *handler) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIOMSIVector *vector; int ret; bool resizing =3D !!(vdev->nr_vectors < nr + 1); @@ -620,7 +620,7 @@ static int vfio_msix_vector_use(PCIDevice *pdev, =20 static void vfio_msix_vector_release(PCIDevice *pdev, unsigned int nr) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIOMSIVector *vector =3D &vdev->msi_vectors[nr]; =20 trace_vfio_msix_vector_release(vdev->vbasedev.name, nr); @@ -1196,7 +1196,7 @@ static const MemoryRegionOps vfio_vga_ops =3D { */ static void vfio_sub_page_bar_update_mapping(PCIDevice *pdev, int bar) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIORegion *region =3D &vdev->bars[bar].region; MemoryRegion *mmap_mr, *region_mr, *base_mr; PCIIORegion *r; @@ -1242,7 +1242,7 @@ static void vfio_sub_page_bar_update_mapping(PCIDevic= e *pdev, int bar) */ uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIODevice *vbasedev =3D &vdev->vbasedev; uint32_t emu_bits =3D 0, emu_val =3D 0, phys_val =3D 0, val; =20 @@ -1276,7 +1276,7 @@ uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32= _t addr, int len) void vfio_pci_write_config(PCIDevice *pdev, uint32_t addr, uint32_t val, int len) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIODevice *vbasedev =3D &vdev->vbasedev; uint32_t val_le =3D cpu_to_le32(val); int ret; @@ -3129,7 +3129,7 @@ static bool vfio_interrupt_setup(VFIOPCIDevice *vdev,= Error **errp) static void vfio_realize(PCIDevice *pdev, Error **errp) { ERRP_GUARD(); - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIODevice *vbasedev =3D &vdev->vbasedev; int i, ret; char uuid[UUID_STR_LEN]; @@ -3300,7 +3300,7 @@ error: =20 static void vfio_instance_finalize(Object *obj) { - VFIOPCIDevice *vdev =3D VFIO_PCI(obj); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(obj); =20 vfio_display_finalize(vdev); vfio_bars_finalize(vdev); @@ -3318,7 +3318,7 @@ static void vfio_instance_finalize(Object *obj) =20 static void vfio_exitfn(PCIDevice *pdev) { - VFIOPCIDevice *vdev =3D VFIO_PCI(pdev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(pdev); VFIODevice *vbasedev =3D &vdev->vbasedev; =20 vfio_unregister_req_notifier(vdev); @@ -3342,7 +3342,7 @@ static void vfio_exitfn(PCIDevice *pdev) =20 static void vfio_pci_reset(DeviceState *dev) { - VFIOPCIDevice *vdev =3D VFIO_PCI(dev); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(dev); =20 trace_vfio_pci_reset(vdev->vbasedev.name); =20 @@ -3382,7 +3382,7 @@ post_reset: static void vfio_instance_init(Object *obj) { PCIDevice *pci_dev =3D PCI_DEVICE(obj); - VFIOPCIDevice *vdev =3D VFIO_PCI(obj); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(obj); VFIODevice *vbasedev =3D &vdev->vbasedev; =20 device_add_bootindex_property(obj, &vdev->bootindex, @@ -3403,6 +3403,31 @@ static void vfio_instance_init(Object *obj) pci_dev->cap_present |=3D QEMU_PCI_CAP_EXPRESS; } =20 +static void vfio_pci_base_dev_class_init(ObjectClass *klass, const void *d= ata) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *pdc =3D PCI_DEVICE_CLASS(klass); + + dc->desc =3D "VFIO PCI base device"; + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + pdc->exit =3D vfio_exitfn; + pdc->config_read =3D vfio_pci_read_config; + pdc->config_write =3D vfio_pci_write_config; +} + +static const TypeInfo vfio_pci_base_dev_info =3D { + .name =3D TYPE_VFIO_PCI_BASE, + .parent =3D TYPE_PCI_DEVICE, + .instance_size =3D 0, + .abstract =3D true, + .class_init =3D vfio_pci_base_dev_class_init, + .interfaces =3D (const InterfaceInfo[]) { + { INTERFACE_PCIE_DEVICE }, + { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { } + }, +}; + static PropertyInfo vfio_pci_migration_multifd_transfer_prop; =20 static const Property vfio_pci_dev_properties[] =3D { @@ -3473,7 +3498,8 @@ static const Property vfio_pci_dev_properties[] =3D { #ifdef CONFIG_IOMMUFD static void vfio_pci_set_fd(Object *obj, const char *str, Error **errp) { - vfio_device_set_fd(&VFIO_PCI(obj)->vbasedev, str, errp); + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(obj); + vfio_device_set_fd(&vdev->vbasedev, str, errp); } #endif =20 @@ -3488,11 +3514,7 @@ static void vfio_pci_dev_class_init(ObjectClass *kla= ss, const void *data) object_class_property_add_str(klass, "fd", NULL, vfio_pci_set_fd); #endif dc->desc =3D "VFIO-based PCI device assignment"; - set_bit(DEVICE_CATEGORY_MISC, dc->categories); pdc->realize =3D vfio_realize; - pdc->exit =3D vfio_exitfn; - pdc->config_read =3D vfio_pci_read_config; - pdc->config_write =3D vfio_pci_write_config; =20 object_class_property_set_description(klass, /* 1.3 */ "host", @@ -3617,16 +3639,11 @@ static void vfio_pci_dev_class_init(ObjectClass *kl= ass, const void *data) =20 static const TypeInfo vfio_pci_dev_info =3D { .name =3D TYPE_VFIO_PCI, - .parent =3D TYPE_PCI_DEVICE, + .parent =3D TYPE_VFIO_PCI_BASE, .instance_size =3D sizeof(VFIOPCIDevice), .class_init =3D vfio_pci_dev_class_init, .instance_init =3D vfio_instance_init, .instance_finalize =3D vfio_instance_finalize, - .interfaces =3D (const InterfaceInfo[]) { - { INTERFACE_PCIE_DEVICE }, - { INTERFACE_CONVENTIONAL_PCI_DEVICE }, - { } - }, }; =20 static const Property vfio_pci_dev_nohotplug_properties[] =3D { @@ -3673,6 +3690,7 @@ static void register_vfio_pci_dev_type(void) vfio_pci_migration_multifd_transfer_prop =3D qdev_prop_on_off_auto; vfio_pci_migration_multifd_transfer_prop.realized_set_allowed =3D true; =20 + type_register_static(&vfio_pci_base_dev_info); type_register_static(&vfio_pci_dev_info); type_register_static(&vfio_pci_nohotplug_dev_info); } diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index f835b1dbc2..32a65cc1ae 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -118,8 +118,13 @@ typedef struct VFIOMSIXInfo { bool noresize; } VFIOMSIXInfo; =20 -#define TYPE_VFIO_PCI "vfio-pci" -OBJECT_DECLARE_SIMPLE_TYPE(VFIOPCIDevice, VFIO_PCI) +/* + * TYPE_VFIO_PCI_BASE is an abstract type used to share code + * between VFIO implementations that use a kernel driver + * with those that use user sockets. + */ +#define TYPE_VFIO_PCI_BASE "vfio-pci-base" +OBJECT_DECLARE_SIMPLE_TYPE(VFIOPCIDevice, VFIO_PCI_BASE) =20 struct VFIOPCIDevice { PCIDevice pdev; @@ -187,6 +192,9 @@ struct VFIOPCIDevice { Notifier irqchip_change_notifier; }; =20 +#define TYPE_VFIO_PCI "vfio-pci" +/* TYPE_VFIO_PCI shares struct VFIOPCIDevice. */ + /* Use uin32_t for vendor & device so PCI_ANY_ID expands and cannot match = hw */ static inline bool vfio_pci_is(VFIOPCIDevice *vdev, uint32_t vendor, uint3= 2_t device) { --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042173; cv=pass; d=zohomail.com; s=zohoarc; b=F17GY9IKG/gCKeWwITEUbObVMRvXXRQaQ10yPJZjkeZz+T3OLQ1dvEbBGoQ8y3pGQBuYI1AiMMXEAYOB6BfCLkAM/0l0oHEGPcixJq5lqWUPl2N3cTOI0DfpufO8Pb3UYRSAY0TMY4fHNSA36uH4d54LtPqaBEi90ngeiwA2++I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042173; 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=BZaip8jGsBe6i0ux/RSNpfcACFNTQyyB8RRCT4PSlM8=; b=nztFJcYlNz7Kym4Uax4j+YHb5sCxvO47O8hCkpzWiftYCmEVnvn2ZUBuoDlUqk8YeWeTbs/un2tKxUqZ3HJIbpKPCA9s02RCh3nlAr3ZDMex3bYmzWfyfnJqPojxqkL4GILizh47GOEgyip9kfqhIOU4+sMNrQj3MbtaVqxBSkA= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042173462932.791276773828; Wed, 30 Apr 2025 12:42:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIq-0008Ht-7D; Wed, 30 Apr 2025 15:41:08 -0400 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 1uADIl-00087t-Fq; Wed, 30 Apr 2025 15:41:03 -0400 Received: from mx0a-002c1b01.pphosted.com ([148.163.151.68]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIj-0006Fj-N1; Wed, 30 Apr 2025 15:41:03 -0400 Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UHdkq3028201; Wed, 30 Apr 2025 12:40:57 -0700 Received: from cy4pr02cu008.outbound.protection.outlook.com (mail-westcentralusazlp17011027.outbound.protection.outlook.com [40.93.6.27]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 468utu9tr0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:40:57 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:54 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=BZaip8jGsBe6i0ux/RSNpfcACFNTQyyB8RRCT4PSl M8=; b=yTKI82knzRZYQu9MoJ0Bf6j6ZpEnFnnIygJcoS2Z1ErEm1t6P7FC/sTPn TIZT229A6OihWjl8iUgxVoLgGH8gU33rTPJMEb2YgukLNRTGoD3/m/R8MJM+s6en NRRm0IkYUZADPUQ2wWsFjlZZyDDM5YHjrF52mZaHjdK9VPk0MwA6iDWD6m97tPlo /6Uw4qtWChPAkl4v3024yhqvXSKMdwj+CC3+CCIchIUMW4iFPipfKCU1RQWiTxh9 p92yMCMlZBLxb62bsFdSXi7JThcq/UMHoEMKdeG9IjpSIO15SOVu4cbR+Nyyol6G 9wvOgFBPHXiwtCRhmq7o9MYL9j0tQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gdlhCTHA9gP2i37vasUH6ujEi+Wr8ZrQc74uQS6sxYXpTQHtpAGUwcOm5ygERijM6nyVEe/YsnBU6oEqP7s6VKRrsHoCRbDGee+c2firaBtcRu/YGW3d6643O3tdy0IXvJDUyw2p/IuDRAjjRskL3wkpgGBF0x3g32iAUQqsOZcQ5SuZzmjxuX1H0gsMYiTYtqbgMxKRsnNM3jfXo7kg8NL1zYPhPpvvzsZeBKnFTMHqa+GdqigLXE1PLboKiR1guF4vyoTQnEkRreOT3qKvdRH6txw9bEpaX4gpPTrHRXYemVdZqtgVjx+OiFlse5TOpGSMN612BznPAHtamXJGhw== 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=BZaip8jGsBe6i0ux/RSNpfcACFNTQyyB8RRCT4PSlM8=; b=Z4HjyAw3dOMVlKaep/Bm9r/LUIk/mDDcZznVJ8zv/3RKi0gfrX/xaqGoaYVHi4wLpAS3DhVtUYtY2A64hyLvajYRPQGmmaYvBQnx0D0cJ/6d70SfIuqOFXOdVaX7AV8uMWO5S0TT5KVEh3ZMa4g0c6CJYm40qZ+hXeLLkL9i3B76kaL1Zl4l/ndrFx2cb3c7kQHQ1C/umziHkBWm6MjadCJ2mQ9zRWan3fleRoOwBdUbfR9ARMBmsj2HGPsy2/ww8pWlys1xvUAk766K6TcDklujxXwRvxNNIPMm/cXIzKZQKcnI4VWsFzIHwEn5QONpPXB8ReeV2fcM9dfMywVMDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BZaip8jGsBe6i0ux/RSNpfcACFNTQyyB8RRCT4PSlM8=; b=Ro5DF42uyOA85CXeLYp6Yn585fxRyFjw/wefrzgLlkW9osHx4H0uN/VeHDr6mxhrF5uaBAkeAGg/INZtU0I7FOmGdJSjw5qE7JKA3WJdk12plSf2mRYuB++9f/ZL8Q6eEG5R+AfopM9JU6a4NC1J6VqRFHkitmoRG5OD9OaFGV3uJf/GGRyhoSS8C1TZ7uB07yadplqO3UPFxeYMtpUNYyfQLh+eh+a+y8f4BMsoUa6v0vH7BhuOYRIaZvGXbV6iOWgygcXrTczxlAnm94ukvfKNW9DcB2Yfo2U0/dkXc2lboFnQ/Aw9HyPrsJ/gaT0VUyGPQ/T/pWRMaSUzsYyCUg== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon Subject: [PATCH v2 14/15] vfio/container: pass listener_begin/commit callbacks Date: Wed, 30 Apr 2025 20:40:02 +0100 Message-ID: <20250430194003.2793823-15-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: 26b889e8-fdf2-47f5-c6de-08dd881eebce x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LuA5N4DziaytLIISn/882Lg2GGH48kTwRvWsNUj0xnEZqlosTdMsNEgZFCm7?= =?us-ascii?Q?kPmLVW68vtLS2uj04DNyx8+P6PdwdRCq+DkwvPbM2pNGyLixHGQqdkXmNBh6?= =?us-ascii?Q?xGs1e8LQzlERiiG4/j+Gio97b09UK0kBByxeqSLASndxhRsY5easWVABKFg2?= =?us-ascii?Q?gdxwTJUfiWwWkwXX0RUr+CkpEi0F5OJTzTdrm1q4CiLGmbYLfmFrHa42t/pJ?= =?us-ascii?Q?F2vSvIaHd/1YXC8/dKqKngrbNSmz/9BORyMLiyb2tMXgBxFy+6VU0gA96Dq6?= =?us-ascii?Q?OXbMRhb7sYNKjEN5c8jf/oLyKGDxzXkMJmYqgFn2vOfycEmNDWPUktI7CgKc?= =?us-ascii?Q?8uWG1Wm48H0WvN0Iu+BAOS7y5SPp4sLwFFk8VHDlFlOwDHyEoH74GO3vO2Qf?= =?us-ascii?Q?7uLDZqIyj9bJ78z2YcZs6YtaJ9sryCXo0oI3MKxDi8pDPKEUtzjl2kNv6H9M?= =?us-ascii?Q?OYiWq6829RWAaLs13Nz3Km3HmBGiZ+8x8gxqbQ/aiq0p45CX2AzWvqjoNi/M?= =?us-ascii?Q?Tnn63cP3+s6S13Oj1e6q5lvYJmEF5PH6rALS9bq9nPvX9S3lxqKO665PoqZL?= =?us-ascii?Q?MULJJHTji3KbBOPTvf5ufTl/bvqrIJQ7xshNmo40y5Ik/peflgidYaJDTolh?= =?us-ascii?Q?w/bFfRnfowtrIqoQITbsbJTkS0P95DsKPV3xqxPpk4CpSfSmVfwgbncVsT7w?= =?us-ascii?Q?vVSGgusryG2uny798BLbaLsClv8j7Ol/Avy7htWwIniqBSvv8qoWPzU+ZhkZ?= =?us-ascii?Q?jJ9Z5qMl7N7VHJXJUpLAzXl743OCW56RYjpnCrMQ1xNa3cbZGeT5aUNMMWLi?= =?us-ascii?Q?MbaCR6sWUfRGHtaG8Hr6RrgK8c3ZoE6zv+U9mOuz/tUJHG7j2FFroHGppicx?= =?us-ascii?Q?v0hI95tJ3WnXG/UjlVIjWQpwRLFQIWO6IrVli/qZop0tQwaBe3BRnNvvtwnH?= =?us-ascii?Q?qV/p1gbR3qemQytjmKt6Dk5O8lAdUBFd/OEgi7z5nonerVrk+xanjhW0x7Xm?= =?us-ascii?Q?HVFlCRuk43et+IYehfeMZQAVX5OAI2SK4n9S3nBUIhEZmp/e6xqR87WvW/6R?= =?us-ascii?Q?rjJD9vAymPds0BL9xN5gD452bPEgM/IM5Q7yNomHgA/U9fnjKZWdbr7LAKjG?= =?us-ascii?Q?zu/QY2aoHSz4DBq3/Lqa9r44Ec1U3AKXtBP9EwedSpLXdCtdzTTzB3KXvYJu?= =?us-ascii?Q?118sGrj7h51aPz2JholO1h7HOdthr2H94G5gYE/4e06NAYxuW3BrL66z7FSD?= =?us-ascii?Q?S+H1Fnieqpf/YGg4dYiuQ2Rx3aWj3x3KtPAZVmlPSWnwB/QW8AtxjBV4Guxo?= =?us-ascii?Q?y+Db/WGMzoHp4Do2kYzbXYXiwDXtjdx2xn1Mfn8YxVmYBVeJrwgoXT/GnSW2?= =?us-ascii?Q?FQh2Ri7EMOvlDk2l2wsWnT/mUpmHuh24FS9okVpmiN3U7qW/uMl3/ynYIrmv?= =?us-ascii?Q?2I9xHOa3Qsw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sC/4kRivywDwnARRkrCb9g0NwrVoAqVg3cr+coMcd/zC2ZvxK0SrNV/pkWQD?= =?us-ascii?Q?9I4I27YVhYFXoXLD4mdx5dXfRGhDEohnixFSoaVt/muUeLPFjin+i+rakNt9?= =?us-ascii?Q?UiTygYySbx614nQwwtsij5trszer0LwBYXYP7svHMia4a8GzXPaLg8fpLC+3?= =?us-ascii?Q?GESqGtsUbAwS3Ez0QLiAieCmdqpdWQTyRLK/CEhaRAkJnpB/yGr4JPErJ/5d?= =?us-ascii?Q?UhzrEtgypTnogGt61jc2TVLkayjR+rlpXvkOl3gOBgl95AQp1MecyV1PhUIo?= =?us-ascii?Q?rRvx9/7BIj416lLYx7E6bptBuE+eDYMuTzIEPJ1JyxdKsKLn1dZhHuDzonIG?= =?us-ascii?Q?0L/Eu+wucUni0GpcMqf4Mkw+b3BUjf/9QCpQUbLcFdkbOhiBns99jh33TqgJ?= =?us-ascii?Q?6VzXoqYAyQCIdDzObbmxdmS6jHy7Spk0mNZQ0T7W372PZaR2ABWDSjRRdyN6?= =?us-ascii?Q?rbWX6CKCE7D4H2PyluH6bew5gVoWwhOCIEF1jeRHrJEXVLkD+8Aqjp2MLUhr?= =?us-ascii?Q?1NDjFiQBw7TQQb1msImrXfcqZ8q9i57PZmXou/4sfGVVYS/LGE40XUqT7S+V?= =?us-ascii?Q?kbinNSzlH3DaQEni33/H8unM945Am+2cUSkk2U4dzdWabjyb3/TelvVfjvA/?= =?us-ascii?Q?yCZne36+DBjGcgWfSO/g63+J75OjCKOfu02HYesk0tTgjo65IQwUuOBl98ux?= =?us-ascii?Q?QYfQUMwdXby28NSvCTVRXgdRXWqBEsdNadlKH5jDV8eNtOKaabki8bYxL1O4?= =?us-ascii?Q?ihCmGU+/nS4tHfT3JCtbFTh6IujkJHPT4DgqTXuUb6rn/8iW3YzsbYA3hy0I?= =?us-ascii?Q?mdSX83UCp6PHyPEiNMK+Dbg7FRlLV1yCKIzGNTD8by+oJYwq9OWuELmtADSa?= =?us-ascii?Q?VWGbmDem4sIqAaypHeW/PvTnz9YD65M/nOnFBV0k5EIFAeiWjyR9efI34Vb5?= =?us-ascii?Q?YKjVdcb5O1F6HsIF1hRdjGo5BsE06JgsDwPWpfHrrQ9UrJpuYCqBkbVAdmCf?= =?us-ascii?Q?J9jH3iPTYZgWQo7ZFptujms/fa2wX1LijmqmVcbwSoJoDqECXGiHuA8BBs7v?= =?us-ascii?Q?ocVJTk85lI7jw4DJzC8fzghsWf/X/zTMqKDBOXuPrONnOzZ5D7QogYRuf4tL?= =?us-ascii?Q?pvFi0v3jbKWLcwjwWEDUO9GaQj4s2xmEYDIzmIQtKhEEGZUmOhMi7wy1ukEt?= =?us-ascii?Q?u444tG+SrUUbQPy4o1lBH9kbifosfsSEc5gyAO0jBZ0fp471qWRVJtb9APMf?= =?us-ascii?Q?RGhWDF7pGtwR8OyzEbZ2WS8D9RM/C13gyhNHUEINtbUqABRBP9OxaAPC37fp?= =?us-ascii?Q?mM1kF0wJoCG/wtoULx2hdjwc2b1uFHlzfYDNAGR+wCE6toUz1PC5x42vexzf?= =?us-ascii?Q?5PgK+1YGJqfSjE95rsoLOE2HwTchli7o/zgtfQ6ui88Kc1qDgVx39pN+ZW/x?= =?us-ascii?Q?opRZuH6wN4tVXAzj0vWDA9qBdcIq/xIZznBF63JcPfmUxSMrSYAC3B6x7Y0y?= =?us-ascii?Q?DbppJz277y38RTM5flGLEqZnC2c1+Uxf+Hh5YqCato87CjnxZo0I+HNtqEZQ?= =?us-ascii?Q?Oc1CX+aPjOust4mQe14S5z9IWjiNNts2gHaJgou3?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26b889e8-fdf2-47f5-c6de-08dd881eebce X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:54.4913 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: uRUXoLYgZbf699HpViAUh/93WNCwpgCMp0KcqVxGYtCtZraOm6PDiDM6B6uwxjDiAL/ilNNztk/uaeF1yWOiKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-GUID: iqUxfRkEysO9qUplcmyMCA5xMkUbmLnL X-Authority-Analysis: v=2.4 cv=GcIXnRXL c=1 sm=1 tr=0 ts=68127cc9 cx=c_pps a=tJhdH1fDB3NOBSro6qvwmg==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=vU0vC_IIgwTtBsNJuTcA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX3LsCTdLMvZTR ZZw72Vr4cLt/qGXx4idwqRbdidwjVUwHa5k0MNJHfEd2ZeCLTxo60bKeQDRZwdw/oclo84XieBS QsYpfVso5mbHheD0Jnfpst/PI0Qbe3Wki9toWU8X26JCpOfZbHtmlfXsf30ycFDJOR5NmShfL9V 8eF0uVXcvosypRr2DojcUMijjUiKdVQnHr6pUTIgKWAN04B9mLFt0iy5RxE6ab69ERxjen8Zqm8 AbTnQ2bFehiWDdzW/nA7u0yHrUTLtNh5tlmAepP/iqgE4BL4g4cVTt5d7UOpxhzBjrY8iRWjXMz TUIroilbUTlTnKEaGgld3WA5SF4OblhehBBGyX9P8NM7wFw+fp2IK0MAPj/MZQXqPt6F/W7g5OA YLk5ODzBUn1WkzEIwoUdBGOF1ZVcmndJ1rGDdl5e+vzuSEVA7UP2CnXmp0VYTw3yPnuicLnh X-Proofpoint-ORIG-GUID: iqUxfRkEysO9qUplcmyMCA5xMkUbmLnL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.151.68; envelope-from=john.levon@nutanix.com; helo=mx0a-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042176726019100 Content-Type: text/plain; charset="utf-8" The vfio-user container will later need to hook into these callbacks; set up vfio to use them, and optionally pass them through to the container. Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/listener.c | 28 +++++++++++++++++++++++++++ include/hw/vfio/vfio-container-base.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index 2b93ca55b6..bfacb3d8d9 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -411,6 +411,32 @@ static bool vfio_get_section_iova_range(VFIOContainerB= ase *bcontainer, return true; } =20 +static void vfio_listener_begin(MemoryListener *listener) +{ + VFIOContainerBase *bcontainer =3D container_of(listener, VFIOContainer= Base, + listener); + void (*listener_begin)(VFIOContainerBase *bcontainer); + + listener_begin =3D VFIO_IOMMU_GET_CLASS(bcontainer)->listener_begin; + + if (listener_begin) { + listener_begin(bcontainer); + } +} + +static void vfio_listener_commit(MemoryListener *listener) +{ + VFIOContainerBase *bcontainer =3D container_of(listener, VFIOContainer= Base, + listener); + void (*listener_commit)(VFIOContainerBase *bcontainer); + + listener_commit =3D VFIO_IOMMU_GET_CLASS(bcontainer)->listener_begin; + + if (listener_commit) { + listener_commit(bcontainer); + } +} + static void vfio_device_error_append(VFIODevice *vbasedev, Error **errp) { /* @@ -1161,6 +1187,8 @@ static void vfio_listener_log_sync(MemoryListener *li= stener, =20 static const MemoryListener vfio_memory_listener =3D { .name =3D "vfio", + .begin =3D vfio_listener_begin, + .commit =3D vfio_listener_commit, .region_add =3D vfio_listener_region_add, .region_del =3D vfio_listener_region_del, .log_global_start =3D vfio_listener_log_global_start, diff --git a/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-c= ontainer-base.h index 92cee54d11..e29f7126c5 100644 --- a/include/hw/vfio/vfio-container-base.h +++ b/include/hw/vfio/vfio-container-base.h @@ -117,6 +117,8 @@ struct VFIOIOMMUClass { =20 /* basic feature */ bool (*setup)(VFIOContainerBase *bcontainer, Error **errp); + void (*listener_begin)(VFIOContainerBase *bcontainer); + void (*listener_commit)(VFIOContainerBase *bcontainer); int (*dma_map)(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, void *vaddr, bool readonly); --=20 2.43.0 From nobody Mon Feb 9 09:24:54 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=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1746042108; cv=pass; d=zohomail.com; s=zohoarc; b=cLBkbwfMxmbdRxYFJ1ql5zslE2uKcy5d0+w6W4DSnXIpL+Mg8Yyx6JJsnW9PIkrah6C4zsMQvTOpnm1zYQ/4mSualOgAHmFfO3oVvYz0EuvX7gmOZJ1wkIqGAp6CE6BOUgTr9benUdWPv+Te17yP9wPyHK//jT00BPVueFogaaA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1746042108; 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=FzdC18c+KVGK8WvDlt0A4ZDg2JJohZx2YmBquIcK+es=; b=mchmmK2nZk+vhzo3H07gUPIGT1/yvhKk1e/A8fyWMEmbbX2m++6IODRG+qS+AlgRX3fiShrSPauJx70JFOhHO9htRHJjj5KCtBTXf3MPHu33YAzt2GyeFeLTUhXcbJCTKsTpCdL6xUsbBqQX+Q4bfHrHABRdoC5dXMEuZbz44T8= 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=nutanix.com); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1746042108431346.84393490615673; Wed, 30 Apr 2025 12:41:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uADIy-00008g-1d; Wed, 30 Apr 2025 15:41:17 -0400 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 1uADIq-0008J9-ES; Wed, 30 Apr 2025 15:41:09 -0400 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uADIl-0006Ft-1V; Wed, 30 Apr 2025 15:41:08 -0400 Received: from pps.filterd (m0127841.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53UEdDAg018664; Wed, 30 Apr 2025 12:41:00 -0700 Received: from sn4pr2101cu001.outbound.protection.outlook.com (mail-southcentralusazlp17012015.outbound.protection.outlook.com [40.93.14.15]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 468w18247s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Apr 2025 12:41:00 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CH3PR02MB9931.namprd02.prod.outlook.com (2603:10b6:610:177::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.9; Wed, 30 Apr 2025 19:40:58 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%6]) with mapi id 15.20.8699.012; Wed, 30 Apr 2025 19:40:57 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=FzdC18c+KVGK8WvDlt0A4ZDg2JJohZx2YmBquIcK+ es=; b=jhMUodzVKgK2FDZnmBLxpfTYk6lSj4cxjjSqSY3rWMeyziLrr4XMbvIdW jS5wFYpLw/+GZo/3vrB1u/Y5nHwAPsbDExxVJpPJokyyaI3OevQYjzA0GUfQFNNQ M2uFm+TCu1dFPpSEzxymNsg+DrSVjDEUNa+4jx9De629GBufsay1H6qLjnaa7T98 tWzoe4AqaA9KO75pIwWH9W9+FzuB0oHQ69+hiELRXDSZFK2wd8VDsEYLqx6YeJ+V Q0mF/ZNfVh96bZoOrMbbVNCWoXa437vkvhuyNaPL70nWwEIceHBTxdtsD2kPo5iK Lyjw6V5q4qJzVLI0pl3+fGpTbvUJw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PbgAT7um44yaJI0peYYjRhFo7zgFasLviYuuSP2GaIEOFpjXYfF3jnhUZtmL7D/Vx6tbpmhOjfq/qwMyd0psP2lLPCLc7rGobbQtlEW08KqhBpB6TaqgXWkQWoGHVGYMvCUqRpAItFzGtWh5oekIi8Ws9fwjbm4BK3aUg2bbjhm8ZYebZr9CIGimlvC91eFgnu4/lSFvJnKDREcfSv/RDAIePiChsNBSccDnvfWCtKVbBm2OTalbk10cskHinNEdMLQdkt6HsoiySHzxSHRmCmGTpu/zGA3JnPPlMtRx0JH+zKPfa3w/6fVNnKLPj+UK6ad10H+vc8m32DdwdaDzvw== 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=FzdC18c+KVGK8WvDlt0A4ZDg2JJohZx2YmBquIcK+es=; b=Zz+Dh2Hkc1vjvMO8DLDU8kh/5wgIVzspdKSo5qJ8u2E0QAR0IM/cEVtm8R64cPpV6kG8MKuHCHc6xLZ5MdhDp1r8MxFBzY3P2S5oc4/Ux7j4t+YknbuIkuMUm7o7Ore3iLVPmkD7ONx6egzxEx+I0KPBQ42QivGlCwAuiOkOxqu4oR/Co+PdIRKg03dONCXraCjBPNE3r6uKvDIcZrvu+Bi54A5fDT376UOUoI3/focHv7eojEDlLr3a0k+IdRc+2jqZzyXGOUS39aJYu1oxuNXLH9KOE4rIf9+K3WVjOtjSmD1MewJArcsrxQayEQZkQKJcB4ArLPx1BaA9spbO8A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FzdC18c+KVGK8WvDlt0A4ZDg2JJohZx2YmBquIcK+es=; b=XhdvhCZoH3XPezheqaCGE8f+SZWEdgq6UawghTIINy8/Hg9fRGTp8nEhJAWp8a/a5Lm8TDt1duD8FQxyQJNZjMQMlNolPY4Xsffm28jzeRJwpCPEjZWpC7M9kxPiIsQwb/GHBhArVowmDH+tx2/lPfFxbF6J1l9PRkqYMdrnUI5emRuh0YUIxMVfrkDd6jCyP4/rEkmh69SK1vxJcMjMfIInx3Uh+TVJLG9I7/M+r3l2Fe9rkiWpL54kzOV1OQHyPVQfwY8heeUGbixUTvJhrcn3BWaA7KMG6Xv/BOHu+5up7/jYTXnE/xFZWZgXy1iMd3Mtry4W1btUPN+5eexqpQ== From: John Levon To: qemu-devel@nongnu.org Cc: Peter Xu , qemu-s390x@nongnu.org, Jason Herne , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Tomita Moeko , Markus Armbruster , Matthew Rosato , Eric Farman , David Hildenbrand , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Michael S. Tsirkin" , Tony Krowiak , Alex Williamson , Stefano Garzarella , Thomas Huth , Paolo Bonzini , Halil Pasic , John Levon , John Johnson , Jagannathan Raman , Elena Ufimtseva Subject: [PATCH v2 15/15] vfio/container: pass MemoryRegion to DMA operations Date: Wed, 30 Apr 2025 20:40:03 +0100 Message-ID: <20250430194003.2793823-16-john.levon@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250430194003.2793823-1-john.levon@nutanix.com> References: <20250430194003.2793823-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P189CA0029.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::34) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CH3PR02MB9931:EE_ X-MS-Office365-Filtering-Correlation-Id: e05a24c0-f921-494c-518f-08dd881eedc7 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?OAHUGgE5KjK4PrJdXhJzfesyeH6TehJyQn6PX/Jlk2IX3tlsnnNnE3qeno+6?= =?us-ascii?Q?sFtGXt+W5XAE/5RNIx9cw5lIDLEtxX9bpJGLs8R7uFmiiPwu8+m/83llbXQj?= =?us-ascii?Q?nTqGBcdYxuoP7F2YS15a6Y5+XocrGF9AGW3NzHsUOg/hDhAC8Pyf/0V/ahCf?= =?us-ascii?Q?1Xpnbt0J8Iy2OOr+jumBZVeTR/43PwKnjk1zCyH6krkOrbhauQNTFj0a5xhz?= =?us-ascii?Q?mFv05ir9oulYZ4R1HP0hYvR41kHxQ9vpVAksbL2dpqYHbs70rEfU2DOziNap?= =?us-ascii?Q?xPt84PLGmwuKs3QdcNvUDUMT/W8khRIU1rF5e35pTR4Dj4RIE+UlfrO0LZWL?= =?us-ascii?Q?xWFJIvX3B7H+sxOQU2rL0mLiDgW9a56oOqlaXrhqxuq9q2xnysX9iUybmfVk?= =?us-ascii?Q?ZMP7BKb60x3YSSeDqp74z9j1IvjWkVZkTvesxi2zUSY1EPw8T2MzGoFz1Z+Z?= =?us-ascii?Q?hTwfoPXsnHCbUqR6T13A4xeHbXvZ0bJ45HR8PvvY20/pvNyDZ6A/GKppwvEL?= =?us-ascii?Q?xT5m+K3mVFmWw3hrYUlyUidQC4nqpxgp2SOFZ3ep03kw/GEneuNvGZ2QcPMM?= =?us-ascii?Q?V1Xht8aOg57R9hzoirhABe2TvqBkIRN7SRL3V74/Hp8UptS/2jZwJxt5fQw+?= =?us-ascii?Q?rvTj5PLldCAIcKij+GbB5DuxAsN4zXVN718Gvt2Pc8zZ3clfJU+V+vHMRDhV?= =?us-ascii?Q?ku2E+8bEQElexW1/sxWToDR/1M878uuPCAbo6GoSFaTQ8I5Lm2wZpMA4dXCd?= =?us-ascii?Q?WLrK27uC9WRMwntsGdyG/FHKAga7cwfYlyLM356cko/NtepklMtOIqoXNamm?= =?us-ascii?Q?eGBe8adlqA6ju5sWyv4ksVd3PWf5CgJwIiYOd5chK3QgLpipE+LCR79hJIBS?= =?us-ascii?Q?v6n4rkwoFEGIbHZxh7hCbEY+kw9h9fe/kJXxy+jO+SkrQqUK6jhGWb/lTeO7?= =?us-ascii?Q?FF7eJ0eaf9KxQLLNaZd/EIqIe3Hzn7YTKDeBSR7Z/AqBL57LzgI29lUkg78e?= =?us-ascii?Q?8Bsbl5JAzK7tvf7rboH/c/la0jLA5/kK5SP5koEwvH6Zn68A3VxIXonsRdRa?= =?us-ascii?Q?SR0quMxpo0nlmDQW6WrUjgFsx4h15mlQ3eP9rsvmufii0w19I++zuNRBSMDj?= =?us-ascii?Q?agD/x4Ri7k6f1zs20XoahYMwGa242MkCNgn6Ft+Qxl6HQfITZETLO7p7xMFJ?= =?us-ascii?Q?mDVTVP9sdPz3pF9F/2FtgQBQ/5qYs1lkjOlh2E6nzFM8usdeO4Mt3+boZVoP?= =?us-ascii?Q?RF7MfHsiZh2QlHIKVC66gTDoK3hgV/ipPFXPAVpx3O/OWmFQ4WdFXi2BuPg7?= =?us-ascii?Q?Bg4nza6Eisekvr4An55/Hn69RkJM+XcoLA7DOjmomRP4b1PCCJqPYRcd8X/b?= =?us-ascii?Q?a2cIbSEl4b+iUYp69zS3pgRKnMSw2hGN0DKYXy0TaLEFxeqHlgwyw3pvrT30?= =?us-ascii?Q?0Cbjpz8bF7s=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR02MB6760.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mU2vcmJL8xOe95u8teQr+xtDIZ6qTgeZwfxTlPMUtilBJj7wnTV1SsWYgZme?= =?us-ascii?Q?G4xtGAgeHx88tvzAerPUPZ/KRZb7sECO6WKzt2efBmO02CvXZ4Pte8XZLAN7?= =?us-ascii?Q?o2fE4Lii2DBDmpNUMdJUH5zNDz4O/Pez+ZcYCTx3F51p81YTz4AWjzcy5+Ct?= =?us-ascii?Q?uWHS0s25F6oH4XECItlV6XRxudmj7gmve0EK+s4/5m/tq2XFCVua1joFROe5?= =?us-ascii?Q?L9p3aLfhmQJc+H4jf44dQbq4DtEL5Hp+EVxTbfcHdDo7lbdYbq27fYz4mC0Q?= =?us-ascii?Q?HenlItjb7ZuIKFZA4n9n/daoTBNfXut7m2lb589P8/Nun2ShHFt4GKgTBSLy?= =?us-ascii?Q?27HOI5iQ24KIOhpyZjFmMSN5OB18CECU/v1DYXm5fqcnk0NBEsHtaV/WAZr8?= =?us-ascii?Q?361UegGnVcpinRo7620oXCQvxHYwafTjPC624wtPglpwJyChQndM3d7iDbN9?= =?us-ascii?Q?zxHxjgxEJFXl5B42tqmAFZceTc18g9ccF/bPUTux4UsJp3cikmaXw+dBEOf5?= =?us-ascii?Q?G5MLWoMJTyUQGo9ULIV3xpDwXu66vHLzrFLOdWON0kzpcjPMw6Shs/crGwry?= =?us-ascii?Q?did7TxdPe8uSEx2ZKK1njxJXaIiZp17I0vAb+hd5ftvvffbJ28CH0RPNOaQP?= =?us-ascii?Q?BrRwrzQXzxWD3vZxSXVCBxDExQQ4lLnV5GOxckX/gdi81GNUXX6FFxWaeVSb?= =?us-ascii?Q?6q2tji/q/JADDGO185YwGD8lUXHBEo5J5AoHOKsP9CwJJIL43VD604ocnFen?= =?us-ascii?Q?XwuFl4RnDPm9VgvS5CkCDQty4frB4P+v+tRGYn+XOgWESRAfrV2jGJR3a/Uv?= =?us-ascii?Q?mjB6UPthmzvVyPWggHTyuPZFrsMAOSl9jWXY5qfj369KzYiAQqWQF9yb+p/c?= =?us-ascii?Q?iPSO5YxYZbl4lKuziLMxsNSoa5D8qZEt+Bq+AapOydJyNaQukzvd5cWkvtMU?= =?us-ascii?Q?RXJYUbDDcaiaZo3o2oOsmb5R1hyDCveQkjnMJlhHBXvrZoTZmR/zW6qUs5Vg?= =?us-ascii?Q?OlvafTVU8XsGDnSbEKyGzAutynxqEw7Q6sAzhtOuoDUBh0ys5IugdR3418uC?= =?us-ascii?Q?g8lI7sdx2hzmLVoBn56c6c1TIUSHwKH57Yau9CajiukNAeTO47ivGAz/YJ7i?= =?us-ascii?Q?DoYLfg78+JV8tdrcfxGXcYn95FX+ONKsM+UDVcj8aY9YINb82Fd+/9gXTlqT?= =?us-ascii?Q?oezQaeBzgr44TMmo06hO8Smj7XnEIzClNFczd1LZGdhx23YU0ya6Zrn3Vr4M?= =?us-ascii?Q?vZGED1uyA8ucZr7l/FGf3MvU+//SywqjLDajksM7bjLGzdCA9k3ArMVF0aD/?= =?us-ascii?Q?i82GJtIR6GUiwSxTvWFGibOTzkq6L9ByLEnIKH+UAD8o/zuAqIJ8OZ63CO/m?= =?us-ascii?Q?x/x4kUaeLuAGf/2lG2Dy2Wt30wfHLu1mZ6tEbKStOpwqeOzADOvSVd0+sEas?= =?us-ascii?Q?FZclgCrt0krg1pMF9xQr/NyXd1zsIL6+UrWJnlPabVcYg6bAjUYi2UTKlXaV?= =?us-ascii?Q?SrLzdFnevqsqM6qSzHd/aOP4zBNyj5Akk2aESlv4qNBW4ugMfGJpLW9nTTms?= =?us-ascii?Q?59lp7l0pnLUHum7CPcqjHPjIBxhp7ldX6N3o0vAP?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e05a24c0-f921-494c-518f-08dd881eedc7 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Apr 2025 19:40:57.7989 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aIefED1t7uo0BCSDMzoIac1wnMKTFoqpE6xneO+rR9J3hndSJ+FTp5M75ENn/vN9Vb1OCHGIaZ98O4AZXccReA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR02MB9931 X-Proofpoint-ORIG-GUID: XBSfDpBJma3sMyDrdmafNH-B8eL0qBY- X-Proofpoint-GUID: XBSfDpBJma3sMyDrdmafNH-B8eL0qBY- X-Authority-Analysis: v=2.4 cv=VITdn8PX c=1 sm=1 tr=0 ts=68127ccc cx=c_pps a=/gCfq7Ne1cdKKt0NGwu3qQ==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=0kUYKlekyDsA:10 a=yPCof4ZbAAAA:8 a=64Cc0HZtAAAA:8 a=7zwm0VwvlM8wVqh4CGEA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDMwMDE0NCBTYWx0ZWRfX+GcrP1BwrJEI XJnjnR+wq13Vkx1W6uC1A9Ssn1zUL/gDUvNh9puVHLd0W9F+ym2gT4g9jCTvYFtGvaHodV6Mm+j RdhFR0LyhxfCPau6/mbJYzuiqGqKsLfV+NLM3IgtzZBMyFUtMNkPZ72FWhuMXOZS+eBwEgkZYLT ayTiz6SB3iPYI2aPR311VWX/J1TtQtIyYD41J77Mci99huYvwiYAPuiqbmTskAw91lydiZfKrw5 pe5cS2N6Upq0qqhrYacZq6yPr6emnZyYBjPn3e9GKtmQ4oqJinW6pYS8+WLSlsd8WEKRoXxEf6x tuKbmwMGQuvM+diZ2QP1okEy8kQ64sKTaVzglXn9UD1o9eE8wXxX+46Qa8Tik5SJA1hlnFMuu/K mXIxIWNa8VIFc5ref1XsySmcLu9SSiN+ZFa44grAyuOjOKlLPU4zQ+uv5NvmHdbn10JxyCf0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-04-30_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Reason: safe 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 client-ip=148.163.155.12; envelope-from=john.levon@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.483, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: 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 @nutanix.com) X-ZM-MESSAGEID: 1746042109724019000 Content-Type: text/plain; charset="utf-8" Pass through the MemoryRegion to DMA operation handlers of vfio containers. The vfio-user container will need this later. Originally-by: John Johnson Signed-off-by: Jagannathan Raman Signed-off-by: Elena Ufimtseva Signed-off-by: John Levon --- hw/vfio/container-base.c | 4 ++-- hw/vfio/container.c | 3 ++- hw/vfio/iommufd.c | 3 ++- hw/vfio/listener.c | 18 +++++++++++------- hw/virtio/vhost-vdpa.c | 2 +- include/hw/vfio/vfio-container-base.h | 4 ++-- include/system/memory.h | 4 +++- system/memory.c | 7 ++++++- 8 files changed, 29 insertions(+), 16 deletions(-) diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 1c6ca94b60..a677bb6694 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -75,12 +75,12 @@ void vfio_address_space_insert(VFIOAddressSpace *space, =20 int vfio_container_dma_map(VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - void *vaddr, bool readonly) + void *vaddr, bool readonly, MemoryRegion *mrp) { VFIOIOMMUClass *vioc =3D VFIO_IOMMU_GET_CLASS(bcontainer); =20 g_assert(vioc->dma_map); - return vioc->dma_map(bcontainer, iova, size, vaddr, readonly); + return vioc->dma_map(bcontainer, iova, size, vaddr, readonly, mrp); } =20 int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 1000f3c241..aaaca33c8e 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -211,7 +211,8 @@ static int vfio_legacy_dma_unmap(const VFIOContainerBas= e *bcontainer, } =20 static int vfio_legacy_dma_map(const VFIOContainerBase *bcontainer, hwaddr= iova, - ram_addr_t size, void *vaddr, bool readonly) + ram_addr_t size, void *vaddr, bool readonly, + MemoryRegion *mrp) { const VFIOContainer *container =3D container_of(bcontainer, VFIOContai= ner, bcontainer); diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index af1c7ab10a..a2518c4a5d 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -34,7 +34,8 @@ TYPE_HOST_IOMMU_DEVICE_IOMMUFD "-vfio" =20 static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr io= va, - ram_addr_t size, void *vaddr, bool readonly) + ram_addr_t size, void *vaddr, bool readonly, + MemoryRegion *mrp) { const VFIOIOMMUFDContainer *container =3D container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); diff --git a/hw/vfio/listener.c b/hw/vfio/listener.c index bfacb3d8d9..71f336a31c 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -93,12 +93,12 @@ static bool vfio_listener_skipped_section(MemoryRegionS= ection *section) /* Called with rcu_read_lock held. */ static bool vfio_get_xlat_addr(IOMMUTLBEntry *iotlb, void **vaddr, ram_addr_t *ram_addr, bool *read_only, - Error **errp) + MemoryRegion **mrp, Error **errp) { bool ret, mr_has_discard_manager; =20 ret =3D memory_get_xlat_addr(iotlb, vaddr, ram_addr, read_only, - &mr_has_discard_manager, errp); + &mr_has_discard_manager, mrp, errp); if (ret && mr_has_discard_manager) { /* * Malicious VMs might trigger discarding of IOMMU-mapped memory. = The @@ -126,6 +126,7 @@ static void vfio_iommu_map_notify(IOMMUNotifier *n, IOM= MUTLBEntry *iotlb) VFIOGuestIOMMU *giommu =3D container_of(n, VFIOGuestIOMMU, n); VFIOContainerBase *bcontainer =3D giommu->bcontainer; hwaddr iova =3D iotlb->iova + giommu->iommu_offset; + MemoryRegion *mrp; void *vaddr; int ret; Error *local_err =3D NULL; @@ -150,7 +151,8 @@ static void vfio_iommu_map_notify(IOMMUNotifier *n, IOM= MUTLBEntry *iotlb) if ((iotlb->perm & IOMMU_RW) !=3D IOMMU_NONE) { bool read_only; =20 - if (!vfio_get_xlat_addr(iotlb, &vaddr, NULL, &read_only, &local_er= r)) { + if (!vfio_get_xlat_addr(iotlb, &vaddr, NULL, &read_only, &mrp, + &local_err)) { error_report_err(local_err); goto out; } @@ -163,7 +165,7 @@ static void vfio_iommu_map_notify(IOMMUNotifier *n, IOM= MUTLBEntry *iotlb) */ ret =3D vfio_container_dma_map(bcontainer, iova, iotlb->addr_mask + 1, vaddr, - read_only); + read_only, mrp); if (ret) { error_report("vfio_container_dma_map(%p, 0x%"HWADDR_PRIx", " "0x%"HWADDR_PRIx", %p) =3D %d (%s)", @@ -233,7 +235,7 @@ static int vfio_ram_discard_notify_populate(RamDiscardL= istener *rdl, vaddr =3D memory_region_get_ram_ptr(section->mr) + start; =20 ret =3D vfio_container_dma_map(bcontainer, iova, next - start, - vaddr, section->readonly); + vaddr, section->readonly, section->mr= ); if (ret) { /* Rollback */ vfio_ram_discard_notify_discard(rdl, section); @@ -557,7 +559,7 @@ static void vfio_listener_region_add(MemoryListener *li= stener, } =20 ret =3D vfio_container_dma_map(bcontainer, iova, int128_get64(llsize), - vaddr, section->readonly); + vaddr, section->readonly, section->mr); if (ret) { error_setg(&err, "vfio_container_dma_map(%p, 0x%"HWADDR_PRIx", " "0x%"HWADDR_PRIx", %p) =3D %d (%s)", @@ -1021,7 +1023,9 @@ static void vfio_iommu_map_dirty_notify(IOMMUNotifier= *n, IOMMUTLBEntry *iotlb) } =20 rcu_read_lock(); - if (!vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL, &local_er= r)) { + if (!vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL, NULL, + &local_err)) { + error_report_err(local_err); goto out_unlock; } =20 diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index 1ab2c11fa8..4c4b3d1371 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -228,7 +228,7 @@ static void vhost_vdpa_iommu_map_notify(IOMMUNotifier *= n, IOMMUTLBEntry *iotlb) if ((iotlb->perm & IOMMU_RW) !=3D IOMMU_NONE) { bool read_only; =20 - if (!memory_get_xlat_addr(iotlb, &vaddr, NULL, &read_only, NULL, + if (!memory_get_xlat_addr(iotlb, &vaddr, NULL, &read_only, NULL, N= ULL, &local_err)) { error_report_err(local_err); return; diff --git a/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-c= ontainer-base.h index e29f7126c5..09b72e9969 100644 --- a/include/hw/vfio/vfio-container-base.h +++ b/include/hw/vfio/vfio-container-base.h @@ -78,7 +78,7 @@ void vfio_address_space_insert(VFIOAddressSpace *space, =20 int vfio_container_dma_map(VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - void *vaddr, bool readonly); + void *vaddr, bool readonly, MemoryRegion *mrp); int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, IOMMUTLBEntry *iotlb, bool unmap_all); @@ -121,7 +121,7 @@ struct VFIOIOMMUClass { void (*listener_commit)(VFIOContainerBase *bcontainer); int (*dma_map)(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - void *vaddr, bool readonly); + void *vaddr, bool readonly, MemoryRegion *mrp); int (*dma_unmap)(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, IOMMUTLBEntry *iotlb, bool unmap_all); diff --git a/include/system/memory.h b/include/system/memory.h index fbbf4cf911..eca1d9f32e 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -746,13 +746,15 @@ void ram_discard_manager_unregister_listener(RamDisca= rdManager *rdm, * @read_only: indicates if writes are allowed * @mr_has_discard_manager: indicates memory is controlled by a * RamDiscardManager + * @mrp: if non-NULL, fill in with MemoryRegion * @errp: pointer to Error*, to store an error if it happens. * * Return: true on success, else false setting @errp with error. */ bool memory_get_xlat_addr(IOMMUTLBEntry *iotlb, void **vaddr, ram_addr_t *ram_addr, bool *read_only, - bool *mr_has_discard_manager, Error **errp); + bool *mr_has_discard_manager, MemoryRegion **mrp, + Error **errp); =20 typedef struct CoalescedMemoryRange CoalescedMemoryRange; typedef struct MemoryRegionIoeventfd MemoryRegionIoeventfd; diff --git a/system/memory.c b/system/memory.c index 71434e7ad0..79671943ce 100644 --- a/system/memory.c +++ b/system/memory.c @@ -2176,7 +2176,8 @@ void ram_discard_manager_unregister_listener(RamDisca= rdManager *rdm, /* Called with rcu_read_lock held. */ bool memory_get_xlat_addr(IOMMUTLBEntry *iotlb, void **vaddr, ram_addr_t *ram_addr, bool *read_only, - bool *mr_has_discard_manager, Error **errp) + bool *mr_has_discard_manager, MemoryRegion **mrp, + Error **errp) { MemoryRegion *mr; hwaddr xlat; @@ -2241,6 +2242,10 @@ bool memory_get_xlat_addr(IOMMUTLBEntry *iotlb, void= **vaddr, *read_only =3D !writable || mr->readonly; } =20 + if (mrp !=3D NULL) { + *mrp =3D mr; + } + return true; } =20 --=20 2.43.0