From nobody Sun Nov 16 00:57:37 2025 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=1744206619; cv=pass; d=zohomail.com; s=zohoarc; b=G4SvoSMwDrD0TcdOuZqU5mDe3wQzph111RPdAUW8C86sNGAm9Jpi/1IBwQk74AAuTpTSNQUU8rCv7h3xdaDUgvkIMtwU35VgFjFhSiD0AGMXqTFIw/xJgT7LV3sFKa0Qj/iZIJZhOlNxCDDe1WR+Rhwk8wy/t7GwrIoHHaPKKf0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206619; 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=kBd+2MuP3jIbBsdmAwFmAprwdtHHPPi462Dwmamg+10=; b=SolEBQUcxuDClzZvtidLb2zvlPbBRFZ1wKJt4WsCvmHilpbwoll3XhP3AJJL5i35sXMxX6gGrgj9BZUxMNLOJSI3Sxi+2snODLGa9BTDr2NZeTAqDGB53jE6QB9iF3RSAHhs2Kv+q8EbDEmF/D/MVWWOJ7emqu70X6RkO1MFbiI= 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 1744206619326470.09930750766296; Wed, 9 Apr 2025 06:50:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnB-0006DF-5P; Wed, 09 Apr 2025 09:48:37 -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 1u2Vn9-0006CH-CJ; Wed, 09 Apr 2025 09:48:35 -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 1u2Vn3-0005bH-Kl; Wed, 09 Apr 2025 09:48:35 -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 5396u4sE006456; Wed, 9 Apr 2025 06:48:23 -0700 Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazlp17012032.outbound.protection.outlook.com [40.93.1.32]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 45u3kksbh7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:23 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48:21 +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.8606.027; Wed, 9 Apr 2025 13:48:21 +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=kBd+2MuP3jIbBsdmAwFmAprwdtHHPPi462Dwmamg+ 10=; b=YEJ4La+oNXy6fuC4iH31NP6J4ZGuLTgAOPaLNrI6nuEelaUgEbQF37Hod OPGLHMUkQYU+80RN1aUsAWE+DFRd0dTZiPo0YfOMngp851ndZ7EZJ5L+MziEGe0P yVnWf1KOcMH0IzNxNqxkElonS2+j9ClT62v/sQlie4nAbOrwvbbBot858dbmqeYy F7Jeef57cFihCSHpocTA5xvguMp9vJDNgjBMOZt7BUuQW4kEwyRu9CkNtXbVy9ue noybmG3ZhUSQKVNbRAUhF0L4Zk5x0aGuRYzzvZK6k/kpkGCEdKQM1jj3fQT8EqMq L780QlYjd9sLsToGPscBmCaRjQ/lQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c4HKlHR4+io62ADRO/N3VbB83svPaLjfRPpLiqn0EHGmb0fekbjZM9um6/go8KYSAU+WOz8qFJyKA4UatmJ1C3qsAIOpd1x9hjuv3k/WxOrkY7vacmNsP8rzMX27kyd9JxCn+GSyu3qGuD53DBjdi1PReSa63/2dRFoiHYquScY7v62wxYsThQ4pXrEJ8TiQUx5ON1TWqY9sdomlkOi0i0LJ1jcKfFGPLJLUlyPHn0stx6SRW/8EGQA2vyp4d/2GMEpbLHQ6sZA+sjGG67SCSviCvaOIHCzGk6y13X93DDTlx7SbhFRNBZaiePIBAB/7ppQEVxfbyAo3JyVn9BEj5A== 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=kBd+2MuP3jIbBsdmAwFmAprwdtHHPPi462Dwmamg+10=; b=YmWNtt+ylZcmOTrmUjYlIqzM0wWVKsYUrr6Zgt17at4cUAY7nYmaRua5B+xCEx+daX5W8K9gwwALaMycgL696Sj3vee4tVrlt3jcIoA6R5Mq1KBM08QpT7m3CoGarFUvl+Hg3lqCG8Vmr4Ygjec4I4KYj15plCWGKwZ0VExN4HgUreqk4WiwJHyqfVrN8hoy4fiS2ngvqfYvb8siWUCZg7MOzDN4hxiHZRHRcW4YX1VG54t/Ky3HLeT7Keuv8e3sRmqr8bJNAcfcwIhIq5AZLZwi16EVtCnF24jwtUYG8OwuVpLYkHlY7crgNpw+cs5301VILVPAAs0Twct0DC2eLA== 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=kBd+2MuP3jIbBsdmAwFmAprwdtHHPPi462Dwmamg+10=; b=BYLEbnXojMFXbrXe8G5IjjWWkGxF6GjdSrkekf4QidVrnN/VRB9NFqEEu4GS6LOxCC2tcoS8qYSgY0RjDOKU0uivw/j0mTihiZcx5dEERq5U1VRYHUTSDcDIBqxXmPk0JRho7XmPwaACxuSFxo2Apbmz/mE/kaw8hH/9y3BlyPAgFH6nj9kWOGn4oTVbFVithvusp0VG4iKYP9q7dTRZLR3rTM+kXsZbfbBghKyHTqVsgW1lORpQT7n27XkN5hKD4ly+rST2iojGQ6msfCY259bAxaI09Js8W4WgtDuy59A41MkOm1OK1jJTODeI8tcYTxbr+vrzi6xopqd+vo+/vA== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 01/14] vfio: refactor out vfio_interrupt_setup() Date: Wed, 9 Apr 2025 15:48:01 +0200 Message-Id: <20250409134814.478903-2-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 8a6ef6af-98be-431d-a60d-08dd776d312a 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?i91NLlX0KqRCW986oFsgrBZsnm8FcIj6h3SG4GAhYyRSSfzHXqGO9cwZqYfk?= =?us-ascii?Q?LrKAXgv6aInQwcK0LdAfLSyz8zTN6E3yuKlhNXKS4yKe6ze/npFtXglf/okG?= =?us-ascii?Q?EG4KWDkLCEmo1IGlVB+jidauHSHr4H0+fOO0xfVWhRI6GHK+P9YxStf3TcuR?= =?us-ascii?Q?8IJ3/R5c833DWvpFJX8sGHBJ8sLy47X8PfYZUt+7cWhPp8jQ9a4DvrSg/oXS?= =?us-ascii?Q?Rxj+EON/ErgdNWKbTQfyLEP+ZghaNFSo5+1QaBMWhBolY0bRVChezXPdeCy0?= =?us-ascii?Q?AuE0CLkHGa7B1A/JEhIHq6Medc6jvmQ9pJ755iNia80R+oDoMpAj2t6RRiSz?= =?us-ascii?Q?7Qg4UhJCk0qWy6OGFGQEvhOJdni+gZuDPJdMpB/fZJmwSQuknEkMgRodz0AI?= =?us-ascii?Q?D7NnNyykVy8IkT0IGItwLyZYJNEZEvaiqcPQgnpXCshN4+PGUtPW34kk/1kH?= =?us-ascii?Q?7EV5V6+x6zAxAiVWR40q03a2zUiwBxpVC21lMFvmwebdLxkFISmfN7FJViwl?= =?us-ascii?Q?ek6nkTF9gjkCLf9xlf2Lu48j3WzeyCYJmBi20y7NBfNvRxudBqzfc19D55JQ?= =?us-ascii?Q?iM8WHXHUmlb1pX5zEaylXI0C1qnXAR34TPgU/M59cFXK1kMBb1aeh4YuYJK1?= =?us-ascii?Q?PI0eHY1V90q3v/H78h7XfGas2oOrSViwz8J/MCXr827zbyyBPGcJm96LBqCc?= =?us-ascii?Q?y5EIAX7FTzr18UGxilYT8kwGKmDsusx0OMiilA70wkUHA/PRG3QLUKlWOgkt?= =?us-ascii?Q?QXisCOfdZwN4jNKwdgTOY7buG/CaKD9fuRbwaG3GmzNyygRbI977QLi6JxJ5?= =?us-ascii?Q?baewwa3D7BAloA0TKFc8Qlyy9lt/NR85Pw+yX0y/lBbP3aO+ucTkd8ie2mZC?= =?us-ascii?Q?C1piJJ+0yXRym+inJElHK4LCEoQ15qJbp3WteF3tiPgrhTh54JpZA3Q6SP8L?= =?us-ascii?Q?3PkqIr0viBAthmKrvGNgnuHUGzxM/jQNQ8AWSZYhKo2/Z3RDESORGmpOjIch?= =?us-ascii?Q?CruLpzQqS6xtC8pX2m5o9Ex8g9Q0r9phL44axKfdYCSOcJQ2OwbVueJK/wl/?= =?us-ascii?Q?3L20KeU1Mm016HVJNvx/rgKElg3PN9DhbTSywcLDySa+p2vfhk/zBRdUgbyP?= =?us-ascii?Q?HCVYvE3x4bZQ1YFOjKEbXgnb4bV6SEKCMp14+6D19w1cCm0JcZvuLTELeuMe?= =?us-ascii?Q?++i1+T78npxvwqclCsbzkiF+bnmIA4ieKwlgTnL0VYGEMOBlIZI4rb5jObob?= =?us-ascii?Q?454y7TIBAu8fXeLcaMTlmefK2zTdjPtr+KTNLkBJuI2sk1mJcOVdkTrUn2WC?= =?us-ascii?Q?M+iqveLrm1GB85lHk09KObCWadouotsWOR0uXzfZ6u9p4FKoBFdikIOuTqE9?= =?us-ascii?Q?2B3A1+XPiUrNnckM48AjvTZzQKxq?= 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?dcZsY2PGk0qftJiSR40bwut5JEj08OVK/qpD7K9lTUKlx6fOykPZcYYDhn2n?= =?us-ascii?Q?QY35XeLgperVDd8idF+8n5TU9tL+f3pTa0ZylL+lQPBYQ5YwT3LfpGQ+Id3W?= =?us-ascii?Q?yvVyPIbV1jfaJ+Qci2NXKFbFmWiGmI/Ft11aZeP3YaWJi5QLqsZE/26ylUW2?= =?us-ascii?Q?p3AU1df4bAXZ4gTsznxBZw3edSeQhRdDxCK8565aRpiOiCxIMDbz4uk1Fw3g?= =?us-ascii?Q?J0TAir+XuqH/u8F60DHk/Ft0WRUJ0N3Z5jA1wWsKKLuKOTCQsD4ULYh+o1hk?= =?us-ascii?Q?QFE5mwYUYFJ2bdhTB5qffNd4gaH1twYntkhRHXjjYEJsl99YCZlvah2zX0Ni?= =?us-ascii?Q?j9bxXFcvW4jfOFGHrY7fMOHWf9wv4chjY9ShJ/xUBBu8tmAD4vQUYRU9+Xr/?= =?us-ascii?Q?0q7L4QDGSg6OFx9RTzaVQljE1Rre4VGfy6onXkENiTVHeKZR0wguF7e8OgJW?= =?us-ascii?Q?nklKLXsh0f+f2PfL7fLvDJHh96MAOG0elJpVKxXV+n0qhpc6NOECZIBDiQPO?= =?us-ascii?Q?u2O1JEz3ez/V9LBgmKHJ4sqJt9vbIxqdfhLWGz5YuaVbkqAmE3Wi6/bCIb8o?= =?us-ascii?Q?OWwTagQvhJVsrqCG4FaXsngKjhjgeqH48SMZ8oWeWIXQvbffJC4d1vPspMW1?= =?us-ascii?Q?ri+kMC3ZUK8LwEsD/bTrrIr90eMN1MyCmpcuuM779C25d/12kILpOooRtw9J?= =?us-ascii?Q?JL1BBevmSQC3gaXTTtv/Km972d7eaHp2RDoVhrspttO4XXCABVQvbun1f3Su?= =?us-ascii?Q?oSoEDroggehf3rKry9BBWxG271Z7uo+9nf/18DZcMJCfevHYAOOPWik/NMsv?= =?us-ascii?Q?lQv4KBHvkoc7yABU3YwhcUdwbJcEn21kGJOTLXX7N3m/NtD4Rrop2qo/wGdz?= =?us-ascii?Q?q1tu61G8kanrDmW44Ko/rtHylnVXjUxseE5pkyckphMQVjupaoHAy+2eSOmy?= =?us-ascii?Q?Onq0JKt/d70gGCd7Gz9nvsgr6hS5FaC2Emd84M9Mw9QXDhTchq56KJdMAh4c?= =?us-ascii?Q?ypp6fqKJzBUPBmQzpL5br6bXgtYZENRqeZKoCKdkvaAuopePrg9SRxb3xzNB?= =?us-ascii?Q?Hj+AFvv8E2egZ9dvp0Yst7tbI9TGVb7tP5UgExesm9sqTYHOOiIE8dg1Tfeb?= =?us-ascii?Q?u7deJz8/irSCuEdPqLbLi3+9zL4bSuzvqScrxfV84Vpqkx6UP9xdfHlWdZ4z?= =?us-ascii?Q?bbAOq/qjb6VEH38QebUAWzFP+7Tu+UTBv+4yN5xxOdg8NMRHGHwy24bU1Lfg?= =?us-ascii?Q?AHIQWCiqaMGlBdfd46RWN+qhkaLUpL6/nEp7VVgBMpOkTVAIgXRZIoO3Nnx8?= =?us-ascii?Q?Y2GmTzHyVn587AP0ssgCaEnBi0BtoNrXdxICLjsmdGBJI8jR355QNrCjioBS?= =?us-ascii?Q?EdQFi8p4EVqU4Wvmc2z4CBNeczsbacczuU6NwepuUci3ancQw5DF4So6QlCf?= =?us-ascii?Q?FsHwLe4va3lfbgikUQ7G6CTeCadYNiiRVX5KdyzA4E/s0tsuTonP6ZoPVcZK?= =?us-ascii?Q?imU0N6vtQdTax9i6CNTVs7UmuEYH8sWMslBfEPJGmdtOwVtDVwLDTYpTIcPI?= =?us-ascii?Q?MlbxIyWzG7oSj9HauFQdYqZbTMfq2E02JlkrWJUO?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a6ef6af-98be-431d-a60d-08dd776d312a X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:21.8064 (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: 03PEp0odY3UBe/q2wiRN9zynQxiQrRyIeYUW3ZVyOj2uE4E+n3mkCs/1nVlvRhJPzYp3dJloJqO+vooSLaXgVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: foCNld5d48-0156yJFYUWA0XVL7g46t1 X-Authority-Analysis: v=2.4 cv=d+b1yQjE c=1 sm=1 tr=0 ts=67f67aa7 cx=c_pps a=fM4bIjZpJamw6RFag0UgWw==: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=dhT5AhTmqo_bmTCJ8pQA:9 X-Proofpoint-GUID: foCNld5d48-0156yJFYUWA0XVL7g46t1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206621033019000 Content-Type: text/plain; charset="utf-8" Refactor the interrupt setup code out of vfio_realize() for readability. Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/pci.c | 55 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 05a7a62204..02f23efaba 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2963,6 +2963,38 @@ static void vfio_unregister_req_notifier(VFIOPCIDevi= ce *vdev) vdev->req_enabled =3D false; } =20 +static bool vfio_interrupt_setup(VFIOPCIDevice *vdev, Error **errp) +{ + PCIDevice *pdev =3D &vdev->pdev; + + /* QEMU emulates all of MSI & MSIX */ + if (pdev->cap_present & QEMU_PCI_CAP_MSIX) { + memset(vdev->emulated_config_bits + pdev->msix_cap, 0xff, + MSIX_CAP_LENGTH); + } + + if (pdev->cap_present & QEMU_PCI_CAP_MSI) { + memset(vdev->emulated_config_bits + pdev->msi_cap, 0xff, + vdev->msi_cap_size); + } + + if (vfio_pci_read_config(&vdev->pdev, PCI_INTERRUPT_PIN, 1)) { + vdev->intx.mmap_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, + vfio_intx_mmap_enable, vdev); + pci_device_set_intx_routing_notifier(&vdev->pdev, + vfio_intx_routing_notifier); + vdev->irqchip_change_notifier.notify =3D vfio_irqchip_change; + kvm_irqchip_add_change_notifier(&vdev->irqchip_change_notifier); + if (!vfio_intx_enable(vdev, errp)) { + timer_free(vdev->intx.mmap_timer); + pci_device_set_intx_routing_notifier(&vdev->pdev, NULL); + kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notif= ier); + return false; + } + } + return true; +} + static void vfio_realize(PCIDevice *pdev, Error **errp) { ERRP_GUARD(); @@ -3142,27 +3174,8 @@ static void vfio_realize(PCIDevice *pdev, Error **er= rp) vfio_bar_quirk_setup(vdev, i); } =20 - /* QEMU emulates all of MSI & MSIX */ - if (pdev->cap_present & QEMU_PCI_CAP_MSIX) { - memset(vdev->emulated_config_bits + pdev->msix_cap, 0xff, - MSIX_CAP_LENGTH); - } - - if (pdev->cap_present & QEMU_PCI_CAP_MSI) { - memset(vdev->emulated_config_bits + pdev->msi_cap, 0xff, - vdev->msi_cap_size); - } - - if (vfio_pci_read_config(&vdev->pdev, PCI_INTERRUPT_PIN, 1)) { - vdev->intx.mmap_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, - vfio_intx_mmap_enable, v= dev); - pci_device_set_intx_routing_notifier(&vdev->pdev, - vfio_intx_routing_notifier); - vdev->irqchip_change_notifier.notify =3D vfio_irqchip_change; - kvm_irqchip_add_change_notifier(&vdev->irqchip_change_notifier); - if (!vfio_intx_enable(vdev, errp)) { - goto out_deregister; - } + if (!vfio_interrupt_setup(vdev, errp)) { + goto out_unset_idev; } =20 if (vdev->display !=3D ON_OFF_AUTO_OFF) { --=20 2.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206553; cv=pass; d=zohomail.com; s=zohoarc; b=Hf+E2UIqR2rbdUj5cX4G9CXYL7v5TXp3Uw5w1JVWjnwdi+IOpqhV0byayRsSHOpED/DaaWWCQmyeTt7U3Dgxspp1x/D1GTu107DBwRB9VPGWcp1sWdGZK2CJ8qdyef/9T9Z44PfJvJupBllVW8LSkmiCqXewbLkgEpqP6mqsR/o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206553; 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=BDGBxzzjxLjKnpc5zeTGTq4gng2DG170Yq+BvTZ1Xus=; b=iEozJ5GAEtHQPbiUR/uAUQ/tSi5ivo3vWA9fa4tciliP/+/LvvlscyueSbvojbZoSqDXB4BeJl/KwgkYqAi7Dqcae/ZHZzOAPBcT9G5l/UCa/nZpsJhe9ojfVZvRbuO9xM2+q93xJdvx4mmCLjjGa9VGC9cpgT0q4MKPT+p3to8= 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 1744206553124200.35723587054042; Wed, 9 Apr 2025 06:49:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnA-0006Cy-TX; Wed, 09 Apr 2025 09:48: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 1u2Vn7-0006BR-Ag; Wed, 09 Apr 2025 09:48:33 -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 1u2Vn4-0005bZ-Jz; Wed, 09 Apr 2025 09:48:32 -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 539ABnMi024552; Wed, 9 Apr 2025 06:48:26 -0700 Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazlp17010002.outbound.protection.outlook.com [40.93.13.2]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u420syha-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:26 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48:24 +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.8606.027; Wed, 9 Apr 2025 13:48:24 +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=BDGBxzzjxLjKnpc5zeTGTq4gng2DG170Yq+BvTZ1X us=; b=O4DCN5ZalE1ovHFqJQWfhxak4jbO6/XxlyoBODSFZ441T0X3GBlz3SnJz a39kZu++kmb7FZ4Q52xfgSoLtA3muR+eMNRdVm/T6jsgNo+YHx0nxQU9uNhJyVEp XDyKRGywcDE56VBwB1s6US6QHSQUnK4VQ5spO/QrtbZSI1YCECYq9q+alpM+mZxr unN0P+ccWQfMJ0kP+TGfPzCmrz4ahsio8cas/deGve/B5z9oWMizB5m4l7lvSVFI oHN3mc4DhbmmCWo3wU0Exaa2dz0jVO5/kV8/IQaipQWbkbClKKPEhiKuBQAcYGid CO+W+egt0UOaZt/6eHgn9rwTo6MZw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tZK4SmfllsQjd7tAVgGW+eG8WVO3wF293CZ1mX/5yYkc9CWE5uDz8W7Zu0c6wm1nHQgTcmK/DK9HQ0or5H7isYTIUvF+sEV4lZBf8jB4HFNS0MLoyVUe/yeEW71DRhPFnPYH69N/DuieYQQ8yzhIB2d5WFEWKFfXtCj2s6de87ugmc6trYlmKIWVe+nTwHc9dTXTh5yvx76OOdWoAGhglCFHbxTXz4YgM+vsXNEG/UbvaMJk0igIW8Qwz9GcY++J2SJGDBhkKXlHMVBluIH/XIc6YaPt0A/YSYrivW2R68lEbQgQEHH5HzLrgAr2VzRCjmN38wGoRUCA2mHllSWchA== 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=BDGBxzzjxLjKnpc5zeTGTq4gng2DG170Yq+BvTZ1Xus=; b=Nc/zsslmFZhlpQCNAZoV86Zk3jEaRd/+SKjIQcVnU5IGCTFcwzRPAosbiypTjGxRHP/1G4z/HC/K7FsHVBtpuYN9ju2AXn5CehTo12bu1gND8ETGhqAqr1cy8oJfHX7TSOuDxZxs6mEWyTxi9rHPbeTnxWIgtk/ZMxbD9ywF1lRJIU/k05JwVz41fU7mXfPNV7dzYCkvvx0UT3LjFm78Woi+vy4ha5qXDDSkQLmV8pcF4+abftZb2MI752aBBvx8lmmy2BfmUKm2Fv24fiQsnVuIc3vFOG9kmhVOsBhk0erG6VB46y4vz3Rg+fvIxbC7dN0NwomjKtcPriVLpI3L5A== 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=BDGBxzzjxLjKnpc5zeTGTq4gng2DG170Yq+BvTZ1Xus=; b=WrOL416OyroxaqsR4P6DfwyJhhZckulY1m78pOQXGjdG2UCK7zLjD6aBntUq9ViSFdg3F+ghpaSdRnqDqAz3DsgFr9okC8fWyA4GVZZ41OsDe6gn4lbTyA1cY3MWgvCTN5UfmqJDeBsmoXBqllsFXNy58mZfdRK7nqU25AT/mdmk//AfXVZk+0UUFXjIyXuYhKpBXpI12dVb3IyktksffgDOCqvq2vESXPH2PRbtXJGPZgUCjv8pMTq0JJjDgCkkY56Vt9LdQg6RYCq0Z5TZRe6uv7F5X5WsjUwdPHpwHjGDWxGa/vLZn5McUPobDmeNLiWCnFEytMLuy0sOFg4CDw== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 02/14] vfio: refactor out vfio_pci_config_setup() Date: Wed, 9 Apr 2025 15:48:02 +0200 Message-Id: <20250409134814.478903-3-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 6cd8c039-1fe1-4440-6a24-08dd776d32c3 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: =?utf-8?B?ZlRqSU5qVmNnY2FBZHE3dlpFemM1dDAyQngyR29tNUhYOHFZS1FUZDNQR0hp?= =?utf-8?B?N3dxYlBpWlpmNWxzOGc3aFYvWWhPRmVEYjkxY0xna2RyVExLLzJRdndWeVJm?= =?utf-8?B?eXpncGZ4M2g1K0l5cXJpeXA3UTRLZDloUWRlYzdycmxmbjJydGRNTDM5eVRn?= =?utf-8?B?bDNZeG52OGFxb01XbFZhZEJwSDZhSlU0M1ZzYUhiUnhncWNpdTRxWTF3RGZn?= =?utf-8?B?SDlVamt6R21tWmtSa2xtZ2dORmFsNnJTMW5SS2xNWnB1Y3BXblBmV1I0Y2JC?= =?utf-8?B?eXhWUG1yL1RMK3pGcnVpRmFpTG9uc051QS8xemdjbThoWXRxL2ZVa2NtZ3Nr?= =?utf-8?B?YmM4Ty9yTHpWZ3ByZWQwTXZwVC81SVNZL01CaGNyc0dJMDIva2YvZDdjcWlJ?= =?utf-8?B?TFVibTEzbklNRzNydktjczJUT0Q0S25xNXJpb0hWdjVyVDN3dHhLSVFvUFoz?= =?utf-8?B?VUkydnR4NnE5clUvSVB4cklDRy80endibnVrc3JwTGZSaXFmb2JWS3FROWtq?= =?utf-8?B?VW1EUUJ4alBCTFEzazhQYWtzcFdpbThuREs3ZmdBeUlzYS9lMnJHc3QyMWdw?= =?utf-8?B?VnJxdjAyYjIzR2xrUkZtaEQ2SEc2OUdrMExvRmM0cU1nK2hZNFdTOU1WU2h2?= =?utf-8?B?eHMvSktQa3FESXlWMkdUMTNrY0pYalJDZklicTM3QkhkRkdjejh1Q2l6MWNx?= =?utf-8?B?VWhqdXp3bmg5Mk10TDRtQ2RPZTBtbHBya2o1L3NUc0pMWXhaZ05FdVc2YzBG?= =?utf-8?B?MWZhUW5MR2NEaG56L3R3c01QNjB2Nld3WExuWi82L3M1M0VaVTF5YzRLMWts?= =?utf-8?B?ditNR1dFN0cwc0tuVUY0RTh6U2UvVkk5UEdwSWFwUzBTbGRaNDJXMXl5RnVL?= =?utf-8?B?dzdjWjFhd0t2V2FGV09BN3pYYzJGMzZwQkh4NDVkdUVDamxUU1NtNHVDMVhs?= =?utf-8?B?VmFlT0U5QXIvcGc3U2I1cmFNam13NnlIcTVGVmNzTEFPYVNPcm0wTG95bStN?= =?utf-8?B?ZGpLQm5kL1l2cE1wKy9YTk9yeGkwVzJaallzL2h2Nk1zUWd2NnFQbG1aZ1J2?= =?utf-8?B?N3RIM095bkxqdklubTM3bUkybnNubzVXbUhGeHozWFhZV1dJMjI4ZVRmd2Vo?= =?utf-8?B?cUxmK2tURmtEM0xHeU8wS3JzMkl5emw3ZXRtemhwdWl0RjYvODFQVm44S3J3?= =?utf-8?B?WXJRZ1hxVkI4L3NNbjdCUWhNR1o3R1ZnRVd3TXREVDI2MmNUSGxhbFRSL1dw?= =?utf-8?B?eFYzcUExdDFBbUdWUzVockkweXNSTlZ5YVJmYXpzOUpnRVdZc2hjaTBaREwx?= =?utf-8?B?K2pOa3FYZE10dWRoaWcxdGs3Nm5tWVZ2UmlKS3ZwbFNocW1qNEVxYTY1QjIz?= =?utf-8?B?eVpnSzByclN0dE5NeXZCaDBSNzlCQmExdWtDdjhYdVNzbDdUUTdjc3JlWVo4?= =?utf-8?B?ZUNOTGluYmZyZ0M4cjIvNVIyWGIrbUs4UitnOVhtOUNLeGI0eGxKbVpOSUM3?= =?utf-8?B?UDRNeG43VWE3RFJXd085T2VOU3M0TGVzVjNhTTNEdzhocklhL0ZySHFoYmVS?= =?utf-8?B?Y1NYbURuaVVZNkNnZXJYc3NMQXdXK1UxRitINE9IQ09mMnE2ZG5Ya0U2OVll?= =?utf-8?B?eWJDejZyVUZtSXBYd0gwdjVmU3p5Ui92amhDLzBQVTRJaXNyNlN6VklLdDRN?= =?utf-8?B?Q3E0U3JTd002bnN0enJRQ2RBSmtlQko2VG8vMWFSQ0hOcE5NQXFCNExmeTNL?= =?utf-8?B?dko1aWRlakpwaFIrSFJiMkJIWldXdnkxM0QyQ2JaOEl6bGhBaGxDc09zT1hi?= =?utf-8?B?azZyOVRObGVLdFB3dmN3SzRFenQ3N2UrOXRlVGc1Z3FKcEg5NlhOKzAxQktD?= =?utf-8?Q?HpKmPi6VWdQfo?= 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: =?utf-8?B?WTJyN0RDWkp1NmFmdFRQTUN5bVRVUVlYSzlDYTIyVUF6ZS82N29oVk1HNy94?= =?utf-8?B?eEhTNGxKOGpBVEdtYTFFek5SUnYvcFdZS0QzSlBjSlFnbFJjOHg4Z3V5ck5p?= =?utf-8?B?Q1YzNU0wMUQxdVh1ODQ2VmVrRnJGS3VpMXl5MFZ0Wm5RcElPVHJNb25pUFBm?= =?utf-8?B?cGMxTEU5Y3Z1dWdkeElIRnZlelcxT0FMdWhTMkdVUVgwdFJaRDFCeHVWWWFT?= =?utf-8?B?QWM5Sm1iMHdhTTJaNGwvY1FGSWRqWGRDdlJtWGVLYzJ5YXdXNU1oejRlRDJk?= =?utf-8?B?dUhVNGkwWnIrZVpRS1E5MFVpTzZaK0I5S0ZQVmdKZHhTT2xVMHJmZ1o1cC82?= =?utf-8?B?dHU1NEpobFl4TnROZ3FjTWdIVndnLzBIemRwdmQ1SEdHSTg3SnV1R2lvdG1n?= =?utf-8?B?OEJyWnp3ZXEvOG1nYzBrVGtiTkV5UXBhbG5ld0hXL0V3WXgzbXA5b2hKVjNk?= =?utf-8?B?SytnYTB5LzE5WmlNZDVScFJzRDg1ZFI3Qi9DT3dyZU5aZXJ3ZmE2cUpQSHRK?= =?utf-8?B?VlFoVFBaSlZMWEhTcUlWYktKblBib1RzU0hYVUFEVlVLTVB0NktNdVBpS25O?= =?utf-8?B?ZVVuUGxoU0VQQTZjRHlDMk5aQ1NUWmdoaExteWQ0S3ZsMFlvT1hGM3gzMUdL?= =?utf-8?B?ak1pSE8xaVMxN3Y0bmxVb21YN3ZTd0tObVBaLzUzZmZITS9MYjRKL0pMbVFs?= =?utf-8?B?MERRaEJPT0ZoN3N2M2tXTUY5ajkrN0txNHlUSWx0Q2NsNjVhSzV4dFRuajlD?= =?utf-8?B?eUdHMnptSzZNdEhwRjBJU1Z3SHQxbnduT2t0RFBYZVd3c3kxaFpOMEVyck11?= =?utf-8?B?cytrZGdLT1hlWmovVHM2S1NoUFRqM0xvaVdFN3NZZ1dEaGVocms4YW9iNFJW?= =?utf-8?B?elIvWFZCRFRHVnlhZUJCRlBTeGpNenNSYmlnWkh2SHRUbVdSSG1kUkNJRHda?= =?utf-8?B?S1RtVEpVYndkZE1Xa3BQd2xURHJrK1R5UGF1blJkU1cxUDB4aGhic28ybTE2?= =?utf-8?B?OHRKWjRTQVU1aE53eDd1N0poZlZhMGxjUURVUDlxOE9yQVZDcmRSMDA2Nmtm?= =?utf-8?B?cmxUZnFIY1pVekt5dlRwVnFOUjBTbDN6VTQ5YXFkV1lrRDlpWkZieDM1MHZ1?= =?utf-8?B?OXdycnk5My9nUzR5NFpGK1p6Y0l4Z29uRGE2L1BPbVRoL0lQVmlqZ3NVQnNJ?= =?utf-8?B?U1E3STRhVGVEVC9DejhkUXZsSE9DczZvQmp1MG9xdjJhbVVhb2duVDlVbE8w?= =?utf-8?B?czh2eE12czNEenBuaWQxb2RkdGFoNzEzL3RDQ0xLU2hGdk1wbTBNZUNsYUtR?= =?utf-8?B?azdDUkVGMWkvVmtEZkFmOFUzLzl4SzB2b1JqWUhZSHg3UmZrQ2JlcDhCeHR6?= =?utf-8?B?cW5ianR4YkJHNFZXS2pMc0l2Ymk0VzdtVXcxRjh4Zk84eHdaQVkzek15OE5w?= =?utf-8?B?V3dNOE5OS1dKbzdEcDRFN0NzUlFnTDBTclptTkNVUHNjWUZ6b25tUHZnekhT?= =?utf-8?B?RmI5QzRyeFhBVWNQcHQzcE1mQ1VTZGJGOW9SbkEzQ2s4WjdjcnRnQm5GWmt5?= =?utf-8?B?Tk41TW1VdEk3RVN2U1VFU01RUUl4TzZNSURoazBaeGM3cVlpNW8vMkx2MUNQ?= =?utf-8?B?dFYrVnJLRklXMmh6T0FlektNQ25sWFFlMkxxK1ZzbEV0TjBqUU1QL0hJWkNK?= =?utf-8?B?U0QwbXN5UXBSY3RqNkJONDJIK2lOQ2NqWm5rQnVNWWRyVDNQdnNvRVRZQ1ZW?= =?utf-8?B?NlIyWDJaR0NjRE16UFp1OGYxUEJnT0YzaE15OEF5bHVoVDdtRFQ5ZXNkOGIx?= =?utf-8?B?Mk0zd1YxRmFXYVlmR0tDYkJBQTVyVDJkQTBpZ28yWkt3cVFQTHdsY0tuNWVn?= =?utf-8?B?VFZaZHo1N3dsZnU0ZWVNc09rc1JGYjBENk83aHdYYVkxYmQ0ZFZ4Y1FJNWlt?= =?utf-8?B?OENZdDJJUzBUL054NlRLR3BVcFVyNG9yRXdTTlo2Zkc3NkRrTGpFUSt1Tlhu?= =?utf-8?B?N2NvYXRzeURpUm9naWs1Ri9PVjhOWExxWUREWmhZMnp0Vzc3K0xzQ3NQS2x4?= =?utf-8?B?T3IyNFEzVEdBQmhML1ZsZHBBbkVrUzF6b2dSalA3aEZPTmoxZkRmYjlETGxX?= =?utf-8?Q?ApksZNwt9OiBU6Uh4ssPLZqVm?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cd8c039-1fe1-4440-6a24-08dd776d32c3 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:24.5061 (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: knUaxox3Y5YaSUNRduJvgT9mwptRGbg6xEDk43Wv6Gmy0fDPVK3EXBSvxbyCyHoXVH7F7HiNDkebeK12+AsCtA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: VRzeD4_e0Ode4lVNI2dt0UAuzWP-TZBq X-Authority-Analysis: v=2.4 cv=TeGWtQQh c=1 sm=1 tr=0 ts=67f67aaa cx=c_pps a=rknZK0v7KRh+kGA6vhtu4g==: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=q3r9P8AP8Ax0Fte6b8AA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: VRzeD4_e0Ode4lVNI2dt0UAuzWP-TZBq X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206554537019000 Refactor the PCI config setup code out of vfio_realize() for readability. Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: John Levon --- hw/vfio/pci.c | 176 +++++++++++++++++++++++++++----------------------- 1 file changed, 94 insertions(+), 82 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 02f23efaba..81bf0dab28 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2963,6 +2963,99 @@ static void vfio_unregister_req_notifier(VFIOPCIDevi= ce *vdev) vdev->req_enabled =3D false; } =20 +static bool vfio_pci_config_setup(VFIOPCIDevice *vdev, Error **errp) +{ + PCIDevice *pdev =3D &vdev->pdev; + VFIODevice *vbasedev =3D &vdev->vbasedev; + + /* vfio emulates a lot for us, but some bits need extra love */ + vdev->emulated_config_bits =3D g_malloc0(vdev->config_size); + + /* QEMU can choose to expose the ROM or not */ + memset(vdev->emulated_config_bits + PCI_ROM_ADDRESS, 0xff, 4); + /* QEMU can also add or extend BARs */ + memset(vdev->emulated_config_bits + PCI_BASE_ADDRESS_0, 0xff, 6 * 4); + + /* + * The PCI spec reserves vendor ID 0xffff as an invalid value. The + * device ID is managed by the vendor and need only be a 16-bit value. + * Allow any 16-bit value for subsystem so they can be hidden or chang= ed. + */ + if (vdev->vendor_id !=3D PCI_ANY_ID) { + if (vdev->vendor_id >=3D 0xffff) { + error_setg(errp, "invalid PCI vendor ID provided"); + return false; + } + vfio_add_emulated_word(vdev, PCI_VENDOR_ID, vdev->vendor_id, ~0); + trace_vfio_pci_emulated_vendor_id(vbasedev->name, vdev->vendor_id); + } else { + vdev->vendor_id =3D pci_get_word(pdev->config + PCI_VENDOR_ID); + } + + if (vdev->device_id !=3D PCI_ANY_ID) { + if (vdev->device_id > 0xffff) { + error_setg(errp, "invalid PCI device ID provided"); + return false; + } + vfio_add_emulated_word(vdev, PCI_DEVICE_ID, vdev->device_id, ~0); + trace_vfio_pci_emulated_device_id(vbasedev->name, vdev->device_id); + } else { + vdev->device_id =3D pci_get_word(pdev->config + PCI_DEVICE_ID); + } + + if (vdev->sub_vendor_id !=3D PCI_ANY_ID) { + if (vdev->sub_vendor_id > 0xffff) { + error_setg(errp, "invalid PCI subsystem vendor ID provided"); + return false; + } + vfio_add_emulated_word(vdev, PCI_SUBSYSTEM_VENDOR_ID, + vdev->sub_vendor_id, ~0); + trace_vfio_pci_emulated_sub_vendor_id(vbasedev->name, + vdev->sub_vendor_id); + } + + if (vdev->sub_device_id !=3D PCI_ANY_ID) { + if (vdev->sub_device_id > 0xffff) { + error_setg(errp, "invalid PCI subsystem device ID provided"); + return false; + } + vfio_add_emulated_word(vdev, PCI_SUBSYSTEM_ID, vdev->sub_device_id= , ~0); + trace_vfio_pci_emulated_sub_device_id(vbasedev->name, + vdev->sub_device_id); + } + + /* QEMU can change multi-function devices to single function, or rever= se */ + vdev->emulated_config_bits[PCI_HEADER_TYPE] =3D + PCI_HEADER_TYPE_MULTI_FUNCTI= ON; + + /* Restore or clear multifunction, this is always controlled by QEMU */ + if (vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) { + vdev->pdev.config[PCI_HEADER_TYPE] |=3D PCI_HEADER_TYPE_MULTI_FUNC= TION; + } else { + vdev->pdev.config[PCI_HEADER_TYPE] &=3D ~PCI_HEADER_TYPE_MULTI_FUN= CTION; + } + + /* + * Clear host resource mapping info. If we choose not to register a + * BAR, such as might be the case with the option ROM, we can get + * confusing, unwritable, residual addresses from the host here. + */ + memset(&vdev->pdev.config[PCI_BASE_ADDRESS_0], 0, 24); + memset(&vdev->pdev.config[PCI_ROM_ADDRESS], 0, 4); + + vfio_pci_size_rom(vdev); + + vfio_bars_prepare(vdev); + + if (!vfio_msix_early_setup(vdev, errp)) { + return false; + } + + vfio_bars_register(vdev); + + return true; +} + static bool vfio_interrupt_setup(VFIOPCIDevice *vdev, Error **errp) { PCIDevice *pdev =3D &vdev->pdev; @@ -3067,91 +3160,10 @@ static void vfio_realize(PCIDevice *pdev, Error **e= rrp) goto error; } =20 - /* vfio emulates a lot for us, but some bits need extra love */ - vdev->emulated_config_bits =3D g_malloc0(vdev->config_size); - - /* QEMU can choose to expose the ROM or not */ - memset(vdev->emulated_config_bits + PCI_ROM_ADDRESS, 0xff, 4); - /* QEMU can also add or extend BARs */ - memset(vdev->emulated_config_bits + PCI_BASE_ADDRESS_0, 0xff, 6 * 4); - - /* - * The PCI spec reserves vendor ID 0xffff as an invalid value. The - * device ID is managed by the vendor and need only be a 16-bit value. - * Allow any 16-bit value for subsystem so they can be hidden or chang= ed. - */ - if (vdev->vendor_id !=3D PCI_ANY_ID) { - if (vdev->vendor_id >=3D 0xffff) { - error_setg(errp, "invalid PCI vendor ID provided"); - goto error; - } - vfio_add_emulated_word(vdev, PCI_VENDOR_ID, vdev->vendor_id, ~0); - trace_vfio_pci_emulated_vendor_id(vbasedev->name, vdev->vendor_id); - } else { - vdev->vendor_id =3D pci_get_word(pdev->config + PCI_VENDOR_ID); - } - - if (vdev->device_id !=3D PCI_ANY_ID) { - if (vdev->device_id > 0xffff) { - error_setg(errp, "invalid PCI device ID provided"); - goto error; - } - vfio_add_emulated_word(vdev, PCI_DEVICE_ID, vdev->device_id, ~0); - trace_vfio_pci_emulated_device_id(vbasedev->name, vdev->device_id); - } else { - vdev->device_id =3D pci_get_word(pdev->config + PCI_DEVICE_ID); - } - - if (vdev->sub_vendor_id !=3D PCI_ANY_ID) { - if (vdev->sub_vendor_id > 0xffff) { - error_setg(errp, "invalid PCI subsystem vendor ID provided"); - goto error; - } - vfio_add_emulated_word(vdev, PCI_SUBSYSTEM_VENDOR_ID, - vdev->sub_vendor_id, ~0); - trace_vfio_pci_emulated_sub_vendor_id(vbasedev->name, - vdev->sub_vendor_id); - } - - if (vdev->sub_device_id !=3D PCI_ANY_ID) { - if (vdev->sub_device_id > 0xffff) { - error_setg(errp, "invalid PCI subsystem device ID provided"); - goto error; - } - vfio_add_emulated_word(vdev, PCI_SUBSYSTEM_ID, vdev->sub_device_id= , ~0); - trace_vfio_pci_emulated_sub_device_id(vbasedev->name, - vdev->sub_device_id); - } - - /* QEMU can change multi-function devices to single function, or rever= se */ - vdev->emulated_config_bits[PCI_HEADER_TYPE] =3D - PCI_HEADER_TYPE_MULTI_FUNCTI= ON; - - /* Restore or clear multifunction, this is always controlled by QEMU */ - if (vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) { - vdev->pdev.config[PCI_HEADER_TYPE] |=3D PCI_HEADER_TYPE_MULTI_FUNC= TION; - } else { - vdev->pdev.config[PCI_HEADER_TYPE] &=3D ~PCI_HEADER_TYPE_MULTI_FUN= CTION; - } - - /* - * Clear host resource mapping info. If we choose not to register a - * BAR, such as might be the case with the option ROM, we can get - * confusing, unwritable, residual addresses from the host here. - */ - memset(&vdev->pdev.config[PCI_BASE_ADDRESS_0], 0, 24); - memset(&vdev->pdev.config[PCI_ROM_ADDRESS], 0, 4); - - vfio_pci_size_rom(vdev); - - vfio_bars_prepare(vdev); - - if (!vfio_msix_early_setup(vdev, errp)) { + if (!vfio_pci_config_setup(vdev, errp)) { goto error; } =20 - vfio_bars_register(vdev); - if (!vbasedev->mdev && !pci_device_set_iommu_device(pdev, vbasedev->hiod, errp)) { error_prepend(errp, "Failed to set vIOMMU: "); --=20 2.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206576; cv=pass; d=zohomail.com; s=zohoarc; b=OS0JepU1lENgVYTsIbd2LCwq5mykbjESQhZHf6MV/R7IMDa6/OJLFtc4CCcPaTK4zoKHj/qDNgFbLPc25MFwjZy1Sf3CJbiWa++uL135J9POalDAC/TOs3bsgzQ156iZ9vXNCi0CZrBccL2KFMi4tC8cessxx9HMoeRzD9DmfLw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206576; 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=rR9V28JDgt5opNsu9/R0xl+qLHN6JE+OBMZWRsZR4YA=; b=GH7CQ9qtygoyCUsLVOTeFTvpE0PKT4xwcmOoixDGflT6ZiR6ABD5NNe32HbDN+WIDXFDqysEfyGNFtu6xJSImoZ9qQD91fUpIIgolr8rXOMKHdafOlYkP7zo5Q+x2PaPNttztux/fgEDa2Mp3rLhHfXX/VTLqhkQDD4glHY9eek= 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 1744206576561645.1563143195342; Wed, 9 Apr 2025 06:49:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnA-0006Cz-UM; Wed, 09 Apr 2025 09:48: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 1u2Vn9-0006Cg-Q7; Wed, 09 Apr 2025 09:48:35 -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 1u2Vn7-0005c5-N2; Wed, 09 Apr 2025 09:48:35 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5394KCkY013833; Wed, 9 Apr 2025 06:48:29 -0700 Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazlp17012033.outbound.protection.outlook.com [40.93.1.33]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 45u42xhapg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:28 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48:27 +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.8606.027; Wed, 9 Apr 2025 13:48:27 +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=rR9V28JDgt5opNsu9/R0xl+qLHN6JE+OBMZWRsZR4 YA=; b=t7k4uHwqd+4WNADf9xRV4eDG82TQDp1bkLyA+HocIkm+UpR/qR3AUmuz5 joBwhwqgYZaE7Acvhp0RZywunNoNYjVLWID+Wed+tPSTCpCuTUIwNtkzhqYeoBos 1HrYnBqAbl6tEZj7B0dl4+L8ke30VqcwB9eAbbOmlWz4usY/8xUFAO3nq6YWfz5/ MtNkegYRcXq1rCfEJ3clpLvqXtxZpIbCCzFwIL2GI6Tonh2Zzj3ATdMqMT3HXOhe QKsX8jBM43IpbI4muLOr+CLWDkDyTvz+qVSVtR83MZJPuiMMMgO9NAWBqFBCziSw pjUZcJe2ov9tmQOsmwGVKRxy7ZzBQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=owfV5GBL/MZtd9Z197d5OfTS/uZTTT2oqPwWsstOJzoLtZo6o4pGxk5RWEwKv8H5kBiYq9gCqtcD8f2hIeUSXZviWuBhRt5lB6kh9CJBBD1rS0qTjaeqmlxVMzQhMVoU6xD+DsznssKGRPNx1USo2IgdRdNayCc97W5p4qPkEf0CkVSqiPAcjTHok35+gLcB2L/A2Yo+/YI6Ul52qllawIiqHATMiXfwV29K6TMLTS9DxHFmYPo6YUopouxvJoFqFdI7o+eqXbACfP+n3eYRQXOgwWm5cCFigOd40Wj3c7zQppsG8dmmg+g1ouqoxOx27yybYOPjT8TkVvcM+pTi8g== 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=rR9V28JDgt5opNsu9/R0xl+qLHN6JE+OBMZWRsZR4YA=; b=XpyOgLNNYq9qofeew5xOpGOhbkefRq2r0P2NWAh9GAKBTq9lMlr+my6WaSHdx13ekCHqrm6nPkb1YFQYQUAVo7HpYgQpzpgZYkDBdylYiXRkmUYESSmENLYBlKlWF3gpAwLbYoQqft4yVaXXVplGytXe50fMSW695PNow/Dm9W0nOxBBGWmc/jTM+Flytc8hz/uUxH6aObrIFrDbx9H9VOMeNRzqE3b+iLB5JhaybbzhPBcUBHvMu63HZISJrE/onlQH+mp1DD6fcOxwZvbD/vyeyBmmfQlywBYkaJKcde3dIzu9FTgSxkF4xccbqTquMp6XW8salSBghG32aRgZhQ== 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=rR9V28JDgt5opNsu9/R0xl+qLHN6JE+OBMZWRsZR4YA=; b=zCQbJQ2oszA+huHu1z/0nZ9XSl/OES/XkW9PUgeNCcrkDmQmKj16+u+oEuN8nHNsF/lDi2DH/0qF4JxNe4zCKiB4eO3JFkF5KlfvzLiwxVSEJVc+K9eFpQopS9caa4H/X6U/b3ctBeC2oiya6z60k2QHZ0MEbdGsDyMqS2Y9F5aqj9DQ8jslvsheJv+SIEgrkSUbe9XG2u50Xit8WPKnRDVfPb1j2RJdZgf3ueMWSEM21rDvO6Ffft7a83WqXnzv8uIVq6+f0TTKL0VMGoXrW69Un+UQHQWpfaISjGUBG2/UfF41OgYnt8bph53ThoxKkVZmAXYRckyFOhQIAdcuqw== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 03/14] vfio: add vfio_prepare_device() Date: Wed, 9 Apr 2025 15:48:03 +0200 Message-Id: <20250409134814.478903-4-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 5c4d7640-bdc1-4508-5079-08dd776d3463 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?/zRmNKfUnV9eRVcG5CqtFWfE8SoKJnCGHsSAXZ8i+qO1UFtD73qjr90ko4Uz?= =?us-ascii?Q?1um6uZ18I9VASuwhfmbrY5dRNtpSMd0UnPH/yUv9XllC0zAxl8ualhPmBqTH?= =?us-ascii?Q?xLbeXP85ftFRDeFgQU5s42eeFv6MYs9vJHQBA0LMLQMc8jaEzuuMxrtjj87N?= =?us-ascii?Q?M8IuksRgjWfosTn2JODbCc6mDfC09alkYEMeDDR0oQCVKlXsDJ4uV8hyMcO1?= =?us-ascii?Q?unExKgcjVcAP4Alx6aKBlra5XyAopA+zn2+vaKfl8oBHsXpKFbvZyn44IZyu?= =?us-ascii?Q?0lFZEi7Zm2z44pJtddJsaS3ldaIqc0K78m4nLEWwmrnDIIYWmp7DOtB+cjyS?= =?us-ascii?Q?cor1hROfx3qqelKEVWeb4ssi2rqGahAS3jxY6tHBqT6YY62a+i0zbdUMshZx?= =?us-ascii?Q?MOQGASMG0PbsHF8EVWJ56ESDUph1Y+Dp0dl56yZwUmdsJ1+d9O2MC0KIYc+i?= =?us-ascii?Q?jIszrJ+RA5ZreSPjCh/snpmWFzutXQIoGl/VhsDvO+fCoHX+4HlpagFdXIEv?= =?us-ascii?Q?iZArWEGCluaJuxC8uK8knHqbOU67Tr5yNbPUFheey9TVbUAEor8+4DkmqYay?= =?us-ascii?Q?zq5d0aGJPQ5G+rbC7LvPAMcTTFtT3VPC1hEfm0cJ1iAs9k7VR+WJfBS/20j4?= =?us-ascii?Q?4gJw4ONjErt7cXWffTya9JJDrD6TwN7E8Dz37NksC2KUQCrDqYVmV0BvjaOS?= =?us-ascii?Q?R/klbtR/G8X7c3s/ZE11BVHQE4iDPdVTRAIUZbpAA7I5GvJhciWgSu3NJCKf?= =?us-ascii?Q?YVOnuzcLtkdi87uEauGO7xhGurYscLb6vAv/rxko7g3S8YhFZDq4t0yakNl5?= =?us-ascii?Q?HRRrxwSJu8iNS0Gpce6xkhx315hKYs75/j/ZCBRiQFeH6d8iyE0O1S5PMSy9?= =?us-ascii?Q?gQnIXUApJBNnL10f4TBpOkpYBHW3cAez0DRLhKKVJ9Gr+TlRGDo9UaaxbxAK?= =?us-ascii?Q?3LROrT+eGNatwbxFpBT0yLmB2QdV9xkNh9UxeJKs5SF/D5xOD4VwjVUUpiDO?= =?us-ascii?Q?pOzE1TOEwfSUHtsXMdyY/OwVroDNfCcahLfNvAXRlc4b4xc+iw3D40AWNrB3?= =?us-ascii?Q?ZK44qdeeJ8lVuyNDz/2JXcg767D6d5W803A/qr++IRFVyb7Q9bJ8mz8ZJrg0?= =?us-ascii?Q?Tb3/MGvnyPqFzd+PpQSmdaXYPLi+2bexnIhbo5oJzfmJzw1R25L24gZrgvx9?= =?us-ascii?Q?N5wUVUmOFE2YUhcWnDOhxE3eeDqslpEo5zpY2XcWo0a4DknIyIqM496ZPNTQ?= =?us-ascii?Q?sE0QLWzW14tcZBZcJCi0xyxgfByW2+V8A6BgCjRr+oH4LTR1IDBrXV8gPHku?= =?us-ascii?Q?uDV5Zi5Nq+Ibov8kbXStJieVjCWiEvNrhrdFvzCCZqv/KClJvPwjTVs1I6Ck?= =?us-ascii?Q?Vjk3tpeN94mKqeBoiGEfO6BS46Tt?= 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?VMpTYSElSRXZhLGn3L69DXxRI4UiEyouXvWawHlESoxn2OJdO6QKGqgzUlS9?= =?us-ascii?Q?BPR7MBrQaMjJDsk9MtwFY4eL7U53P8Qnu5xiHQUyRmxioOxI8hyKtWRYBYs3?= =?us-ascii?Q?wspn0d5y8oZ9N8th/YjKwpPbn9wQ6MrEQvk9/JAGUYeyLFwK+1iSOj8A1cfP?= =?us-ascii?Q?6KvtrRKgD+WmyXtMRsmvjLpWcJJdm6/zGSf5V3M23Uh0wb8Fgur451USTWwf?= =?us-ascii?Q?8Sc9g+za5sJE8QbhEbZt/WkS+dpyWG98tvLdFQVoDai9DYXv8zfPBV/A7yqQ?= =?us-ascii?Q?3EEEVjYf+aP2rh+bizOVE9c2B803bnvqqSbOI4fsC+SDyISHKAHAa2iAfnG2?= =?us-ascii?Q?HYqwQOWPvnsTjYw3cRJdg20nvFbAVKWxY2a6vCOY+eQR6SYwyEB6o4vxx3dM?= =?us-ascii?Q?uKJbeDb9js/6IyJ9KSxyeNtsFl3hEK8WUzEPL8oAGZDBhSqSLbj5Yfr0C34R?= =?us-ascii?Q?JHrU5qrdvDzVFJt7EA123lw+ki9G+QZ6IFhO2gM0/mUKab2ISmZ5fAmG3aep?= =?us-ascii?Q?XLltcx4BCJ9FC1Hh363wxS5QUwjwzSdv/QJ67OyR87KIhEf4XyyrwUuhHyZI?= =?us-ascii?Q?BcysvA30k93tMdnAvOfyDQhD3kxQmfhatX0+KFtw7ky8lMMOdaHGBeokBv5q?= =?us-ascii?Q?RQurt26oT7JCk05pUWdVZbCyxVq95x7IseC1Uw5Z+UrCDFxhOVNeMY15Tz6U?= =?us-ascii?Q?tghxZo6ym5VsRrdhLK7YmXlha1yxi+NYUR97p5s+4TbAUVfJseZEKxGkhDgr?= =?us-ascii?Q?W05S/D5s0a6l2fqVDNVD/5kSRgILQyl/3etNc2nDbZ54e7EvteDKmWER/E+o?= =?us-ascii?Q?SQuIk/xYTbCXfe0avaupZJM7Q20SW6VrF7N4uMTEg6ZnmQxeEPeCpwnQtTYr?= =?us-ascii?Q?dKKWC/Qd1n4ExoA/uUia50bUqYIdOfhJD1wPZ5V6VJwfnJ2FNKMIWKLII7ED?= =?us-ascii?Q?GuAtSQMJfvC1KUy64s16cTrMGzdLkVUG7i14Cnj0WRLrR4uS0+hZ1hfD8ZQP?= =?us-ascii?Q?8N2xcWwT1EPQbJNoNiR7O2zlAfAk0qenboQGvWMo/cLBWScRdNgNdJ+ehaUT?= =?us-ascii?Q?pCfleqVmkNpa/WbKNLI6RzZDQFIOBpm6tc8wCYSpDElnbGgZRruB/QfD3fLi?= =?us-ascii?Q?BednzS/Zn9TCQNFp17N5XghlK82sgCOWko82eaLJ3oTCy6rzYeFUG4cQTDWh?= =?us-ascii?Q?EvuH9e96DcdJjyqjU8FHe6oKWEJ9VbgoqRq8RPJTgjgAdDKvVd0TswMnXqXw?= =?us-ascii?Q?oL9mOl71HcyUd4tBkV1c4IXKPwwuTERfMMN2yLC6fc8YLuiMsYJemFndATaw?= =?us-ascii?Q?+vtB9vZI2Wwyfqe9zyAoBJ+SxkfW4ljcEW4D65fZNzBTBAPqbMDokwKpOvSG?= =?us-ascii?Q?CrIcWF2sgT8qfy0ZYO1CzIdCXzXVItN+yIiXVOng19azv1rkI0qEbPBZV/QG?= =?us-ascii?Q?o3FXYupqA8flB+XSrZsD67aqDHw8YzbnOWLOLCO2FHNi6C1q3nyA98C2x0hz?= =?us-ascii?Q?yGMRT9cTjnQlsChrpLhC5+pel4QXI3iB/O4AERTkAYJYfYje3CcmGVvA/CZQ?= =?us-ascii?Q?ZSdSpQcNCPIK6c7pHGpZ2SjAjo03xiK0nfu+1kWX?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c4d7640-bdc1-4508-5079-08dd776d3463 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:27.2080 (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: 94/ASm0ilQZUo9UVt+DBVlfkRhTnhwdTTfxq380cid7raIihrrkUCnQTLRuu+2ZjDm6kI0NeYzI615k+oBef9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-GUID: XthCq4EzMPmiIi7wVMEqtVULCaPtMK9K X-Proofpoint-ORIG-GUID: XthCq4EzMPmiIi7wVMEqtVULCaPtMK9K X-Authority-Analysis: v=2.4 cv=LMxmQIW9 c=1 sm=1 tr=0 ts=67f67aac cx=c_pps a=eo5EBrZojstUK48b9mIPDA==: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=PEtKgAuwMexoxjSetS4A:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206578809019000 Content-Type: text/plain; charset="utf-8" Commonize some initialization code shared by the legacy and iommufd vfio implementations. Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- 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 23a3373470..4fc181d33b 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, return false; } =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 diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 4de6948cf4..4d940ddb3a 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -403,3 +403,17 @@ void vfio_device_detach(VFIODevice *vbasedev) object_unref(vbasedev->hiod); 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 48db105422..1874185fcf 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -587,14 +587,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 66797b4c92..1a2fe378d0 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -129,6 +129,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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206570; cv=pass; d=zohomail.com; s=zohoarc; b=i2n3Jx/I0ZN8mfA3vLk7BXBT7HJSCTzQIQHZOrGsG/J1za71+jB/TUMMv8c5MlCAKX1C7tNthTwi8Lq7NyEN+hnARHhlOWZn0/wwjbeLa2grCGm/m89xlZzd3FCZzkLO4IK4eHiW/7CsC5sDnz7UBWds56zCmR8CRx1ZiZlCzJc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206570; 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=mZA2n6ehrTVXpqxxxwJ1IW1hpnQOvilZbBpsRGeOOjk=; b=mdXKzz4dOO1ffkhMdvab0GynEUXbc8X/2DqXbjh+GrC7E3jbJXUAtyeSkpw3YRScyJHLYIg7ycpQBv3pg6dolJr2shEKh6DpRdCmL3E3m8HACeh1zLZqTynD/URBAnamagnHZ94Z3H0IiLi7WUBXFMve0htpRR4yEVY6QDDVX9Y= 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 1744206570519867.1237273658048; Wed, 9 Apr 2025 06:49:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnD-0006Ef-1A; Wed, 09 Apr 2025 09:48: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 1u2VnB-0006E6-P2; Wed, 09 Apr 2025 09:48:37 -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 1u2Vn9-0005cy-Vs; Wed, 09 Apr 2025 09:48:37 -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 5395qVMw014865; Wed, 9 Apr 2025 06:48:33 -0700 Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazlp17010007.outbound.protection.outlook.com [40.93.13.7]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u2mhj3j0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:32 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48:30 +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.8606.027; Wed, 9 Apr 2025 13:48:30 +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=mZA2n6ehrTVXpqxxxwJ1IW1hpnQOvilZbBpsRGeOO jk=; b=a1KkDFQF7PUTr+L6p7gnlJsdhBYZchyLYyHyZvklR9z27smcXBECh0POu srv8VRXenpogO4sBeJUMfKJboroEsGk5Kb1I7bN98GUk1igiIcLNMiZZPxMf/RO8 VA9MomoJceevENjVtymNRgIhH2C+2BB+td1QOqgb/bgEKsGYAP41WZN007HDIslH 4toMFAo1Ke6FMII57NGv0+lTb0Uy/KF7whi2ujLkaS2K6m5xT2QQjjolvlcz37Pb 351F9wgYA1zvkbVtXmFzYtJ9077WI/Et/4WL2rw5AyhCtCYa+koSUIiW64rl9kA4 dWyARX9QN4P4BFjb5+lFLl+Fm1IVQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uA/SqNzgu2OAnPjCPcI/PbacBCy/3XU8Amu/cdZXndiQ7iHmg42DGxYTol0F+q6h1JmDr9gYE6jOUO3mZiT8VgINSyGcLX66lCsBprffh0ba1O6MBMUnN5vZzRsD4sqwSbfqqFd45L5lm1IUoXQhOEL9RIbqfj2d76l9d1DX65vT7FciKQtP2QP0qiAsGDghci6aG96yxDr7HtCkQSDShPpaAShQWzTv/E77DBb7I6dXRcBmZrSEx5Ikq8lExFgbhc8adXzuygyez3fgGLqOU9PkbleiTYFGsMhW/T3I/zK+CibbyIl4bnY/u0lw5kH3O6TgOdNvF9NNh7d+XmuIbg== 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=mZA2n6ehrTVXpqxxxwJ1IW1hpnQOvilZbBpsRGeOOjk=; b=NcIilVakMaS9orUQR1cLbtgZZgTp0uHh65sXSuau1/cs6VhP7j3hnOJJytlinFq1xLqCGtVkWv78LU7OuQlfX66WjNpoHQWFl/pRnWQR0fkwYrMpgONXvq0Ygn7yY9fhjaxi3sIyMVsfgEtW9lgoDuIT436TC4ACEMHqHoKgpVfCmHEwrNR1s5tLe+UFD17MfKINhZtBLMbyxU/1sNSXVz9uDpPBXbcwb3xY7+BGIhvt/ZLc5NnJq5nyEe+9HzrO0anxOogbFPo/UAwSyBBF9tT85TgAZJT6pfM/ozXNfMdWDuOtB5E4ldv/cSBT3U3TFhgKCqS9NnPNw2rK3pCFEA== 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=mZA2n6ehrTVXpqxxxwJ1IW1hpnQOvilZbBpsRGeOOjk=; b=KCz1BN0OVDMB7GACHRkk/DJ4Vr+V5gYq3ixOo2v8ZDpmD667SbXHHK5FyMx4BoPC2kBFiqqlg11bYTr67sEkIh8nYAxcEqtuRo517dSCAlcPTvlaea+UYkLKxfHspJ+keV8oX8Or1aFsEEo2GCg6IFZlonjsWTckoi9cJOi97xBQhhurBzjTdqiw3aB6PEVHB7J6AACxTz7QDC2W8esmmCkz9iHw15ZHQQQcXnaQtb4Ej2i44tqd3PtigY+WM5psD2XBV3KkyiJnPvLxJYW5JmJXg3sMZn6cstIwLa9ZYOAkjizQ7AFVwsqeTTZHWgzIH/4nQg3D9sMkI6CD+vKsmA== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 04/14] vfio: add vfio_attach_device_by_iommu_type() Date: Wed, 9 Apr 2025 15:48:04 +0200 Message-Id: <20250409134814.478903-5-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: e050a559-507a-4ba0-c396-08dd776d362a 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?1CsPNWXg793sSXCwgNpWsluB0QsFYIzJpcnu2IbHZq8nlBG6SLIfnUYW3e6b?= =?us-ascii?Q?HvHxSqlObRlfaOl/fGUjMqiUUYKcF6fcLazq+A+ZF5r9WCFkQWwA7erCWaW4?= =?us-ascii?Q?b2XZkiBsuKS3eQA9rnr1+FSGHAVohw4pD2QMnPd7mFCsrvZEHLFIpctvVUBI?= =?us-ascii?Q?d+fF1ka3afUKmaW5mUZeb2b66VbsoXtvCMOl6hgU1jo374FNTC07aooYJqie?= =?us-ascii?Q?6AZhUZ2tvUf8fMjTdTzVGQFgyUqYsFEkEgEi9se7P+aTqdLD8r12ZAm3kKHY?= =?us-ascii?Q?aHCIb1Cjxry3qscMYBvBXbixyOdfEOYu8U8YkrtmT3lIumuO13Xf6896pdvg?= =?us-ascii?Q?Y4OhXfshzK9FNlXC34ellBGAUFGG9dI57AB2A18WFPUlASjtyotBLUjIkDgC?= =?us-ascii?Q?ebStIrB+dIWqH2LLl8S6VLj6pE4wJi7MLAxXDFbeHBew1QMoP1pVgooBFIM+?= =?us-ascii?Q?8DvBpQXgnXw7Rd4TnEn0s2cc6OQCb/k02Aw3NZ5JYSl7cj85Ypd+tUAYYy2z?= =?us-ascii?Q?TbUwPPqLxCCj7CYVwhUSXzP4uXBW9TWq8XYz6GwtUPoVYcnyfA4/2d1kvzJL?= =?us-ascii?Q?qAhdPQkDFn67gl+1Fk02CwKjR1nAWrT6cF86dfUhEIXo2SHs8O7o/BIm547X?= =?us-ascii?Q?LpSPIjR5O4DufzfyChJ3fzsOQ/OGlWsE6u55FpVlDiHOCM+CSKtZWiL4pJlW?= =?us-ascii?Q?EcCLZupk6F9aorqP+HLl9t+SKGbJfH6tTPTWuMzkzJjQ4IRf/yOrUAO07AEC?= =?us-ascii?Q?2PxBxzLUy0M+PPQKJEocADqL33IMjgSRel26ON9PxwsSW1QJ8uu/aZZ8ovpy?= =?us-ascii?Q?ivsJen0WpzSkuLIxdYWIR1sKLBsDzCRRncvMo4RBddn7tGk5MRL3LuB49Ayh?= =?us-ascii?Q?svzLZ19JdIuGPOiaqGmKKRYa27W4ash9Ry+nQJ/Zwd077yFwxqzTfN+P0LgR?= =?us-ascii?Q?Yc5paIYApP4lwbdkxy6nLcVRl2GRikxmVycaORd5XVsfCtKm1xANofYUdo1B?= =?us-ascii?Q?jS7bAIVhhE3YDUZJQzwI8goHk/CgeOICDSBwZFcbFF8zG8UtuXKYWGJy7BvL?= =?us-ascii?Q?BTDvbi2Cvfov1P/KUpLwGPHNKt+Wr0bXibuI6U9vIPvye8F6SLlIjtUb5caZ?= =?us-ascii?Q?/cVPNT0/PXV8b2/eGoWaGoYpAnhVNw8xp1B+TeiF2LWYBSQrTS7LbpGyveNi?= =?us-ascii?Q?lDYG0fzgKWJ5WsVEXqI6kZsJk0Z8ZchmDqqVZUH+mWbWWD4aiYkBr0JYA2C7?= =?us-ascii?Q?imTwL4U1XfvyoCAErm3LGhUnDUmFfhOnVG9z6IsVmcKoWOHGVQLUWC6tm1Gn?= =?us-ascii?Q?rQrKMSrDvY/IROQuEo84YwAVLFKfhAeLG7BkQU+dG4OsxDO3T8BilKCn4J4G?= =?us-ascii?Q?ga8TbuFcYsGCuIb/M+QXXiAehmLz?= 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?VA7vayTUQ2swH4LhlqCEr+zMnXXSJArx8CAF9EPGwqD1t6cyVWTvEHHCMwp2?= =?us-ascii?Q?2P8uObPTUaw5wh/yhswBro+dB261rU1idC1yy5nnfqmr/ZrtLaEh3w+HP3iJ?= =?us-ascii?Q?WgHv+drV2/MEY4BlEmcyxQm02qfPDpTNOt87+zE3HAx0afW2p/N1N6NLXYv7?= =?us-ascii?Q?vuJvgF1uwso2LTyLiIwmKQMluhgV+ldJJII+wcG9C/+fdFdugFJBJ7iGvmTm?= =?us-ascii?Q?XtrLPZMdt4hZaWUzkSIw1m37WXpOxZDM4QAHnFMyt8qbrtcjqMdVf/9VNGhW?= =?us-ascii?Q?nSedhgfjuT5kCyG4gIN2v/e5vxFdzzoXO8cvbzx8K1+guVBQyITd6vKay+zM?= =?us-ascii?Q?ot2uhAKLAmx7NS5o32Ri2IMBWVLHbR6j0xpt0sKj5xVTxwytdI6dUeqDp+Ut?= =?us-ascii?Q?9DjN+X5JXkppXd09d6Gt3aMvuKw4lSKjbgR0FCJcXJwlrvdUxcH6efGvOp+q?= =?us-ascii?Q?IuUSPjEEvJf7e3u24cpDosMY/Bo5Pqix90UAhzMOROAMAwiZFsyWIGudsrQ3?= =?us-ascii?Q?x+QkRl8g4OtobJWlBfOi7i5BcgOiW599dlZkzjAx17jK3Jeplv1YW1qSoJ6D?= =?us-ascii?Q?ephxzP/4EZ23QNhjT2ciDrj/1hmZhv96o/Cy9Y9KfLs5qjfWMPbzuKgW6pTu?= =?us-ascii?Q?HntN8rA0Bl8eoy9p2wvIG2qavL2rsyxMyFUmwBB5uWuGDSxl70VDR9DiTuoo?= =?us-ascii?Q?Dmt3QRXn6ouS8YaANuYEWLv8aLYizPKzPtPPHbVr0fWEq30EzZy7KhKHHO/R?= =?us-ascii?Q?oDjYeWQL6SZY+z5xkcuAR8NsYKOOfhfwCsiTftMvJrddeRZ1/uch8PePIPvl?= =?us-ascii?Q?8KHU258CimLO70aGUV2r0+/abiaBFSOI0UHBL0IdC3NyVaPmsxKVrVRzfumO?= =?us-ascii?Q?1T+viZ5Fg1wD1TPbN0kdnnCPTp5O23yq0bq3q6m/7d1GD35kcjGlR14MXucD?= =?us-ascii?Q?J6d+VsWeMg7OLsjljRcYCwFbarv39kFfHB8wqfrfQVWvHGotJjY8OvoJNLOd?= =?us-ascii?Q?/HS9D1oh1h0xf72vgzlXdbH1Fgm4MbApG0LWsRAe+MX1zQjyvA6igM7ZYc9k?= =?us-ascii?Q?1u/nndAKxTs5rLQk3KyVeu20Ab2eU0I6cIeBuAw4FazxgAwxLuLb7aFTO9gG?= =?us-ascii?Q?gmp3rYN/WmnZ6O6o/hatesEykJfPyRSidT0VTanorYoELZHK5lcqZoJYLu6/?= =?us-ascii?Q?kTkMNfvY+NIKk5wqykkNI6P01hwC3qUl8ObLqJHflsr5Q0HfkhSucjnZEXem?= =?us-ascii?Q?02altBkqVTu4DlKyur9Fw3OwA3PTU9WqbbuFx9BJbLCLnSGGjT0+GINLlN9q?= =?us-ascii?Q?r86sGvmeVJJ5fbYHizZSjIkk/w8x1FZEIuIy7VTY7zmp9X6UqMyUz/cOpoAC?= =?us-ascii?Q?wPAuOM4eoCK5QqfU01BRt7TdNDGDyae+NeTtEMuBNXasNkK/wlkghCY0kuXx?= =?us-ascii?Q?164OUPR43qkyfPrA1USL0elvpR59HYzbaMtt/NiWq/yxsRAiXgXFreNhPjYK?= =?us-ascii?Q?FMoC0S7LpSt+DF/ARWuaq3i66xMUyKQzPnWllImbcLJDtOT6LeconALtlsqr?= =?us-ascii?Q?MO1lHfzDFbgmA5Yq1qwEZwJcbUN+CS9N2Hg389dP?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e050a559-507a-4ba0-c396-08dd776d362a X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:30.3381 (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: SmsvrJIhZvxrCB+OiCDI80bgjXXEYRb4kBEv2AoLS3IFEvj6VwzR5zfkeiE0aDTiYkapq7CKubHAlTJM+vLENw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: 6ArF63Poiy_p5Eudyha7ylnECJujuTS_ X-Proofpoint-GUID: 6ArF63Poiy_p5Eudyha7ylnECJujuTS_ X-Authority-Analysis: v=2.4 cv=JPI7s9Kb c=1 sm=1 tr=0 ts=67f67ab0 cx=c_pps a=DEmxRycgAktlIQzUTPloew==: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=iLcevqm78QRhCGJnTJkA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206572052019100 Content-Type: text/plain; charset="utf-8" Allow attachment by explicitly passing a TYPE_VFIO_IOMMU_* string; vfio-user will use this later. Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/device.c | 24 ++++++++++++++++-------- include/hw/vfio/vfio-device.h | 3 +++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 4d940ddb3a..f74b9c25ea 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -367,20 +367,17 @@ 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)); HostIOMMUDevice *hiod =3D NULL; =20 - if (vbasedev->iommufd) { - ops =3D VFIO_IOMMU_CLASS(object_class_by_name(TYPE_VFIO_IOMMU_IOMM= UFD)); - } + const VFIOIOMMUClass *ops =3D + VFIO_IOMMU_CLASS(object_class_by_name(iommu_type)); =20 assert(ops); =20 - if (!vbasedev->mdev) { hiod =3D HOST_IOMMU_DEVICE(object_new(ops->hiod_typename)); vbasedev->hiod =3D hiod; @@ -395,6 +392,17 @@ bool vfio_device_attach(char *name, VFIODevice *vbased= ev, return true; } =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 1a2fe378d0..3563a82ede 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -126,6 +126,9 @@ bool vfio_device_is_mdev(VFIODevice *vbasedev); bool vfio_device_hiod_realize(VFIODevice *vbasedev, Error **errp); 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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206569; cv=pass; d=zohomail.com; s=zohoarc; b=AIW5ALRxCe5k+sS4ofr9IrVT3vHQUcbkvvbggBh2JzNf5+NETz6vW8mjCHtJtL1dx5mMYbAyFB8CCmDrFTqPEMELT8xcErRvjT1t3+/rss17FnAztYy8mfcdjtjZvqxBRL36WDVTwJov/LGTknfcnwARm72d2tmhjcpOv26UcoM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206569; 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=v5K//WRt+T/iENZNMiiOBN+Y1xrHhw1qE7oHbMMhNP8=; b=ZZxm8y79vQpNCrB7QoagzQ1DeVR9CGz07Tc9IC26KTcWiQMVLPYg4Hjjc11eqG20kfP6AKaWaGIZNyy/CRqM7lUNzmyxV2fbwEuF399KHONNbT+njdxhMgEx5ojG/fEn6iR1FePjKrBhVH90ymXLZlH1PuoMELxFDMVOypocczY= 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 1744206569533418.48617077374115; Wed, 9 Apr 2025 06:49:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnG-0006HS-Me; Wed, 09 Apr 2025 09:48:42 -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 1u2VnF-0006Fh-Fb; Wed, 09 Apr 2025 09:48:41 -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 1u2VnD-0005dV-PO; Wed, 09 Apr 2025 09:48:41 -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 5398qFsb032733; Wed, 9 Apr 2025 06:48:36 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010007.outbound.protection.outlook.com [40.93.1.7]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u22aj4ug-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:35 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by SJ0PR02MB7486.namprd02.prod.outlook.com (2603:10b6:a03:2a3::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Wed, 9 Apr 2025 13:48:33 +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.8606.027; Wed, 9 Apr 2025 13:48:33 +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=v5K//WRt+T/iENZNMiiOBN+Y1xrHhw1qE7oHbMMhN P8=; b=QUSkcgKoUqPzMQoP21KaZONjHlg6sWrNDJ58QCiK4aHikbO/ZszZc7Ruz qRpUN8Ck4nwNtyXIzEkObgG3nuyU6tItBA7cpuq0NTJaULx6569GjT/RmFgF0znE 2ewpeBQZEj255rBQg0kNFhuzCK+FnAM95MIShMV/KVgB4U2RkaNUI+glXisDF7Lf yvtPT439LQuKAfh93ygiEjnX+8bRyZhBsjTEsLkCGzBsxu+ddoWEYPRPhDOrwsF/ egQ/YRcQx+VHwYX21zlUVxv0XFO5txZgBpn4f5FBREjoUbi0TNFlcUg/T8hRx/VW 66eUMzWHNIv6sh05cFWbaJRG63lfA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cCBvr+q1Cht+XZXGVjqDkUL5jZPEmU+DMqrOFr4EY8irECVuOFV5Y62GUPdQ5yonZiaocYGGpypEuE0f96azdZkZh2Th5hnEG8jknEIZ+yyAMskIkmYuPa2HIB6fv1+demAlPSNnWisc1EatBrvbRxxzcDpwRBm+R3lPVSivGbN2db9jp7vfVrl6uBAx6ZNQ2tMdz2u13mC47iwPMuyyJ7IvVrtQerc9WDMlDTnPP+jebA0wK3f5DONkm/FJVI2CK4Jfco5OPaauwscwOJ22iJ24vPMcafIluK9xpPn2aHARW3K/SXvgaz52eI99MnjZYaTavEDkPpLYHyUYAhq+vA== 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=v5K//WRt+T/iENZNMiiOBN+Y1xrHhw1qE7oHbMMhNP8=; b=SfE0ajlsZ6zeQNxMJ7OiILFWs4WAMnZg7z/0AWvpSpOcjNmH4ecXotVG/EtxpZtMU05H+omxwfPHGtp+22G25HchY8LK7WirJj7nw7pEMvqT3iFzrlrgO0ZsdGg/EXn5B8WQAloj6Iyei4MoBl4t5urCNOhyaUFroBaE3KHY6lt5o0AWj7/LUAdTXNcI48lnt14+/q2L0b+f6h//oBKypIEJ9+FWAS1JVvf6SV+9P6xMcpxAljB+3U9ISeMtl+yeEh3PIzw9Cg9LkmQ15HISOfIXAiXjQJUXtZn6Ywgua6KSn4RA0bnLx22imwa5lZQzqHs6kKnE03ySzBkwn5Y/Wg== 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=v5K//WRt+T/iENZNMiiOBN+Y1xrHhw1qE7oHbMMhNP8=; b=RLk9Fvp75iERcooWUjGpyOL6Da46ndai3sp8TZDtWwQ8eXN2zRkv34rqcUfXfyWuGPoy6tM6rGzkh4H+RW5zxxijZQKgeeABdDAGjf21ZfVKtFUqfCRXV99cOIEsQ2QNeC3GVeycrm1fK0vZaX54oA4qE9nF4j/yY1KOdlCCoLJv/b18vs7yp6hP38d8J9g1U9IiXrokgp7IKjgBKkwY1ZKpKkuvkYYq3Aj9gbps7LpgU7oXLz/cjeW8cy1IEM/Dt5JydCgkd9F5ts1MSQaOIOv3JBwMrqxWdSD79sU4L9awugiZUWXyiWseSnl7wVFSU8tLV7IgGazYSXAM0Yb5QA== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 05/14] vfio/container: pass listener_begin/commit callbacks Date: Wed, 9 Apr 2025 15:48:05 +0200 Message-Id: <20250409134814.478903-6-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|SJ0PR02MB7486:EE_ X-MS-Office365-Filtering-Correlation-Id: 768d0c1a-d176-4c2f-0c10-08dd776d37e2 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?fMRRAMj6aG/+MJfaIO/DDhzUzCvyU7Atiqor9/3/84uX5VwvgB9SCwQL9mqm?= =?us-ascii?Q?sVX/hWrHmlWqwKWdMRyZWCFbscv5wtzHmFXDeQHcba1vxwB2N1rkSwxKHA1M?= =?us-ascii?Q?uS9njMqD5S3nC8eX6WyiRF26ezsisELcfVi4LwlSfLBi4KenlLdwCJIPKp31?= =?us-ascii?Q?7X7uP5eqjTBHV8HCLI4w6gr8M6suvSMXV7Qm1glCF0iTFTH9gknCRP1k7hyB?= =?us-ascii?Q?3osLK9QWtuYFPgEZJgyS7HhyCjIiBh5Np0DUXKiehtRmnFWshzEXN6VrSaLN?= =?us-ascii?Q?2ldPnVNZdBFjoEjxvGcyoZV0deXHpBCozne7xNWonpAMQuPet9RVGnIZptDs?= =?us-ascii?Q?4gTIWumRLbqjrn5oi0527S5RQOsb0YC34vgP6KBnTZ60g13KQJMbE1oBbVcv?= =?us-ascii?Q?pf5tTeQNFbtLmmFdMiFnf6vrVI6OBTE1w0iaXm9dNeU0gyklOqJ029YTqveo?= =?us-ascii?Q?GTVE9hmTASZ/MTLBAcVZNLWI5yX3uRSE2sORYLxYA7Q5kABaletCCH5Ti4ta?= =?us-ascii?Q?BZLFpf0ljxj/yMUTK3CyjuCx5p4fMl358Qy5yABYNemECMZQNoVWkmtHhmk6?= =?us-ascii?Q?VMTUZ2WZxxvK+Dh7DVT5y48lT2XnTLGFaWWIQz0enXFB1Nhwkm448TGbFY5A?= =?us-ascii?Q?h+SCnBYcgmjUvxA/EvLPgHj3pFwfAKvX13la14E1q4zDs8tZr4QOyRkPS9s4?= =?us-ascii?Q?pd+5MpUj7f1XWZGr5tz+9tEgZZrOvk2ll4HnH/R+KKw9iwSJhWRuFmoJirE+?= =?us-ascii?Q?/wa0LuoFFqyNiq8vylBULYgx8JM1yyRSI4IYxapM95O2vzWwKZPUwyqbUJRr?= =?us-ascii?Q?hlr/Zjt4HS5KWMvcIwIGxXIMYBtDUngg60ter5du3ckF9NkSwwE5zeVLEI6m?= =?us-ascii?Q?etXf/OVKTbrlfHNUbTzRCUBo6E8u6+13cKiWizX0y8XEcVxK07zwIZ2G1IDh?= =?us-ascii?Q?U2r9FT7ZQe5aatFKE+I2P8c8xLrl3quXb27mMc+dC0YAc3weH45rFc3WniE4?= =?us-ascii?Q?w8FLbbjIKxbebmPkebJ5z3rSrg5tyF+ecYDZXEcj7yyFANU5/V+LLpTR+EZ9?= =?us-ascii?Q?GxBtxLEObzQ9xH7NOWkhRF20XobA4phecAOw/X4cavzKzv0uGxYYp3DK81fm?= =?us-ascii?Q?OkQrdVszG761eDw5TRlf9HhXvGs9ek3RXGOK463Y34LMk/CEdtL2toxy6+oK?= =?us-ascii?Q?TzapHPFvWqh5Eb1f7x1a4wWOFDj2Dvn7INofIVQ4n+lMiiUMz4iYHXXR7+hx?= =?us-ascii?Q?xkncZT5EMtgddwFkb7wBct0lChonGU9oc2zdAXVaavLXdzgj+g6T77xa0KKQ?= =?us-ascii?Q?igWCLr5hRFTgio9PSVuFu48ZyrmyUrJjZnWJgLRtTR1toR1mSLAIgl/f5uFI?= =?us-ascii?Q?EjwQ2n4WYuGEQDdJx5K1kA1glWdPIAONU51IVP1aT/koMzTL/43JWbZ3KOQP?= =?us-ascii?Q?4fLkJe+O4Gk=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)(376014)(7416014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?havs8ND1xjx3H76t6Yh0OMKLPSBHasYqH0haKyf5TNuKqWP9LUYd8YWtIJt5?= =?us-ascii?Q?IUYQhynN96hWCVtdikH5Jr9zYZ9qPWk+KwmoGbrRICB/fTiz8FPsU+ZlW76m?= =?us-ascii?Q?CSZnt2UgSbEbvEAZD0FMdZZp2/MVOZy9MkTWU6arlw8mzntBsQAoongkYLga?= =?us-ascii?Q?9C+PsN2ZtrDhuJglKTojWo5XZDBU+/FRON+g+HFGDhSb7EAhTm1vNdzlvQQD?= =?us-ascii?Q?3h+JMZkKi4jrZ9wUTF/C0ByvDReaiymUoMjVReXAfK00q+f51mgaqAc0nkIo?= =?us-ascii?Q?ulKhVe+Fetzk9bxH4bzv4rbrKTRqEpPeTd/U6ulyhoCb0QvpD/bke5EaiGOI?= =?us-ascii?Q?uTlHRsiZEEka97Pw0QuCAVgmXxK64Ba0eggDYXeUQhJuLTTUXSK2EW3I/+yn?= =?us-ascii?Q?t17HVHftjwHNu3bkvmp4nI6dhUfsmEXKY0W+5lp+RDRZ2jNhZ4OFMedhgdCX?= =?us-ascii?Q?H4Nmmu0syxD2ry/NpeUQfSteuumOldaJhbzI6r4YwKUnBtABGv9zWs7wkPKK?= =?us-ascii?Q?l/c63NuqAG7Jpqzdo6NS7qGdZ1dUK5yIfCNK/t5RXX1HVCzWMNzntIht1j7A?= =?us-ascii?Q?+Iw3A8wYLao/C7ODllriMjekBGw9YnaJYUDnpv49MyAlq+65BzPBw0bEIXfH?= =?us-ascii?Q?OTrTOWeXr2twe8tAUnsY9raMEaBpnNWZW0HuMQ2DctlREmrVoq2YBsSrjgHb?= =?us-ascii?Q?SnhhdP6cbOzfW+jHoKZZoHZXep0rUoadZ1nSHxmgJ6W6iMxseoQo/yyBlu4i?= =?us-ascii?Q?DgTeDYEGuUrQwHYOOHB3slp35vxmEh1cf3NgBM50hzX/RJyuOXwWMxsTnEzc?= =?us-ascii?Q?angdeJDrmc4kXnJYttsoXaHGVW1j370OGCAmIj6H2QLGoeOGgkPyoL6zM5Xa?= =?us-ascii?Q?irqrD4PWv4Ga9RWPiowLzL1fIFtX2g3QhWhr5dOJy4VZR2SLfEslXameItbo?= =?us-ascii?Q?qIRLFARjvcvA7U+R/GuGvC115n7zK6R56nKoqBFWOe9n0JwKvpSRR/0bF2tP?= =?us-ascii?Q?n0mH7zWp7lXqjFSnCCAf3zeRCObF+Ef/6OyiuMqaKrO4oyUfb8XRF2zrRMAY?= =?us-ascii?Q?JeudwOlKxF1oqda3hKvT8B+rE6gPPEH2TWMprYRTrpgn6wYd/u4l019xwM/F?= =?us-ascii?Q?m6wfQwLgCBuiyjW4kt9C0lAFoGEMawQctJfpIf/27TiDJVUlD4i5/sSQywF4?= =?us-ascii?Q?ymLv+Dt6eTF0P9lopIDNfKra4VCR3KAsKhwWQJTz6F1MrrqE610/bbPtNrXr?= =?us-ascii?Q?QEO7yGmqzLaMfezOo+W4uxNvZ80+5JmolCGKyajKvIsq9AdQg9K8/+PQsuiY?= =?us-ascii?Q?LeSzs786mzE77zdGbIUNFPBbkQvtvAQyNclhXgahuC4cQ6w+mBLFNThkQmxn?= =?us-ascii?Q?Z1a1M7C70Yh/9sFcK9JhnpI1uwJMPtq3UBVdaNdPtA8Q3Wu6dj4qmIRy1EHQ?= =?us-ascii?Q?/eJNH74hE9dFB+5GKI4IA0n+B8Cjd4j+ZXbYl4cdBGjqEvvEYZidAUbkP/+3?= =?us-ascii?Q?V2QXyPKhoMTO1sXthLWmxjtheBGyCDqWF0ttxS0SY/TwNk8hLtgQ7lApjvWj?= =?us-ascii?Q?us9N79qflh/nCwPmjY9XCzSF7NxPxl4ff6vsVy/E?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 768d0c1a-d176-4c2f-0c10-08dd776d37e2 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:33.2972 (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: tdYe8u8cUpS0WkkHCLJ1asqyS2R11aWahvo+himCIwbtiJ3XAIGB5SWre4uym4EPWGwZBVd4lbXuTGDDtZGByw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB7486 X-Proofpoint-ORIG-GUID: QyNV2ncRbkr07joRq1AY7s6wyljOpUmX X-Proofpoint-GUID: QyNV2ncRbkr07joRq1AY7s6wyljOpUmX X-Authority-Analysis: v=2.4 cv=Xtf6OUF9 c=1 sm=1 tr=0 ts=67f67ab3 cx=c_pps a=+1/HLBYLL4tv2yjlBWnClw==: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-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206571070019000 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 --- 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 285ca97a8c..9ffc2deb2d 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -412,6 +412,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) { /* @@ -1166,6 +1192,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 a441932be7..67373e8db0 100644 --- a/include/hw/vfio/vfio-container-base.h +++ b/include/hw/vfio/vfio-container-base.h @@ -120,6 +120,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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206619; cv=pass; d=zohomail.com; s=zohoarc; b=ePPiuqrgd8loApfqQHfKTB7ili3xZuyIobf7mLy+QSQFvdVrP8mL3086qQPgDYjRxVHwE8dqWhJfHHTbM5u7k+QvLahM8yIYbrejUEHNsVLCCjTT5n+Ua1s88DPNkYlRoE6gWhMxmP4j/APNAEdJSZg+P30gojofOLN9i7i1e9Y= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206619; 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=+vs6j2ljEDp01+LRO6q8hF5ca2p4JL4hYf31I1a6iek=; b=TkqcSPsD21VaivKdibeenGiWgdsJSc2w6bSl3x4/zI+G8xyAcxcIpdjKYbgEhjKKX3JeNOomLQMjGT9B3GBaflx7/F0K/UerpS5gI93gu1BjIh6bJD8d6Xyl6snF++U6qWDFVzTJCn1tAnLKaMwIo5Z6aiNx5ISUkihQIU22Jos= 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 1744206619978808.0163343223463; Wed, 9 Apr 2025 06:50:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnM-0006Qc-BN; Wed, 09 Apr 2025 09:48:48 -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 1u2VnJ-0006Il-Rh; Wed, 09 Apr 2025 09:48:45 -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 1u2VnH-0005e2-88; Wed, 09 Apr 2025 09:48:45 -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 5393wmNF011859; Wed, 9 Apr 2025 06:48:38 -0700 Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazlp17012051.outbound.protection.outlook.com [40.93.20.51]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 45u0ut9jx8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:38 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48:36 +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.8606.027; Wed, 9 Apr 2025 13:48:36 +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=+vs6j2ljEDp01+LRO6q8hF5ca2p4JL4hYf31I1a6i ek=; b=2Gji95F/4wZaUUtaG2f4U1jnpdSy0pduhQm4XdEyfcak3qSpYN5BO/Act ptzUvr0soLFofMC9/GtHOMQaCPfW8yTTQKiAb0xL4HHuYuXdOnxLPBmIzdsn3HTY WobWZjJAckEljjPVfzOeq/wodOmRKtWdfK9oJ/Dt0rR6JFK6BKFFnQyAwgS6R9Wt uGG8T+AoWTVRL0f6tiLJf/SrATgukiiXBC113McSGloKnkPriKOekcqJ7QMUy4Pr Pl48IaW4CcmlF9wRNR6xn6Lz0immEjrm+NKAmccLGIrNubzKCAvCklnJvUNiJEFT 0Fab3XFSsXBxy1J4L3/V9IxiTBZvA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c0dylAn7PItTs4IjdpPwia4wyUepwqu7mOrq5L9891J//7JB23w9F2jWf3SC0ZEJ1mTPE80qAP+xI7KOqX9jYrDLw3eMOiKdQ64lCzon0Jyp/UqElmueOXNRllteoLzturpDEU4FrA3z5xoaeZke9alf9p6OFbFLHnE/zmOunPZ3loWJ61qf4t8AqTWzl8GtUVYftxBqSmksV9UfRStGCS1IXqBwwTdo+qvAxz6xMUzvAoJHb5/uMWjaD8AIKUzSxQVcUxmJeFpErztUVVFVCv5cAiCFYR98la2mjKssV0IapTX/86kjMVLL+A7Ce6yKGIvOkknQp3DEcb1M1Wzs/g== 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=+vs6j2ljEDp01+LRO6q8hF5ca2p4JL4hYf31I1a6iek=; b=GNJzeIpET7ws8lvJmCJndM81ML+Su1TM4zVq/o0hNXnY6aheP4ieKOk0SwGKCMZpQ7NYbiEmPoJCLjMyNIOFtpO2Sx64qPQ/TbVm8xxodP3JYiL8at/D0GbZ1ePHHuSrCGA6F5WrZrjUuly6LCgkeKX3JQjwkap7wK8Nr1cxLhjZQI6crL8XUom9nEf88vhGMb3F6qzUuELmLlaCvG0FUgzHWUXc5m3v3GtDK0SRDYd8Y9rjil1vDM7h38Lat35ZfGtb2s7Udya+njIE9i/52UqZjLL7Sv4HZ9ZDTaI0wWzxGYgQw9CUc4e88rVY+7IKjxiPiCenZIlq5cuahLnk7w== 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=+vs6j2ljEDp01+LRO6q8hF5ca2p4JL4hYf31I1a6iek=; b=SxMuWPAZqQ8CCcuNxvLz6cx8klQRvMaJDOicXWKARDcUhUKrsRaGQ8K8jAJarKxUPp6zn9DJsDeYalF+8IoY1BD4+ibfmmkSYw3S1bXccoUDLf7LdFw6ReKo4NZ5OinsmbIIv+ip/4aS+LEyMgEPAZ7GqOM/YpXIsXLmokdpNOUX8cJqrh4eyuRqn2Z0t8MW7GSaZqfdFDC6IOdanliAXiCp8Ct6OS/o6vCr/Mme/r7yN9INYGO8sSmIQVM5bil4z+b1qSAM7NfG6g2E2N7gTw2VLlqEz1NsS7J1KfYP3CwCNtyRZSv0hDv6HZrIXERgS6dO2c9OFKRX8OrI+dr6Qw== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 06/14] vfio: add flags parameter to DMA unmap callback Date: Wed, 9 Apr 2025 15:48:06 +0200 Message-Id: <20250409134814.478903-7-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 48198ca5-f840-438a-2a2e-08dd776d39a2 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?2axyowfBjpSqrWveFFbS0ESedY0wkLbY9HIbWpFvwoFOQwb1xhMMTHwSndsY?= =?us-ascii?Q?52NXYbzOh2ysjFyUjGZp2SKPpS+cXuvRia6cbN9RmD/IGl5pt/44IP1mK28d?= =?us-ascii?Q?zEbJ3vq46zarEk3DWBtHLY14cldnIBE+pq3d3aNoIddj9Lhyq3Vs97WWe/+E?= =?us-ascii?Q?uplU0YWFLvi9s7hf+dtBeesO38/RC4DvWhkKJ802YboVo5bjks6pxdQLnkDE?= =?us-ascii?Q?RYZhtm4AmeCLhuzzxDqHeLL+/KdkJmXAkOi7CR7MZ2lXA0ljnRCGfDACZpTZ?= =?us-ascii?Q?R+U4eFgF2Hl3X2QmKEtVJEIfmJDinCzxDb1uBJubYCK1Z0WD6HUKtVoqPe/E?= =?us-ascii?Q?PanXUIWTqvlOGQ0NGrQsBzqJBJk0f2FBBuWbnYFt0DV1yspstXYXdrxp63v+?= =?us-ascii?Q?KmVPFRjiqwHPyxDhbQsXW+dhNosygeOPZT0WzWV8e0o8ZowGy+tKsA78PYQS?= =?us-ascii?Q?nkcWmTI6j7UUSsgfSDLSxF4YePBjYiRN44TYAPKV18e/eZTd7zFl8g09m01W?= =?us-ascii?Q?QqwHVgeKKEq691fl4RpTrAd22tsmQqsgnMJhoLW3cr8PymGOhmWBGvrZvKpw?= =?us-ascii?Q?kieBba6PUcMFecpBpg7csb7PbCo+WVsVaQFGpo6P77CDBFGpouop78SCr5k2?= =?us-ascii?Q?GJe4ZpeY7UcxztEp4MV/RJ9dBWrFoSiIxh0Oz10NVFZFrLygMdA22XIFPa1F?= =?us-ascii?Q?0rHFwzozh5MblFtLpOMPbeZjplLRuEVPU1eVfqrBUOzMQZxff31kNZvUrtwF?= =?us-ascii?Q?lP1Evo24fuERlONnmnIDt/H+tmBGsYZMj234SJXOpRSZB3ZAJnXRURbiP3e6?= =?us-ascii?Q?5GavYmt+11mj8zRYU7wfpZwKu5gluYSXKf4l3m4la/95NRu7GQzRNCWKTmOt?= =?us-ascii?Q?w5ehnnbQnIO3lMxYzOAU+YNHdrsC9y/ssYfE+a6OcKGdEozSl9q831TWaAu3?= =?us-ascii?Q?8IyediC3GBx0xzXjXD3LqIeBuX9/a64veT9EshAm3lTQ8a6wTSQbyvHjIICo?= =?us-ascii?Q?1hhEe+ZPRYOfYjK102ry+MWyjHypX/U9YpxCjHzewJbE9yGIiKHr+YEMjX3U?= =?us-ascii?Q?twjHudVLZp48V+ul0bKwnWtybjn5Rfh97TAeXMXQqxve7o+/eomUU6rHjsgf?= =?us-ascii?Q?ga3PR+1bvBFbB9+h4dlmR6UA71GtY/5mcFBjubEZG8YYVy5Cw90P7WkZHz74?= =?us-ascii?Q?P8O+VEkfi9t8Ddk7VAGVXzM8y0R4FMda1E3MTedrQKIqHLdjwqPzLjLG06CM?= =?us-ascii?Q?4ki76v7NQyEjNX7Vzyz86Wf8JvW5WaMAoSU0IT5CHKvTyewQ0Quedk0TznqJ?= =?us-ascii?Q?mQtIoTyvMZvy/JEzW4DT5MgHCBL25UrHhR1gMpsRautLLcub4wWtedE0MSTS?= =?us-ascii?Q?bWpet7YcXBG5xBCZm7tjgVym5SaE?= 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?OhzidXDhwy7S6U4EqfYpL+GWmWyKVal5IQwR3jAb7/FJzKaaZRRg1niaPzIN?= =?us-ascii?Q?BpC0HXrrFXpzHf4PJizepviXP5pHUEUJtLbUkTxPuQwPkgsvcSkXX81V7udf?= =?us-ascii?Q?RpVJbcY2eCRE78GaBbdPRCqDnanunH/NPGoAxYtfFwCuOztp6tS1iAXhEkHC?= =?us-ascii?Q?8YgJiDEo58hbORuDyzLQM6t92bPwcPmMtqgWn5jJeU6V7PyyPlpU6kQh+E6F?= =?us-ascii?Q?Kp6LCxfDWloGp2bH6K3D+d6lgNpcwQLIgV3QtFVTA43Mfg5NlMYob1VQbFC6?= =?us-ascii?Q?nz+LsfTSqZU0Ec2oROMu6YV88JFnV2Cxdoz+oGeZ8z4fpETH/d10QLZJIr48?= =?us-ascii?Q?daI/zoTRuYlXAxqR4nXyZHc4vJ8cI+2RW51YPJBp4QFWK7IVnfHFU06UUicz?= =?us-ascii?Q?UIBremr0OWSzwDTOYuWPIHgdmhotSL+cFbxiqt6NIpe5kvD4/GTrqV9M/6bi?= =?us-ascii?Q?w+VYB9l36qWhwWpO7g/LI9sqNXBWAfig2yONvOGofMs0KnDC/RvX0v5TkIlp?= =?us-ascii?Q?hGRy8cUcJHWbdmfDCIhCywC/U698TLYrO5Ktlf5rLQNlxSNIVlhM7RFTa0k5?= =?us-ascii?Q?1KWTi19k9PHe5B2bLK2qYoVdDZyKbhvqSifFEkpUObISsPSqJZrIoiCyhTw+?= =?us-ascii?Q?F5eTK1nESIvvAnk9ZoRu/USBf93bWiyRByLgdN48cAtPqlJqCQkvHhgRZ7Oi?= =?us-ascii?Q?3ZQcHFpOQFtIRcJoJq+GI4ZwDY2RWVx2UT0fOig+gYpTctI7Hsbe5pks0cQs?= =?us-ascii?Q?EAYN2jWU7NR2tQEP1IohsiX9RpkA/UZQrjLCj+Fysg4JAxC7irW1tqInFLGO?= =?us-ascii?Q?l0hmsmE6TNNy95t7hhU1u2MZW9M6sO+qU7+ga4HBWwKd6ze4kqUpasad2GtU?= =?us-ascii?Q?Bay1U3c5q4IXBxSJNSjJ3VWCf2PAkKmJe/guewFNU5p0VdwFXfKdtmLrz+QT?= =?us-ascii?Q?jY11kFVea3CP2FpQFh1cBZhz0XSFAcHVzDklq8buJvkoxTHJecrdwHClXLAN?= =?us-ascii?Q?f7vhKJpLII3sawTVrHaO4RM8SOYivZ2nmLesvRiXxpvGKo1WBMvB5vwHViMD?= =?us-ascii?Q?zvYlGNO8uNcHXn7c6kP3WigvAH0wglTTzQrErKABIDhyInLXEet6ROA3Pxdx?= =?us-ascii?Q?cGdrTgUwcYmXnB4l3hSMaWlzF76YDyWpJAdEOwuGtrPIp7SrWXE9H99q0rBA?= =?us-ascii?Q?Ag7eop4cN9Ye5yr1D3hOK4wSQ6FI6hjSzg8UGoBR/r0NCL1X+6MKE9SQxF37?= =?us-ascii?Q?QNQ3gau15YHAhHS1sBkXqzqEXU6cc/YbOl50ngihClp8R1dfMnoPhR2xFlv/?= =?us-ascii?Q?irc5Z6N1pxgQ2zymKHP3upZMrMfxrH19i6qTChZxUaME7SYu3C1U6JnbTKCC?= =?us-ascii?Q?ucUl9oSt6xldZsnQCx5oMMtotRqmkZUhIXo9KDQ06SH8glDr3jwNDKV09nRr?= =?us-ascii?Q?ZAPYIqgDwg/f9sfNfvoZX/p222lSRA6gLxRRoiDXVJGq1L7QQ+KNPgAcPh/6?= =?us-ascii?Q?agyeFRE7E5VqzwC14Zvk06soNMUYwyptZTFLzb8ADaZM1Irc1Sml1wPLtDTp?= =?us-ascii?Q?1GiCp83XOWzmUbL7bOyMs0kS5N/tpA0HcHPe7hqe?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48198ca5-f840-438a-2a2e-08dd776d39a2 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:36.0140 (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: n5GPpVkCdkQpjyVcIzU+HJrvNSr8eX2l/fjIyCHGI7xu+5CjCNSDLP6NXI1r5rlgSxF0g1fcSFw0EqfSMmOqZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: bQx0jMn3lMVYHta9QGoVTrFT-ZAUYGtd X-Proofpoint-GUID: bQx0jMn3lMVYHta9QGoVTrFT-ZAUYGtd X-Authority-Analysis: v=2.4 cv=SpaQ6OO0 c=1 sm=1 tr=0 ts=67f67ab6 cx=c_pps a=s+CWjU1cAxIdjlq2nM3SAw==: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-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206621193019000 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 726aac9827..613fe1a00d 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, int flags) { 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, flags); } =20 bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 4fc181d33b..625bbe82a7 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, int flags) { 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 (flags !=3D 0) { + 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, 0) =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 1874185fcf..07334e65b5 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, int flags) { const VFIOIOMMUFDContainer *container =3D container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); =20 + if (flags !=3D 0) { + 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 9ffc2deb2d..c52d4a52ef 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -173,7 +173,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, 0); if (ret) { error_setg(&local_err, "vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx", " @@ -202,7 +202,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, 0); if (ret) { error_report("%s: vfio_container_dma_unmap() failed: %s", __func__, strerror(-ret)); @@ -665,7 +665,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, 0); if (ret) { error_report("vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx= ", " "0x%"HWADDR_PRIx") =3D %d (%s)", @@ -675,7 +675,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, 0); 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 67373e8db0..6eaf2b2430 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, int flags); bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, MemoryRegionSection *section, Error **errp); @@ -127,7 +127,7 @@ struct VFIOIOMMUClass { void *vaddr, bool readonly); int (*dma_unmap)(const VFIOContainerBase *bcontainer, hwaddr iova, ram_addr_t size, - IOMMUTLBEntry *iotlb); + IOMMUTLBEntry *iotlb, int flags); bool (*attach_device)(const char *name, VFIODevice *vbasedev, AddressSpace *as, Error **errp); void (*detach_device)(VFIODevice *vbasedev); --=20 2.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206584; cv=pass; d=zohomail.com; s=zohoarc; b=GD2epzLvN1HpOdXXnaiFP484Jx9AZNpmswVJMBk6ggZwKpjmZiojhuLYsnzZgpQOLnr2K7vP7hYRaDMDdTLqIYZ3qLSaMqVCNJDm/KhX9BUNP1W+MqaSJkVPw6cu9K1oaz0OrZlz9KYFLhR5/tmBs06wNa631M3ykNYthvh+MRw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206584; 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=tGX6AyRJDv3d+7JhmMGrrdabwexhRPRK8nrYOtFLnXg=; b=fXlWHR3JlSQis3v/Ngfwv2O2IGMZ38RvnYObZt480PWVPezvSs7hpL8+0EVuDz5/zITbjlRFizHABqVyYre6E09nHS4R18lGhuzfE6blPMRgS5eCScCCn72iF6XgWkwIn+WZ27eNYlBBwGCU1Z7n9G8iqnkis41dPZDpJyGu7vc= 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 174420658468340.15749134869429; Wed, 9 Apr 2025 06:49:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2VnM-0006RY-Rt; Wed, 09 Apr 2025 09:48:48 -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 1u2VnK-0006Ix-7c; Wed, 09 Apr 2025 09:48:46 -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 1u2VnI-0005eJ-DX; Wed, 09 Apr 2025 09:48:45 -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 539DY9VE023160; Wed, 9 Apr 2025 06:48:40 -0700 Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazlp17012053.outbound.protection.outlook.com [40.93.20.53]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u2mhj3jg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:40 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48: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.8606.027; Wed, 9 Apr 2025 13:48: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=tGX6AyRJDv3d+7JhmMGrrdabwexhRPRK8nrYOtFLn Xg=; b=m9kiMY3+b/4q/jsEI2DsziOnfcWvApLQPLjKnkUNUaM2iw6yKfR1LpmBU 5ytg2swckcUWv+4DoYOg79Ruqp04tPbMeHhCO+RuNmQWwF+eJuMKoJPYlzE9rSVC uWPj53pSGqri69ZKb87vIK5+lR/ic7yhQZnbkqlSR++c0I5cJjkelB2TRiT5jEJH nOh0O5t7hGxrOlFEKeHZMxFD95gDgEnm1rwiyKSeHR9Mljn/78A2rrfMEXHnGCUo R672jI2GvzmybzFpG1Kok5/QlKCLCJ0hbz54LO6QUfajZugYYQcX+1z1VnwTqL0B zwhVUP1i7sNrkynC8d35WYWLmnHBw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cIg60FUtQiYxLWd547YJH2I3rcZ9/8kQBm65NHY+IG62wbJYAzkLkFCKX/J2v0CRklw0JrmZals6COLRmwSpDrNr/J5mnbMeGh8nxRo45tEY1Aux+o6rdVU+ItwMZSKivqjVy2KKpwdMYIV9sFOHkcxVF+XPXlLha0QLr9FA12rCCbQ1izQBhhK7syzP5NQqP3PtrlEDFQIuP9UUZtZsP6EAT9Bg4rsV+TyVxih0RH/zNpi/VGUcKr0pT5Ri3fK1RewpiJpIomT3xQ70+UQIVlRZGw30NHl4qwz37XY1a42E75KkwOFnwWCfQ3/+nD5IL1RwXldGcGw7kCUAnRkPUA== 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=tGX6AyRJDv3d+7JhmMGrrdabwexhRPRK8nrYOtFLnXg=; b=tOENgOFgUF9v8XtU5UZzOaTR0G4wZLVckJRAX0GbtK47gAyrdKnIlQe40biZEuZounrChcfNEBmJhqiG8yVi/PQ2rwN3gPQAVdGFFoAwg2bbon5ZoLUwCa2wLaf/mMA41u0f5wuhlctUdkkwreCiMzByrM2OSME7tKMHT134dOHo/d1BU7C/mgGz05xkl9yVhQQxk1/lYst/WJ2QDMkTFCej4PvdTkv8HRGS4uHT9VIPZDfxr3A5Uf/DjcH6mFqtY+cAeazb8aH3iCVa0Midou/D5J7us6YfQ50RCLzNjtiU+jzgAN3CP29Dw/NRUfl9JWKmfAFEET8i5oDOYDqWbw== 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=tGX6AyRJDv3d+7JhmMGrrdabwexhRPRK8nrYOtFLnXg=; b=dyeBxcyFesMOXYs7o4PjkNYaiuFkWDOCiCQ8A7CSpHxevEaXM1tXqvLOJmpHbXSrdzJHiDDr9N+8nahGbREIkwu0Yg+8gH8jnVeF55WKZrkBQZqyk3r9U+WqwNP2TiSBB4QpQtKRgFn3VpkXsO9+HacgKRAW1QqOBAqywnvTapvPkbj6C5OzuV3zCGG1pl0nI9LMm7MstuPl3MFwhpXBvFzqKEvHLEUn7bNIkoNeERDANfioaAz/lPYQnfGI/VFfycfmnUC+t6SIb1hiOFnN4dKDtk5/JkMZ5QKKgixU5+Hw35BC6y3GUNCxJKxIbYkQkQKrLk6rya6yJkBxR7LBGA== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 07/14] vfio: specify VFIO_DMA_UNMAP_FLAG_ALL to callback Date: Wed, 9 Apr 2025 15:48:07 +0200 Message-Id: <20250409134814.478903-8-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 545e7489-c253-487e-7a78-08dd776d3b44 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?qj4Mxjtv+rF+knU10uYbBkbYBkntTDDtzqrLLR9M8Biaw7IDDEXQaz2u9per?= =?us-ascii?Q?yQ9eE4GtulO3Xf//J8q8mF+i6IDaGTaBPNo+KESovFF4vZZ64lX4wF05xT7G?= =?us-ascii?Q?FiFqVeT2l50wt2RUg9dYQJ9bqEgDjQnJVwlly4ksOAJIiAMbgi7UoWsI7vfY?= =?us-ascii?Q?0ZYy57KVZ6cxnwlooY2ThGZAsOitGaeXQGF6GY7rO8MSK9iS4UaCCSw2e00w?= =?us-ascii?Q?ze5Kj1gvPg50sHiDkyqiBwVEGLcKx3KVHCy+XLmsZ5fslt0wByVh4rNktpxy?= =?us-ascii?Q?eTWrdkguH19uwPACoBsrd9D+j46yoA443lh8hdw6nAnxVtaONJI33Wdb5f2t?= =?us-ascii?Q?+poXCYv/e52j3b44cNDzionmnZfVcRUK988/GJYOgVzl/4LPag3GVl6gAmB6?= =?us-ascii?Q?J3lzLaqr/O1kesiRAw23duWXhC3GAX28V94ZF9mYjjKW1xyOarFD+V0xiqVv?= =?us-ascii?Q?Vmhz6zqf5jnO0+aAXRVFG3p/Xa+tk4A1SkSbj68feCy4r9izTDua64RPB2nL?= =?us-ascii?Q?Qap1o4BmxMUMkmaeWJs9VsaSzaNRaP5p6EkjyZA+P97ICSgUZh00SjU99PZo?= =?us-ascii?Q?oQKPTRzpwRik2keIdDD0hx+CJ1CwxVFpjLuYQ4kLTM3QJteBwxbY4XzT3uFH?= =?us-ascii?Q?8b/DfWOiejSuEf1ecIKTgCRRp8lJCbi87SVCvTY+OD5iaHHKHbOUT93I4zmg?= =?us-ascii?Q?CPtY7gpNMmjxse6qze6AOCXHdYhU4g89VoRBA8mv/L1r1NHEGf7xrBVfrUrU?= =?us-ascii?Q?1j0IaS0NhBtiE254Mo8U0YMsYxi/9xJBeJy1SSkrBzuhjLNUp6Ir3a8ObEvd?= =?us-ascii?Q?B9nya4urZifNgQJYrxRTOvPE/dGQ2new7yFZB6jbH9xFmo14db4QmnGD0fE/?= =?us-ascii?Q?TszU2PZQXxyqAyPjaxX7nWa9Rs5kG8hkl7UR5gQz2roZPeToT/CR7KGIdPhl?= =?us-ascii?Q?NV72YdgqqB3/kaSmsGclQ34yjCCabXK1BjAJiAsaqmaOczFZidwtgd33aDR7?= =?us-ascii?Q?OB4kHg7fKjs12lxbcUh6u4Sh3JwI9B8/YKxTCLoFZhNV7Po+AThkNyKQnqpp?= =?us-ascii?Q?CvSfCGUJrucEEnCsv+UFgRHi/CpvjKuUI/q2xz0s5nzM1RMcaiumlCUAWLPh?= =?us-ascii?Q?85PRGtnAphcmltDl0uk2DnYAss5DpxJRtBq29m5+2fM6iMPvP73bQgAbmvzP?= =?us-ascii?Q?m84xNjzniia0b/olRFXZs2qn/pw3xbgRPCDCewvxRos2L21qu5Jyeh0/wHYw?= =?us-ascii?Q?/rxC3ciIwVsa7wRAcR/LEA2YF4dyVaeFMTvOscDunbnlH8z655hhfwdTTR6I?= =?us-ascii?Q?SIzZ/HyRAINiyGV58UpOypWjfHZ2p79y6MumCIxulCowLH4JxvxA8PI/zQAb?= =?us-ascii?Q?KSLNX/DJbQE4Dd4aZL5r5dxJiikE?= 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?aBk18F5kOwrfkXuWOMHvyT09LKT0rE2onJKhfwfu90F8IJ2YT4HapgBeBFaq?= =?us-ascii?Q?QuC5hpulX7ZyA6sdYedPEQhuGPln7tVpLo0lrkr3rnKVwbeZNpz/hbIcC4wZ?= =?us-ascii?Q?dAFho7BfSpQFq4gDcD6N2M+x8Qo6CfHENAIjRTv8jMXZ2QYkGrr7oJ5guJDB?= =?us-ascii?Q?fYIFHoCRk5vvd4q59MdBebNcOJD+l+HAXK03y6hokYnQwiPjzhNXnRfGopyt?= =?us-ascii?Q?Y1aXPsRBboCgbDjMqVaZ0gBS7IG22khp82JZg1m6kUT1VT1rqdQWdxXw1TWH?= =?us-ascii?Q?at1eTYnI31aPZ6T/YvzNoQBsoNjQXGdCoQImg0CDUgZ2jgit/g67//XBwqNx?= =?us-ascii?Q?06SfgrBI3u0X5OZQnQfQImQXW2Keig21ekJJYcIyDciG3JL+xhkko20MaZ3k?= =?us-ascii?Q?/e/fcyr71BX3JfUo2RhNMhmAH26PRhsaC8R93thgmLjPBjWkxqJenjwQtCsE?= =?us-ascii?Q?RtPRIo2JgFIKne5qY34l+BkmxVnhCCS3ALzOEdHRjaaQgn+myDTyBc0Qjz60?= =?us-ascii?Q?td0BoYRVkyhduFW5PPSd72unc+Zmnq8OnECtWr22r4I/ZFJE8YUAw+if9cir?= =?us-ascii?Q?1bwYpf9Cv7YyMuqKyELbyjqgeIuMrj/4IMPHxx3t85X7VulZXibJatDoRhNj?= =?us-ascii?Q?GTfBH+2/nQ7/BqGMKioEAmMUT65xK8QEHWlcK+SzYLNB7PIRrjwvLwLc9vIO?= =?us-ascii?Q?/1x16BeUPRBBxETetNDcnviRkY0C0sisL03U773mFZ41rJEiX8dduTHC9fF7?= =?us-ascii?Q?PijQDK0NbCNWv/pazJwJBQh2t7jBUWWuqcQPMP/OJGqBgaju63neon5lgF8M?= =?us-ascii?Q?e8QHR5oqIBk6192O/0eBzYNxM5WS4CAP7n4BtZzzkhITyIqqloXjnVNaBRZ2?= =?us-ascii?Q?c2OXfEWgIP/1vhm69xfBxnn3GJT7xYwNReC+BdWPkDT8XK0xERhigB5gQ+LJ?= =?us-ascii?Q?dyYwqXP9W9I72BNPqiqXAHgF5+zudw2ZYVMCWeryHugqgJYlt0GBuCckCVcp?= =?us-ascii?Q?geqtEzNrItiQaoKFrFEBuNtIcuEMOVxfJSK+7KG/o1lMxV84cKJyAqje3nW7?= =?us-ascii?Q?EpxOXyblQNnTnIl8oIxUXRB7Xi+h1ttf/KbTCIz1f852TW1Yrqm+YHSDhHtH?= =?us-ascii?Q?DVXNllmfebKE1DQqoMZ3M8HRXx5n8FwVZo+URcmXS3iULmwFFwJOfVPHshdT?= =?us-ascii?Q?0kDeaFFFfLGkOaY5OvNZVk9IoUEVronUmgc7HK99H/97shrzBFz48vWiY42R?= =?us-ascii?Q?qkjaLof+9Vx78snIgvPdyLBs56II7cq+wHUKxwVE1/nKElnkj4/hL0qyki4D?= =?us-ascii?Q?nGSiyuFxra0M0YktIPjFCMo7sGDoJOhlmQ4BiBPGkZAJ3/wTAFJhupu1VmrJ?= =?us-ascii?Q?zEh5chdggVjrhyX4b/+JivNVOIjvF+C+Isde8Yr1skID4oL5osJUtLFmFzsF?= =?us-ascii?Q?wnU+gV+QK34wBTjmft4YuCoFENd9xjcCWSbrIEYrzxZBC0kltDutKqcrrKFu?= =?us-ascii?Q?ai6mpZVygvbJFo9P+vinxtyMFICF5TCDM5OusKFoKlKvDC+i3XyotohiR6GF?= =?us-ascii?Q?OCpYMcsgHgu2Mi05VcAC9rDIOLoW58ObnIOQ59Oo?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 545e7489-c253-487e-7a78-08dd776d3b44 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:38.7288 (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: Vnaqt3cqz0KcQZwm6ePquQ2z0XXljaplQCXDdJ12d5+GgqyFeiHSsEijc3RNGhHIGZmWVo5NJECE10xER2r/6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: YDVhwqmK5Iv8Lh8Yzdd-kIwSFgi8KzLc X-Proofpoint-GUID: YDVhwqmK5Iv8Lh8Yzdd-kIwSFgi8KzLc X-Authority-Analysis: v=2.4 cv=JPI7s9Kb c=1 sm=1 tr=0 ts=67f67ab8 cx=c_pps a=sf1zYAMyThzbrKU8SMWnlQ==: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=4WNC9uKCzI0CgEDnVfAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206586135019100 Content-Type: text/plain; charset="utf-8" Use the new flags parameter to indicate when we want to unmap everything; no functional change is intended. Signed-off-by: John Levon --- hw/vfio/container.c | 49 ++++++++++++++++++++++++++++++++++++--------- hw/vfio/iommufd.c | 19 +++++++++++++++++- hw/vfio/listener.c | 19 ++++++------------ 3 files changed, 63 insertions(+), 24 deletions(-) diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 625bbe82a7..37b1217fd8 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, int flags) +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 (flags !=3D 0) { - 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,42 @@ 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, int flags) +{ + int ret; + + if ((flags & ~(VFIO_DMA_UNMAP_FLAG_ALL)) !=3D 0) { + return -ENOTSUP; + } + + if (flags & VFIO_DMA_UNMAP_FLAG_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 07334e65b5..22e5b16967 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -51,10 +51,27 @@ static int iommufd_cdev_unmap(const VFIOContainerBase *= bcontainer, const VFIOIOMMUFDContainer *container =3D container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); =20 - if (flags !=3D 0) { + if ((flags & ~(VFIO_DMA_UNMAP_FLAG_ALL)) !=3D 0) { return -ENOTSUP; } =20 + /* unmap in halves */ + if (flags & VFIO_DMA_UNMAP_FLAG_ALL) { + 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; + } + /* 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 c52d4a52ef..bcf2b98e79 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -661,21 +661,14 @@ static void vfio_listener_region_del(MemoryListener *= listener, } =20 if (try_unmap) { + int flags =3D 0; + 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, 0); - 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); + flags =3D VFIO_DMA_UNMAP_FLAG_ALL; + llsize =3D 0; } - ret =3D vfio_container_dma_unmap(bcontainer, iova, - int128_get64(llsize), NULL, 0); + ret =3D vfio_container_dma_unmap(bcontainer, iova, int128_get64(ll= size), + NULL, flags); if (ret) { error_report("vfio_container_dma_unmap(%p, 0x%"HWADDR_PRIx", " "0x%"HWADDR_PRIx") =3D %d (%s)", --=20 2.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206620; cv=pass; d=zohomail.com; s=zohoarc; b=LHfRSyfTcuMKMkO0bgaEpPoPNbRMNMUUKRikyfWn6Dnoq1WbqNslHJG2wfie+kQD9YMzz8GfDuVaoZKn0RsffaGCHaihl8zjxbowato90Q7Bosi2jUQl/9aJPNRcTZJ8C6C9PlANn3lSMlqJW68zwvBGxEaIX9nPhNXEwZ8OM2c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206620; 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=oazRZz3xQrkr7hvFHhVeMA+UmiqblYhdJA62AL6OEGA=; b=SQAc2qtOh4OauzplRZYQk7YXcy3q6+cmP7RlT2U/IF7Ty9kh5vzjMiDaA5FbEWajTj705S9APSA0KPnsZMs9RW1VslRY87MQ5peyuTUOugvdJj7vhno6W/4MSXh6256yuzZxDLSCZK3vqaoChggDLuYOcJ1x3DmTYnT7PRm/baY= 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 1744206620242704.3230835212695; Wed, 9 Apr 2025 06:50:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vnb-0006UP-Ol; Wed, 09 Apr 2025 09:49:06 -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 1u2VnO-0006Su-BY; Wed, 09 Apr 2025 09:48:50 -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 1u2VnL-0005ew-9B; Wed, 09 Apr 2025 09:48:49 -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 5398ai3I009618; Wed, 9 Apr 2025 06:48:44 -0700 Received: from cy7pr03cu001.outbound.protection.outlook.com (mail-westcentralusazlp17012039.outbound.protection.outlook.com [40.93.6.39]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u420syj5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:44 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48:42 +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.8606.027; Wed, 9 Apr 2025 13:48:42 +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=oazRZz3xQrkr7hvFHhVeMA+UmiqblYhdJA62AL6OE GA=; b=SlsuM7q1I4iucUX9i+LX7mzi3Ei4L5BYIEG46eC2gjUhK5+hwM49pEahd mpwua3i8mlaK129MqB2KgrHeUGQdyBXHRURpEJsUTgBbCP/44eXaXvD8abbqZt7T xOWPplCKchVeSBGqMKoTU2+eOCExELDXgbfAWmYwXbOwipZrfF86drqtp4+8UdyQ sM5UYsTn7XkM2kRHlrku7AyG7xnzaiQEWdttVtkzR3y3MybRzDnkZ+s8Y94QMrG5 kEreRjDiS8+eUxyE0DcnBk9kITxQrWK/FjeyiHLHV4GUHYUUsd7SklNj6uCriv48 AI4ijI24VnOTZjMCLwUUZcUCZQwTg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Q/2Sav4cw5kkVdKfo13qL57bu8dOTv0xc294lcY0m7qpSTbidMqnpBROy7NjCYjPixN7JIp6IAgcShXfc9xdcxtf1YcfoLI4b0Kz8vBB9YFhuUgl70spc5kCSWqcRbMJNkWU6LCpUSlnQqw9qc5ccj9hOQyrdOp6wsOaFPBSJ5H7EpqNBvOr5vK2n31C4+lxGp+95Y4UuFbBUG6l5avEIs8pnDNjhNDn4ifi5yo6RCxK28L3UFIWvtdbn4YnKH8MRJXBfcuS7nZv3kb7xdWq8NSGzpOiAvmbQEhtzuYJ4T0Z+BcfVAC1YgELimJjTQweRhVXc4OL5XdhFcZF5+qbfw== 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=oazRZz3xQrkr7hvFHhVeMA+UmiqblYhdJA62AL6OEGA=; b=DSzfV+JrzmWWn7duTPUu0AsQAyBW7LqaZWJB9W8GmGVWWK+reubarADPV97IwC8oCUMA16x4Hod4UsqQ1Thk9LBO/LllSSMdra9Aqyglgr9BlUQ9uClDooZDqJVZ0Y15tNxCXKoyBSrJtDq97I7rzwOT33QmTuew2pFmoFS1LGhILU0djHzPoKPyfAuE6Py6VeZi79i29/BO3Lk9U+OctimBK/yL8dn8l29qG6UDaKhkz3FrxvaNBkKBmw41ItTOyIvOP1cTZR4ADJv1NP5Kk4WZyPnyKNs490EvpxaDnq2BGIau1KOvlNp9vCmYm38MUxGZh02nXYe/R1Qwlj/9zw== 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=oazRZz3xQrkr7hvFHhVeMA+UmiqblYhdJA62AL6OEGA=; b=dmcOIFL9pK8d+p4aM7fsAT41TA4ZC8Hb3KhM6lHI5hGpgiP+GVjuYL2cFbfm6/mOqsLPaj5pdUv2y/upNTuD8aiHSRGUV+Sg4cyYepbWY7Ap+P7V9Vjd7Bb3EN8a375fGQFl9QSOLX3WPAh6vWLAEpT3Cda0cH6Ktb92D1XujB33GYXIs6SdrwNSGl4QUcijav7qAjFFPaCHZEjz4HvBfretvvh6x3te0bkPSx9btVwTe7xEneL6rQGenczHG6+/W3yKIXaaVqVux8437SZAD2EfJKOZ/xaudw7f/zU4b+WoMqMKleXZ4ZMcrx+20llSM8BfQe9nfXkIzYB50RIUQg== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon , John Johnson , Elena Ufimtseva , Jagannathan Raman Subject: [PATCH 08/14] vfio: add vfio-pci-base class Date: Wed, 9 Apr 2025 15:48:08 +0200 Message-Id: <20250409134814.478903-9-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 953380a1-5503-4716-3d9a-08dd776d3d1c 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?3zI3CBzntcor42KuT+yptRXsC2tkUFOoAv/5fLVRfdSwIbof1xW9Q48Dbpab?= =?us-ascii?Q?5TQwsONyWi/Z+MuupWkAmlTfm4NFkv7jl3QaOQ7yaUf0Zq2n4enV08L4MQu5?= =?us-ascii?Q?KJKKeBKDV4wM79LBF1QeXXGlhcq6Q+c8cO4mqDAp4TMZBBNCQhM52jdTWLC/?= =?us-ascii?Q?x98XDyJjrEU/SCEdU9QPFo9KHwSsZHQN1idDCabguhzDNGvXSEHDGgt3Cv94?= =?us-ascii?Q?Jv/cvTAz73TfLJhZXbs0i6j7yI3YQGqCdsUUFbbg5C9CYJwtUpwhetcvOPbl?= =?us-ascii?Q?fD320f1oU9QLNm0M/eFR81FiqrVXLObf21jwCYKhzbg1I1R+Tq2Aoy5hV9+l?= =?us-ascii?Q?RmaNm8w63Vjq//nECMeXAN9cP1GJfdWokLrn/r+xSw8MJ+BKhN5Iz8Ane+kD?= =?us-ascii?Q?469Mi7PogEa2mpOVTClWwziXscR+SIKHb/s36Cq4btDQb+Fe3PbuHmpjoHAQ?= =?us-ascii?Q?QPrIfMl2poIw8x9A3W1AK8m8g+djMW3OPWr4AZ62zfNEZ9MoWCibDCYF3Qb+?= =?us-ascii?Q?QGjZXtmaPXMEaTBBatii82pt6MLwypevy4jeV0XONoO4VIU3X92nJ1CMds7l?= =?us-ascii?Q?oIpLJggbjL5PqDmz7DZBGZ2slKTlMyr+X+vd+TZNUtEZMyw/7umFK+bbJIQW?= =?us-ascii?Q?ZPqJCap0FYdtbC61+DSCsUF99+yn34sB9mSQ5ceLmfY2rXqg48a0nEYGiYQ8?= =?us-ascii?Q?XaBAFCgHegw37o8qOtznLyqkCiE2Nvflui09hZD6yhx8h0FAvBfTIu+YUZsk?= =?us-ascii?Q?V0vC6ZuI5cT4YebwzfwQB+boPrlvogTIw5w6/0g6lRL+NNFrsnJ0nlL2C9dl?= =?us-ascii?Q?BO71/Q4bCYcCXYaKHTa8kC0IsU1LtKnFrtCWi9BTY7nQxUizHXDSG0xIDsJx?= =?us-ascii?Q?qkZN86J2T0XYzOnBtlrd4QrcI6GYr3Yr7JogN21Tg5ORQPH5mbQRUiTVF/QL?= =?us-ascii?Q?x4Wb5T+9ElEWf5a5EORmkfXKH5OG7U6wXC8yr2f5Of/o1nChmQwXs2KLBNFN?= =?us-ascii?Q?JJkbPrL2SQkAechbe/uwt4cXCjt6RIY+EF1qMVIC0GSwJFY+coEwm2Ik01jx?= =?us-ascii?Q?DaxCxLrqiuXv6dbVQZhqgER2mY+6ZFNUU8o1VHKcRMtzTu8Eqs1nBZuH8Gb0?= =?us-ascii?Q?y4p5mgdb5cMGxA31wGSlmkg+G78gPId57JHo8PO53mOJhDu4uAeiy/R7sK3h?= =?us-ascii?Q?FI0H9CBPY7M3MTzcQoSBK0HaIaGL9If02x9Ip9Yyt5oC9Ti/WeW5gettBloC?= =?us-ascii?Q?WGpuVUMBiNkSNPJnIGU0c2HN74y31pgncTFLlDcVtlRbfx5DDeyvy13y8NXK?= =?us-ascii?Q?JWrCpIry/yAaEH/19ujAydWRf2RLXHnnvpYu0mB+wIqD2WHPZt2xsqVC1vhF?= =?us-ascii?Q?CTWnPQRCr30GTzeQ8ljKUIreN8u2?= 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?2qO2RJ2eM9QiBH/deCghmJn7cIqRt3QCfNSkeKy+nQhrXcU3b0qB7KDpMs+a?= =?us-ascii?Q?TrvpwTO2pr3hb8UzjQu1IIMQVHi2gBVv0Ffo8mPE81R7368K5mAY8t8ck3e3?= =?us-ascii?Q?p4f2PRzEPx2O3sWMtHSKE1J1AehHVG6CQkqVxZiuZ35k+5fgnOAbKYbdT5p2?= =?us-ascii?Q?LS7WUcWDr1ERssGY13zzLwWK4tYjQ8R2VNnh4MVaJg8P7jadkrGUJ0JcP0Bk?= =?us-ascii?Q?f0R2pZ0syuw/LoASIrlOgEfIL9kjVLDzzr/C7WSQgn/wwge3n6ew57ACz5Ml?= =?us-ascii?Q?sYf6jeQVyuslY1IBUhaRduqnV8430B26TApl8PFY7KG0YofSI3ne0gSSvbgU?= =?us-ascii?Q?mFjPNGmmozLfWrRXtIgRaRVJ5tk8PcWiFGUKmuSugi7VQ+iOGnFl7lG7pD+l?= =?us-ascii?Q?L2JeXGYDw/eSyNkm63o7HYqP+9Vh63c1vfv0IBSqubKrs2YJo2HAxhMz+fIl?= =?us-ascii?Q?VMMS1YXnUlNoixMNjva+5w7+b+M+eQ5x5xmuHTwVuItn7oxGuSXumxfE+HZ0?= =?us-ascii?Q?kQjIsX2myVEyX8HlTyFnnumAJhlCA9sdMmWdIBiAkY4NgT6ljFOdIfEkRqsq?= =?us-ascii?Q?dM31gNZVHGDAHqTclYXt2tEBnByzgUkzDsAUYgoUAGFYorNlR5uvOkZcHZLh?= =?us-ascii?Q?z5/SsU5KGogJjkyfvC0TG5mD9Jr99YZdyRnKLcBHhRe2Dqx0ryFFHE6RONTA?= =?us-ascii?Q?vgSRMsOqdrKAuMG7iaOKaf3CYNnuf8TILf4WlXnvS1oBwrXY5IMSa2z+ul15?= =?us-ascii?Q?colULdisIaxIiZGR7HndtVBIRO15PfP46+nwaSrQPhTWsmHeN6YYhTvVfS7F?= =?us-ascii?Q?qMpKUk1nnW5Kz+fVHkqVwRFzPnnViOuGeRgSp4xSXn92vNa/ZTXXQcUaoW5g?= =?us-ascii?Q?Lq8e7yHRNaILzYkSaA6Xn7vNLXswgjBwgEYPrrbsCENmcmJG4IhjCYFKMczM?= =?us-ascii?Q?t0u6dYuZxSflxJGD+3kKGc4XiyI9vdK4juWnA4/djU4yWgL3qkwsYSGq8Hlu?= =?us-ascii?Q?bYDHJeRFY40pfsLkSHDI7HoxqxpkpJ3gVjZgS7pdRx3nOK9vTlbKsHTqbFeT?= =?us-ascii?Q?jkXz8jHBa2o48kYvLOAqrla0/XOE5h8O6S+AI0pHcXnUStAdA8r7OEsAkDlm?= =?us-ascii?Q?14P6d/hFfWGpJ3oIYszA1rN+2RPGHjsX0QzUsvfa57Iho2REoc6YJ+zgDk9H?= =?us-ascii?Q?10ul6kqo+a1k967dhewNiKOvyZL9SKi8eAkYveeoarP3Rj1Vj9uiZyTFcldn?= =?us-ascii?Q?qCX4BEsMyvQtJlkVb+k9i9uiVdSnay2TG0Kxm6P+H2ANT1d9wtO8UUimPrdO?= =?us-ascii?Q?SnnIMRZFeP4RzySfdM8PfhqOeEAlD0Ae45UtgJDGLBGhBZUwm5ce76PkvptV?= =?us-ascii?Q?xdRs/Ma6CiE3g+nBsp96Cgg/DLWmhWHzMCWwquEcX+oUh/ndIq0u+lGzkR61?= =?us-ascii?Q?cJavZuY3Gfnm7hgESJ2ZNjXAOMl7fP+kTwa13khhuONXZPIXndU2fqDchJjp?= =?us-ascii?Q?bqSUe6kqQW9nQFnogTTh9GcPGk/c6yEB6uXBm5DttSnxi+0g4/qgTjab0Ic2?= =?us-ascii?Q?NerOn4T7JlE5iFXUlE9zeu6XHS3PHM16wPlDzj42?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 953380a1-5503-4716-3d9a-08dd776d3d1c X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:41.9628 (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: pOVfPZVa5ZvZtIT2/X95VgXTAxQKC/5R/wS1LXRyJn4RLmlqyks7ErqgBNp1XxM0TjzSP4M6LTuc1jkZ9O4jCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: mywOmPImy4QHVBRGhlA6REI2od4smQ8K X-Authority-Analysis: v=2.4 cv=TeGWtQQh c=1 sm=1 tr=0 ts=67f67abc cx=c_pps a=VIUGDxI8SzY5XGtng4SOXg==: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=A9enwp8IFyuUK1rs7oIA:9 X-Proofpoint-GUID: mywOmPImy4QHVBRGhlA6REI2od4smQ8K X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206622369019100 Content-Type: text/plain; charset="utf-8" Split out parts of TYPE_VFIO_PCI into a base TYPE_VFIO_PCI_BASE. The base type contains properties generic to all vfio-pci implementations (although we have not yet introduced another subclass). 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 | 266 ++++++++++++++++++++++++++--------------------- hw/vfio/pci.h | 12 ++- 3 files changed, 156 insertions(+), 124 deletions(-) diff --git a/hw/vfio/device.c b/hw/vfio/device.c index f74b9c25ea..b9473878fc 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -361,7 +361,7 @@ bool vfio_device_hiod_realize(VFIODevice *vbasedev, Err= or **errp) 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 81bf0dab28..090b2f2ef0 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) { @@ -516,7 +516,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); @@ -621,7 +621,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); @@ -1169,7 +1169,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; @@ -1215,7 +1215,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); 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); @@ -1248,7 +1248,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); uint32_t val_le =3D cpu_to_le32(val); =20 trace_vfio_pci_write_config(vdev->vbasedev.name, addr, val, len); @@ -3091,7 +3091,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]; @@ -3260,7 +3260,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); @@ -3278,7 +3278,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); @@ -3302,7 +3302,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 @@ -3342,7 +3342,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, @@ -3365,32 +3365,15 @@ static void vfio_instance_init(Object *obj) =20 static PropertyInfo vfio_pci_migration_multifd_transfer_prop; =20 -static const Property vfio_pci_dev_properties[] =3D { - DEFINE_PROP_PCI_HOST_DEVADDR("host", VFIOPCIDevice, host), - DEFINE_PROP_UUID_NODEFAULT("vf-token", VFIOPCIDevice, vf_token), - DEFINE_PROP_STRING("sysfsdev", VFIOPCIDevice, vbasedev.sysfsdev), +static const Property vfio_pci_base_dev_properties[] =3D { DEFINE_PROP_ON_OFF_AUTO("x-pre-copy-dirty-page-tracking", VFIOPCIDevic= e, vbasedev.pre_copy_dirty_page_tracking, ON_OFF_AUTO_ON), DEFINE_PROP_ON_OFF_AUTO("x-device-dirty-page-tracking", VFIOPCIDevice, vbasedev.device_dirty_page_tracking, ON_OFF_AUTO_ON), - DEFINE_PROP_ON_OFF_AUTO("display", VFIOPCIDevice, - display, ON_OFF_AUTO_OFF), - DEFINE_PROP_UINT32("xres", VFIOPCIDevice, display_xres, 0), - DEFINE_PROP_UINT32("yres", VFIOPCIDevice, display_yres, 0), DEFINE_PROP_UINT32("x-intx-mmap-timeout-ms", VFIOPCIDevice, intx.mmap_timeout, 1100), - DEFINE_PROP_BIT("x-vga", VFIOPCIDevice, features, - VFIO_FEATURE_ENABLE_VGA_BIT, false), - DEFINE_PROP_BIT("x-req", VFIOPCIDevice, features, - VFIO_FEATURE_ENABLE_REQ_BIT, true), - DEFINE_PROP_BIT("x-igd-opregion", VFIOPCIDevice, features, - VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT, false), - DEFINE_PROP_BIT("x-igd-lpc", VFIOPCIDevice, features, - VFIO_FEATURE_ENABLE_IGD_LPC_BIT, false), - DEFINE_PROP_ON_OFF_AUTO("x-igd-legacy-mode", VFIOPCIDevice, - igd_legacy_mode, ON_OFF_AUTO_AUTO), DEFINE_PROP_ON_OFF_AUTO("enable-migration", VFIOPCIDevice, vbasedev.enable_migration, ON_OFF_AUTO_AUTO), DEFINE_PROP("x-migration-multifd-transfer", VFIOPCIDevice, @@ -3405,8 +3388,6 @@ static const Property vfio_pci_dev_properties[] =3D { DEFINE_PROP_BOOL("x-no-kvm-intx", VFIOPCIDevice, no_kvm_intx, false), DEFINE_PROP_BOOL("x-no-kvm-msi", VFIOPCIDevice, no_kvm_msi, false), DEFINE_PROP_BOOL("x-no-kvm-msix", VFIOPCIDevice, no_kvm_msix, false), - DEFINE_PROP_BOOL("x-no-geforce-quirks", VFIOPCIDevice, - no_geforce_quirks, false), DEFINE_PROP_BOOL("x-no-kvm-ioeventfd", VFIOPCIDevice, no_kvm_ioeventfd, false), DEFINE_PROP_BOOL("x-no-vfio-ioeventfd", VFIOPCIDevice, no_vfio_ioevent= fd, @@ -3417,61 +3398,55 @@ static const Property vfio_pci_dev_properties[] =3D= { sub_vendor_id, PCI_ANY_ID), DEFINE_PROP_UINT32("x-pci-sub-device-id", VFIOPCIDevice, sub_device_id, PCI_ANY_ID), - DEFINE_PROP_UINT32("x-igd-gms", VFIOPCIDevice, igd_gms, 0), - DEFINE_PROP_UNSIGNED_NODEFAULT("x-nv-gpudirect-clique", VFIOPCIDevice, - nv_gpudirect_clique, - qdev_prop_nv_gpudirect_clique, uint8_t), DEFINE_PROP_OFF_AUTO_PCIBAR("x-msix-relocation", VFIOPCIDevice, msix_r= elo, OFF_AUTO_PCIBAR_OFF), -#ifdef CONFIG_IOMMUFD - DEFINE_PROP_LINK("iommufd", VFIOPCIDevice, vbasedev.iommufd, - TYPE_IOMMUFD_BACKEND, IOMMUFDBackend *), -#endif - DEFINE_PROP_BOOL("skip-vsc-check", VFIOPCIDevice, skip_vsc_check, true= ), }; =20 -#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); -} -#endif =20 -static void vfio_pci_dev_class_init(ObjectClass *klass, void *data) +static void vfio_pci_base_dev_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); PCIDeviceClass *pdc =3D PCI_DEVICE_CLASS(klass); =20 - device_class_set_legacy_reset(dc, vfio_pci_reset); - device_class_set_props(dc, vfio_pci_dev_properties); -#ifdef CONFIG_IOMMUFD - object_class_property_add_str(klass, "fd", NULL, vfio_pci_set_fd); -#endif - dc->desc =3D "VFIO-based PCI device assignment"; + device_class_set_props(dc, vfio_pci_base_dev_properties); + dc->desc =3D "VFIO PCI base device"; 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", - "Host PCI address [domain:] of assigned device"); + object_class_property_set_description(klass, /* 5.2 */ + "x-pre-copy-dirty-page-tracking", + "Disable dirty pages tracking du= ring iterative phase " + "(DEBUG)"); + object_class_property_set_description(klass, /* 9.1 */ + "x-device-dirty-page-tracking", + "Disable device dirty page track= ing and use " + "container-based dirty page trac= king"); object_class_property_set_description(klass, /* 1.3 */ "x-intx-mmap-timeout-ms", "When EOI is not provided by KVM= /QEMU, wait time " "(milliseconds) to re-enable dev= ice direct access " "after INTx (DEBUG)"); - object_class_property_set_description(klass, /* 1.5 */ - "x-vga", - "Expose VGA address spaces for d= evice"); - object_class_property_set_description(klass, /* 2.3 */ - "x-req", - "Disable device request notifica= tion support (DEBUG)"); + object_class_property_set_description(klass, /* 5.2, 8.0 non-experimet= al */ + "enable-migration", + "Enale device migration. Also re= quires a host VFIO PCI " + "variant or mdev driver with mig= ration support enabled"); + object_class_property_set_description(klass, /* 10.0 */ + "x-migration-multifd-transfer", + "Transfer this device state via " + "multifd channels when live migr= ating it"); + object_class_property_set_description(klass, /* 9.1 */ + "migration-events", + "Emit VFIO migration QAPI event = when a VFIO device " + "changes its migration state. Fo= r management applications"); object_class_property_set_description(klass, /* 2.4 and 2.5 */ "x-no-mmap", "Disable MMAP for device. Allows= to trace MMIO " "accesses (DEBUG)"); + object_class_property_set_description(klass, /* 3.1 */ + "x-balloon-allowed", + "Override allowing ballooning wi= th device (DEBUG, DANGER)"); object_class_property_set_description(klass, /* 2.5 */ "x-no-kvm-intx", "Disable direct VFIO->KVM INTx i= njection. Allows to " @@ -3484,6 +3459,13 @@ static void vfio_pci_dev_class_init(ObjectClass *kla= ss, void *data) "x-no-kvm-msix", "Disable direct VFIO->KVM MSIx i= njection. Allows to " "trace MSIx interrupts (DEBUG)"); + object_class_property_set_description(klass, /* 3.0 */ + "x-no-kvm-ioeventfd", + "Disable registration of ioevent= fds with KVM (DEBUG)"); + object_class_property_set_description(klass, /* 3.0 */ + "x-no-vfio-ioeventfd", + "Disable linking of KVM ioeventf= ds to VFIO ioeventfds " + "(DEBUG)"); object_class_property_set_description(klass, /* 2.5 */ "x-pci-vendor-id", "Override PCI Vendor ID with pro= vided value (DEBUG)"); @@ -3498,95 +3480,136 @@ static void vfio_pci_dev_class_init(ObjectClass *k= lass, void *data) "x-pci-sub-device-id", "Override PCI Subsystem Device I= D with provided value " "(DEBUG)"); + object_class_property_set_description(klass, /* 2.12 */ + "x-msix-relocation", + "Specify MSI-X MMIO relocation t= o the end of specified " + "existing BAR or new BAR to avoi= d virtualization overhead " + "due to adjacent device register= s"); +} + +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 (InterfaceInfo[]) { + { INTERFACE_PCIE_DEVICE }, + { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { } + }, +}; + +static const Property vfio_pci_dev_properties[] =3D { + DEFINE_PROP_PCI_HOST_DEVADDR("host", VFIOPCIDevice, host), + DEFINE_PROP_UUID_NODEFAULT("vf-token", VFIOPCIDevice, vf_token), + DEFINE_PROP_STRING("sysfsdev", VFIOPCIDevice, vbasedev.sysfsdev), + DEFINE_PROP_ON_OFF_AUTO("display", VFIOPCIDevice, + display, ON_OFF_AUTO_OFF), + DEFINE_PROP_UINT32("xres", VFIOPCIDevice, display_xres, 0), + DEFINE_PROP_UINT32("yres", VFIOPCIDevice, display_yres, 0), + DEFINE_PROP_BIT("x-vga", VFIOPCIDevice, features, + VFIO_FEATURE_ENABLE_VGA_BIT, false), + DEFINE_PROP_BIT("x-req", VFIOPCIDevice, features, + VFIO_FEATURE_ENABLE_REQ_BIT, true), + DEFINE_PROP_BIT("x-igd-opregion", VFIOPCIDevice, features, + VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT, false), + DEFINE_PROP_UINT32("x-igd-gms", VFIOPCIDevice, igd_gms, 0), + DEFINE_PROP_BIT("x-igd-lpc", VFIOPCIDevice, features, + VFIO_FEATURE_ENABLE_IGD_LPC_BIT, false), + DEFINE_PROP_ON_OFF_AUTO("x-igd-legacy-mode", VFIOPCIDevice, + igd_legacy_mode, ON_OFF_AUTO_AUTO), + DEFINE_PROP_BOOL("x-no-geforce-quirks", VFIOPCIDevice, + no_geforce_quirks, false), + DEFINE_PROP_UNSIGNED_NODEFAULT("x-nv-gpudirect-clique", VFIOPCIDevice, + nv_gpudirect_clique, + qdev_prop_nv_gpudirect_clique, uint8_t), +#ifdef CONFIG_IOMMUFD + DEFINE_PROP_LINK("iommufd", VFIOPCIDevice, vbasedev.iommufd, + TYPE_IOMMUFD_BACKEND, IOMMUFDBackend *), +#endif + DEFINE_PROP_BOOL("skip-vsc-check", VFIOPCIDevice, skip_vsc_check, true= ), +}; + +#ifdef CONFIG_IOMMUFD +static void vfio_pci_set_fd(Object *obj, const char *str, Error **errp) +{ + VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(obj); + vfio_device_set_fd(&vdev->vbasedev, str, errp); +} +#endif + +static void vfio_pci_dev_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *pdc =3D PCI_DEVICE_CLASS(klass); + + device_class_set_legacy_reset(dc, vfio_pci_reset); + device_class_set_props(dc, vfio_pci_dev_properties); +#ifdef CONFIG_IOMMUFD + object_class_property_add_str(klass, "fd", NULL, vfio_pci_set_fd); +#endif + dc->desc =3D "VFIO-based PCI device assignment"; + pdc->realize =3D vfio_realize; + + object_class_property_set_description(klass, /* 1.3 */ + "host", + "Host PCI address [domain:] of assigned device"); + object_class_property_set_description(klass, /* 8.1 */ + "vf-token", + "Specify UUID VF token. Required= for VF when PF is owned " + "by another VFIO driver"); object_class_property_set_description(klass, /* 2.6 */ "sysfsdev", "Host sysfs path of assigned dev= ice"); + object_class_property_set_description(klass, /* 2.12 */ + "display", + "Enable display support for devi= ce, ex. vGPU"); + object_class_property_set_description(klass, /* 3.2 */ + "xres", + "Set X display resolution the vG= PU should use"); + object_class_property_set_description(klass, /* 3.2 */ + "yres", + "Set Y display resolution the vG= PU should use"); + object_class_property_set_description(klass, /* 1.5 */ + "x-vga", + "Expose VGA address spaces for d= evice"); + object_class_property_set_description(klass, /* 2.3 */ + "x-req", + "Disable device request notifica= tion support (DEBUG)"); object_class_property_set_description(klass, /* 2.7 */ "x-igd-opregion", "Expose host IGD OpRegion to gue= st"); object_class_property_set_description(klass, /* 2.7 (See c4c45e943e51)= */ "x-igd-gms", "Override IGD data stolen memory= size (32MiB units)"); - object_class_property_set_description(klass, /* 2.11 */ - "x-nv-gpudirect-clique", - "Add NVIDIA GPUDirect capability= indicating P2P DMA " - "clique for device [0-15]"); object_class_property_set_description(klass, /* 2.12 */ "x-no-geforce-quirks", "Disable GeForce quirks (for NVI= DIA Quadro/GRID/Tesla). " "Improves performance"); - object_class_property_set_description(klass, /* 2.12 */ - "display", - "Enable display support for devi= ce, ex. vGPU"); - object_class_property_set_description(klass, /* 2.12 */ - "x-msix-relocation", - "Specify MSI-X MMIO relocation t= o the end of specified " - "existing BAR or new BAR to avoi= d virtualization overhead " - "due to adjacent device register= s"); - object_class_property_set_description(klass, /* 3.0 */ - "x-no-kvm-ioeventfd", - "Disable registration of ioevent= fds with KVM (DEBUG)"); - object_class_property_set_description(klass, /* 3.0 */ - "x-no-vfio-ioeventfd", - "Disable linking of KVM ioeventf= ds to VFIO ioeventfds " - "(DEBUG)"); - object_class_property_set_description(klass, /* 3.1 */ - "x-balloon-allowed", - "Override allowing ballooning wi= th device (DEBUG, DANGER)"); - object_class_property_set_description(klass, /* 3.2 */ - "xres", - "Set X display resolution the vG= PU should use"); - object_class_property_set_description(klass, /* 3.2 */ - "yres", - "Set Y display resolution the vG= PU should use"); - object_class_property_set_description(klass, /* 5.2 */ - "x-pre-copy-dirty-page-tracking", - "Disable dirty pages tracking du= ring iterative phase " - "(DEBUG)"); - object_class_property_set_description(klass, /* 5.2, 8.0 non-experimet= al */ - "enable-migration", - "Enale device migration. Also re= quires a host VFIO PCI " - "variant or mdev driver with mig= ration support enabled"); - object_class_property_set_description(klass, /* 8.1 */ - "vf-token", - "Specify UUID VF token. Required= for VF when PF is owned " - "by another VFIO driver"); + object_class_property_set_description(klass, /* 2.11 */ + "x-nv-gpudirect-clique", + "Add NVIDIA GPUDirect capability= indicating P2P DMA " + "clique for device [0-15]"); #ifdef CONFIG_IOMMUFD object_class_property_set_description(klass, /* 9.0 */ "iommufd", "Set host IOMMUFD backend device= "); #endif - object_class_property_set_description(klass, /* 9.1 */ - "x-device-dirty-page-tracking", - "Disable device dirty page track= ing and use " - "container-based dirty page trac= king"); - object_class_property_set_description(klass, /* 9.1 */ - "migration-events", - "Emit VFIO migration QAPI event = when a VFIO device " - "changes its migration state. Fo= r management applications"); object_class_property_set_description(klass, /* 9.1 */ "skip-vsc-check", "Skip config space check for Ven= dor Specific Capability. " "Setting to false will enforce s= trict checking of VSC content " "(DEBUG)"); - object_class_property_set_description(klass, /* 10.0 */ - "x-migration-multifd-transfer", - "Transfer this device state via " - "multifd channels when live migr= ating it"); } =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 (InterfaceInfo[]) { - { INTERFACE_PCIE_DEVICE }, - { INTERFACE_CONVENTIONAL_PCI_DEVICE }, - { } - }, }; =20 static const Property vfio_pci_dev_nohotplug_properties[] =3D { @@ -3632,6 +3655,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 cbea3be029..4000ba804c 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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206593; cv=pass; d=zohomail.com; s=zohoarc; b=gNnxONlMTXbL4HiJ3ohJ/o8H0Lc+PT3jJQYP0d/CxlU6A09/S1KQocZKfZNyvjOpjd8I9qq6GhVDh3oCYl2BQrxQqlMkJpE9bgqBKmXy6mbdJFwMU+M+mMn3j1gGf902EAbDeEFabEfxEsX75xKLAkaR71e2YRRQBNnLtz5ohtQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206593; 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=icqY+0ndLgLvbnshgprH45yu+aYSHBxbrH53ZmSoBT8=; b=VtuakkoCSbTihvgsOCbp0ONI9vVP/KUJSXNkKM0lrVI2zy1Mt4+qGe0jPLvwK98J0rGIz9K0v6ELkcPIkHnOHGue3ncY/II/h4+Pho9AYcy+keFqI+563Y+ZEJQSBUCAA/MrbEpYQhi/T5Y0jbAurdoyLDKdEaCNMC1GgLCJlew= 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 1744206593455845.0944694339229; Wed, 9 Apr 2025 06:49:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vo0-0006rT-OM; Wed, 09 Apr 2025 09:49:28 -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 1u2VnX-0006Zj-Fa; Wed, 09 Apr 2025 09:49:01 -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 1u2VnT-0005fo-LE; Wed, 09 Apr 2025 09:48:58 -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 539AOBIw003397; Wed, 9 Apr 2025 06:48:51 -0700 Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazlp17012038.outbound.protection.outlook.com [40.93.1.38]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u22aj4ux-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:48 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by MWHPR02MB10356.namprd02.prod.outlook.com (2603:10b6:303:289::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.32; Wed, 9 Apr 2025 13:48: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.8606.027; Wed, 9 Apr 2025 13:48: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=icqY+0ndLgLvbnshgprH45yu+aYSHBxbrH53ZmSoB T8=; b=pwIeZxeA/vsjhlhMUABPAPHt4+aWnDyXkwqFjKneFlGqN/QwrjAkxBO4T geUcpr4r66ipCOGg0Oq9dZV7EYAhPGImzfLQCC4K32nYwuTNml9yoL5s/FSemYNX +l055O7DGP0cZPc42W94VQY+tvSCTfDvm97fx2MYLrzOxq9x8CV3cyD8hb9GfPkP CKQqRMMeLvESOpNFJmMuGg8YtkshLJw7zK9afGl/2LV7NVnarexE+nPVj5cDQC7G UvLOAqaSc2ylzRG9WXbdHUoKTSNYuK6tI8JsWnmZtyKArTBJCTM66GmfZqQ9l+Lb ppEirt8m8NhJFS+4jLPMrKBQgQBJA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wddFmyhLsElIUNrG9iBowwgzBS8Nl8R8e6LulF4CEYu7b8nRmUMq8mfKKb71E1sTS+iIhZJa3ataXSwYn8oMHDb2Nef8qd/jjCyMADQjpj38NgSX5e8G4Sx32ESNnq+orZ6NVs36mZ/hCgwYmcODELSwRAj/9yiDf/woHaCRAUxBcn0aVi8OxU/UzE0mQpaJwhHB4nTcb5JYabW97BOaWj9szTZhWCQP21CN6uicLs5i0r/B0yPeSSVeMQH+zuWwBvFf93t3oAFKyFK9zp6yLTcpctobW1NnhhFE3TrGcK0AG9QfGsSYw3Qo6FDGw02l3fDNUbd5KzjISZfi2NCX1g== 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=icqY+0ndLgLvbnshgprH45yu+aYSHBxbrH53ZmSoBT8=; b=XSDJGMU0JzAuu4Eyrmw4jvz7FO8t9g7TYsYXgf3LP+EcL41QgscNmnrlLcU0KlrANwOi8uUCC7nvh3QVE7ZbjyvbkrmdtMEqq2gMI303dKmuCXn7dWEKe85a+E5IGClMVbdsQGQCHoMnQSvM0kp92ol5PZYd45d0JjACdpbNXfOrb5cbrSvmsEktHAwRrlDpxVa0HeiMxatr5l3LKMYtJEvcoXsa/XawF35+FvXJvRR7/Z4NzVhNe3nByr9JeAR2uj/OKfu8ptNE4V04mULPcgQNNq5aiBCuMAMf4MnxwJ1AVdotSTu5ngZpNiRqLz3DfcjJuNEXQXiGFHN05VhB8g== 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=icqY+0ndLgLvbnshgprH45yu+aYSHBxbrH53ZmSoBT8=; b=EgEh2i655UxXsSPRJOZgCfzgihuXhUwgx5Dc9Iz1op7HlZimKpAWpg70GhIQionhn1c8K45TmBSMUioENTlkOFV0CtlUtyn8ugBYUjGMrn0lVN+38Um0NavQiNuGEq7+YYzrm8GT29u97q8cFarRUH+O+8/cSd8wWQcWyYWerMch47mawhUGFVxcOKvInpYHoACRCaorBT1xAI+J3oC4SS/REMzy9NjJvzaKmQSqrJgJdL7zBE11gBjgHM5bgfv8kCctl1YOfzVzm7U1Vdgh6iUDJjU3VHdmtTwED3W3QyWmNkMsiYw343GQSruIB2ogTagO3FBuvk5qkq44zSBdWQ== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 09/14] vfio: add vfio_device_get_irq_info() helper Date: Wed, 9 Apr 2025 15:48:09 +0200 Message-Id: <20250409134814.478903-10-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|MWHPR02MB10356:EE_ X-MS-Office365-Filtering-Correlation-Id: 647d1eb0-3713-45e4-39fb-08dd776d3f18 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?/mkDEUJ9dYzbx7PuEfD7pOPjKmMHnRf1CprmKr6WmYJyGoefjn2uM3pOMhc/?= =?us-ascii?Q?9sosDH96D7uFZf5F6pFgoy7T2jOGeYgQSYZMB72k0WJ3WS/4OB6DT/9WpcVG?= =?us-ascii?Q?rCNBhLLoS4P3NBL2bQ4bGGpebNmFi7P85hufaV9OIeVmazwn6y4TYbYUjdvg?= =?us-ascii?Q?8X4wg35qPEVDvy8wLiwVoYzxzb8z6kASp7mjTEouL4LXWbrhHjxkPGm9iDQ2?= =?us-ascii?Q?wmYXhKTo0qhdKw8Nge/lb5FyT41+yXlQTfVjOBIHg4wEpuE5L40KuFyzUYdC?= =?us-ascii?Q?CcxlRCjis//J9vaDcpV0oDQioNce6Qk/FuMUC9C23kC+Hp6NQriyJFYJ1Yys?= =?us-ascii?Q?d6DRkmSQhICG8tb+IPLPedIsjXqk3C5VQkBPAhTxoJtCdchfDZYZMziH6gAY?= =?us-ascii?Q?Hlit5upzN5AYUxRmLRAxj6PqII4SHjexLeatRWByBYadvSQHcvgvD/Yg/Slm?= =?us-ascii?Q?Y0VWNDen7YgCQaUsh+dDuioDEhJl5CJb8Ttdhm70kw9YxQKMC3SUEApRWwb8?= =?us-ascii?Q?aIlkZJseFMgJgNGXlkZ3RR1i1OTUBDtSRhXLdcrQv/8KKgh+AILVIi9i7C6+?= =?us-ascii?Q?T1CbEkaBS+UMPb3GDCq52FlMXDXcMnieJRZ3KcsrcKjKseuGq4i54hgD7s1R?= =?us-ascii?Q?BxcVzkFELexXv3L6/2kkjzayGBYUNUqwZDa5CqKfGynfR7coetc7aF61FHA4?= =?us-ascii?Q?K0jELk45sPBkRT2169iEa5nnd6zb08ENbiIXnzv0I235qCG/HOqLHCbiPjms?= =?us-ascii?Q?pKdC4Wgvf2orJGcAF4IEAaVmarl/Axhmd5LMyvogZfLKsvH+RSLl5KaVaV+5?= =?us-ascii?Q?Xm7xbmu3Gv8OB5v94Phps5qvxXuMlEvVerTwk9lhNfpmwZJSxsU3PhrXm4X4?= =?us-ascii?Q?Y+Z+8Pn5qubHmiyz4dotbfWx0EvnF5gHs2IozeSmALqPOLBbKXPI+aJDA2S7?= =?us-ascii?Q?A7W8qCf/ZGTrl1+aaD0pqjjFbBbB1AR2DcZZF5X0pxhXBoy8mXWpYjeKTOgq?= =?us-ascii?Q?3Uq1HPbP8yxjnelj4/rHVmw5ud28M9lE9FuFXdaZJZy24Sk7qIZ0hYnI3jjT?= =?us-ascii?Q?EK3mUDZC7gZ5b9wWyY4PyMeygPBylV9Pv76RDACyO2pFHchGXD4Sh/1QMZg3?= =?us-ascii?Q?ad1ZpSRQzsXHSNisooY2PqUdOlFT3nlcQQzWs5BunurKUpYjJIHnVtub4uzi?= =?us-ascii?Q?wfdP4jIcR0wU1hQkj73H3XvUpJQilzE8smfNlHvCluaQJzL069Ehqo1kqyhO?= =?us-ascii?Q?D8zKl4SaxqcLF98YGdeFDoAZPh2uZZbPDmxoeoGkrqBr5rvpuhVZSLO/8G5y?= =?us-ascii?Q?YONoPeWdPZNFyoTFosm5Ybbscn+HQUKp2OGpAKyTSzOO4kcKUOJMxZx8SOSk?= =?us-ascii?Q?i3hH2UyF3Jk7gLbja5dAqq5xxO+K?= 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?OIOQF0oEiJLnAbyCt/HW1KjJCHV83935meZTBsSqHYj5u2b17+urNpi0MhbA?= =?us-ascii?Q?1qQgY9VNCJEvvtgXFbWizN0UTKR0WIUD4Bhe0BrXFrMzD1NFgU+H1aCZz5gb?= =?us-ascii?Q?EefpAj4odL6/mo4L2/8YwpUqt0laxGr5nYZZBdrnsUZNZkrL9lX5F8MmcqAa?= =?us-ascii?Q?Ab6/gMNC66Cuk0FmKZqY3vHMqHyxvtZh6LdtosUNdwc1/cjsRVTQgVMQ1NN1?= =?us-ascii?Q?RrK9oBkh0WXF3z1hS2H9G8zwCm/54vaOEQrjKnkgqGHhXr4U6U8/robZNhD/?= =?us-ascii?Q?amO2dIRLJe5wTy5SewYAcRLZ4CvVytDa1f7CFIlaQ2256oPj1vtxBlZv7J11?= =?us-ascii?Q?r4EBFP+PdmjXmDZNuJDodosTErz5r3eOVFnzybrtmE5MUrAFGVyrI8hZ8FdF?= =?us-ascii?Q?pCyHxmRtUaFv6+jgnxPEJvJ79EANt2eiqmiwU2sB0/NzJOe/OT/8VrK3JE12?= =?us-ascii?Q?KQeh/xJOXnNLquo9W7oH+CpTVJi/hVMH9r/7iXCwZCl3SgKhbiouWVIMlyiH?= =?us-ascii?Q?HOvIbAosDWSaAuu1ow8Z6e+nWRq0eQYipC7nvF64dvFJr8xVvsvB23wZ/Duo?= =?us-ascii?Q?kuTwGNy75+rVk8IkRrtveZsKYeuhiDVm9Q9VKTQM9Cyshz26vTlur3Y82STt?= =?us-ascii?Q?gp63Z7zrzViC4yXEH3rsf9wqi+RNDrPCBECc23HAC3pdKc7u6CYufxA8Yd8w?= =?us-ascii?Q?iZEoq3E7uTzQn77UaroxxMmoDYdU3Zp/j/WnrQeArn5GH/upk9HyhL9lK1H1?= =?us-ascii?Q?G3Xrwx79FrMZ5EqoLY1p3i8AgvTKJUova960mahVhfHvy6ypDNxVKV1WG1PS?= =?us-ascii?Q?rWvzVdRY9WxTsOGIetn/qOJ696rUIvmmBsISjlSCP/oiiXRD8lsUE09NRooJ?= =?us-ascii?Q?7mCdPCuwz3uKZHbF56DnLvxMaTuRwrmWZcncyWn26knbs4w28gW9O9nsPueA?= =?us-ascii?Q?kbUlFqJ6trwT+zezqV4ozgo6lE9IB2B/rKRef8uCeVcAlXTJTSZ4Grjugc0I?= =?us-ascii?Q?B68U31w3CR/R9Er4hD6BdQoDqV/s9n4XWPO3hew9+FuOAWzEwUGdmKPewEWH?= =?us-ascii?Q?H2JRggQozZGTAy7f5MBGDw1sY2gwPcFenhvXls88ICnozd3GTMx4sakfh1Vs?= =?us-ascii?Q?TYv+/AFOznHh7aiZuEE3IjmZfPvAQ+42nsrpvWhhDhxwKW9IXyNMhPzR4LVD?= =?us-ascii?Q?raNuAa3z8GVQi+JNjRxmtaFroXNWfZWA2npAP3rAyIoujPAzR4gm7a+lnuNK?= =?us-ascii?Q?Cijfez3Pir1t95ettk3eqpUW4MDYRvLuAeXVcOiK8XyODoy2vDiOdCIoNA+j?= =?us-ascii?Q?yA3r+H0FklUsnDV8w9CiiFe1Ppua6TLK7mF68zhCyI24suTumXfjKcyqH04C?= =?us-ascii?Q?Qb6FiOfynHzVG9FoBN4DiSqTLa5jRyIulmY4OkdA6KRNAGa2VbhjTdKWDY4w?= =?us-ascii?Q?3epL5Mfwia/7VRdeQdyP0/4tTgJ94L4QToymzY9u94/MInKuYEj+FcI3aB+c?= =?us-ascii?Q?gHe1SPTCvMECTKyphnLWGdcfDd0Dr0mmt0l4uDBHfqmEtVMBEeMPKsDKLFU7?= =?us-ascii?Q?6KxMCwFw08GWFDPbifRW83t+84ycUoJuKzifwBLz?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 647d1eb0-3713-45e4-39fb-08dd776d3f18 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:45.1627 (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: V1pcjSTL5EoPvAFUwGvSM9/nLQnhCVvgxgX/fwiyNOeNJbaiNpljEDlcnO4vG002jZQT4VcDUJLXe07f7JRXiQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR02MB10356 X-Proofpoint-ORIG-GUID: 4HP9G15rMBbMBzSF_wu8oy9rxqzdgKkX X-Proofpoint-GUID: 4HP9G15rMBbMBzSF_wu8oy9rxqzdgKkX X-Authority-Analysis: v=2.4 cv=Xtf6OUF9 c=1 sm=1 tr=0 ts=67f67ac0 cx=c_pps a=a0mreH8AhMfks3Nq6fhO9Q==: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=vT2z2tywOHHVet3RVBQA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206594974019000 Content-Type: text/plain; charset="utf-8" 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(). Signed-off-by: John Levon Reviewed-by: C=C3=A9dric Le Goater --- 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 4af7379d4f..f311bca5b6 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -74,10 +74,10 @@ static bool vfio_ap_register_irq_notifier(VFIOAPDevice = *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) { @@ -96,14 +96,15 @@ static bool vfio_ap_register_irq_notifier(VFIOAPDevice = *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_errno(errp, EINVAL, "vfio: Error getting irq info, coun= t=3D0"); return false; } =20 diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index 98aa0000da..dac8769925 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_errno(errp, EINVAL, "vfio: Error getting irq info, coun= t=3D0"); return false; } =20 diff --git a/hw/vfio/device.c b/hw/vfio/device.c index b9473878fc..2966171118 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 090b2f2ef0..ac53c43f2b 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); @@ -2737,7 +2737,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 */ @@ -2798,12 +2798,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 { @@ -2912,17 +2910,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 877d69b7aa..fd176c18a4 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -475,10 +475,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 3563a82ede..9522a09c48 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -144,6 +144,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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206716; cv=pass; d=zohomail.com; s=zohoarc; b=ekpVQFhY4FGTkLs1sKZC9XhJjg6DqjkwiE20pVjX/GuaRiE1mAol6Bb6sfrBm5KQiX9doQ8Vqic2EFySA+B089z9Bi+LjYbEf1qrFkWWOzTnVVhWAL9ePX8vxOpdyLlSe+2qKPBcFEjFYsCG9d1pFx0EXOn/VTb/ifwGRNDDZ+U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206716; 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=nwmmnUnobENYkF8KYjPo7qqtQ42L2fuSLVTh2QfK/5s=; b=D9l7CzeYAPvrmCyXJIlj1zTDZfvuneL7olFaV81bpUJB3npyHc/MqZmQ9MZwgCSLb4xS+CHsGRIOVroUgkrHCAQWGGGyshfLCawtU7tol5kCPfi0XzdsZRTa7FZjYBwO2e9MtRS+k1hphnhctf4I9CnivZPEzA4ZpXR/OPQWCoM= 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 1744206716674845.3663811985923; Wed, 9 Apr 2025 06:51:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vo6-0007C6-NS; Wed, 09 Apr 2025 09:49:34 -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 1u2VnV-0006Yz-T1; Wed, 09 Apr 2025 09:49:01 -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 1u2VnR-0005fd-Lx; Wed, 09 Apr 2025 09:48:56 -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 5396ShdK013354; Wed, 9 Apr 2025 06:48:50 -0700 Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010007.outbound.protection.outlook.com [40.93.1.7]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u420syja-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:50 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by SJ0PR02MB7486.namprd02.prod.outlook.com (2603:10b6:a03:2a3::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Wed, 9 Apr 2025 13:48: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.8606.027; Wed, 9 Apr 2025 13:48: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=nwmmnUnobENYkF8KYjPo7qqtQ42L2fuSLVTh2QfK/ 5s=; b=MLwADNq7mAlhQ/UhaUf577naDFSo1oueDh745lciWpn2aGOBK7t5EBksl 4LjHBl/97WhRRMt54myhi3kmltQumZ6gY+zzQyiE0rkzzgxNK+/20YNQYblXRbGD Cl3tJXnrPO5vonHKJpSKOGHrMC1m9/B2hLCe8RScDenI9RYew7RDq+fjg/6iicB9 strmST3gQfgZpw5N3FfKmBUcqfv84KZ4IqM5srvEuETv/OIqPIhV7z1etIEJK/uC GJBw0AOPQuhuNh4Y2pFtgGaPf9Qm4sbC00g6m8BS257YyqLh9Mt8gd34NXc9NRLK JOWIuB0nl2QHiRJ15nYHLlPo28CsQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mT6P3RLSiVWDjzXJEW/YqYxZrWsmtmxVqbAeGF+mLcJSEdOg6r7WjYwsWKiPwnRKGkkYkkOWY+oAMCZ9+XJv6vRq6U0PNIGYLENt3r7eoyGoS7dvXhpKXwGp62945o+x8qBXddQR1zB81SFqlI5CBUOQ1MmRbUDYTbEVRNSAXAPG5weh8U6HSdsCf1pVMiMfDmIV5IaahN6WuidxDKT0zU9P0IZ07HE8EkHQ/94gSwH0fHGtXCU8SjYs+vygJvARJX3caSHM1F+VWiMikex1UbNODI7t8W5llJrG8Q2ZScj6sPdjfAsXZ+22jMhMRcfQffanxa4PFhOw17lTN4exDg== 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=nwmmnUnobENYkF8KYjPo7qqtQ42L2fuSLVTh2QfK/5s=; b=A1RBN8e38LaAKQJr9T3B1m0megbeURop46fd5ml8arhZ4QUwGJMtbdRdKRxuVuyQVufFcaq9b1EMEhGleu+9qiikh4GNYj93UlwziryFMm9DqHGfj/SGlD1w1foSPxe2Z6WfDSjp9x4r2aTvDyAO2ggvu9fyXrTf9qqkH6+tHLXQqH/9CQys27EmbKfXv3C0gaRzvafhle4nt7Acb9AucxRFWmmAVKPKSNMYmEddrdW3QI3zi9NL/P+pG6Lgxh/IZNSp7xjjH2ClOrDXLYtEQWIBtNWdZVmz+hC306d+jhLiFGTVN14GrwNAXJwf1f9vFWluK49xh01p6g8ZKizp1Q== 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=nwmmnUnobENYkF8KYjPo7qqtQ42L2fuSLVTh2QfK/5s=; b=JIHMvIQjeCH/PWk04tEsA/bJVRy1f6J8lAZYq4Se3q5YqwnJQUwfHyS7+ucJG4NpoqVSHSrZeuE971rxfd3dIV6MTSwOV5dq5mxOn+2Wnxpfd7uzxKe2w6gket2kWBgXVTrR2tLVU2Wr54KIGM7QM1vGVHJtKpXo2YoZWXQHsyzjM7TvM+hwUdVQVjIHoxPgRi0HeXk1RjBE/oAYmGcJIZFhuFUgXI5lPEq/xu2ILysK7Fh3YVz0+bFJvu4g+w8+5VgKPK/R/+RbLEiq71mnn+IwanfBF0N1IlZvOmnGRj2knxg+dx/BYKzsYmtE6ycixF7CA8zGx+7FdLMosXA5tw== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 10/14] vfio: consistently handle return value for helpers Date: Wed, 9 Apr 2025 15:48:10 +0200 Message-Id: <20250409134814.478903-11-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|SJ0PR02MB7486:EE_ X-MS-Office365-Filtering-Correlation-Id: 56dcffd7-f0ab-4b34-ccbe-08dd776d40b7 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ISl6Uxr/KVP/jizMy9+fup5Ae6JnYl5NdQxI9rmZqTw0bBymiWkAmzCIMG20?= =?us-ascii?Q?lTKJcbnu91WEnUicHCEPAGK3Lcq7gNLN1yEmrVOST3o+TPF+bznwdLp6vFPM?= =?us-ascii?Q?rx/LXG1aU/DhtIimWsgwxRlO2z1tIrS2C+5DP0rKLxFEgH2NXof9idh7/IFw?= =?us-ascii?Q?IaAtE8+CmqfkH72KN2jZhbAhX0QmyRaDVkGXA2YZzBbgxCeaLinZgzuLbglN?= =?us-ascii?Q?daK6qoRxWe94v7+HgJFUY1ooSXXeZcV8QhaX3Rxih86z+xgmonoh5VunnM9y?= =?us-ascii?Q?l84zAcKuLKgsLekMlPPa5ZXtfF9Vv3oSQJWhS1UUuP3t+5qBYDFNNsQa/mw1?= =?us-ascii?Q?97VNbzSftzR+XzT3mNAGMJU9W5vtU/0pVal3B1RzdirhmwiG9hrmMskDmNnB?= =?us-ascii?Q?/8qZZaJWHCLCwabJinfJVXFcKbS7EsxCx7dJR89W97zpPUeHK1v2v3nrFu0v?= =?us-ascii?Q?Jvps0DDmVJkbF3qzrpRCoe0aLJ6eqM8HURCem5Slm8EX5s2k2U+1RWHssZtN?= =?us-ascii?Q?siyBnOqoZThRQb1wuV+smPUHJPltOsJdjlNN1xDc9Yu7H2K8ylXyyeNPwGHp?= =?us-ascii?Q?Iyc1rY3g94bq9qjmJTbwUDfAz4BtiCZ/bqM7B+Vm1vR99dfHPb8XnXsnyyLJ?= =?us-ascii?Q?+c+/m4td9+7gwJ9g+2E/MakMvtYR3nnaEf0KIDqQUyiUHeRwBii2Oiv33Jj3?= =?us-ascii?Q?+ik7tWBqWYV2gEcAmzp5h01FrkQHxwm0eL7Wkv61jNFqjGAnAJPglbmL0Z5s?= =?us-ascii?Q?IWaqcm9mPvaK4quEkIeqTQMrIeQsXnFBxGZuL6aqfdhOOK6dLrgpatyG9FXm?= =?us-ascii?Q?9CaTpyoPMXLJpxTA6DRd5Q9VMkK5cSGeEOKgWgouTFQrZSpP61c4UlfJ/IiL?= =?us-ascii?Q?NonPItBMRBGQafpEBlSahoygP20H8YPGKdZtzvIig8D/ZlzXpWNSTWXRAc6Y?= =?us-ascii?Q?pLHKHCiQ87SXhqhSH7Ln1MakZAuF/Hj16nQy1Jmt9N8DiqcZ1OoPhCzugeYv?= =?us-ascii?Q?NC9/Gd5qbF8pIGag58COiSxdVVVWN+31ZjDoHIZIU0eI2QH5KtIvT7SnHkqz?= =?us-ascii?Q?yo/iz/Fb553WHM9L6NiDgHs7wbnpVzDQnropjzbqQrx3KPm/HbIqAILZqWg0?= =?us-ascii?Q?FemnZ5ic74KFfNDDFYH/AfJilhSNBsHhsoe+K6B5TgqAH9Fb6XcoxfFD0WoG?= =?us-ascii?Q?I8oiuSltBjwoYr53HirumqZ3p0C6mSRlNnahwmuBmT02YBlrvvCiBdyMj59U?= =?us-ascii?Q?tLkMToOkZPstiUyN1rh/dLjSuMZxUdb8xbEEf/+PkeRWjMHFjfjUDF+3uLxN?= =?us-ascii?Q?Vh7zMddOKX08VICrLVzPFxbyAQ2Hycd/XIdC36+04/BDdn/oPmQ+BMdInM4o?= =?us-ascii?Q?MV4nPIYbo+Jae4wR14EggXRD3dLfWOqJhD768F5kS4LybVx1Yg4rpwGdJwMz?= =?us-ascii?Q?YNzmyk/x+4k=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)(376014)(7416014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?23tuX3Pzk8aXIrz01ElEfWmPPjQrhNmHZR1JBz6jEbS0KIR/D9TjHa+lUGKi?= =?us-ascii?Q?1uvsj/Ay3HJs7VeCeaxWCZ0/5oov74VNfHx4xCowrQrTHJjizPnOH+qLCBCM?= =?us-ascii?Q?uvMeMQpBrPl6zCl7MoFTvGPsyjqPal7fQT5L6X7nSWnjsJnMiMGUevgmb260?= =?us-ascii?Q?GhVbvscVEme2R9q/vQ/o+4FxqM7gmgsOuIbZfiTlzl0Hkuv+Sc1aO1jeICsK?= =?us-ascii?Q?AcgzQQBZL50lSWcrU+t15eRILWSu54dsiJXw3miVBQHIwHs/0G2X+xlkHSBP?= =?us-ascii?Q?wjzAxzDmrDPiFtCfZ/G/DOMAb2CzzKO9pWBjkOj7Ynz666YJhmLf0xU3AOoo?= =?us-ascii?Q?NAZNOjk63hiEDgX6zTGe1h2BQ8B3bGZMzQfD7N28YZtAt4sBJtZdxOMtOTWM?= =?us-ascii?Q?PnFSsjAhENuJjMYJF8y0Kj3JORB99eF+mxqqwiQvJJL+9SRSRAJKp5L2Y4bq?= =?us-ascii?Q?UyaT+FDBcBt5jFaRPLt8opEvskmkAV1vN3aex7x8dYVKEtlmhj9DEV8dn24V?= =?us-ascii?Q?I4kbwTzN1XnWKqEgPFNHF4WnXooffpNEInGxdHN9+2RLnv0+gp5xwmukTaHg?= =?us-ascii?Q?4bLtCofhnWijcsBXi4lUWYyAEq/O3BwZWYz7ZfN+krhEOMc0iv+6G2Jbdip1?= =?us-ascii?Q?qvxbqnLxdTrVyiIAfikeOrqr84D5nHTon6hlAMtov+ZMAYICMtn3nifwv5rp?= =?us-ascii?Q?BY06qfEdhuZaHNwPdFEGLjZsYW8E9ZuniVv+rT3mfluIn4KEdlgpv15JAv52?= =?us-ascii?Q?084ZxVh4lzkOZYHJo3rxG8fvwjDYz9CGUtkBaGB+9oMxMWFQpXozurNyV6MK?= =?us-ascii?Q?jiI8P1sEW25SBshdcM4MYZPqqIXEnqMHnEpaA5UdwBv9zEaxE2BjtWtFT4OJ?= =?us-ascii?Q?Ho6UHadGeM7V4OSpCuEQtL82Rtiu5c2gMd1TbfKYaSPCUndxOh6O3sanb206?= =?us-ascii?Q?hHMhRBIlDRB6H+crd5qT/mZlCFaQC7T9pUOOgA+gVCGd2LN+iVG9n4sUDJlF?= =?us-ascii?Q?wzGdBuSaQDKZ+ieTFw5lT+Vr/AGpTak+y7+pT7HhGseVvQo5Ssx4BVHz710U?= =?us-ascii?Q?MslLSrz9YwDAoUEMpoLkcru9++4iI6r18tzhNltxCJGcoe82rDo7x8/FJruz?= =?us-ascii?Q?9KEwYBXHNOTXFVetQCnO39/RtdHQTbLNNUg/bk+dToh29ZxHrBJ/cLM/ZgFY?= =?us-ascii?Q?nzM46ll8HZX+8mGLKZUlhLP6uO2fIgXFE06ugvgb+9HgrYR1fpE0TAsi44IE?= =?us-ascii?Q?bv3GCUEZjnomOugJqx50HtiWL/vsRbQOktLzm65jO1BWrNSDU6EnzPEeAW+H?= =?us-ascii?Q?K8p2weWX+Ce/8wlZi9JSfx8lGiFVPYCHBrVzNqx99FNwMaloyhW71utXNUJe?= =?us-ascii?Q?b+Ahg4o5jK7hO4Iv1am03j1Z8AxQhzKBxIktkTeJUD9vzjS4SPmt+8ymwg0v?= =?us-ascii?Q?GSdoOXsNIq/cBe16BJ8mCLfJXgw/gTgtb8vqPzQ6B7d0my6P81yLCJVuu7Ip?= =?us-ascii?Q?xdBsAbMXRHaFd+5qY2Dh8xpev6tJbeHi6QKA+mULacClLYkbLQRLUSyfvvwu?= =?us-ascii?Q?egQmfJz7qFff+A3B5N5iC2vThUO48Jt0kIWD3YVX?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56dcffd7-f0ab-4b34-ccbe-08dd776d40b7 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:48.0068 (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: VvVkqZPjd83VMYbE4QJxCFmxUqzbmxu9ET8zdJo5k31HxBSAnrIsCy/Hge45XoLFuFsJQvvSzwlg7hpxmMrYXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB7486 X-Proofpoint-ORIG-GUID: Mv3f3HDl2zCKDGwW74O2DKeogNCRyxMi X-Authority-Analysis: v=2.4 cv=TeGWtQQh c=1 sm=1 tr=0 ts=67f67ac2 cx=c_pps a=+1/HLBYLL4tv2yjlBWnClw==: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-GUID: Mv3f3HDl2zCKDGwW74O2DKeogNCRyxMi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206718389019100 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 --- hw/vfio/pci.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index ac53c43f2b..ddeee33aa9 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,7 @@ 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, %d", -ret); } } else { Error *err =3D NULL; @@ -695,7 +695,7 @@ 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, %d", -ret); } } else { /* @@ -712,7 +712,7 @@ 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, %d", -ret); } } =20 @@ -765,7 +765,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 +883,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 +906,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 +917,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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206752; cv=pass; d=zohomail.com; s=zohoarc; b=XbdyG9VSp3ldRQgfs/bakydq4KK9E2ByWfv8dpnxPpBbpN6ByC/XadnlgjiN024pXw4tYcSMmjvxzweMk0W4PXFXsmqtQVGRbR+9bytv63yYgcN8qs3ExIXwk4SaBR0N6D8fBpUpY3wdDa19GYyn1k3kJV46n5kT50MWWblOZ0Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206752; 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=WBtodLEUiNa2GOVf4/6i3ZIGHgcW33zMtZnO00P0fko=; b=gU5MrmX7S5but+9f4jWgH/17ZdcB5Lp9M1xNCEUBySM8VYgmiwdIXEfVCoPs2hQlgnEyGPjBe4ZqyTObG7skCsVFnqzvNxW8geEk552oTzgTZG1KGibyYgC5f3T+Ntcb6eEnl9h78bszR23fdGMU7h0T81YnTN+oTDADdGgGhOE= 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 1744206752222516.0374275889232; Wed, 9 Apr 2025 06:52:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vo7-0007Mz-QF; Wed, 09 Apr 2025 09:49:35 -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 1u2Vna-0006ak-1c; Wed, 09 Apr 2025 09:49:04 -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 1u2VnW-0005fy-9N; Wed, 09 Apr 2025 09:49:01 -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 5395fx1L010967; Wed, 9 Apr 2025 06:48:53 -0700 Received: from sj2pr03cu001.outbound.protection.outlook.com (mail-westusazlp17012036.outbound.protection.outlook.com [40.93.1.36]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 45u3kksbja-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:52 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by SJ0PR02MB7486.namprd02.prod.outlook.com (2603:10b6:a03:2a3::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Wed, 9 Apr 2025 13:48: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.8606.027; Wed, 9 Apr 2025 13:48: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=WBtodLEUiNa2GOVf4/6i3ZIGHgcW33zMtZnO00P0f ko=; b=xfcKD4RDyKvVpq45MEVRC/ude218RuLMa2GVEHn62wSX00HVU5V5C9Lij O4VaU/yiMbE1lnAUfqotvfxg7eNsPk9w2Vj5wBgms/qRerjZvKobuzXtGXFHbqOT m/mtjx6dJ/sEmSubs0Cx/8rSCq8BwKFv3pEl3ACgm+KqiqpJ7YvK/IkKK9JE3uHz 5XZskh4zjoJljwct2a6p8MigvMy6ruI2ZlWZsPHSKwsXNZVVfALUsxx9PcNsa0eS CORdvnFfrU5yLgv910kp98Cb0thYAKD/KpJNDocgwEEqwPOrnoQ2lXeDa/bynlLX afo94OyNS8OGpu2hwinO8ZKewYDCw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Llp+WSXA2w0jchdZzTA+KW+rsIlVmT3hDN3a+LCMaDJ7FH3Rb9wrAQoVRBavPHNM0POiH8T8V7WA5QV1rFeVgEnPgezaUL9MRvOXsLX74anCD6+RTpdoyRupTtWk2TBgzUlPJAt3fLINQ/jeaAwf65JYEmJj+Jm9jpQia4RcmpihIwZKBrOZCHc9SQm1I3i7AdkbCQ7cZ6vTv6SKS446yfY5gR1B3V0nDMJvy3BxER8ivvcZFHZwJpAcJ/6PQiQDY6m8P46RPCa5Cd8U8olrVOtpWExRzzpgl5WyGY6QHHWNCQuCz48H2qGtUvQEDi8h2qYMC/nx/wn+P7Yl12CZzA== 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=WBtodLEUiNa2GOVf4/6i3ZIGHgcW33zMtZnO00P0fko=; b=N5mOhOfNpDiv9nSSdhsuClkOeVq3Qx42Tz9x/FoqEuvHhKcq/F5NtTOVu/YZzJBB8eU2xPccif7TAWh8JgJqApyd953tYVXVQdKAitKTdqTYYkzOUCS8FRqz90pfqs3yJkXW6n4iDlrcfv1j8Gf0ESfrZYGr7TNhy34ZJZlYITmEfJGHXDB4dDxqZA27IFc71ubb0IlUYvWUZvkOiawRSbVnuB1wFKComeW5oTNCCsXRtfMNEHVZozSVfay4XsQOKL1NmvcN3UCDvQGnNn1auHO27YhVsLEFWjrQvL81byGOVRrSrPb8jmAtqpYwn0Rykvovn5h8kYO0LK7DEWILOw== 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=WBtodLEUiNa2GOVf4/6i3ZIGHgcW33zMtZnO00P0fko=; b=l6o2hbdePjPQOr8eOHsrBfc94co6HpewkMaUwK6igdeoiPFGac2JnZsiZ8H98uFRGf7Y7hN8ZgthMxJL4ZNtmD0EVGO+WbgrEB6qVq2541ru6f3FR3ry8yaO2pia18sraG17ug6OWF6w7dztvpxCxy0FC88+hI58QCT12oOiXNjV2heUQ/iGjFV9ZZiOjec0OTf86Gld18pvbB4zbbTk8DxpwCCd4gP96nNrK0WGoyaSpbl8nzVdhsjusMuIerYbGR53zfgYGQv7zbbYVxStgAxftzYz/Fq5+Na32BfPaY4DBEe3MWx51LDdhGVpMv+b8TSprB20I6OU3IZ/pJLKkA== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon Subject: [PATCH 11/14] vfio: add vfio_pci_config_space_read/write() Date: Wed, 9 Apr 2025 15:48:11 +0200 Message-Id: <20250409134814.478903-12-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|SJ0PR02MB7486:EE_ X-MS-Office365-Filtering-Correlation-Id: b07b5fef-a894-4b59-c753-08dd776d428b x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?KGajkUEOUBL7palq3HSHow0kYB6chL7+j0xqK5X6sMnmIBzAnqp/jcxRiM6R?= =?us-ascii?Q?5SGXcSvc+ibnc5lZxnDeR4oCDMDER8cDF8cINVVkA57f+dycRyZ/rw18Tpxp?= =?us-ascii?Q?NyyGRjklttHWwCpILih+c615mKqv6GgnbJJIt/2XlbCBeXMHso584bFNn8tY?= =?us-ascii?Q?UB3BG9kKHP+vLGEoKoU96QNzIPq6WoQnUfD9wvWO7J9sbwV2CkFMcR5fK1Tk?= =?us-ascii?Q?PSdwbf5uaeoGg+uLCxlsRzpE0NzrtsT7rso/jP/XxgEU1GT+TNiY/U1dT0GA?= =?us-ascii?Q?wYJtMPin0K+Nzq7us1TzK2/ie1O1jadeEk1oIhU0cjO8O/G0ASS+Yt0zybD1?= =?us-ascii?Q?3EAZWFccJiDsE+tVQsgR2zBZIDcn94yFNLyOtU99+1RYKNED2fOTX4/SljN/?= =?us-ascii?Q?qS+I5iZyjEO6mT21GScZV5BRAo2Hl1rvN7rEPzwismIZfdVjC0X5h3YOhN87?= =?us-ascii?Q?Ep4979p0FQ4qWhCMKCtyb1Wh7k4rQQ5txWkS/6k0oTjYl/vyGI2oNv/pQ6IQ?= =?us-ascii?Q?c4CPr2B7vbk4knsIGpgrgoCV30zf9U84siVF/UVTJGSTMTkjQgKr8sPOP1f1?= =?us-ascii?Q?azC3/GzFsrD9zjaQKws4B9gQhrG9Q3nYz/IEI03ltjG4sjyDFsFqKhojfjnP?= =?us-ascii?Q?w568zkv4tydU0fOm3mfknxaSbbi886cMKNSDDWwJa/QV9nc/P3RmccY+qq7f?= =?us-ascii?Q?8ko2Dmys2xX02aVu19fT+sRKyP87drwaszhwjJEXtbzLFEMoCcHbsN0EO8Qa?= =?us-ascii?Q?4X4v2Gjakf/wfp1p6hGNGsTxPyxi0FM6Zz+gFljpU7fteQHNAhkevXo3WKVM?= =?us-ascii?Q?AduasjBcfF0FBjWg7NE6ZILqLmMPY31SSxT8tboPYrEcqlcaf+Za01IwC30J?= =?us-ascii?Q?1VInuLlXqb9CG3MBXuf0m3xy9znPmVwBBfdkqQCR7sx4IpIv+ECexqQOLDFo?= =?us-ascii?Q?Rv41qBYWgwAbz+OSEfiNfvsItbBLRQ2m/hO5fzPbyuaGRtRqdLcSDPIWZKmq?= =?us-ascii?Q?gUKlryrUxD9PQF7fK82OWNUnsmLb8E4SoNeF8pR20Gn9w4mBR2Xz5t8vDusx?= =?us-ascii?Q?xC/tfc0lxuWlsApCpXVVa5ao80Tbc366s02zbOGvyXrhn8gA2jvdiIIHFOCb?= =?us-ascii?Q?x/NNLwzkSz1J2h1Z2BX8StNeWQpLKjwR3sW18ayl/SdoxapxqpGQ/dpOG1yd?= =?us-ascii?Q?Ec5zHgxuy8R5CU1sV50KdUG1tBjV2pkkDDDuv0oEz+0Krjm042QLkJslSHga?= =?us-ascii?Q?Fgnk6q2V9XdW69ZoJsF4koT1YW/FLhVvSnR2YW1TB1AGIXG9xs1nWMaLJ5FI?= =?us-ascii?Q?f+o8eUnmtVuUyclMDuW7ne5DONMGINJhmjlfclm34hXE0py89nfVAbwxwPp5?= =?us-ascii?Q?NtKu5we2U7moa+HwmOTOfpL/7GCG4seVhcWkEQKRhxfDCCJTW+p9qihZTGte?= =?us-ascii?Q?t/uObBE8Tws=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)(376014)(7416014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SYj/ciMG5UP0l2rY+ZcXEyTHKBbY9DLjTcU5mMRKk/0JZ0/yMvJ3S1civLKf?= =?us-ascii?Q?CZMQaXb+cDj8zPog6dhcl8Zhmu0PqL1Sxyi8t+5GscrfXXQcGkpLNJOaVoFO?= =?us-ascii?Q?BbT/RTYP4tiRgaTJyJPN3dFvuHg1fzS7+m/pdf8Wg1eriRmNDCfQ0unuhLSA?= =?us-ascii?Q?x2MY2Odwh5DbOnQDaOKBDCsQcuhwKFSCz5OF4xGCHMvxaOn4/YBzZF2ZEZDo?= =?us-ascii?Q?VNxhE7jvO2dEni5alu3y61vcE5JyOCyXLSHpjWiLIOWX9jzunfVFO3LFXJK1?= =?us-ascii?Q?jGZ/4+cWBuTKEfdYlOZM65es5333vTSUZFieXwP1Edzp8GHKSU0Ady5lqKaD?= =?us-ascii?Q?l4H/V1lemPrdpCn9DoOzD7vpSswHp2hsnTmNDfCQ0rr5yTE93vr1pIPlucHn?= =?us-ascii?Q?lTWqFZ/lmCluDhLU0HpuGGAkvLKNKqT89zMuBjW6b6ftNbnb5z8lsKlhPj1/?= =?us-ascii?Q?cdsJVCqz8rC0dey2uPOq0x/wv6i3EhpeJyVyA5FEzPMw85NaUihh3OW15qRr?= =?us-ascii?Q?VdC6sOfX9HewyrweZPUCm8gCiO27UqQXvlU3eNuF404NldsF49YcEbXiGpXl?= =?us-ascii?Q?aCBUH6cIV2HuKLJ2g3Di9Q05UStvclyKcjwougbn6+4+MIxLi0cWQYBehXW0?= =?us-ascii?Q?s/m8EB4pkzEifMmw4A1Xhio3vmaq9oA+V/5C79OKxn+q1MjZ5grAOtkayOcN?= =?us-ascii?Q?s4bKMSORyuMPpo5UMGGjZQsMxC9EL6WWRDca1mUZgyGIZD3GUvTV1QATJ6Ft?= =?us-ascii?Q?be7Qdu6GuaByIWI+XRrQdRhodakimBQLGS2RRvfF2IAPUQ8oTujZaKOCGnBD?= =?us-ascii?Q?/jTx0Lrm4lbnhF9h7SKM+iiS61Wj8nLnTs1Wk7IGEDCtZP4yTFqQpRKpxyo8?= =?us-ascii?Q?uzYwJS8LhBVgBmacg1DVCtR69lSeMVrRil0K0lKYKWClwAdQsBNm1OYseRgs?= =?us-ascii?Q?wVQ1rvapPnENR8Rr6O+yetKnt8RLWj7TJ+4Z+cNBhgCWKV5r9jLmXITjBqp3?= =?us-ascii?Q?MKaKTbegV2njhb1KOB2BNLXoiWsBkiLibNdyUY261fu6/iJuatokiMxcWdJe?= =?us-ascii?Q?+1uI2xhxxJqZ6MVkWJqVGL30WHnmaTIIvDbkQtEBxuJL/g08N0MKkNANetEU?= =?us-ascii?Q?EQdf/V7inbBznmQ+lKPRk1IxcJE7AbIZVqZ/QlReEC97K62jBjxLF9HIp+P8?= =?us-ascii?Q?RQFNI+7I0hyiyeqhjC8zm32ZAO2fxkFml7FhYkLvjAxcdeM5rN4dAOfuEDQk?= =?us-ascii?Q?IAcxDTuNMtLk2FMTymmalog87pItj7D+r5QLPIO5jP9yMHfAZ1iF4z8Ho7TK?= =?us-ascii?Q?LMGARM/WeL5MJZ5T9Uz/c0nnLA1oYkrR07ceqCQZXFUhfiAmXnjeY8/pkXr3?= =?us-ascii?Q?vGD92NGfHQO5ZcKO1EXEy1I02bH+8sM7SZV2wMKYQqSxpzCudGsh6xWGDIHH?= =?us-ascii?Q?qYBkxC7MANSVWy9+jGaFenWwdIH5EwGxEoYYHJaSTeg9jizQOl+b3kl1HAeN?= =?us-ascii?Q?s+KUY5BorHysDwWyrt3m89euuwknAHwUlC4b2yOFAdI0YUxLTiDv1l0CVQLF?= =?us-ascii?Q?9uiAgEiBN+DoTY8/w9Wsb2GS+JZqwgD0ZUATOTW2?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: b07b5fef-a894-4b59-c753-08dd776d428b X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:51.0821 (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: nYJCxMGS2yguHCltz/PdMaaB73eJc1z2W1ipx33QIUDPlkkUDMPSXBW0jjfKPTYPLK+YR++oNEkLtR1/do714Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB7486 X-Proofpoint-ORIG-GUID: 0kofZXopyUvpt9bg8t-GkTxVGWA3DcmQ X-Authority-Analysis: v=2.4 cv=d+b1yQjE c=1 sm=1 tr=0 ts=67f67ac4 cx=c_pps a=eoA+jwG2N97X2eoE7Om4vA==: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-GUID: 0kofZXopyUvpt9bg8t-GkTxVGWA3DcmQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206753497019000 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 --- hw/vfio/pci.c | 134 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 91 insertions(+), 43 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index ddeee33aa9..c3842d2f8d 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -964,6 +964,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; @@ -1016,10 +1038,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 */ @@ -1036,11 +1057,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 @@ -1220,6 +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_BASE(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); @@ -1232,12 +1255,13 @@ 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; + const char *err =3D ret < 0 ? strerror(-ret) : "short read"; + + error_report("%s(%s, 0x%x, 0x%x) failed: %s", + __func__, vbasedev->name, addr, len, err); + return -1; } phys_val =3D le32_to_cpu(phys_val); } @@ -1253,15 +1277,19 @@ void vfio_pci_write_config(PCIDevice *pdev, uint32_t addr, uint32_t val, int len) { VFIOPCIDevice *vdev =3D VFIO_PCI_BASE(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) { + const char *err =3D ret < 0 ? strerror(-ret) : "short write"; + + error_report("%s(%s, 0x%x, 0x%x, 0x%x) failed: %s", + __func__, vbasedev->name, addr, val, len, err); } =20 /* MSI/MSI-X Enabling/Disabling */ @@ -1349,9 +1377,12 @@ 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)) { + const char *errmsg =3D ret < 0 ? strerror(-ret) : "short read"; + + error_setg(errp, "failed reading MSI PCI_CAP_FLAGS: %s", errmsg); return false; } ctrl =3D le16_to_cpu(ctrl); @@ -1558,30 +1589,39 @@ 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)) { + const char *err =3D ret < 0 ? strerror(-ret) : "short read"; + + error_setg(errp, "failed to read PCI MSIX FLAGS: %s", err); 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)) { + const char *err =3D ret < 0 ? strerror(-ret) : "short read"; + + error_setg(errp, "failed to read PCI MSIX TABLE: %s", err); 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)) { + const char *err =3D ret < 0 ? strerror(-ret) : "short read"; + + error_setg(errp, "failed to read PCI MSIX PBA: %s", err); return false; } =20 @@ -1741,10 +1781,12 @@ 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); + const char *err =3D ret < 0 ? strerror(-ret) : "short read"; + + error_report("vfio: Failed to read BAR %d: %s", nr, err); return; } =20 @@ -2448,21 +2490,25 @@ 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) { + const char *errmsg =3D ret < 0 ? strerror(-ret) : "short write= "; + + error_report("%s(%s) reset bar %d failed: %s", __func__, + vbasedev->name, nr, errmsg); } } =20 @@ -3099,6 +3145,7 @@ static void vfio_realize(PCIDevice *pdev, Error **err= p) int i, ret; char uuid[UUID_STR_LEN]; g_autofree char *name =3D NULL; + size_t config_space_size; =20 if (vbasedev->fd < 0 && !vbasedev->sysfsdev) { if (!(~vdev->host.domain || ~vdev->host.bus || @@ -3153,13 +3200,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.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206731; cv=pass; d=zohomail.com; s=zohoarc; b=iN7hevTwvEusp19ABgtQawHke4uBHrxT640O/5DSJYQ5ywAazLqLIhiTaFv+FdiX49tK4FFiwPiBgX99G1CG76HRqpKlixCQJIlElpKgyGBEqfsMTVYHnK3n13ZyW4aXM9/asAjhAVgTgqWe2XXzIwWB+xMctQhGx409PTDRUhc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206731; 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=EqKoLwopr6Kf7+k6Zh6AlzWMg0KBj8nOBnuE8ryeiXU=; b=BBioOz/C+QO/d138kcjiXsICGmWMbekIqCj4D3Dd67H7LHjBf/OWKOoBqtJDY21mkwMjoRhc2jsxXDOr/IZaU0b3xSnyukwCbeHstkjUl0JVFOppE2/jnh9T0FGZstlN6mryC4ltVJiL3jYXgyJoAk8oEKlAL3h6oKepoiEcE1I= 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 1744206731584767.5466072931844; Wed, 9 Apr 2025 06:52:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vo7-0007NN-SH; Wed, 09 Apr 2025 09:49:35 -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 1u2Vna-0006c9-Dz; Wed, 09 Apr 2025 09:49:04 -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 1u2VnX-0005gR-Vq; Wed, 09 Apr 2025 09:49:02 -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 5395qVN0014865; Wed, 9 Apr 2025 06:48:57 -0700 Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazlp17010005.outbound.protection.outlook.com [40.93.11.5]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 45u2mhj3ka-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:48:57 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by SJ0PR02MB7486.namprd02.prod.outlook.com (2603:10b6:a03:2a3::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Wed, 9 Apr 2025 13:48: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.8606.027; Wed, 9 Apr 2025 13:48: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=EqKoLwopr6Kf7+k6Zh6AlzWMg0KBj8nOBnuE8ryei XU=; b=kPkmnkYe0x0CEwANDiY01NvO8lSjK6hUjlaIAgSn1Su57Vifk2g3Aj1xP C9lxbb1A66FtSoOcdJ9iZH0m2AZWQ40L+jgjsZxH2cxNi1LeyQaWwpF/bHArBz43 6kC/ermsAdEYIejSjpqcLV4cjvIqPfwZ8F5VUFND3wlahan6RQO6qGeg6QKKwal+ hyy+FTIqtl/sqydd278zmImx9HdyLGy10DEn7miH9SXDI0qdAxGPAhiVwQJii1ZC gVon5WuB0ZyqjJnM3WyRBBjN8L8CVbzdOKlJiD9YRTjOzlAwfFBu2e8ZK6jWOUnp V5HUHtDP1cE6HaUEup6Kzu5oFHANQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LzK1Qb4UL4fzdUgim0lPc9mfLt6Cf1+hm57XeZdsL4qV10e1iN/sCbBPEAESkzJ2Q2hBRKl4PpuyKxvge3XUX0pdAR2cngMqYKtmlaKea+wwndUg/0Ur8RSLOTLoq1/rPXCthFZHw36tbJqh034/jLT0Bx6AwsLlhJBiGfaU3vMmFx5Abx8B1XH5JrvucV8VhA78Mo7vJIQMLgVhiooMLURO4jrjuvgdlxzFho5JTPrGkuGVFYIwyf1XbyJ6hn1ncjutJ2ohS4FB2BBttTfVMhruqICx8asAYPLNDVwlxC/EmNi/ueVD+s9QxEXq1XGg4yH6FXCcNVur6QhkOsSVCA== 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=EqKoLwopr6Kf7+k6Zh6AlzWMg0KBj8nOBnuE8ryeiXU=; b=ddZS8qO8L/beE8fIaCrKnlWerl0n5u4S3mq4lQRir64yHAB6IeaZcK5XIJ50lGRW6UR8E/hc5iBntlPLBx0ax6VqU09zvjsLLF4h9VqkyVtE46XXmGMP5ZaW8h1cIEPmLuNK1GV/9u/yDZWynVB1vQGO6A6zAaAGOaN9DoyahAMfoLyNGdpGUuihD6cSU/mctqnn9TAcbYCxdwboedc4/4zlUw6wKVR5bGIFWeHzCGYuEX0WyFGYSFUs1ImXIc1X5KJ6AvaVHi3O4hFSbGPHNIEfrywFoUr+rBonWHoL9nt+UpPzLpaEXT2cKprvs+vJE2tAfkpZsHKx/HclqpsZpw== 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=EqKoLwopr6Kf7+k6Zh6AlzWMg0KBj8nOBnuE8ryeiXU=; b=gLtSX46vXqVCSWpBUFa18qFiRTXY58lqoR9Pe/7Lo45bubE5ouCs9U5GyMoxDztVvpr/I5TYTBhWsIGY0jPq88BzYefpvUBMV5qeyyU5ha8SWE96ZnPvBEtgvvAZ+E2vgGIakZjUGuAFeoDwnZ/kY95ka6maiuGrXDGId+Q94lktCAoFw7qHP3vTKCSeFK2Y2n1kYUbQLcDe8xQa39NmyvXVw13vH8IX7gT4Eyy20WqZCorp/sW/xdTy+4bCK11DT4AId78gS2mWBfhHKk5bSHic/xLjIbHxMJ9JhBK3yZL2jomUlhCINzIkrR/R0rA9t3r8T+rjAS7BE7Vckh+x1Q== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon , John Johnson , Elena Ufimtseva , Jagannathan Raman Subject: [PATCH 12/14] vfio: add region info cache Date: Wed, 9 Apr 2025 15:48:12 +0200 Message-Id: <20250409134814.478903-13-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|SJ0PR02MB7486:EE_ X-MS-Office365-Filtering-Correlation-Id: 63438839-5297-4dae-f95f-08dd776d4472 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?tt+ILOQkKuQ/EXMUWvmhFlbooH0M62H3+u2gou9Oznehu7PtXc6+MA0Lksk1?= =?us-ascii?Q?030uLKQO2tYatftaKrXkTRuxHjisAMVB8E5igjlk1z2GGZlEchcG9bNMrgNJ?= =?us-ascii?Q?4t69Xe7dlTGepJM7+iuFeXEbC/weJUIWzLt5Ls4YvMsJNOvKb6QIw92Mm6Hr?= =?us-ascii?Q?p0P58ay1C2z6tPKTW6YPFhVdWLg7jXDbVmztHuT8hR8GoQlcAzdcvvQP5eWB?= =?us-ascii?Q?pgrzARvC8b1ON0QJXL1i4RSowaECCdEys/UqDUXXPK3Ra+X16r9OlBDsWWRv?= =?us-ascii?Q?lolOaoiQprwwPCX9A3PnS4agLzIe2SqCZH7KSCj3zKnPYSiOZXwnVp6+CgDz?= =?us-ascii?Q?MI2zUuhxaNXH1c4zB81YexRpdcyYQQPVj9mWBXoWPFblf9DeyI1ZIAmRXxMN?= =?us-ascii?Q?J6zTPpJvxiyC8zh5ad3dtHeeKSzyL+9d3nooBr/sPHHVmUqmZJfJqLbZeZWu?= =?us-ascii?Q?waIyIaZyyyagY2NldumXTp+Jmm7N7m4WjCgyh4GsXjwGSi0/nhLpVuQDtmkU?= =?us-ascii?Q?o9wnH0BICMJDoz6uRn3gSm+u2Q3/OHTfIP8SJkCRj9cuuaZBs7Ek7pW3K+Rg?= =?us-ascii?Q?BZVW95E9e59RyseA5BgukOaKYthbs1foS9jFSKGqRNI5K2RzvSWdRg6Vxe11?= =?us-ascii?Q?sS0s/rBAWAz2JySwvJ2brtQt9sDx+HvZ0eARw0KzHglmbJiKl0dCdpwx98pp?= =?us-ascii?Q?tvCe9xOcYvAuY0d4db0nRpZ4w5JapoeKAuCyvsWxlwzd0zSRT+PdnPLcqZ90?= =?us-ascii?Q?b2Y1Ym6HkT4sIlGyHg+qUo8ii7XI3M02iLI82UHtprEbx9yHCj/Ljm+ruc16?= =?us-ascii?Q?EqOf87a347IikSFUpUR25DafJhmyp7tkzWv4bxrYM5bOpwehyKk7bwmTC/st?= =?us-ascii?Q?RdSRz1bNBNRKNAJo9yWMsgD/LYplFP3iYMR5/UoFT1xPoysB7jknjoeUJ2Rk?= =?us-ascii?Q?WN3Co0MZyDif6FzH4LUMUHCbDcCt3DM531+2C2Hj5KiZrH55PpUU0qtbTgYA?= =?us-ascii?Q?nb39LsJqHiUp1xi+ABZzimv7SsVsidaHz4K1MEs+gLoPIUVaBnYRiPhQVgu+?= =?us-ascii?Q?V/ZkfiWRqR4ak+2Kfks6y69znvjnYUptmEQgEF+Uqqq9CeX+jAPbxuaDp4B3?= =?us-ascii?Q?GI8qW3lwir3OPCoKHywPAA5RjvuQrjlvefwmpCixlZf7iaaCMWpHQZxmfdsO?= =?us-ascii?Q?nnl7pLvBmSBCrPF03N9CcLmQrc797lm9V2ZTiFA+7TU0WRtTo7vJWUEcC88N?= =?us-ascii?Q?+GcJt/PI+Rbro9aJ/YndcMwJhrMJTQIcrLc323yjBssUQulzn9XoOG0bGJqh?= =?us-ascii?Q?fCTnuKFwpbWqWlI8f1OxE8JcauoCR2f3zPdNvP2cLqKGRfRWj200Yeg2zc3V?= =?us-ascii?Q?bJ8x6Sgo0ZWJJ4NjRFO35Wmh59GpGbtndrzSFZ3taZG80aX0xA=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)(376014)(7416014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?97iuR8wKUZ+uR9NaO86TP696opUehl1IrEdzxIpp5roNLYCSYi+eFB85cIvY?= =?us-ascii?Q?Ef/zLm09KUvYUdUa9/+PVwJgbG3TlyKXyGyaDbDGGLljRiqW/Cqh4UOpVnCl?= =?us-ascii?Q?D9/HjrZZUJvLpYXj6ivl8S1r9cRTMQT3L8wpCtZlMB+Gvt/7+nxN68C2jMbv?= =?us-ascii?Q?hISQPAexVL4wQLQsvltipQycBOppcAwSv3uMrKJzPlX9vY4A9aldDtorPLmG?= =?us-ascii?Q?AkI7VW4ZLWuLAFF3Czyxb6Y5iwYqxI4LJxSThY0pFlHRnW4OeJgQOFLAWJ9F?= =?us-ascii?Q?+f6aVan9d3B+NL84rV3ZNLxLXILfWdjOyh0b5XT/u4805DFx/2FkuN5rNci6?= =?us-ascii?Q?Nb7oHp/nRvq2ChOpDJNl2idTtUYtxcs7rhbAf2ILd/HUulx5FN09mVBwqDLd?= =?us-ascii?Q?4SOleFGaBdlFlJ4cfkjiX2M/871qbWwST3ssQ9kXC4SpSb+8e95UrkqE+fyT?= =?us-ascii?Q?P33C3lb8OeocWTgnaT2gFjtWNFdZ9AgLvOPi//4dnAqyo1kERvGaPD4Mn9Cx?= =?us-ascii?Q?L1spPWLMAXsGLhyVc2U2NZvkPDrrmAFzgga2JMh0Ln/j8PBpKhkja5vPhqyD?= =?us-ascii?Q?+3716FTG3xvcfcoFRP91bWls0ZWAWyyB5aqC3Apimw165eLZDyk+yRJPKU3u?= =?us-ascii?Q?TkrP2fiDgq37S0c1ykOHgyBUx06cGuv4YTKATT6qoISWnDhL6mbkBqaTqDFs?= =?us-ascii?Q?rFvxny/SOVHKtGwqqWl5ElhJ07wx/cdmnuzqFg2ofHSKPDCWiyYytNqm0QIL?= =?us-ascii?Q?cfIwWlmiJOGO/Pdpm4ZL889+HYkfXUEvAeUygaNoXaU+ja8eqiuJpX/AiRfT?= =?us-ascii?Q?B6Zl3cN+Yz94YKqET86EIEeho8JvT4GxSs6TF2GOIL6SvbHClr6gKtLIt+1h?= =?us-ascii?Q?cu+B1ikmSAh1WJuobLk9xsBAb6++1wAGKJW3ewWodh67YEuvwgpwvmoEGp1O?= =?us-ascii?Q?LAidHyYnk0Tv36kmBbegRbGd7AONuzmpNI9qNF8hD3XNgh5/X5p9nrc2fdZg?= =?us-ascii?Q?ZIBPAn6l5DrPEMhG+yqbDYcf3xRjyKyAiIM+Sx6tL8cxehuC3nzi4ldTJaga?= =?us-ascii?Q?dB3RYOBcjJO+as38p07Picp9kgqgiLjfnVGethiKEOn2v+c7v8x2ed42WftS?= =?us-ascii?Q?0JtTp9mhfH15Y4fqXzKwgti/vIXlJzHLf7YvyWMgubm7NtDNIfDLtenuUAUs?= =?us-ascii?Q?/XVBlrSHl03V2iui51lkF5XwHBjTUW7uv7Y3GtqL4S9/2qXVDkEZm/i5SAdn?= =?us-ascii?Q?ohM2hEkhWO5vEFVeowUFOo2f4mtXVHYaWXdLTJP4Gq52rSbdH+UxCq/Rjrs4?= =?us-ascii?Q?g9F9kdyaw6m+shhDzztS1jhG6ZPgQLGTPf0yZVrLcPyq8+NjXxdw+IuyqHby?= =?us-ascii?Q?vKysFimfFRha1N5r4aHChvkhU0j+urRz9UPsYMd35Ij2DU/7p2//H260eMLm?= =?us-ascii?Q?OLGQ3PJSa6wZuE7Hnk7gANJeXmZ3aA9K5y/aoEayg9PGGxwH2FTmZq0z2nSN?= =?us-ascii?Q?AgfEIqqJUbk0rUKE8DnHK1lciHPmou8G4rSqQHDw4c2cbIhBemrO22Dwfi6R?= =?us-ascii?Q?/5FJvz2YSDDxCP0u39jFbhcwMYksQTrAUMovREfg?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 63438839-5297-4dae-f95f-08dd776d4472 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:54.1663 (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: 43g+uGX5KvW8HKM9Tg8P+krr82OGmkXKqFoLSKxblwrrU7hRV1Cqp05qWtJdjDpQ8c9Xx2mUaNI77Yjt7t+8tg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB7486 X-Proofpoint-ORIG-GUID: VLSOtggaSdKyAppD7Rj7_eF58HRev_b4 X-Proofpoint-GUID: VLSOtggaSdKyAppD7Rj7_eF58HRev_b4 X-Authority-Analysis: v=2.4 cv=JPI7s9Kb c=1 sm=1 tr=0 ts=67f67ac9 cx=c_pps a=8NhCg2oU0sQOR5chO7ltBw==: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=nwHpM9hI2HXnMGzLlGAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206733724019000 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/container.c | 10 ++++++++++ hw/vfio/device.c | 31 +++++++++++++++++++++++++++---- hw/vfio/igd.c | 8 ++++---- hw/vfio/pci.c | 6 +++--- hw/vfio/region.c | 2 +- include/hw/vfio/vfio-device.h | 1 + 7 files changed, 46 insertions(+), 17 deletions(-) diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index dac8769925..14dee7cd19 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/container.c b/hw/vfio/container.c index 37b1217fd8..61333d7fc4 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -857,6 +857,16 @@ static bool vfio_device_get(VFIOGroup *group, const ch= ar *name, =20 static void vfio_device_put(VFIODevice *vbasedev) { + if (vbasedev->reginfo !=3D NULL) { + int i; + + for (i =3D 0; i < vbasedev->num_regions; i++) { + g_free(vbasedev->reginfo[i]); + } + g_free(vbasedev->reginfo); + vbasedev->reginfo =3D NULL; + } + if (!vbasedev->group) { return; } diff --git a/hw/vfio/device.c b/hw/vfio/device.c index 2966171118..102fa5a9b4 100644 --- a/hw/vfio/device.c +++ b/hw/vfio/device.c @@ -205,6 +205,17 @@ int vfio_device_get_region_info(VFIODevice *vbasedev, = int index, { size_t argsz =3D sizeof(struct vfio_region_info); =20 + /* create region info cache */ + if (vbasedev->reginfo =3D=3D NULL) { + vbasedev->reginfo =3D g_new0(struct vfio_region_info *, + vbasedev->num_regions); + } + /* 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; @@ -224,6 +235,9 @@ retry: goto retry; } =20 + /* fill cache */ + vbasedev->reginfo[index] =3D *info; + return 0; } =20 @@ -242,7 +256,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 @@ -254,8 +267,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; @@ -264,7 +275,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)) { @@ -427,6 +438,16 @@ void vfio_device_detach(VFIODevice *vbasedev) VFIO_IOMMU_GET_CLASS(vbasedev->bcontainer)->detach_device(vbasedev); } =20 +static void vfio_device_get_all_region_info(VFIODevice *vbasedev) +{ + struct vfio_region_info *info; + int i; + + for (i =3D 0; i < vbasedev->num_regions; i++) { + vfio_device_get_region_info(vbasedev, i, &info); + } +} + void vfio_device_prepare(VFIODevice *vbasedev, VFIOContainerBase *bcontain= er, struct vfio_device_info *info) { @@ -439,4 +460,6 @@ void vfio_device_prepare(VFIODevice *vbasedev, VFIOCont= ainerBase *bcontainer, QLIST_INSERT_HEAD(&bcontainer->device_list, vbasedev, container_next); =20 QLIST_INSERT_HEAD(&vfio_device_list, vbasedev, global_next); + + vfio_device_get_all_region_info(vbasedev); } diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index e1cba16399..d70da1ce38 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -198,7 +198,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 */ @@ -361,8 +361,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 @@ -526,7 +526,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 c3842d2f8d..b40d5abdfd 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -882,8 +882,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; @@ -2721,7 +2721,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); @@ -2786,7 +2786,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 9522a09c48..967b07cd89 100644 --- a/include/hw/vfio/vfio-device.h +++ b/include/hw/vfio/vfio-device.h @@ -81,6 +81,7 @@ typedef struct VFIODevice { IOMMUFDBackend *iommufd; VFIOIOASHwpt *hwpt; QLIST_ENTRY(VFIODevice) hwpt_next; + struct vfio_region_info **reginfo; } VFIODevice; =20 struct VFIODeviceOps { --=20 2.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206667; cv=pass; d=zohomail.com; s=zohoarc; b=narWDxrqRb3dWPqq5ig1aM1en+S6QGjl1CF/6/tP6Zhd1vCdEiNRoT+FnvOGKalDynSuZDfbHcM6W1xuBjylyO+8HyPwAy4rqZ0/zSI4AvGgBa+RTFjrx/9HBqUtjw9PE6QRphJGZQdXD2V7A4spGTBmlif7gFwKakOXkrnvKlk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206667; 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=TUd5ZO0tIvlbkARgD8HA6YU9H1bK5AQZPm+rqZ8vQ7k=; b=X8FooboO5Z2brm23SdiJbkGJmsxA/JkG5wvXYCJ1QUgFFrL2jc93/W48pPlqGXYMo/JQoXtBfpzk1HHuzeYmaKSYArzl9U4Q543Lg1N5+YG1kp2LfJhXoUokSqRKN82gtjwBsRrIHzsxrMVcgu8GKq+eN/MwmQy4RtEn7X/sGF4= 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 1744206667128556.1619351947959; Wed, 9 Apr 2025 06:51:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vo6-0007FG-Nt; Wed, 09 Apr 2025 09:49:34 -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 1u2Vnj-0006j7-Iy; Wed, 09 Apr 2025 09:49:12 -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 1u2Vnd-0005hQ-Nz; Wed, 09 Apr 2025 09:49:08 -0400 Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5394K8ZT021298; Wed, 9 Apr 2025 06:49:00 -0700 Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azlp17010022.outbound.protection.outlook.com [40.93.12.22]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 45u42xhaqr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:49:00 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by SJ0PR02MB7486.namprd02.prod.outlook.com (2603:10b6:a03:2a3::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Wed, 9 Apr 2025 13:48:57 +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.8606.027; Wed, 9 Apr 2025 13:48: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=TUd5ZO0tIvlbkARgD8HA6YU9H1bK5AQZPm+rqZ8vQ 7k=; b=o7GUGBjodYTY8PkmQkHmvpeMq3MG7l7p5UceGBTBaLaTowh6LlokowW0l FYmX+e1m/z4NiAIsg6HDBreFXeerb2q83huXreUrS4+3wpuphpN2mIwhMD7F4OCg T4frAFCRad7+p1wWtp1Aet7A9RSFlsTWKUUIOamGOGr2m17TGquPr9oxygxN/vlh h0n5Cc2/dRsko6eqzYNolpyPEm9kzcDHQAz1UNfl1kY2X6Ptpe6hOWJ7vzm6Zw9h KNIqZXbwQmDrwJyjta7+9z6LxDs7Q46p8DtlEYnC28DHoFTh0ZJqu5MXVbUHnG5N PD5+ZMAadh/nD/CTB1BdWogU7xuWg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EDTb6/RymD0gkBQotD7dm+TtvAH3fmQL48M6wlvIP0Ltq0EbN8Qi1euhuIcQxfkOc5O2jXJMVIOXZy6ZFiuibu6y5u7hqaR+4XEBYjgU6loMzyaXM8Vaz9yWpU1HV9fZarlI7JSykZyLhmMCTrqlxN3jhtU0TFkXv/XGDTRAyTOIwhivKhl5vxxh5XjMze4dtAwa5XkqG/mFTw42JsVPRke51Lv1lVYubFyngey7cVQr2dfi+BynUnK5UTQ1ZgSgAHsfrjZRjoLJPaHpnqHTiAErNinFJfB8krg02bYw4rNy6+EQNB2RzKqcQZ/sdMMqEpOJVzLtE74/5b34NqD47Q== 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=TUd5ZO0tIvlbkARgD8HA6YU9H1bK5AQZPm+rqZ8vQ7k=; b=l13d7epcggQwQChj42RQ5ILajI+ii0pR+0Dwy8+VB90d3ynlio6eORftv+b05ftZtDooM7A3U7O21FaKwzBm5bSSylwUI/Eq8tIuI5Jlyv/nmW4sEwcMnnfJFkhdIhTHYVDDBD8dj3thARna6wq8cPr1QF2HVUGYtEQGZd3hxPOIKyyGeYEZUX/yUEqRQGXxMHTVRnSdV8WGRjtHg410Z9C4d7wsHPgcIOHoXWDoiCNPpwbWXXmXYn9k7bMQDCDzx2+I36AvCSGX5sa1LN+NcZrbbHo+fWo/YxpvwtiRz/9PbmIWK1MEFsPdLZyhHp6dovba7y8T7EUabBwjTOK2aA== 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=TUd5ZO0tIvlbkARgD8HA6YU9H1bK5AQZPm+rqZ8vQ7k=; b=oC6Vj7D/Y9bkGncU5DtoxkvydKCFzOFTqEPF15h2ZMDDJo5A376EjHcWYtcdunYsywYJTBOxbWKx/Um3cbHyBDD5Et9jWTpYIa2Ot7ZaPnvbxf35YUbRVtHr7TGSmHwdodtkep169KuzuKgIWOt/qo6FO6JD77rExYZpQy+aFQ5RhuOrajDl3mLWzTNCY0zHCIINJ+3cL5/lvxG7EGHCZvSIOHDIHGAGKLsxA9UaOhj8wMPYjxWdKa5lNESEckjx9fK0PHiUcl2P1ks8Acp9OrsJwxBX34QgWfdQ3ARDnfIF2s8ud+xjPfS+tc6wUzkNuaO7rsjgg0dTZR8PIFdAkw== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon , John Johnson , Elena Ufimtseva , Jagannathan Raman Subject: [PATCH 13/14] vfio: add device IO ops vector Date: Wed, 9 Apr 2025 15:48:13 +0200 Message-Id: <20250409134814.478903-14-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|SJ0PR02MB7486:EE_ X-MS-Office365-Filtering-Correlation-Id: 3889b53b-2b45-4ef5-70c8-08dd776d464f x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?KaYYDBYd+ygrfMZc0mVnehK6a1hOtLjCxTHTJuFgVpG49rSFC8jr6D+7DJMz?= =?us-ascii?Q?tbEjrH7Lb7/jMO9NKPjPkyAuegTriDMHCU32yCWMCrsXvF3SVGAZMYr0Tju5?= =?us-ascii?Q?MKIin2gTAw3oPpv8do7o/J6n9kcgBbMcHs4VOQkvezdADAA+OT0FsWZz8rro?= =?us-ascii?Q?4RrbT2pb4LDIdRrgdYkSpA8ravhuPEGwIFVZ0IP0/TV+Dc3Z0mWUva60HTIu?= =?us-ascii?Q?BJYdBqa/Qgaw4fNTz8ccTJhbq2Mj4dVpxhg+0JSL0Wx5DBa1K9G+OZb6HSz6?= =?us-ascii?Q?ntSwQPb+rhTFvbjDz9OccEYwCz/sRcyaUwNFjqSwyLe0N2o3iNc+j2ggeFUa?= =?us-ascii?Q?SEGD792fzMAEWQSZsEeAW4HoZa0yL13AxEjzEkyU9rowGro9pRxuC5WnIbW+?= =?us-ascii?Q?Ko+T6NEU8bIkKATb8ZUrocSrjF9Y51JCJJXZcilAip1JgQbzJ2ec/0cOseR/?= =?us-ascii?Q?waBiyYsjpo7GrrMUdJOL4VYraron28VjY4+ecGHCFQn+f1XGTLa5RpXotM0A?= =?us-ascii?Q?a1pJxrH4RboB7uwkwDws7FOqLkEfVudUm8Ftm1UVjYAeCydgHab9p7d9S/e6?= =?us-ascii?Q?WG6eenhD4hddFN5iiJ46ktHFVJlt+BaR5MjcfWN8CzidyAloea4k8TJIpiVu?= =?us-ascii?Q?uXKrueaCTy0a5aGHCiBr18aCHMylA2/kYWwBc6h6qb/z9ihrYhZtosSOVtuI?= =?us-ascii?Q?bVNrShSCHRJwqK1bqlGPKc7BGsi7IdVxglq3bpzHAbdIx0yQnVTwBo9lkcWV?= =?us-ascii?Q?gWaOwXDhCSv+5Vyurb0o7bjXzJRACMOvyQls4GwAa3LvXBT6eL6HSGda9P+7?= =?us-ascii?Q?mQWK99biaSNGYZA6I/jPcEaahfD8VPh2VJAGUgN41GNDlM7cKI6l2/audHFA?= =?us-ascii?Q?AcATBRa2VzS1MhrH9mbpspSysOWA0k4k0v82FmGmYitQzb32ORWc5qXDqMUg?= =?us-ascii?Q?hR6elvwtsaYeUPkGkSN/6zs0Rc+FHxD80f5USJLFnlLp4gykZqQHB/0Tx7QU?= =?us-ascii?Q?/ZszZXOCAx+XZqYOH3HTWJlDkwjyGOv+LYhCIg2PLamBpKeTmOmVzdQ2p7uN?= =?us-ascii?Q?9H4nLJX0TY3b6NleDhL0CoBjsvgMH+Kw6ijx1LGbA6Ff0f9zzVVQbsw/fa65?= =?us-ascii?Q?GYCVYHjg/vqTpmXij0sgmCmCqk3D2rBwAi21iXLWH5VSDJg8TB04dsK0Bw1g?= =?us-ascii?Q?iDNADryL6isoGiD1wf2SJrF/bLDG/zEpI/uACMGCzt5UbYrwUYQVgUkh56vs?= =?us-ascii?Q?55bH1yPewWu0YUeeSkDB7QPe7GAKUqvsyaP4UVCfZNbgUoE0bQR2kiD7lmgS?= =?us-ascii?Q?Dqah2IKg4g+ggVmk2V2TlRsrr60d2FZ7NojLEdnISNQPHZ53Cf7YNSYsoXMl?= =?us-ascii?Q?wwX6M+PXIWv0WC2lr4WGOfGRAic9JxvKTMBhUzH/gReh4D3n6ahAlL57H5IC?= =?us-ascii?Q?G2F+08+iQto=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)(376014)(7416014)(366016)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lUumT4WJ6jX2rGqzgome8bSJ9FOUrerghGWshzvuedAIxHELD60GAqBdLq5C?= =?us-ascii?Q?GRAdqe1I+7PAFiQXTZLdRcEYG52sUiuj5rElmoc80dUAfFpifN9bXlRqzIZu?= =?us-ascii?Q?5nF0ljn19fuk1N/rfj1vTHG1ogcO0NutQXJ4U7ukuQmOKEK/KtZaWZNyy+Pz?= =?us-ascii?Q?lzABqxROTQ7RfaJpK/oCz7sLy4wmw9h7KOPF69XDHPtN8IcfNiiiUnzHzVvS?= =?us-ascii?Q?SXULcvOW5ywOuc3AHNi/P3p08QhXSeIdSb5rsXUofcqp9ghN3hC4fpRA5BuP?= =?us-ascii?Q?JtOzN8SFhUcTUhuEOjirijZYwbJBhnjvypWiKJaeM/TY2L57CHRPQAPRgom+?= =?us-ascii?Q?hHgd3yYWfp1Qrub6xBJWoF3/nUw8+PBpLRjpmgM46a6xOUQhkQ/vyJKdj8XG?= =?us-ascii?Q?qCxhTYa3Ve9wewIA7n/NOTlB3tyyoU/Shxjbdmu4UZNEwkR0+r1Qoaub2Juw?= =?us-ascii?Q?L2l8w+QoDWxpYvJc/vIIrdAFFbS4pONotAY92N9ZbA8FpqJSxG0oqqACXuL1?= =?us-ascii?Q?wwLZ+fr/Wt+CdiAiu+AjP2WTDoeRjz9wTmg4aLw5xuqw5LN/HsvboUZ9pwVx?= =?us-ascii?Q?0Acg8ZYkI2Du8FPI2V/xQgXQbVXwV1hbVe7Ki20pnJpmvUn5h4lv4ROY9LmZ?= =?us-ascii?Q?npmBfRcVMrX6Y3rSeKSHRSv4dOZH4clunOytjENppKuDtRsAQ2kI7xgjyRaA?= =?us-ascii?Q?dkl6H3x86ewadypxpWlH4pXoDtYwyO9k9dRxW0sWX4Y0dvQePX8fjYHYbR9F?= =?us-ascii?Q?/pon3nt9WwElOUMrRgV3ee2Q0R0aAE++XWVsrLEoXNVWaibJsw6xHjx+pa8h?= =?us-ascii?Q?FWTEi8Gy7JrqMBrjPRhV8gF0v/VES5KrDfqQa+r5mHzLksX8xUHTKIHiXHst?= =?us-ascii?Q?6hITqtx3lvW2aunFQaKPKXPzPyjJjlkH1xYUlg9QHHzUNzp5gkLNEU9QfjHZ?= =?us-ascii?Q?mzgO/mv/bMd5BBFRaWA39mEdizZQOtXQ5v2ZO3L5ZjgdX7iKkpZkRV6HnyRd?= =?us-ascii?Q?q+WrRAYiSgDNjdztDcvK/Rax9p7u2jNNPUzQjNABbZpgPujngJWs1+OVS8cH?= =?us-ascii?Q?QRtnluxOZ+aM2zpnIl0B5IvlrJmtNWPIHkYYp31m+9oe6+XL8138zTGATI3/?= =?us-ascii?Q?hx4G4/P++fLp+2Jb9Hfb5yH4jibxrQzvigU0OhQzVNGjsQeKQmnik+LDFfnl?= =?us-ascii?Q?Qw+j7O0p7YImMFe7+0UT8O79PYbQx2C1Khi0XI7SUTox4/h6Bx0lnGQ2oRJS?= =?us-ascii?Q?WDcdWtVZleJ+X/0T8Pxv6kHpuiwCzSm/aEIL9FH7GWNxI3x2gttvDsGA2D0k?= =?us-ascii?Q?e9fdewBjuIDk4DbANM/jj1Te9HFJLWZ4P4mbJ5hl3FEZ2Kp06Xof0QZYGBh2?= =?us-ascii?Q?tDUDgmOuvcf216Tmye7P6JQfMcdvbyi3B9fyoRJmhiXQ34f+VvCAKEURZEzp?= =?us-ascii?Q?psFpk6imvxMLZ9o1AEpWSWwbEAtqDjYNe1jv4UBWqdlYigMEyNWqjvoUk+EJ?= =?us-ascii?Q?ph+QSPgQwYGle0A3TkaYhApmn7PvQueDzgzygAmusGUwzmLXGfDYNmIYzw6c?= =?us-ascii?Q?QzKToQr4qcC2lNdkioQoSMvuOOyTZnPFDx6yRMVU?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3889b53b-2b45-4ef5-70c8-08dd776d464f X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:48:57.3881 (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: EaEl9Q8eYBwpeYBwQDhp0e6XiJpk++AUT9GxSkvnEJICRf0q2Mw48D//MT/RkSF5VlQrx3oZlqf3eOGC1wn5OA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB7486 X-Proofpoint-GUID: lPaqEjSGMDWeO50XQoR8B3CJpT-1GCj- X-Proofpoint-ORIG-GUID: lPaqEjSGMDWeO50XQoR8B3CJpT-1GCj- X-Authority-Analysis: v=2.4 cv=LMxmQIW9 c=1 sm=1 tr=0 ts=67f67acc 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=yPCof4ZbAAAA:8 a=64Cc0HZtAAAA:8 a=dodWpOyS_J-MCs3LZaAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206668669019100 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() or read()/write() 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/ap.c | 2 +- hw/vfio/ccw.c | 2 +- hw/vfio/container-base.c | 6 +- hw/vfio/device.c | 102 ++++++++++++++++++++++++++++++---- hw/vfio/listener.c | 13 +++-- hw/vfio/pci.c | 40 +++++++------ hw/vfio/platform.c | 2 +- hw/vfio/region.c | 17 ++++-- include/hw/vfio/vfio-device.h | 24 +++++++- 9 files changed, 155 insertions(+), 53 deletions(-) diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c index f311bca5b6..b6233b2107 100644 --- a/hw/vfio/ap.c +++ b/hw/vfio/ap.c @@ -229,7 +229,7 @@ static void vfio_ap_instance_init(Object *obj) * handle ram_block_discard_disable(). */ vfio_device_init(vbasedev, VFIO_DEVICE_TYPE_AP, &vfio_ap_ops, - DEVICE(vapdev), true); + &vfio_device_io_ops_ioctl, DEVICE(vapdev), true); =20 /* AP device is mdev type device */ vbasedev->mdev =3D true; diff --git a/hw/vfio/ccw.c b/hw/vfio/ccw.c index 14dee7cd19..aee52b5a8d 100644 --- a/hw/vfio/ccw.c +++ b/hw/vfio/ccw.c @@ -676,7 +676,7 @@ static void vfio_ccw_instance_init(Object *obj) * ram_block_discard_disable(). */ vfio_device_init(vbasedev, VFIO_DEVICE_TYPE_CCW, &vfio_ccw_ops, - DEVICE(vcdev), true); + &vfio_device_io_ops_ioctl, DEVICE(vcdev), true); } =20 #ifdef CONFIG_IOMMUFD diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 613fe1a00d..16fe5f79d2 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 102fa5a9b4..545d9f1faf 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 /* create region info cache */ if (vbasedev->reginfo =3D=3D NULL) { @@ -222,10 +222,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) { @@ -332,10 +333,12 @@ void vfio_device_set_fd(VFIODevice *vbasedev, const c= har *str, Error **errp) } =20 void vfio_device_init(VFIODevice *vbasedev, int type, VFIODeviceOps *ops, - DeviceState *dev, bool ram_discard) + VFIODeviceIOOps *io_ops, DeviceState *dev, + bool ram_discard) { vbasedev->type =3D type; vbasedev->ops =3D ops; + vbasedev->io_ops =3D io_ops; vbasedev->dev =3D dev; vbasedev->fd =3D -1; =20 @@ -463,3 +466,78 @@ void vfio_device_prepare(VFIODevice *vbasedev, VFIOCon= tainerBase *bcontainer, =20 vfio_device_get_all_region_info(vbasedev); } + +/* + * 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 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; + + 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; + + ret =3D pwrite(vbasedev->fd, data, size, info->offset + off); + + return ret < 0 ? -errno : ret; +} + +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/listener.c b/hw/vfio/listener.c index bcf2b98e79..7ea9e0dfb7 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -821,13 +821,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; } @@ -928,10 +932,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 b40d5abdfd..ff2b15ff02 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, @@ -917,18 +915,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", + strerror(-bytes)); + break; } } @@ -968,22 +970,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) @@ -3405,7 +3403,7 @@ static void vfio_instance_init(Object *obj) vdev->host.function =3D ~0U; =20 vfio_device_init(vbasedev, VFIO_DEVICE_TYPE_PCI, &vfio_pci_ops, - DEVICE(vdev), false); + &vfio_device_io_ops_ioctl, DEVICE(vdev), false); =20 vdev->nv_gpudirect_clique =3D 0xFF; =20 diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c index fd176c18a4..28eedfa571 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -650,7 +650,7 @@ static void vfio_platform_instance_init(Object *obj) VFIODevice *vbasedev =3D &vdev->vbasedev; =20 vfio_device_init(vbasedev, VFIO_DEVICE_TYPE_PLATFORM, &vfio_platform_o= ps, - DEVICE(vdev), false); + &vfio_device_io_ops_ioctl, DEVICE(vdev), false); } =20 #ifdef CONFIG_IOMMUFD diff --git a/hw/vfio/region.c b/hw/vfio/region.c index ef2630cac3..35fb81c04a 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, ret < 0 ? strerror(ret) : "short wr= ite"); } =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, ret < 0 ? strerror(ret) : "short read"); return (uint64_t)-1; } switch (size) { diff --git a/include/hw/vfio/vfio-device.h b/include/hw/vfio/vfio-device.h index 967b07cd89..cb2f581826 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; @@ -140,6 +142,25 @@ 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 { + int (*device_feature)(VFIODevice *vdev, struct vfio_device_feature *); + int (*get_region_info)(VFIODevice *vdev, + struct vfio_region_info *info); + int (*get_irq_info)(VFIODevice *vdev, struct vfio_irq_info *irq); + int (*set_irqs)(VFIODevice *vdev, struct vfio_irq_set *irqs); + int (*region_read)(VFIODevice *vdev, uint8_t nr, off_t off, uint32_t s= ize, + void *data); + int (*region_write)(VFIODevice *vdev, uint8_t nr, off_t off, uint32_t = size, + void *data); +}; + +extern VFIODeviceIOOps vfio_device_io_ops_ioctl; + 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, @@ -154,6 +175,7 @@ int vfio_device_get_irq_info(VFIODevice *vbasedev, int = index, bool vfio_device_get_name(VFIODevice *vbasedev, Error **errp); void vfio_device_set_fd(VFIODevice *vbasedev, const char *str, Error **err= p); void vfio_device_init(VFIODevice *vbasedev, int type, VFIODeviceOps *ops, - DeviceState *dev, bool ram_discard); + VFIODeviceIOOps *io_ops, DeviceState *dev, + bool ram_discard); int vfio_device_get_aw_bits(VFIODevice *vdev); #endif /* HW_VFIO_VFIO_COMMON_H */ --=20 2.34.1 From nobody Sun Nov 16 00:57:37 2025 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=1744206725; cv=pass; d=zohomail.com; s=zohoarc; b=kxsKKNPaPMQP3SZdJEhrnXp2gKeJOKwE6VTCXfD6Aa6s/kg8GlNwzLWQtbN1GiFOq6Fui3w3nrWRYQoceNrE23r7hM0fBBH5y6jAN8fKnzGqLTzLJ1t1wv6refcHAMxMF6AFR9dQFDCLE0PgEl77RzrA7ekHS4xW/cvpTdkntls= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1744206725; 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=wi2jtWbsQUBkOPHldM0psMluwrKR0ryayA5kJploIWk=; b=CS1uAL2HVEW+cmuSA8LE6we0mgqFQE1TjyOeDSw7dT1OfEodF9N0k5xLTvnFNUOxEtJaq0wJi+0Owmculd9DFX/JBC1jzBhfRabo9REV0X1wc05lmyIe7FrX9pZNGnBkfm7XQ9/PwogFsMWhSz4gVh4zw3IAENIPkjlVlAM/gz8= 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 1744206725694569.5944644748032; Wed, 9 Apr 2025 06:52:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Vo6-0007FP-OI; Wed, 09 Apr 2025 09:49:34 -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 1u2Vnn-0006nT-Dg; Wed, 09 Apr 2025 09:49:19 -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 1u2Vnj-0005ht-NG; Wed, 09 Apr 2025 09:49:14 -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 539DT60G025416; Wed, 9 Apr 2025 06:49:04 -0700 Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 45u3kksbjp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Apr 2025 06:49:03 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by SJ0PR02MB7181.namprd02.prod.outlook.com (2603:10b6:a03:29b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.35; Wed, 9 Apr 2025 13:49:00 +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.8606.027; Wed, 9 Apr 2025 13:49:00 +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=wi2jtWbsQUBkOPHldM0psMluwrKR0ryayA5kJploI Wk=; b=XUJUc6XWQME7NCJ9+oOOdVFfFKA7b2PGxGJyE0esxxl52Ojgw7X3fNGky Ld446jnjhmUxCqnBPL0kTjRIFv7wzM0IJ6boet+e4NZTKOxb840deeBUkIejeS+5 OwVAhdCJDU07Pzq+WzeyyRkLe+a+rbIKVafKzIlKJpc5nSU5cWRQ16i3P1PPuVv2 bcweoPdIkiA7FS4cztkXlsRU5M5bI7m672pLe8STiPzQcViKhLe9rWilVXlbOiZG ESuQEJzPgcc4HqK5u8oIWAIV02d/p3q3B/d8kzsohnedOpNI74se5UTscpLAlVQ7 d31Hhqh140UEY577HCxC4/2mcA/pQ== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mKGxEZxAIpG1dlOkxYBpkiCMOGe5bG+Zsqha0N7rRLXLFrZQzsc/ZsGjLNLsozGNZe5lJNnSAK9LZzj0u9XpGVIW3H+oYC4Quy8iJ4MAf2MD2qwFl8Jh848vQGtSXekpmcvZ5QGFbEcc3MKbucNzAuefjcZzBT7Ko2+dOBjYTdbD2PZKFpCJPDYCQBlA9g7gCX7AVT/9nfTl+Je21KUPNVk0P1ZfrLgOLq72FlXPSQ1pabBkTMyK8t6ms6TkuVIWX7aseySLElV5Psus2g3F1LEzRgObWB3yeBwVYNIuBQeCaeTqLcatRBz7f8c0WXl2igGsbE5iEm6jEzAK9hqbvQ== 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=wi2jtWbsQUBkOPHldM0psMluwrKR0ryayA5kJploIWk=; b=OFFKfIiNNS/hpoSK2sjZdCghg6jia6lzZaem0pdjwEQabmzlIk1tDsdTDBIWmgSIuzx5GmrhpAp3g2+DC4OYgwxkg5RECRz6a0wsKFV2JtA3Fn3YYgy7cbEIalN1VRwOqrmm0C/DmR4P+nxsm9FtlvZ3q33GNsF/N8cHtV+Rk4cIvWEUFBn9Q3h173ichfi4k8oGb6J3UJ259YiRrZeDmN5D7uY3a/Af5FCNRAviWMgIcDkE9fHdovVR+YIYzhXzgxdYPNfESeGVIlhhQfBeOzLJtlUXuPopbQbpkQkTBUzodzKM+U6VZdmuD1zz5Ty1ph0zx3jOmXIZRPMvs8QC7Q== 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=wi2jtWbsQUBkOPHldM0psMluwrKR0ryayA5kJploIWk=; b=TDihb3pI9Rxdkvi+x0OYenidxG+m4BRt0ngwckwRj3SFdJ9uaUbo5JJTmVmTRQYxUiXwgMPpXj7d4RlCBccaNXj9gGhZI9uvgCdZm/N7kToB+QGdRxQjyyQG0h5Oo6mBVaTCi8e+QZRJCozcd+1yBwRhV41TuRxdNNi61u2NOw/KFANqq/xhw6WimY3ZqYtwUcEw5eSFGuzKhvb1J8md3yaj7QHihqOdQVXAJCPs0eOP9/5wb8nTXRGychWdc41Y+sQ6//O+LSdf7C6jHcy4gDuX/18h/1Iiq0M201cCByxVyW9bS6OOFLBOajqqABOjCwiXNUOEEmISJZwX9puzAw== From: John Levon To: qemu-devel@nongnu.org Cc: Tony Krowiak , Stefano Garzarella , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Peter Xu , Thomas Huth , Matthew Rosato , David Hildenbrand , "Michael S. Tsirkin" , Alex Williamson , qemu-s390x@nongnu.org, Tomita Moeko , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Halil Pasic , Jason Herne , Paolo Bonzini , Eric Farman , John Levon , John Johnson , Jagannathan Raman , Elena Ufimtseva Subject: [PATCH 14/14] vfio/container: pass MemoryRegion to DMA operations Date: Wed, 9 Apr 2025 15:48:14 +0200 Message-Id: <20250409134814.478903-15-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250409134814.478903-1-john.levon@nutanix.com> References: <20250409134814.478903-1-john.levon@nutanix.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: AM8P251CA0028.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::33) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|SJ0PR02MB7181:EE_ X-MS-Office365-Filtering-Correlation-Id: cbb4599d-1caf-498f-e630-08dd776d4831 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/l9MxAQo5Pi//wkZ81j9cMB0bM8WG/dE6vLcmfxlwYVRKL0dTZY5laISnoi+?= =?us-ascii?Q?455oLwQ2X0R9pUxg6QXx+4wT/EtjzU5Ap4MY/rNhRBuuxh/BbfiBYdekfTMG?= =?us-ascii?Q?fRxunymyxm224QNWUDKIluwQw48tVi7gXsijXH3ZHNXXU4ZxSAiB1LCNO8nz?= =?us-ascii?Q?6EeLEpgmrfhrV61Ym+hlWo8Qz5sbrCpxIZJhz9cC5NUwc980/T4soORNrn+Z?= =?us-ascii?Q?MlwfDh20ITS5O9A9p1/Dxmn/OdC12Fsn2Z8g6LgyutGOEXIt2GtmmAx6BBgn?= =?us-ascii?Q?YeAwPdlL/4VHlVCqnObXiwDk3yIkMjXfjEGDJyoCjsFXhzActIb/dh6hyHoL?= =?us-ascii?Q?e0GX5FoHzCuLlXtZzQr1MkXoXmQbubHyksdKfw7taziUkUEmvaZgbdjpx9il?= =?us-ascii?Q?lo/iN8no5dxkMXS7rABA658gaUmBEgvE4psJEoQ1/GbT9LKsBtE+bJoWGJm3?= =?us-ascii?Q?Lka5TAcvZNUWfukhsZzmhF9HW9VP7rjckxo6O0WFt+wIZSh5igOe6hwLgvxW?= =?us-ascii?Q?s3qWdCiJkVq7kMZPaCnkPyS02o935oIV6+RxROhwUKUJz7eFym4q5blSng63?= =?us-ascii?Q?/7NtYgbSXa7STbH5hKz+cQbP4LT5GhXZTp0vS8nFmwH8ESwL64zrOZXTdLlz?= =?us-ascii?Q?iT/241M1rmPBMljpc/5+r0hoGsKwHrXc54oREq6xNyUrEHKgdJs8hEagnsLe?= =?us-ascii?Q?kOAqHe5e1LxRnBta7MhH1fPgap/dTFa8foW+7DsThhVvof4SKDMTWAGOvsx8?= =?us-ascii?Q?uDbACRIRjw+lDZABd1JyRHpAumoGbA0A3muj3sfnpLeup9gNxCLqxmJtuegs?= =?us-ascii?Q?rCTKOz1g8iLnpNrvp/tfJUKkxP3SLMLJt5G6o3ulUySkwNFNsWp1/rhq24cf?= =?us-ascii?Q?hlLM/I1yugMfMLQeER6h2ll7/mlXwnx99Zpg+hOwOzQjocOCNtrd1DqizNXs?= =?us-ascii?Q?j9AHvSg+r///QopVuGc2WTBdDomeLPxP8EJTWlv31XXjz4QVVUsrlal3fmH0?= =?us-ascii?Q?42KEFryvbLJnWRpw66sMO/hn1CBhZLgs1HVBHxSAK6irlxZ2tm/Np7qqQq7A?= =?us-ascii?Q?BxGOBLUCvC+hgOTJkdrf7VREHDEYmkTBlLehtCqYrdbhQ7G/eYJ876NgsASm?= =?us-ascii?Q?P01mMUfIFS6ttTrZ1uCzOEZIVJkS7LCX76v3LTN6nagzvTJyFO4Wi06j9MLe?= =?us-ascii?Q?IwmcgnWLOccooipVctay1J784LNKjuDmvBTNKM1UvAU6Ajn+GZxTx6xlueAj?= =?us-ascii?Q?cqksunOJoA+3V6y9jO+qivphksQJ4NFwdZBoATMlSZC3Xedb6xX9rM1mDexQ?= =?us-ascii?Q?0BE9lck48P6xgDvx1f73Pc/t8jgwsxPDGY6RxUNIaAMr9yEpwEb0H6p6lWix?= =?us-ascii?Q?zATboNFpp2MFoGwwhR4Sz8h76m/RG9tFpzPke2/mhr4WX1QSCKjcA0QDllKZ?= =?us-ascii?Q?oFMnG8++ECA=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)(366016)(376014)(7416014)(1800799024); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cRTYeh68hkgqcluotEsFmThZz9h+DedXoIGlTedoc4O5k9w1iRAW9LkLg1Yr?= =?us-ascii?Q?9zgEaVdNK8MTys5RhUmDAA+uPu2D4CvvEEFM7TznrnuaCIJfCHa7cFJmKEIs?= =?us-ascii?Q?hRQPmtdhxiDuHvFLK4KMtnxSw3zyPCbqVs9Fe7+debQKWXVpFbFzqJ0mbIbK?= =?us-ascii?Q?+PtNM4hAjnCi3Sg8jOYg384Fdt3rKMh7GmkMGKvOfPBibvZQXSXF9+iUeOTo?= =?us-ascii?Q?pwfbWG3adcKp94XZbCc8w9OyxxEv2uEKcYs2mnThSplHQsLilvoGjqtoKKek?= =?us-ascii?Q?zltq19wXfN80T0dZz4/PnD3M5Fh8k3G0LPd/KPtx+LqNt0oPqF4Gv2tVsEwP?= =?us-ascii?Q?YTx39rPndif8CKXl1iISYpWr7HqY/ZG82vaiBR16Xd0Fw/Y0WQDk2GKOSlAe?= =?us-ascii?Q?9Bwtcf7sZnIZ1wt2T8wZbxbXwDTGUVUR5jGEq9kliZv/yyoToqhs/NtFQ1XR?= =?us-ascii?Q?BaKfAnHAJatKalBGfyQLcFHOuSoMr3ShiX9ueYVgKm3eIM1E6ZjCfL0srn+2?= =?us-ascii?Q?goHsWqKoASZ1xz3Rj9rI1TQCdK7X3gL1cV96GJPTXJq673L1Vyb/I1qNK2Uy?= =?us-ascii?Q?f79HB5H1vAad/z/g/k6KahybIA2uQPHyKqBZOXr+MmFWhWgWyddL2TICksxZ?= =?us-ascii?Q?6P8mvoLGnq7Wtxe633R0oW5Fr1p0nxVbRbF7ZUZ6DUy5pWMC2GGAUa3UF6aB?= =?us-ascii?Q?jyvzdjUEfE93teYZMqtadk8Bvc82s3pmf/lBq80ag22i+e6g8MuIuVNvOT60?= =?us-ascii?Q?o6OvJrkyDUg0pD8xL6GX8c8nkFo+1eSacU+3NQalhREAzTncFNHWekC8Swe4?= =?us-ascii?Q?yZsrfNtGfsvv1TCGCLpwh7zSJvvES1HrhzPdoCcoE+GcBT8h8qI8hpsAWb90?= =?us-ascii?Q?YXx9nDTwle32GKeppTGntxmSXTEuFLFFGJ5GIM/2pX1sHMuacfuzfQBejEs2?= =?us-ascii?Q?9YYSRJjMif5Mb1+dQviftnPcEFcFwZE/XfBhYKFRhtcoqad+Gov13UBRUkXN?= =?us-ascii?Q?0R87afq6hO5R4ZniATWHaPnw+gotzY9iRnYtuXbZS/1b0EdQYvzCbv+JOrZ1?= =?us-ascii?Q?hJuP9l1k24mdADhKVABqPgaOPAGC6ip1/iOkgV7srDPxr4UO+1lyQ7QY1DXB?= =?us-ascii?Q?OIHZU3iOcSoCe/FgGgquAABd70vMuIss3tjcVqRQUkRSRpzTXuC7D2m25cek?= =?us-ascii?Q?sts29/AyrPXKEG2vCWADvc8bpqN6gX29XuCHMErJoOTRUzG3LB8MX+0AiM+m?= =?us-ascii?Q?wDGBn4PJ3Zq3GbzXq2V8z8av/T7+vT448IDUcbRB1h6u8rlnafTAVeesdKZ9?= =?us-ascii?Q?Ix63sXjc8iRpUbhV8lVWDZBLrNkt6FkHwR3xJxNgKF++kcvxINz147cA3I9k?= =?us-ascii?Q?hsj6MgDO2qd40qH+9T+PxnLPrHXez5gXAE5sURNx9owIVw/uF9cGd3vXHfp3?= =?us-ascii?Q?sjUtuVprbH9avzE/AWJasUt4ph/zRLsV/xX0O4uPomeV03y1KsJv/q2mz+Yi?= =?us-ascii?Q?j/+zi2NpLFnacAxWecSu6Kvz4pEe9izWcjInvAGlWlxHFGrglpufFV/pIQHA?= =?us-ascii?Q?L4dqqpoLqIlrlp0mYpLFC5lv6RrTxXPtmUJ0qmiw?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: cbb4599d-1caf-498f-e630-08dd776d4831 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 13:49:00.4343 (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: hw9Rgzx0TUe8sWUYgwfF60Cr6y1AOuz1IZdDuQm49Q52oFn6KCDc3L1aWQ36sjHJANC7N4zIY8WBhQMa4Lyouw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR02MB7181 X-Proofpoint-ORIG-GUID: 2DsHcFRSvXyDijvudD8nezNBc9J18dOd X-Authority-Analysis: v=2.4 cv=d+b1yQjE c=1 sm=1 tr=0 ts=67f67acf cx=c_pps a=+tN8zt48bv3aY6W8EltW8A==: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-GUID: 2DsHcFRSvXyDijvudD8nezNBc9J18dOd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-09_05,2025-04-08_04,2024-11-22_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.505, 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_MSPIKE_H2=0.001, 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: 1744206727679019000 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/exec/memory.h | 4 +++- include/hw/vfio/vfio-container-base.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 16fe5f79d2..55c977ec33 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 61333d7fc4..587af60e57 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -215,7 +215,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 22e5b16967..4fd3c0d9f3 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 7ea9e0dfb7..cb06a63a0c 100644 --- a/hw/vfio/listener.c +++ b/hw/vfio/listener.c @@ -94,12 +94,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 @@ -127,6 +127,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; @@ -151,7 +152,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; } @@ -164,7 +166,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)", @@ -234,7 +236,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); @@ -558,7 +560,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)", @@ -1022,7 +1024,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 7efbde3d4c..eb02b081d4 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/exec/memory.h b/include/exec/memory.h index d09af58c97..f79ff332b5 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -747,13 +747,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/include/hw/vfio/vfio-container-base.h b/include/hw/vfio/vfio-c= ontainer-base.h index 6eaf2b2430..47ce016d8e 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, int flags); @@ -124,7 +124,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, int flags); diff --git a/system/memory.c b/system/memory.c index 4c829793a0..de4f955a66 100644 --- a/system/memory.c +++ b/system/memory.c @@ -2185,7 +2185,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; @@ -2250,6 +2251,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.34.1