From nobody Sun Apr 12 04:22:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771491806; cv=pass; d=zohomail.com; s=zohoarc; b=epEHFfFXMkFbLTSFOGKWTdfdE7xFraZLwT8TPS91A5HJs9hlOohemZOg+6pGteXDz4prwGWFF3djnLIyBuLBNJs7jmmPHdF1R9Wbb46Mfed9Hve0SCw6XlavXgIu3I2Csjgbg7ffd04mXhDg6yIPyztNrC0ITO++VBNuPEc6tbI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771491806; 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=yBPYkvHqrCR0tAwMTnX7bJ2nFU7HCEa54A6b5Tdp/50=; b=nNAO/qPjIvkNqElUMVcpxfOn0theRR0TCUu8scaeKFU38HCq60SRc1x82E8DT6d8SniLi/+BuAsLbbvJFarK0MKchn0qWqM2AYcRrSUutxfvikCXWQkEAb9PAYIoUGgRRjkdeqe34HCpPNYIeX7EKEqoMdwTzrVfPJLaoX/mdf8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771491806407663.511090672118; Thu, 19 Feb 2026 01:03:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vszvE-00051O-QW; Thu, 19 Feb 2026 04:02:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszux-0004ye-W6; Thu, 19 Feb 2026 04:01:53 -0500 Received: from mail-northcentralusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c105::1] helo=CH1PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszuw-0002Om-9Q; Thu, 19 Feb 2026 04:01:51 -0500 Received: from SN6PR08CA0017.namprd08.prod.outlook.com (2603:10b6:805:66::30) by BN7PPFD3499E3E3.namprd12.prod.outlook.com (2603:10b6:40f:fc02::6e3) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.10; Thu, 19 Feb 2026 09:01:44 +0000 Received: from SA2PEPF00003F61.namprd04.prod.outlook.com (2603:10b6:805:66:cafe::76) by SN6PR08CA0017.outlook.office365.com (2603:10b6:805:66::30) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.14 via Frontend Transport; Thu, 19 Feb 2026 09:01:43 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F61.mail.protection.outlook.com (10.167.248.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 19 Feb 2026 09:01:43 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:31 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:28 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lkAcGZvDkogaJudnopJVq7KgFoNKhVIf1aAETnzBX4Ur/V08fGwhrnifwUmD1Vpy5fgi24W70cly3VLd1dqXXNQvmg3dXMdsWVeGnP88R0A5un3g5gpZjVuyFHGQJx3ax3aYyV9egHEXShkpDreW3IMiJTOxiHqWpYRNs4aA/nsL4lkOTAkZApRq8/GAPorb7hNYUzubIP6SPGWx2mAFFj11MkFCh7ESGaCssCr6ieqYPH2kVOynMK4Pu+HxahBqrsg5xMi5osd4qLgJQllKMWkOYacWDo4IYK0R/c440fUIVZ+1osLfdhxOR7/woVlzFhs/aCxAan43QFO4L8O0OA== 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=yBPYkvHqrCR0tAwMTnX7bJ2nFU7HCEa54A6b5Tdp/50=; b=zPWkC7C9DOVnbAUVS9Y1dYebMvCLPv2+Xh2bMhzooTwBPmxNcIoxq5xABQirC/Z02g8jFOAI2iWeI4j8uYghtqf7oSodFOLo7hazm/I2eMGmxYq69M92HmPH2mcJCldQpT99NPDJSyAn6/TaDInWv1imdJ+CUM0BOJ8RwDNTy0ZZNrUMRtRfpxu7TY2q21/QJMwU/hl24e47JR0xywCpPE2ymWXu0yhztqSPHGnpV2cRo0ron8WOIwsJvuIbFPCgedwGIWH48P8T39n4ZjHLqBPphqi33bnVd/RjkyCB8sfqnnQApYIm2De4IEU8PGPDLHmQP5k84uSBghZj1eMQ/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yBPYkvHqrCR0tAwMTnX7bJ2nFU7HCEa54A6b5Tdp/50=; b=boDohBsU+YnS0dvQnZKxC3GoGeWeOvaSRMJnzeRIAP1CYOiFiksnMFE7KTVxf8NyaiBCk3jP7ahwItTvisDbqP+2r73hJF2B1QCEZ5BvT7QemFwzRdgo7lz7DpvT5tTBv47k0ib0LglgBIxU9Ze8iRGfGSYZggSsX8WKKnOJKjSG/kctMNdiC0WT5kvhv3f9QCqMm326Zjj1Xv2lhdmxcJpL86J/rDkkHmetMNIALjM5PEZGVXyLl2I6HuneejQSBh8x+6N7mQZgEhscNJb2XUCz3hFsYQUvTJNBeeecrt4DyUJatpyTRFm5Q6vFgH7hvuK4A7DYXcS9fi01BpdFVQ== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , Subject: [PATCH v7 1/5] backends/iommufd: Introduce iommufd_backend_alloc_veventq Date: Thu, 19 Feb 2026 09:00:59 +0000 Message-ID: <20260219090103.33697-2-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260219090103.33697-1-skolothumtho@nvidia.com> References: <20260219090103.33697-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F61:EE_|BN7PPFD3499E3E3:EE_ X-MS-Office365-Filtering-Correlation-Id: a41ebb9c-5217-44ee-9bd5-08de6f95810d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?CVaqEUBKg22EqmdxqrRppo1RbaE4PCBsDjDCWuwrRTy4DF3b/4Yowi4cl/Hz?= =?us-ascii?Q?0wYUVPp1kZ0i9CXsbV1GL2nLDRMoyPuAUb/uAzGUBN4haBzEdUDfF2MiV/rW?= =?us-ascii?Q?gr9SwZ99VhZn4axUS/lekMrFZgpHpyupnTIK5QwOrvEB0VgdwlWeiu56/31t?= =?us-ascii?Q?DVgxYYZID3y6EGljZojBPPeyMTnfzkfPTd+LtSwqW0JYwctqMPylcTiI4BFi?= =?us-ascii?Q?WoGcI9DuO5gr3jF6/2IlT7kGWp4Aly0rJdXSL15rMJfy2nmTKwEbRcvkvbaW?= =?us-ascii?Q?R7UxwYo6G5xvcp3mDu5gkrvlhG6VQ2sVsA8K9NjrUAWd87cKS1RS/5gyYSMX?= =?us-ascii?Q?i6lU1i9UxcuSnEDHSTJ8IchUZtIyw+6bjprC3ZYEuJHdTNqXUr3BFtMPDytI?= =?us-ascii?Q?hb3hwCCXl8/BKN5P/B2wPOBVzuQrGjJaXghqZ8UwDHQ9pwKRXOW65YVSKjjV?= =?us-ascii?Q?3w6VEoeOMhl5LbiQ/iM5lsMNLZrR02hTVP5HeRurnZzWOWu5Uoexo+CkFCW5?= =?us-ascii?Q?fPlvX4aBIip0d/PVuBkVNw25x5sRoOHDTFCywyk0ybbNlsxfr8BIOaB89aN+?= =?us-ascii?Q?5577+jIE78C3Tb8LCy9JwIuvcDtWDEnQx04MATIdXBA1K/OEiROt0fFKhVqj?= =?us-ascii?Q?bGLb5gzMROJS2t19sKkjSrVE6OQT4txkbIZnV+z+L7MVO4KiIuW7LWQBnUo+?= =?us-ascii?Q?9XjEh0rKAU6FcvCHIchVjvFakJqegxn0sPF3SVDVuwfdktK1IoK3UMd8UbUJ?= =?us-ascii?Q?hi0QA55rBT9K+ICiAnK7adj41VR37ZLCU8Lx4QkJA5Nyk5pfn0C7FuVNLqB/?= =?us-ascii?Q?L1C3C6NG5+1vWjQZZoJIdE+Vxj3kMgGv+YenmIEs2AQ5idw5Mh0XlRRG2cB0?= =?us-ascii?Q?pi/drVtPEVxHSfzpGaslCAo51P4nenMIE+Wri/SVsmsUuKLD9CYC1uv+zZJq?= =?us-ascii?Q?wXoHMu5FKLo/pAgAwb3oNRWtYYgUhSth2OfrW7mpcNdSHvhlqRjxcBTgnH2l?= =?us-ascii?Q?4XN8pADtsET5JPsgaYthlmjWNu6kGe71pstYcnIqosPBEVkQM/D+ZTJj/kwJ?= =?us-ascii?Q?/w/E442dUhgz1wRrdJFVGVx8CmDYlR8jPnC29Lr6h9B3Rosopm8heVwgYvnG?= =?us-ascii?Q?7A3IHNuBOQpvOSEkdxeWNJp6TyMOpRPH8uUEvjK+pU2z8z3OhDOfzPffcMzp?= =?us-ascii?Q?Uq+FPuzFTPrJI1LWYKyXpNyxuk5hockXjoHm56yLV1PzKEGZfcwk2NqJbBu7?= =?us-ascii?Q?+9+tanF9NYa/3tCcCd1kh91BbksTyvAFyrKpW/OgF73OzcYc1bGfbt2G5HMk?= =?us-ascii?Q?S7oxAOaCgT/lip17DPnyZiicwiS0BtrBbKbPjaM/kGbBuP0wPUDqzFM/iQLf?= =?us-ascii?Q?6jE9S3SPqGlQknD65QdFq7qtK7h8W5S/PcCkRVdJO2bZpojV/8xtVvxcNJlO?= =?us-ascii?Q?5GQpgyyZd18jrv7kWdNjfllhrPdueTbe+lo+dFs+bvvSTcAiT3GwsWGYI9la?= =?us-ascii?Q?Ss/x5+M7/o2mIUNiNMue2W+d+mXT+fC6b53U36iJoMy9fge5KGtvTAA2wbUe?= =?us-ascii?Q?A757frV4DvYSTAhVchDlHqqvTiR+JQav24QhRI01bAsBHLwSJ5FyRpxOetE2?= =?us-ascii?Q?BKwhruhHeywOshqarwymqKGFd2x8Zvf3OxPBgICjbVgq6ZgzM10P79Z8/KhD?= =?us-ascii?Q?+gSJPQ=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gzVCjHbaswuoQEVRPgLnU6gVHM4vBb3dsfDADHi614jAiZAByrmWHwJnX3cpihnykqsLJ7I1riAS2snFnqNUrKIH4Qqml6BCC6jDNdF/+DvAmBeKiMe3o8TkJ0TSLd2V7FbXFo0SZGmyAR3F3owvZ54rk9L0tkm/3S2HXz3Ai63k8DtGzMP8XeKhPtPXOcBFCNlbZEh42E5zepKL7gurXmF9sCBKk4y0er6RFcFsZqlsysCsxAfzosbaxESSm4q90TVqr0dj9ZyglZmLTizygBUDX5UPMkba+gve04mrf3W4p/gk5qBZ7HqTeLcBdmprc9f77YIxWSeCOp53dHyPv4WjqC6rOXUJx1ZzLo18WqrrE8hpnyPIDSuox9A0ALtvdFmWZHiKSShN3HLlPs0SwxikpW+hSnb4gvuwP3iNjQ5cqr8ieSDxr1lbP9m9e+ba X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 09:01:43.7539 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a41ebb9c-5217-44ee-9bd5-08de6f95810d X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F61.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPFD3499E3E3 Received-SPF: softfail client-ip=2a01:111:f403:c105::1; envelope-from=skolothumtho@nvidia.com; helo=CH1PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771491807869154100 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add a new helper for IOMMU_VEVENTQ_ALLOC ioctl to allocate a virtual event queue (vEVENTQ) for a vIOMMU object, and define struct IOMMUFDVeventq to represent the allocated vEVENTQ. Signed-off-by: Nicolin Chen Reviewed-by: Eric Auger Reviewed-by: Nicolin Chen Tested-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Tested-by: Eric Auger --- include/system/iommufd.h | 14 ++++++++++++++ backends/iommufd.c | 31 +++++++++++++++++++++++++++++++ backends/trace-events | 1 + 3 files changed, 46 insertions(+) diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 80d72469a9..7062944fe6 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -56,6 +56,15 @@ typedef struct IOMMUFDVdev { uint32_t virt_id; /* virtual device ID */ } IOMMUFDVdev; =20 +/* Virtual event queue interface for a vIOMMU */ +typedef struct IOMMUFDVeventq { + IOMMUFDViommu *viommu; + uint32_t veventq_id; + uint32_t veventq_fd; + uint32_t last_event_seq; /* Sequence number of last processed event */ + bool event_start; /* True after first valid event; cleared on overflow= */ +} IOMMUFDVeventq; + bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp); void iommufd_backend_disconnect(IOMMUFDBackend *be); =20 @@ -86,6 +95,11 @@ bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint= 32_t dev_id, uint32_t viommu_id, uint64_t virt_id, uint32_t *out_vdev_id, Error **errp); =20 +bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be, uint32_t viommu_id, + uint32_t type, uint32_t depth, + uint32_t *out_veventq_id, + uint32_t *out_veventq_fd, Error **errp); + bool iommufd_backend_set_dirty_tracking(IOMMUFDBackend *be, uint32_t hwpt_= id, bool start, Error **errp); bool iommufd_backend_get_dirty_bitmap(IOMMUFDBackend *be, uint32_t hwpt_id, diff --git a/backends/iommufd.c b/backends/iommufd.c index 13822df82f..acfab907c0 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -504,6 +504,37 @@ bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, ui= nt32_t dev_id, return true; } =20 +bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be, uint32_t viommu_id, + uint32_t type, uint32_t depth, + uint32_t *out_veventq_id, + uint32_t *out_veventq_fd, Error **errp) +{ + int ret; + struct iommu_veventq_alloc alloc_veventq =3D { + .size =3D sizeof(alloc_veventq), + .flags =3D 0, + .type =3D type, + .veventq_depth =3D depth, + .viommu_id =3D viommu_id, + }; + + ret =3D ioctl(be->fd, IOMMU_VEVENTQ_ALLOC, &alloc_veventq); + + trace_iommufd_viommu_alloc_eventq(be->fd, viommu_id, type, + alloc_veventq.out_veventq_id, + alloc_veventq.out_veventq_fd, ret); + if (ret) { + error_setg_errno(errp, errno, "IOMMU_VEVENTQ_ALLOC failed"); + return false; + } + + g_assert(out_veventq_id); + g_assert(out_veventq_fd); + *out_veventq_id =3D alloc_veventq.out_veventq_id; + *out_veventq_fd =3D alloc_veventq.out_veventq_fd; + return true; +} + bool host_iommu_device_iommufd_attach_hwpt(HostIOMMUDeviceIOMMUFD *idev, uint32_t hwpt_id, Error **errp) { diff --git a/backends/trace-events b/backends/trace-events index 8dc64a20d3..b9365113e7 100644 --- a/backends/trace-events +++ b/backends/trace-events @@ -23,6 +23,7 @@ iommufd_backend_get_dirty_bitmap(int iommufd, uint32_t hw= pt_id, uint64_t iova, u iommufd_backend_invalidate_cache(int iommufd, uint32_t id, uint32_t data_t= ype, uint32_t entry_len, uint32_t entry_num, uint32_t done_num, uint64_t da= ta_ptr, int ret) " iommufd=3D%d id=3D%u data_type=3D%u entry_len=3D%u entry= _num=3D%u done_num=3D%u data_ptr=3D0x%"PRIx64" (%d)" iommufd_backend_alloc_viommu(int iommufd, uint32_t dev_id, uint32_t type, = uint32_t hwpt_id, uint32_t viommu_id, int ret) " iommufd=3D%d type=3D%u dev= _id=3D%u hwpt_id=3D%u viommu_id=3D%u (%d)" iommufd_backend_alloc_vdev(int iommufd, uint32_t dev_id, uint32_t viommu_i= d, uint64_t virt_id, uint32_t vdev_id, int ret) " iommufd=3D%d dev_id=3D%u = viommu_id=3D%u virt_id=3D0x%"PRIx64" vdev_id=3D%u (%d)" +iommufd_viommu_alloc_eventq(int iommufd, uint32_t viommu_id, uint32_t type= , uint32_t veventq_id, uint32_t veventq_fd, int ret) " iommufd=3D%d viommu_= id=3D%u type=3D%u veventq_id=3D%u veventq_fd=3D%u (%d)" =20 # igvm-cfg.c igvm_reset_enter(int type) "type=3D%u" --=20 2.43.0 From nobody Sun Apr 12 04:22:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771491825; cv=pass; d=zohomail.com; s=zohoarc; b=UseJQH5n86n+zK+DdT5CWVsR+1E38i+iAvsP7jDdu5gK+iOxIvicrRc47+ylmC52MFl8kCQEyrpecE6MJkn+rr6KBZJRWYTnpHctqrFj95DkZIQ/4NH+q/Th8g1XOAH3OHCJZCMUMWr0ZZDtOZKe6FGnWoFKqaeWDWX/I1KdSJ0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771491825; 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=a7I/7El4fdID0nN4B4A0S9QpxBwfSm8gU/rzCLAlJMs=; b=R3yR6ImPSbBKQiGoyDnY8N6ey18I786thlwHj7rU7VTgXIdtScAWOFYpSNZB82E+2ffxFIG1198dtYQz8RuGj0+1f1YXLoJUqYS7Mu2Qto9oZJdxiky0fQDjetxTcYCc944x9Gbqt4vRUbY8ANZI0srruBB3enNgY0GFYOm+8Ck= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771491825459479.9939466460179; Thu, 19 Feb 2026 01:03:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vszvE-00050Y-MH; Thu, 19 Feb 2026 04:02:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszv3-0004zB-Jk; Thu, 19 Feb 2026 04:01:57 -0500 Received: from mail-southcentralusazlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c10d::1] helo=SN4PR2101CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszv2-0002Pi-7M; Thu, 19 Feb 2026 04:01:57 -0500 Received: from SN7PR04CA0007.namprd04.prod.outlook.com (2603:10b6:806:f2::12) by LV3PR12MB9216.namprd12.prod.outlook.com (2603:10b6:408:1a5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.15; Thu, 19 Feb 2026 09:01:50 +0000 Received: from SA2PEPF00003F66.namprd04.prod.outlook.com (2603:10b6:806:f2:cafe::3d) by SN7PR04CA0007.outlook.office365.com (2603:10b6:806:f2::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.15 via Frontend Transport; Thu, 19 Feb 2026 09:01:49 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F66.mail.protection.outlook.com (10.167.248.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 19 Feb 2026 09:01:48 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:35 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:32 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tI/CtfDp23B51qZHd/jv+M06sCD/4SqDEG3L050hdmReoFYgdW1RtW3sNDCT/iof+42XzjUdclxHpiD8/Vm+yPpED78irIi8sID1WKKmVok9/79shGlew4VodvBUeziag37t4C1crGtbkL2aFz0D6TbNELFUUyfxzAH9FY7tu2KKR8wOz4aFM+5y3kiP+xH0gmwoRqprZB8v4PCLdJ3AxLnkNoUrEE5vP9LZnzHI5rT8zF6hfq20vBjsNXYQcKUwELMUMy9+PYfRAeYUOPgcJkYlvfJcOq5x+mTo4JSU0Qz4dpth5ogjlU0Tf1F45U+W8vXx52X4i4v0akZ02pD2RA== 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=a7I/7El4fdID0nN4B4A0S9QpxBwfSm8gU/rzCLAlJMs=; b=avE+MkTYrHc8aC/KXyXgC45gN725/OTRaUbmcAS9W/6SJBd22jC4uB2fTy95Mf7hZF88b83L0ZS3quPVYrGIdI7D4ofb6azSgOFCMoIEfSrSUuqnh7XZK11imxhGabo9QlGSyUtPqATognlb8rwIoIegQyTaauvaGQpkqW5gYOKuqyNPfjXtGWlwkRGaHyub/RACbFUyV5t4ZAgoY/efqN0ZeC9x7mfUygm2ej8eh0fmd39GhMPREhvZ+o2mGLnXpfd7wi8ivAYJjAADlb/4ajPwxtPDY9ZoSbkKfAK3SC6FqGQdC8ArF5tKFj7wFzYez1no7a4YiVWy8Aim33H0CA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=a7I/7El4fdID0nN4B4A0S9QpxBwfSm8gU/rzCLAlJMs=; b=bJWQuLNQdoiAuT9JnW9st7J5M+5gYrPjO3DX2r6aPAawx/kNyXeq8iYnQNYeYfvwRg5ng8GOiqjq87PoT4zcRhQ5fG3E/QyGkRDIWRQeEjx3T7JT9pak3FO8Kzbu83I/1khLYMiClTjhL1n673Q2CtllKva22PyR+vfn2WsXu8uMm3ywcnppGdv4yQAzZgij+Co+lZez6cfnS/E6A9dVucgv/9OrLm2WaAi9bwASLb3ShvWDGR9Un3VYpXNaoq3sp+nez7egUIj87f+W9QRDVPJcIBI47K4J+umiTm5T73ndhvNmcYPnpw4dIx6eEyY6b9vNGG/RRct8IFXR2wdZFw== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , Subject: [PATCH v7 2/5] hw/arm/smmuv3-accel: Add viommu free helper Date: Thu, 19 Feb 2026 09:01:00 +0000 Message-ID: <20260219090103.33697-3-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260219090103.33697-1-skolothumtho@nvidia.com> References: <20260219090103.33697-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F66:EE_|LV3PR12MB9216:EE_ X-MS-Office365-Filtering-Correlation-Id: 591a4b04-aa0e-43eb-8f90-08de6f958413 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4kaLTWWMkuOmkkp3q8WyPmjLYXB6FHv8j9H5QoEQy/8yvMjRK7VmZmFD2S3a?= =?us-ascii?Q?djNG9WkAe5Aq7OkxT5InCptio7bZXa6QfbpXb5zeBw48iXjJCEuJDui0K+UD?= =?us-ascii?Q?KKHxlV+VM+pdUfhNOFbkpQiYdiWl5I0n7ii0k/OvKgC6xphWVd2Yp13ejYr1?= =?us-ascii?Q?Tzs8MjBQxnYZuivvPug5hBjC3tgGqx9oig1x9+9Sn+5GXhvL1agH/m1bApiL?= =?us-ascii?Q?/tVmc852U8nNqMiRDtW0VhPOGCYYVEsb4VIIWb2QbX+PDYkDXlKcA5UVcC8A?= =?us-ascii?Q?/3cYGdDD92TSM9IrnLC1y1XN58wPFLvKKM0tp411+IVUxu8/44UuUKknYqEB?= =?us-ascii?Q?PedWe7RUrC+/DMhn15WSqKLvAK08YgeFRjESQUJJggi0LwgH6zp9bo5Bovxk?= =?us-ascii?Q?NEjEwKNzHmWFKJmvHUGlKSwsmZglI9R+RuawDjkAjKignZCVl5KkOweGunhK?= =?us-ascii?Q?pq11cvRASimNVUhyhQfjv8zuByJasSJznTOLg6GSeUKCuEVgLuFIMF6JtSu9?= =?us-ascii?Q?atXXxdvYw+SGl6eRdQF4NtRyRIisbql2nGZttVcGlnEG0Ph+YjWvb0WDb944?= =?us-ascii?Q?ea4rlVv29qND720epyu6uXJoSLossElQ7erhNAl8sObA5lIDUre1Y9ZFsS7b?= =?us-ascii?Q?kmWaBucxkMWY3H0vY8rrHiSxX0cd0iIKqSwr+IO48H9vuUnYda0xOrPf2ERY?= =?us-ascii?Q?LS+PzWeuqTGHL0ZzvrXyy2V8BlJAloIKgaN3mWo3MmDrXKeeTMN8kuTO5ecC?= =?us-ascii?Q?J8qE0pwG0lTLoV/gMA3bAfwj/mPbvII2qKHnBO3gbR86S1l9fBJeIEGfQ1WY?= =?us-ascii?Q?nT/jK3l/SUu2ZHM9KUHqgzSvOMVHBwYWLjBDiTOE7WKupZn5OPuddIxtCcZK?= =?us-ascii?Q?p0t1WAfGLJ/Om/bVVRSRedrJp0yOs421CsISDzR7ifQJWvejcphAZwiQyctQ?= =?us-ascii?Q?posY/Ck81V4mpI6AIHWYnd3mmK2wZ6y0IzEgH0SyWcmQL2cWAsYPhMzcxS7u?= =?us-ascii?Q?oyWzAmw59Tjt6IjjlTkXeIvbBtr8g8k3V3vGlndF9QVAD2VMw2SWphfwNhRm?= =?us-ascii?Q?L7KJ2/7jPvoeG+q6X763FcLp69Okwefa8hzNwT6ROkJzrOu5SWUdlcMUM4cW?= =?us-ascii?Q?bvq9iwrIok+kk6H6zYBJ44J1wJ/4X1u6GhRY3gj2XTf42pcCMvnHvSQWeKr8?= =?us-ascii?Q?q0C+1sc6le/tLfQg75BlJHZjLG99r8N7AQ6GmRk9cJFFg8oywFYpQnZ8B6B2?= =?us-ascii?Q?Hg8VJDtpObCcnGDRgTXkBpQlBj+gnk1cGSV39ZM4+5JHu0ELPPO2APgdyhMn?= =?us-ascii?Q?pdRYnb4vSJ2k07pwS3FoMZMPhk9Dz++rKHm39++QCHkUJrUq4zwLhnVOLByJ?= =?us-ascii?Q?peOyNVWm25qQ0fswardOmLm7zqClXBR9Y4kg2XAGzrLaXO4zhn1ubU2aT/sF?= =?us-ascii?Q?h+Yi48aCVyalndNqA1K2Qle4zACZfo18OK5Sfg2jjzEug3AZS6R14eQoXyTj?= =?us-ascii?Q?wvwNjiyowOr/wfUd5/bnVR9piMfebE/wNbhPtyLJwPh1MG9TW+QCMbpQfMOf?= =?us-ascii?Q?e9LgtP6lGV9MERvki63kARsba8dYArSZXgvitn5tIEgF5+NK7REZFIoXqhq7?= =?us-ascii?Q?o/fzWHothNfHrkwJGkgcHJp4X1Fix5TzbAfX2YrYre3BmandN2yKB1mxgE/p?= =?us-ascii?Q?Wfa8zw=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5qcg4ncVKvUL1lkcFHZ1d/uKODAbeFLImWrc3bDMs6uLwIoV3IP7ZemVWouVpDbVyYTvPoHiKANE++0k85s+kHEsyCY5nYCjInus7GyNDrmvFAYKpbhfLLhAXYpIgRC2zMsqS8Lv/qnXFDPtu+o7GzsvFUTI0qPZLUpo7Irj9853SB87uimU6GaGlmf/VfUhVI+FPEYCpfVoGq4OqM4KgpK9Kuzas9XbV5fZKTEnHlndFASJyeWie3oE1D8Fm3bFJKr5EtJknQnsI41fQRNWRT67Fszf/48v461P3xTkVmmpn+zkt8K3r8PAvy6/i4oLxNjzuAtWhaaj7T00M0kktJ+WbFgsNg8tsadgx3PT3i8AApWpcpzyO9JkgFBnm2A8E/a3dBDMo+JPA0AHzjQUg+/KdX7m4gcCctCVqWSHmW3fgN1ZUHjdMOQNbf8Nj2nw X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 09:01:48.8357 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 591a4b04-aa0e-43eb-8f90-08de6f958413 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F66.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9216 Received-SPF: softfail client-ip=2a01:111:f403:c10d::1; envelope-from=skolothumtho@nvidia.com; helo=SN4PR2101CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771491828154154100 Content-Type: text/plain; charset="utf-8" Move viommu teardown into a helper function and use it from the last device removal path. No functional change. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Tested-by: Eric Auger --- hw/arm/smmuv3-accel.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index f5cd4df336..c19c526fca 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -390,6 +390,20 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 +static void smmuv3_accel_free_viommu(SMMUv3AccelState *accel) +{ + IOMMUFDViommu *viommu =3D accel->viommu; + + if (!viommu) { + return; + } + iommufd_backend_free_id(viommu->iommufd, accel->bypass_hwpt_id); + iommufd_backend_free_id(viommu->iommufd, accel->abort_hwpt_id); + iommufd_backend_free_id(viommu->iommufd, accel->viommu->viommu_id); + g_free(viommu); + accel->viommu =3D NULL; +} + static bool smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, Error **errp) @@ -549,12 +563,7 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bu= s, void *opaque, trace_smmuv3_accel_unset_iommu_device(devfn, idev->devid); =20 if (QLIST_EMPTY(&accel->device_list)) { - iommufd_backend_free_id(accel->viommu->iommufd, accel->bypass_hwpt= _id); - iommufd_backend_free_id(accel->viommu->iommufd, accel->abort_hwpt_= id); - iommufd_backend_free_id(accel->viommu->iommufd, - accel->viommu->viommu_id); - g_free(accel->viommu); - accel->viommu =3D NULL; + smmuv3_accel_free_viommu(accel); } } =20 --=20 2.43.0 From nobody Sun Apr 12 04:22:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771491825; cv=pass; d=zohomail.com; s=zohoarc; b=Y+rxlNmiqol+Id7bp7TQl/19QD4eoSC5qrL73g3wSLMdlpnHcrnHlGqBE0TbnWghYAu0Ww56b5tSeKSDOOWt97YTktnJncrTxMKfZSqzP4089DhKitIfQl/AG6gJET/EDZ3AfVR4aIhrFtPrlhdwaMRp5Fp4a7UMKf/KMUa+c3g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771491825; 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=oyELYqKJdIN5mjDNbwno1Ot9cJLyCKRbpeGg1F1XUdg=; b=QPmmjm/pW1yQWk6k8xp0Dw4FvuWbXuhi7Wp2XEEAKUNkwS8tF5fdrnafkD1Q/7Y/Svb+TczEfPgFY6cxS0/+oYwAaMmQPodyOO5Icvg0Kdi6nKHBDare/aZq4oqADwlPn+x2lAM1+k2ydK1+lFfloToITdkInm211X646yhbXVk= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771491825450477.1062954242427; Thu, 19 Feb 2026 01:03:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vszvM-00054M-Ry; Thu, 19 Feb 2026 04:02:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszv8-00050F-Kp; Thu, 19 Feb 2026 04:02:05 -0500 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszv6-0002Q2-Rb; Thu, 19 Feb 2026 04:02:02 -0500 Received: from SA9PR11CA0026.namprd11.prod.outlook.com (2603:10b6:806:6e::31) by DS0PR12MB8320.namprd12.prod.outlook.com (2603:10b6:8:f8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.10; Thu, 19 Feb 2026 09:01:52 +0000 Received: from SA2PEPF00003F67.namprd04.prod.outlook.com (2603:10b6:806:6e:cafe::78) by SA9PR11CA0026.outlook.office365.com (2603:10b6:806:6e::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.15 via Frontend Transport; Thu, 19 Feb 2026 09:01:42 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F67.mail.protection.outlook.com (10.167.248.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 19 Feb 2026 09:01:51 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:39 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:36 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=M62FlZV0yooL6JVlM5yDA5NPP255y84GNxRNsZhMFaPeU+jafHV1UYxoI8XewtGlhUEUZ8gl1fvHthElyapIKDX05EyfVJIdTJCVjP8WTLb7NwU6HL9pMuL9tbVFgWm0TmuFcy5+LBM1ovoeDOpYNz8OwuKR+7hJAv4pF3s5xL9+lwdL3SeP9uV9kP/aY6MjiaOUSwPh2Lqf/EEr4n8D3Pr10Qhpfrz97UJoqEo59fxCBfTxT29YZLanRc1XwAO5+S70JQcU2oUToclPxarOflulCuhmGeNkChnYWHmIzCwYFCJjC4ikeJt1ylYgDAmxb1ZjRQnjW26MM7vqo3DJgA== 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=oyELYqKJdIN5mjDNbwno1Ot9cJLyCKRbpeGg1F1XUdg=; b=Ttq3HTkrVQCfQp/waEJ2i6Hy26mQ1czzR40RJcxbuGaBvp5uL2ghbB+c+eBHlK8qIPw+tr5azaA205DqTmbi+00D2MapRRhlBnD4BoIU7q7MdckYe3CrtT3I5/SL7mdLLnVvFjSXo61zP0JoRVsE4zIBwRhPTeotntBOnhnBdah6VvceVnJjYxKScESN2QvTcMTsQVKjuA3TWUboCQPqeyUIT/QqeW4fKSjF4uQXdTELO7fuXMKInhq/zNZssUsjwEJfwAbNfGsyEVGz0KAw8mpAJLmGQHRte4SRNnqZp2MnD7K2wrlODbaiiMmGL9ZfBJdxbrIfM069GOKKjWxSEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oyELYqKJdIN5mjDNbwno1Ot9cJLyCKRbpeGg1F1XUdg=; b=NKo52WTo9aaNwSJtbT1FGzbLh3RigCjf+uEiR/b0DDriLQPw6XYGKwCuBiQgqdn2+v+3ghhY70sdyzfd/Lhe9Ly9BgN5qDtOsfep/xn4qN6ADOYmK/XgEiIJVuU8k9qIYXswmWsdecoTjaG3Q0KzDMDLugZuZLKCRjTRsrhno+Aao9AVOnSZDNSDNFLxvL7MHJ4k54Bj6VXILJ+IXoB8mCRHENM6Ct24lPmcY1cYIA7TzzoCtoel0YVf0QYFRPoWApxN2cicmm/57+NCOkDl2lbpHSoWTBxiGtjSyscl/DS4Mz4MZL6oVWUG7YmNtP9pArxXpJOcxZW24+RNAu0y9A== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , Subject: [PATCH v7 3/5] hw/arm/smmuv3-accel: Allocate vEVENTQ for accelerated SMMUv3 devices Date: Thu, 19 Feb 2026 09:01:01 +0000 Message-ID: <20260219090103.33697-4-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260219090103.33697-1-skolothumtho@nvidia.com> References: <20260219090103.33697-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F67:EE_|DS0PR12MB8320:EE_ X-MS-Office365-Filtering-Correlation-Id: e9be039e-f279-4f64-0aff-08de6f9585eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?vWtdXeQizz7xn/t8ci+cdTBTJxvyHZ+94zsPfAspGXamiCjfRu8P2FtwanTj?= =?us-ascii?Q?W9Zam5quqqYq91pWU5izU28NPUjFCm/wFuDO2mFloR4qQ4UNd2NoQXoB6Axu?= =?us-ascii?Q?V4vM7oupoN88hektORKuCK8klOMDWT+Dd0O4CgXLHGHY2N5g0/j5YwJewYkA?= =?us-ascii?Q?bNIED8EpaeLWdEKMUvmoKQM3jRnsOLfoJls55xNFtT8RK2zNfe1946V3bsAw?= =?us-ascii?Q?qIEfL97clG2ggFPcXeu3YGYLgJ/FzwvOl0/SKO3rsShK3dHGsz3Io3t8XcaY?= =?us-ascii?Q?adzkNlzwGjfnW8fZ6m8f5Ds6McNWI/7iS1tWfwkpjq7rIivqIqls3AjFHzhk?= =?us-ascii?Q?RCqIBL1rwTAJm7zC5D1tNsF8OliY17CQjhm4QV4kJOPMNyJU3a7/fqlA2fqL?= =?us-ascii?Q?pTz9zWMh8NzPzy0Sq1oYdmsqV+FYH4yJcJBOLb1+mFk0voBFu25Xhtegl12Y?= =?us-ascii?Q?kZ0bv1DDfM166fh2iMy4uL0Cp8qDNzJ1zjPLKSAzFDjFiME7wGDLmBxMYAJq?= =?us-ascii?Q?JvNJrHBBxkYTa4R7bh4yULULyOT95/pcFi/fYoY4HgPu1FM+LujRkvsgSmWw?= =?us-ascii?Q?hPGn4yoAN28XYM0L6qjcFLI/xmUpA9FaW7fu6oXHwAzZRsVMncq3UQ7Hab/z?= =?us-ascii?Q?NrDz3rVcAmA/bYl+xWd8C4QECbVZxTPT1TAf4JcHlT1wRl6Z33KHg9Rn5OAe?= =?us-ascii?Q?Y+Jmyh+eLW6K3+lEzBMV4ce/+8weEl+j2NeqBCe3Ba0CZ1X8GCC6kZSc3hPV?= =?us-ascii?Q?+D5n9KwiWlURT8PXrlw/vD21IJYL3aC8iyLxRb50qp07x9gVheiv7dQuVCzJ?= =?us-ascii?Q?JtdWl1LS6eYtTSIXarRJI6vLq0CAih11OQcn1mDtNQoX/C0qIAzz3UJi86yf?= =?us-ascii?Q?pEaPf4pggVAy6ko2OCD18UFqpBJT7WsnNE5MqjdgtEkW/WFb6NLBel7r+wWH?= =?us-ascii?Q?UVW4pkKabMbM/idtRV/83lZUCnygZMF15q8/hcOA56RO53dEAx8oDOJLKZqP?= =?us-ascii?Q?FWTlM0iue0dcdEKIrVuSPPZcuRBIqNt3bKVXApoyqLa+h7g3Kkq9KjU1rWpZ?= =?us-ascii?Q?NT38D9Cgm+nAqYh8I7boR5gDfh6n0hkcSbsaf1iOa8aot8Urvg6Aqq3AHvR6?= =?us-ascii?Q?I2MjfY3JalFQaIAAYYTWF9n8BFvRSt/QnLDAYxJZseW6Myb/m+9P7d30PcOs?= =?us-ascii?Q?8PzoL3zBEpkyhRxSDDtkaR8ETcli0kSwlHxafGEokxbLxdMNwgjLGaPNZ2A3?= =?us-ascii?Q?9HByi1Yj7ZZDNaCGi7f+47/4PEMeWIj2MgrIOyUb82YRi1FCJFtkS4XjoHc9?= =?us-ascii?Q?Jg04ooxf0yQ5LTJLJBXr5Ae2wvlPyR3MmJ1h/1oTiQH52ZvSgZhRobEuOy5y?= =?us-ascii?Q?r7iprvrrr5fKwxFf8IiGzjg8ivJHPJzef1FFhT92vqGRuv5nLwVW4Ousob4h?= =?us-ascii?Q?4E8qT0ioUkEDsJ+0uNYEl8fjotj6gPdW2G6Tjy0wUM05znpmOLESMWXQYeg+?= =?us-ascii?Q?zaP/xkWFvopWAkc3Q+2GSFfpNeHqkQuYsEVv3JQ7DHzecgVvyjNX4KNsgLQX?= =?us-ascii?Q?e+ftMLI7xN0o1m5opZN/tqKavOp55BCAO6AV35VWqzhdLm3jCAECuFlWDXAJ?= =?us-ascii?Q?apR5L9mKK31wu7OL7f2xwqP3BmdF3CdDdwuzhEqHZdtJqcL+vOnUy1RnXa8V?= =?us-ascii?Q?m7WU3g=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fKj/aaTVNXLCqvENnWIkxl64vLqaPQ0EOg8yH7a5hsKIkScptHiVZ9gJv+Y2SR45NMIq1/PM9x80sc2fMLsEl3EUEPqs4cZkpHR1p21mmnSDSp2LWZFN9HYjlMaC8+PCyP1yiVNLCtnrfW5gk6ALP+B1sNq5lFxZLJ1tUUeedaKm3yyy+yfqDyfqszLirsd7xsHvZZ1r7tJ70M5Ts/BMJUl1jGd/GIAGzCC6FV7fDwP05Z1dKX9GOikjNNVfSULV88PDb3yuYkeSdD0eGyjPjZZPF/1kGazumr4Y09b0sdhMNAwEln/SMc8dCwMRHu/QKrOnXbTmM5nwubIojqrqxQyIcVjIQglHmlu/BdlEp2GZf50T1VmRIFJkiu06f/e0T7+MNMDpshIQvn//LTlxWu/afeydvi8gYxDGUS5u2HnqeJAdBsoT78nyRTsVFRBP X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 09:01:51.9331 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e9be039e-f279-4f64-0aff-08de6f9585eb X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F67.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8320 Received-SPF: softfail client-ip=2a01:111:f403:c005::5; envelope-from=skolothumtho@nvidia.com; helo=CO1PR03CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771491828221154100 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen When the guest enables the Event Queue and a vIOMMU is present, allocate a vEVENTQ object so that host-side events related to the vIOMMU can be received and propagated back to the guest. For cold-plugged devices using SMMUv3 acceleration, the vIOMMU is created before the guest boots. In this case, the vEVENTQ is allocated when the guest writes to SMMU_CR0 and sets EVENTQEN =3D 1. If no cold-plugged device exists at boot (i.e. no vIOMMU initially), the vEVENTQ is allocated when a vIOMMU is created, i.e. during the first device hot-plug. Errors from command queue consumption and vEVENTQ allocation are reported independently as the two operations are unrelated. Event read and propagation will be added in a later patch. Signed-off-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Nicolin Chen Signed-off-by: Shameer Kolothum Tested-by: Eric Auger --- hw/arm/smmuv3-accel.h | 6 +++++ hw/arm/smmuv3-accel.c | 61 +++++++++++++++++++++++++++++++++++++++++-- hw/arm/smmuv3.c | 6 +++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index a8a64802ec..dba6c71de5 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -22,6 +22,7 @@ */ typedef struct SMMUv3AccelState { IOMMUFDViommu *viommu; + IOMMUFDVeventq *veventq; uint32_t bypass_hwpt_id; uint32_t abort_hwpt_id; QLIST_HEAD(, SMMUv3AccelDevice) device_list; @@ -50,6 +51,7 @@ bool smmuv3_accel_attach_gbpa_hwpt(SMMUv3State *s, Error = **errp); bool smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd, SMMUDevice *sde= v, Error **errp); void smmuv3_accel_idr_override(SMMUv3State *s); +bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp); void smmuv3_accel_reset(SMMUv3State *s); #else static inline void smmuv3_accel_init(SMMUv3State *s) @@ -80,6 +82,10 @@ smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd, SM= MUDevice *sdev, static inline void smmuv3_accel_idr_override(SMMUv3State *s) { } +static inline bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp) +{ + return true; +} static inline void smmuv3_accel_reset(SMMUv3State *s) { } diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index c19c526fca..f703ea1aac 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -390,6 +390,19 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 +static void smmuv3_accel_free_veventq(SMMUv3AccelState *accel) +{ + IOMMUFDVeventq *veventq =3D accel->veventq; + + if (!veventq) { + return; + } + close(veventq->veventq_fd); + iommufd_backend_free_id(accel->viommu->iommufd, veventq->veventq_id); + g_free(veventq); + accel->veventq =3D NULL; +} + static void smmuv3_accel_free_viommu(SMMUv3AccelState *accel) { IOMMUFDViommu *viommu =3D accel->viommu; @@ -397,6 +410,7 @@ static void smmuv3_accel_free_viommu(SMMUv3AccelState *= accel) if (!viommu) { return; } + smmuv3_accel_free_veventq(accel); iommufd_backend_free_id(viommu->iommufd, accel->bypass_hwpt_id); iommufd_backend_free_id(viommu->iommufd, accel->abort_hwpt_id); iommufd_backend_free_id(viommu->iommufd, accel->viommu->viommu_id); @@ -404,6 +418,41 @@ static void smmuv3_accel_free_viommu(SMMUv3AccelState = *accel) accel->viommu =3D NULL; } =20 +bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error **errp) +{ + SMMUv3AccelState *accel =3D s->s_accel; + IOMMUFDVeventq *veventq; + uint32_t veventq_id; + uint32_t veventq_fd; + + if (!accel || !accel->viommu) { + return true; + } + + if (accel->veventq) { + return true; + } + + if (!smmuv3_eventq_enabled(s)) { + return true; + } + + if (!iommufd_backend_alloc_veventq(accel->viommu->iommufd, + accel->viommu->viommu_id, + IOMMU_VEVENTQ_TYPE_ARM_SMMUV3, + 1 << s->eventq.log2size, &veventq_i= d, + &veventq_fd, errp)) { + return false; + } + + veventq =3D g_new0(IOMMUFDVeventq, 1); + veventq->veventq_id =3D veventq_id; + veventq->veventq_fd =3D veventq_fd; + veventq->viommu =3D accel->viommu; + accel->veventq =3D veventq; + return true; +} + static bool smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, Error **errp) @@ -429,6 +478,7 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDevi= ceIOMMUFD *idev, viommu->viommu_id =3D viommu_id; viommu->s2_hwpt_id =3D s2_hwpt_id; viommu->iommufd =3D idev->iommufd; + accel->viommu =3D viommu; =20 /* * Pre-allocate HWPTs for S1 bypass and abort cases. These will be att= ached @@ -448,14 +498,20 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDe= viceIOMMUFD *idev, goto free_abort_hwpt; } =20 + /* Allocate a vEVENTQ if guest has enabled event queue */ + if (!smmuv3_accel_alloc_veventq(s, errp)) { + goto free_bypass_hwpt; + } + /* Attach a HWPT based on SMMUv3 GBPA.ABORT value */ hwpt_id =3D smmuv3_accel_gbpa_hwpt(s, accel); if (!host_iommu_device_iommufd_attach_hwpt(idev, hwpt_id, errp)) { - goto free_bypass_hwpt; + goto free_veventq; } - accel->viommu =3D viommu; return true; =20 +free_veventq: + smmuv3_accel_free_veventq(accel); free_bypass_hwpt: iommufd_backend_free_id(idev->iommufd, accel->bypass_hwpt_id); free_abort_hwpt: @@ -463,6 +519,7 @@ free_abort_hwpt: free_viommu: iommufd_backend_free_id(idev->iommufd, viommu->viommu_id); g_free(viommu); + accel->viommu =3D NULL; return false; } =20 diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index c08d58c579..5d718da764 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1605,6 +1605,12 @@ static MemTxResult smmu_writel(SMMUv3State *s, hwadd= r offset, s->cr0ack =3D data & ~SMMU_CR0_RESERVED; /* in case the command queue has been enabled */ smmuv3_cmdq_consume(s, &local_err); + if (local_err) { + error_report_err(local_err); + local_err =3D NULL; + } + /* Allocate vEVENTQ if EVENTQ is enabled and a vIOMMU is available= */ + smmuv3_accel_alloc_veventq(s, &local_err); break; case A_CR1: s->cr[1] =3D data; --=20 2.43.0 From nobody Sun Apr 12 04:22:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771491808; cv=pass; d=zohomail.com; s=zohoarc; b=XZkkFRtbT+UjL7u6dyddqtZ2Yg8A926qkp3rabLxsWx7/yh9woAuBmO19smA5JRUwljeKN5+xFTywqw7+djcOb1Wg5d3rwgIIPm6xTCx8bC4PWDPZzssO68bZN/4pGGBEXczF3aB+r5C5uUloO1dweno7t2ktJZChXtH5xIqcJE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771491808; 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=VHankhQhgy64XL3EfEYVVmLt4bL12B3NLTDmlBMP8is=; b=RVDZzG4taM7oBVd/mV81mb/wXlprXQJEteOkdyz7uSImrObb8cIlXO+CRY+5Tqd44n2gbMhniMS/xyPHsEA35tGezGJpAj6q4f0eVgvm11cfHmH+3P7RMKK+CmdHTYqfiSPCYkOsgG/NaOw39zw2j8W3PsjryZI2TLp+yqKmNC8= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771491808343303.9837629676757; Thu, 19 Feb 2026 01:03:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vszvX-000576-QH; Thu, 19 Feb 2026 04:02:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszvA-00050L-Ty; Thu, 19 Feb 2026 04:02:05 -0500 Received: from mail-westusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c000::1] helo=BYAPR05CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszv8-0002Q9-Uz; Thu, 19 Feb 2026 04:02:04 -0500 Received: from SJ0PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:33a::27) by SJ0PR12MB5663.namprd12.prod.outlook.com (2603:10b6:a03:42a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.16; Thu, 19 Feb 2026 09:01:56 +0000 Received: from SJ5PEPF000001D6.namprd05.prod.outlook.com (2603:10b6:a03:33a:cafe::23) by SJ0PR03CA0022.outlook.office365.com (2603:10b6:a03:33a::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.15 via Frontend Transport; Thu, 19 Feb 2026 09:01:43 +0000 Received: from mail.nvidia.com (216.228.117.160) by SJ5PEPF000001D6.mail.protection.outlook.com (10.167.242.58) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 19 Feb 2026 09:01:55 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:43 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:40 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=joviZNqeZ13JzNeIZHEK5ECTNqwORfbTqlLW7dI51hpzKUoT7+VSIVvzpFc3M3BcCGqdHI+98P9oweSCosanJdFTaeR1vbngOKmEFquUh53W8HRkNY05nYO+CtT5i0s9AT3092fUwHUNmwEcr0KNm+M58h6/kaua5stwMXrtCTK+aR00FKNKlSGXt9Bvnb2HDC+icZ/884OLMXnjWgribjnAqK/mYOLbOelRBjGqNcb0Gn3GoIMne1jx8iEqCcYbrvTTftXBGROLriMAf2vLuB150KCTUO7Bz1NcZwuYvADhzNd1rn1jQKH97aIq1p0EvBXgKiXfsA8qidCJhQVv/w== 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=VHankhQhgy64XL3EfEYVVmLt4bL12B3NLTDmlBMP8is=; b=gG/Day9okmjx8ki6dDE8AN8RPVRn/wJvJnfYcNdfNYHPso0bOjMX1STg+5QxnN3D7NjmobVWth2uDDG6CtIU7//CKlwLJZBBokUk0OsFNntd2tH8nekMHNDnXSXu/EOSvC5bWm/j4AYV/PGk3LkXrCXJv8JSTUmBRX+nxvDq+xFkQm7onRyzLM2Z3aK30dODSXW0Iq2Rj5t1HPFMUgq9AR0G3DDJjEjR06U78vZsMqQzjYXRQv5YGMOx6qucUYSqdJuw6234wp0dwKp9nunyY/2DwmzQo93qEOWFWWu7DYSmIZyBUl67HxTRWQkYEM/XVzA0osUO+tq+T2wr7dOeSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VHankhQhgy64XL3EfEYVVmLt4bL12B3NLTDmlBMP8is=; b=FDb8N6vOQgxqxteSIiRu+L0nBGeb0QgYLuH2OxdomA4KiQsPZRkOf+aMrc+S1aHMg/FgoHt2xMj+/vv+1cuI1yjP6M72zlfshv3mlkWsqkF09MdCCGADpSF39uN2r8S+AhCKZy6sOlYZDawwL5ba5xQvw4A6RQHoiuM6sYrqmesq5lOt7DBuFtOUwnFpRFUHTx0DXgPvzpDDTlOp7UANTrdj1i/c9ldWBFNfOFdzy3tiU6MlPpvGf4FnNuxNAWVtVPD6tEHtYa1/irF8BHAlKS8mSN7+EZvwFfXP1WA/aKkJRrL/YbcC5GX0Ma6aQSk3P+1Lle26yXITTL/hHAZK9Q== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , Subject: [PATCH v7 4/5] hw/arm/smmuv3: Introduce a helper function for event propagation Date: Thu, 19 Feb 2026 09:01:02 +0000 Message-ID: <20260219090103.33697-5-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260219090103.33697-1-skolothumtho@nvidia.com> References: <20260219090103.33697-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D6:EE_|SJ0PR12MB5663:EE_ X-MS-Office365-Filtering-Correlation-Id: 11e05fde-2d5c-4255-a8af-08de6f95884c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?J6fV0R+6iNuV8eTy9hDXc8E33Xw2sEXoQgtwjLsqJ1NdPtEEVjEMAWAJBMTq?= =?us-ascii?Q?RxPvHZEWL1IvuNjUoJdJEVJdTzwq2dNbJtTn498JBVLQ1ZE/sOpydxSD54zR?= =?us-ascii?Q?uYSDABxwZUL8A8Pj4tfgzQwHd/bPw1XXVYp5UVxg6XyHUZKvktIbJZy+bHqA?= =?us-ascii?Q?qyRkcMCIi0fWWXXVJ7Nc6mW8E2GxVsB+tn+ZDPCoW8Qy1iJap0gL05PL+kJT?= =?us-ascii?Q?9PzN/20ayiQmaG6yG2dopyVijB1t2Zg8p8/+8jwIOExxHycrkn6cQDd5A94B?= =?us-ascii?Q?KB+TV2U8J/D+q5dO7oBy2oehW20TUYnCnNQvvpH8wv+WyyobENG9qsI5NIAy?= =?us-ascii?Q?Ao2I0c5akE9hf05IMr56mXl4p4cqzUUS8eC87ALVX+Zr4GJBLzIFxbdNmnvp?= =?us-ascii?Q?B73J2XnWxxqNt2hyOYsImm8xW2ZeuhdbGbzBGGo5cFtTgtgBW4RGqXqUB30/?= =?us-ascii?Q?llD59THyqW5onMWe4CTXElVF+124SvNCCpKw3T07qcUzg1a2TUVnFiqLgmCj?= =?us-ascii?Q?TlqcyaHPl8R1K2A5hotxezcntMwiooKfh41jju6PM2Ejy4AgP8AxFRSmHD21?= =?us-ascii?Q?hX1+rQ0NXCp0Rs2x4b+/0k0Yi9cRM3gIYL8DJoxyRYuHnaKj8iBGdntP6RkV?= =?us-ascii?Q?pKQeknrjOHTW3VB9bmxt4FZKrzQwKEmUT2no1eAh0BCpDZRoycb0izzgsQay?= =?us-ascii?Q?s8HLvLBPXK/h2OjyJms16+nmIpqORMalBHuQHCDMhaTgIfvQobP651lMo+KM?= =?us-ascii?Q?cCODDY4+tFKdABGSOL8/vManhyj+coKOWDX6JtxJ0bLBXx/hrw2yjhCO3s/Z?= =?us-ascii?Q?HhHmjXYa8fnOHl61d0u7cEGvllBWGFAlWBe3VFZVsVtq1Jp2qUgbO5XrBRf3?= =?us-ascii?Q?v2yWv5op0vh/AMNCyOtlVdD8tNv4rgzKKF/anmV/W2LwnmuCV2F7hpz91dB1?= =?us-ascii?Q?qHMarYDpQLV3YB72VWaxZ0UwnPDVZxzCGvoEAaUKbqd3ycm+2IwtPm5xMqpP?= =?us-ascii?Q?gTCoqWIsyNx0G2EvHcHEN9TxeGLjj76BUvit7AgYm6eIS6lgYnxC052OKZqR?= =?us-ascii?Q?g6q4pyy1qjsGpOaauVB5CG0tq356LhW2Dmpfo0OGsaaWNNmhSs7xpLjo4sAQ?= =?us-ascii?Q?OQGZZNWwp8TaPg5ZKLKJt6OgnXexWuUla4XYPx9KczTu5YHcY1no1zKOUvw2?= =?us-ascii?Q?K9/TJlqwWpU0nKKF7i2MxaLyC7omeBzoMnPq2EvZFIgnmYAFd8JGG158fO3o?= =?us-ascii?Q?8x40azakm0XoiKeTnlvXQXjbefnF5SJyTBKZnWy7Q/uPU1y8hlVHJc6h1Iay?= =?us-ascii?Q?Fu3s3fpUUNEkSSho4mzVeryMpUJ+wf1E8w4vADWed20k8LJZ6W/lpXWI3vVS?= =?us-ascii?Q?O4u/A4rh29jCf2SX58SHy5YAK8uvntHeCXALjA2SVxkh05pKHlQ/nPb+VO8N?= =?us-ascii?Q?O1J79MkQmjMlq/Kg5AEqkdN5I71l9SZQ4W2BedJGoLpZP2SqG+4Clv164Ofr?= =?us-ascii?Q?KRbfTIjJvvoV7ehJDixfbrl0YpnFG/AZ0Oe9J8ISAqyVUUCr8vV+RlMZ3PAQ?= =?us-ascii?Q?q3kazwnENqL2ceaIW2xEltyPqugBqrRkN2wCOhrs2alurfoR52jrpric+U4U?= =?us-ascii?Q?rf4ISlwGMwRU6XZoeoLv4ygrHq1PDhQZc77mjFN+cnRvlXPpbf10m6DfJ/Pp?= =?us-ascii?Q?wjDuvg=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /ykhRiguPKcl9qTFFyZQNfB2y6hyHrCm+6U8qbAicNH7wFD8kNuAl/+tzcI+3vaMeUNouc1aigBG/hZxerM9K2Ppw3G+VnVC/uByalk5l07gyRJMJPrX2zgqRmdq8aGzuXF6C4uVGnZ86CXWLQ1+C9slLPtnyQEjQqxA7NdA6eTp4UCL9E0du23pBsD7Vg2fNNspB7rXRQQC78P9Dfr1MS1llDhTzjCAMJYLnKIhJQq5eUAn0M4vpiIkCY8hcGwj3yADC4F5x48QVpBSVxmyTj0JLsYcn0E6ujSId9fFHSAqNfM1xlRjClcDTXkcBosJAM+E/NXjT6KMuU6rkvSgSauwY1WVIPzvysNkR3I0AVtNZv9CumLe6It4aYbHmxDepOv5I/w9IHQAe/pM5o/D3z8vg1XDsWpQAguTyHnoxv19AdVhQ7OsHjFEIE+vwuBJ X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 09:01:55.9916 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 11e05fde-2d5c-4255-a8af-08de6f95884c X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF000001D6.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5663 Received-SPF: softfail client-ip=2a01:111:f403:c000::1; envelope-from=skolothumtho@nvidia.com; helo=BYAPR05CU005.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771491809842154100 Content-Type: text/plain; charset="utf-8" Factor out the code that propagates event records to the guest into a helper function. The accelerated SMMUv3 path can use this to propagate host events in a subsequent patch. Take the mutex inside the helper before accessing the Event Queue. Today event propagation occurs only in the core SMMUv3 path and is effectively serialized. A subsequent patch will also invoke this helper from the accelerated event read path, which may run concurrently. Therefore serialization is required here. No functional change intended. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Tested-by: Eric Auger --- hw/arm/smmuv3-internal.h | 4 ++++ hw/arm/smmuv3.c | 20 ++++++++++++++------ hw/arm/trace-events | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index a6464425ec..b666109ad9 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -352,7 +352,11 @@ typedef struct SMMUEventInfo { (x)->word[6] =3D (uint32_t)(addr & 0xffffffff); \ } while (0) =20 +#define EVT_GET_TYPE(x) extract32((x)->word[0], 0, 8) +#define EVT_GET_SID(x) ((x)->word[1]) + void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo *event); +void smmuv3_propagate_event(SMMUv3State *s, Evt *evt); int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE *ste, SMMUEventInfo *e= vent); =20 static inline int oas2bits(int oas_field) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 5d718da764..af7a54143f 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -168,10 +168,22 @@ static MemTxResult smmuv3_write_eventq(SMMUv3State *s= , Evt *evt) return MEMTX_OK; } =20 +void smmuv3_propagate_event(SMMUv3State *s, Evt *evt) +{ + MemTxResult r; + + trace_smmuv3_propagate_event(smmu_event_string(EVT_GET_TYPE(evt)), + EVT_GET_SID(evt)); + QEMU_LOCK_GUARD(&s->mutex); + r =3D smmuv3_write_eventq(s, evt); + if (r !=3D MEMTX_OK) { + smmuv3_trigger_irq(s, SMMU_IRQ_GERROR, R_GERROR_EVENTQ_ABT_ERR_MAS= K); + } +} + void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo *info) { Evt evt =3D {}; - MemTxResult r; =20 if (!smmuv3_eventq_enabled(s)) { return; @@ -251,11 +263,7 @@ void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo= *info) g_assert_not_reached(); } =20 - trace_smmuv3_record_event(smmu_event_string(info->type), info->sid); - r =3D smmuv3_write_eventq(s, &evt); - if (r !=3D MEMTX_OK) { - smmuv3_trigger_irq(s, SMMU_IRQ_GERROR, R_GERROR_EVENTQ_ABT_ERR_MAS= K); - } + smmuv3_propagate_event(s, &evt); info->recorded =3D true; } =20 diff --git a/hw/arm/trace-events b/hw/arm/trace-events index 8135c0c734..3457536fb0 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -40,7 +40,7 @@ smmuv3_cmdq_opcode(const char *opcode) "<--- %s" smmuv3_cmdq_consume_out(uint32_t prod, uint32_t cons, uint8_t prod_wrap, u= int8_t cons_wrap) "prod:%d, cons:%d, prod_wrap:%d, cons_wrap:%d " smmuv3_cmdq_consume_error(const char *cmd_name, uint8_t cmd_error) "Error = on %s command execution: %d" smmuv3_write_mmio(uint64_t addr, uint64_t val, unsigned size, uint32_t r) = "addr: 0x%"PRIx64" val:0x%"PRIx64" size: 0x%x(%d)" -smmuv3_record_event(const char *type, uint32_t sid) "%s sid=3D0x%x" +smmuv3_propagate_event(const char *type, uint32_t sid) "%s sid=3D0x%x" smmuv3_find_ste(uint16_t sid, uint32_t features, uint16_t sid_split) "sid= =3D0x%x features:0x%x, sid_split:0x%x" smmuv3_find_ste_2lvl(uint64_t strtab_base, uint64_t l1ptr, int l1_ste_offs= et, uint64_t l2ptr, int l2_ste_offset, int max_l2_ste) "strtab_base:0x%"PRI= x64" l1ptr:0x%"PRIx64" l1_off:0x%x, l2ptr:0x%"PRIx64" l2_off:0x%x max_l2_st= e:%d" smmuv3_get_ste(uint64_t addr) "STE addr: 0x%"PRIx64 --=20 2.43.0 From nobody Sun Apr 12 04:22:18 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1771491805; cv=pass; d=zohomail.com; s=zohoarc; b=nhpRlonaglcjtZMfPBGrgIVeWe9DBivEjA7LpO8jvQX1/b+Tg8Zw/+3yakwA3ljKtLvtjDvpoizIBcWlhuk0XfpR2uORB9DtFNl8jYEzW46HvyeiL3BQBare3KioFpzVf+kLzRQnX+30tCzxXfM4cNCBD87p2XLPgDtZBxqRylw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771491805; 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=XclW4P3vYsM/JneYRrxknQeQ3n7W9HnlHGNzSo7yfKo=; b=VIIfB2BaP4XZ7r/QgM4iSd54v7FLi+Y3lWEer1obQ2Qdatfa29SaWjEjiPTE8dXZxMT5d6kbRMNOZoXJsj6s1FC3Do7LaCpZbyPu5KXcAJ9XACDvALU/XX8pjtYij0vjsajv7RwQYcoxLwQKjLxPEJeREZ+z3+drGwthM+CrN0U= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771491805441689.0053241111754; Thu, 19 Feb 2026 01:03:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vszvk-0005Br-96; Thu, 19 Feb 2026 04:02:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszvG-00052F-JQ; Thu, 19 Feb 2026 04:02:10 -0500 Received: from mail-eastusazlp17011000f.outbound.protection.outlook.com ([2a01:111:f403:c100::f] helo=BL2PR02CU003.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vszvD-0002Qo-4y; Thu, 19 Feb 2026 04:02:08 -0500 Received: from SA9PR11CA0007.namprd11.prod.outlook.com (2603:10b6:806:6e::12) by CH8PR12MB9744.namprd12.prod.outlook.com (2603:10b6:610:27a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.13; Thu, 19 Feb 2026 09:01:59 +0000 Received: from SA2PEPF00003F67.namprd04.prod.outlook.com (2603:10b6:806:6e:cafe::24) by SA9PR11CA0007.outlook.office365.com (2603:10b6:806:6e::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.14 via Frontend Transport; Thu, 19 Feb 2026 09:01:59 +0000 Received: from mail.nvidia.com (216.228.117.161) by SA2PEPF00003F67.mail.protection.outlook.com (10.167.248.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.12 via Frontend Transport; Thu, 19 Feb 2026 09:01:59 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:46 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Thu, 19 Feb 2026 01:01:43 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DfSTrv+95U28av0N10j9p8sAj6mttehXIwCo2cCAoPyJZypbMKE2Bh6GEUdreJXJKBdim7eFCGN9SaVW0nKhXcn7o1BrAJmuBxhXoQ2BlSxv+eWlsEPkinfvzg3LXflzJ+FBccuj+1YRLCpx9sxYnvCIuSaNiREp1lCvxiLTXP5fZHXgOVc8FJZUnxDEpcWtm5jmk+RNbQSPjGZySarS/CCPYPlo4dQMVkUG7HkS5kNJP3hSKKLI6FlrRW5Wq/+V4VcW+dpcOYG7yRf59SLy2cMVRwCnbYKB9l0eDm7rbgTwo7qQk34iZMtce4NhijWRSL00QCQXNy4GC0l1VS23SQ== 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=XclW4P3vYsM/JneYRrxknQeQ3n7W9HnlHGNzSo7yfKo=; b=UwhByeD1YdTkAesEMul7Hu++rkrrkGz/djiHkx1jVzLIKK1AH9UAhDth/fTg32zHXDufR14aCXtCiDTVM/wuITzGEMdTIrEkSY/p7nXIXhkEqeN95kWKrZvtk0UGvq++JZpX2zPIHNMh1UwIy0QyYu+XyRYmBRBCHQNtI6AhO7ZnA/D+oAEuO54qhPrg8UDFVEd4uaOaOXlneQtgxo0uD5ir3ADvqV/mrPZQDu4/44XiKPzF55ko+UQpoiZ8uZKp/LWF8acGVXIe8CjPJqglnDHguCkuGwo87Xezh4Di7o624rAnDc4JB0JOzjUTgpEXLbMyASThMXpZQc1MMY29RA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=nongnu.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XclW4P3vYsM/JneYRrxknQeQ3n7W9HnlHGNzSo7yfKo=; b=PISvcij32EbGJZh1YH2MK2FSuTlCpE6LggKhMcbKzOLPDpcGZWdEHCcBKZtRJV7ppMrgf3+FM49rVlg+3ExsV1QkxAICjAUeegPP7wNY8kjBvXzThIGFTe1CnviCb1v+9dS3fBc2egcVLsoTygSQfNAKXKrttXZ6ZGX4uCWnGOgCukebybMB2NwqXnFny2o7QyNYGJ3wQzbyZWaVoOof6js940R8F79RbP/vRjdozKLmBTL0qOwM3wTmRBv6sEyd47GemzNNGGJJC8jPmE/3VW2mV0e5GCixIchQrEaiH/6su90Y7wiz4eS2UljLWwu02PA4q+UQtNmGhDbj0pUDjQ== X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C From: Shameer Kolothum To: , CC: , , , , , , , , , , , Subject: [PATCH v7 5/5] hw/arm/smmuv3-accel: Read and propagate host vIOMMU events Date: Thu, 19 Feb 2026 09:01:03 +0000 Message-ID: <20260219090103.33697-6-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260219090103.33697-1-skolothumtho@nvidia.com> References: <20260219090103.33697-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003F67:EE_|CH8PR12MB9744:EE_ X-MS-Office365-Filtering-Correlation-Id: 002eb52e-413c-459f-d162-08de6f958a34 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?CsJSiaNn+hzhOXZBts58g1Qf9ZDUKzKrXzPIaflm5jszPOMwJOaacSKlUfkR?= =?us-ascii?Q?c9PpMAFFBNaAGytZXxgjFAmvkjJRtkWx36cP9qMaSXoN4Najc/X8jvz91r7D?= =?us-ascii?Q?u6e710EqnGYYZV9jDnBxU1zhdGHpPHsiBBKpRqXBfOfSDiz44tKTbRLDcdq/?= =?us-ascii?Q?KU8JLrPaeLEu17eAA8mHh+s6QJa2t8U9Qpzcp45NO1pR/27DODGOv9x1eHqv?= =?us-ascii?Q?XCcmzdo7rBrl536RA6ZQHJtzZRLQ/Q/ilGB1MscMVsVWjpd1bkOnCE/ec98D?= =?us-ascii?Q?2rXU9m82Wub8eb/xqkGBtRcq2TvH+PbKK5EyJNd6P88qsjk9gVtLnnzsX+HQ?= =?us-ascii?Q?xu/zm+R4PwcuhlMf63K5uqZDhMlXI4/YEyUJz6IGnATyO02GTuFNhAr7ip5T?= =?us-ascii?Q?TyFbp72zi2Z2iHgbqjKkpIpFhL/Sfg1+cMve4jDH7vcRD/kKWMsaxFuWRrwZ?= =?us-ascii?Q?nDX+bYf9+MfBL7F8gWiPgWC9GDGUjFPNH/xbL3BpnPjKSu5+FwkoSy5OBYCy?= =?us-ascii?Q?CH+9wohGdN1hldEfouaRXvffadnrlTCKqW2rGz6RP3YKc8rKoZ1C76pCLkRF?= =?us-ascii?Q?9MOh7gIXD3r39BCobb/69OIaQzOGzhFODMR8o40Qae6VM8r618pFTqG3fQN4?= =?us-ascii?Q?KF01fyHgj9yvMqy/8IEV4cwpKFRuNZTYaC83JvIpLSTWEfEBz9regrydZsWX?= =?us-ascii?Q?9tmbmq0+0BVSQA0Er7yj35anJpZ2bbwqIq9YK5mDVQi/A0WAKJBBxED1nZuC?= =?us-ascii?Q?hau2Mu3415zYN44yR5vF0j0QF+TiAEt0KP5beYyVKWtKy87rJM3hQXcT1fg2?= =?us-ascii?Q?4BL9VeNewPES/i72/vR61O4Tlj35n9HQEd89IUr3gyWdEFZdfQImuS/bz8y4?= =?us-ascii?Q?tPkQloPpQwtONrJ/g0KO0hJdsZvNePZk0zOzLPHZ8i2CLUZdCvcB+ZXTcVKa?= =?us-ascii?Q?O+f9LNggxmHwIZAPOQ5wfNxCXanhPS6xMZx5dutj9BsPWJQMmiPzYxGPNR1N?= =?us-ascii?Q?3u19+PTVsPOJhGWoULdvryDUy8gn1Vh4DGDdu5jovPlx9b9jA3WPwdLVaa4V?= =?us-ascii?Q?SBMHpo90f/2gIcHGeOxkde0h8BFDldmVFV26DX3HNOTX1xcQHqp0gUVLbDWx?= =?us-ascii?Q?Tr7ANzxVCbB7DBN7E5azOzOsspq9RCvHM82wEkH1cNJEvplN/pYy1AYkJVXX?= =?us-ascii?Q?mFJ0C0GLmttGhxN8h/FKaRmsWH2m1MBw2Vcv4Z6TKrIh4aeElhr3f9m3ycy4?= =?us-ascii?Q?RIoRnrE57TRFxwNR8qRopi7w8keCc/lX7pzZLPw16wUAMPr/hWHcwV+XwgSg?= =?us-ascii?Q?ohe+Fiy4MWPM0qH8UjZGeeXLX8EvQ8odlM2rEJN16zCSx0RMfrUTRvXMw7jw?= =?us-ascii?Q?UyRjMoO3xJNWjZlukTXO4iNJfFBFdhTQ9QGdH+q4g3FBCj0s3zoMkyXLKEAF?= =?us-ascii?Q?V0lNrHbp2Vi06IYgeWVnirV6QuF4Yt/CBfgMhR3jwkAe3/K0Q1a4WFngiD7O?= =?us-ascii?Q?F1tL3b1wY/YgxN+nYKCrnAy235MK3lcl53QlgIKQjZ+IbSV6ohZ6EiagbaI5?= =?us-ascii?Q?YGjBt+qeAjnuNXPPCyht72Lj0kSUaXDpH2v5+Rhh5fQYDh3Hs/yAR0fPpvuk?= =?us-ascii?Q?9CkdIl0PbzRAaoo3M6846fboGwf4pI6UUvXtz7nl7D45XaOz0myBBfKu646I?= =?us-ascii?Q?1Rk6pw=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(376014)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6S44l0SxPn42g/UWnm1sqIAZBw622I+UHlj+I8GnrxjSGlYv378aqK83Xd2w0g+0ZSP93B8mvEwn5uN8HFZGP334EioPoo3LYGijpEiejwVZ95GgQOJhwu5r2zw5B7LKcJEf3/WEagMhfIbYqBq9r0xTDsB5zKO1VsW0XipgCmqFoY6bXc8bv6qMSgSHmiwXBVEd/aLJ0lWg+/oiygQthLqGBc+so6Vd8V7J744Ul5SscBFdUQgj2nK7DNQgmCeLN4vraBpWUE8sSjcTQxGp+P/TKnp/kNGWI+z2OYy/LztvFCsYe151nhZIg08QQEDimrJxmFATVESpEuhLrp9Rht5ySaaopOW53CQcURrzqujUDcrKJHo97bVEJe0xyYeUlegRCFpTdnreimEZ7KPL0/5/CBSIixWKr3vfDadD/zdGIX50ciFmlv0+eO20mOJD X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Feb 2026 09:01:59.1132 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 002eb52e-413c-459f-d162-08de6f958a34 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003F67.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH8PR12MB9744 Received-SPF: softfail client-ip=2a01:111:f403:c100::f; envelope-from=skolothumtho@nvidia.com; helo=BL2PR02CU003.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1771491806948158500 Content-Type: text/plain; charset="utf-8" Install an event handler on the vEVENTQ fd to read and propagate host generated vIOMMU events to the guest. The handler runs in QEMU's main loop, using a non-blocking fd registered via qemu_set_fd_handler(). Reviewed-by: Eric Auger Reviewed-by: Nicolin Chen Tested-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Tested-by: Eric Auger --- hw/arm/smmuv3-accel.c | 64 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index f703ea1aac..17306cd04b 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -390,6 +390,50 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void = *cmd, SMMUDevice *sdev, sizeof(Cmd), &entry_num, cmd, errp); } =20 +static void smmuv3_accel_event_read(void *opaque) +{ + SMMUv3State *s =3D opaque; + IOMMUFDVeventq *veventq =3D s->s_accel->veventq; + struct { + struct iommufd_vevent_header hdr; + struct iommu_vevent_arm_smmuv3 vevent; + } buf; + enum iommu_veventq_type type =3D IOMMU_VEVENTQ_TYPE_ARM_SMMUV3; + uint32_t id =3D veventq->veventq_id; + uint32_t last_seq =3D veventq->last_event_seq; + ssize_t bytes; + + bytes =3D read(veventq->veventq_fd, &buf, sizeof(buf)); + if (bytes <=3D 0) { + if (errno =3D=3D EAGAIN || errno =3D=3D EINTR) { + return; + } + error_report_once("vEVENTQ(type %u id %u): read failed (%m)", type= , id); + return; + } + + if (bytes =3D=3D sizeof(buf.hdr) && + (buf.hdr.flags & IOMMU_VEVENTQ_FLAG_LOST_EVENTS)) { + error_report_once("vEVENTQ(type %u id %u): overflowed", type, id); + veventq->event_start =3D false; + return; + } + if (bytes < sizeof(buf)) { + error_report_once("vEVENTQ(type %u id %u): short read(%zd/%zd byte= s)", + type, id, bytes, sizeof(buf)); + return; + } + + /* Check sequence in hdr for lost events if any */ + if (veventq->event_start && (buf.hdr.sequence - last_seq !=3D 1)) { + error_report_once("vEVENTQ(type %u id %u): lost %u event(s)", + type, id, buf.hdr.sequence - last_seq - 1); + } + veventq->last_event_seq =3D buf.hdr.sequence; + veventq->event_start =3D true; + smmuv3_propagate_event(s, (Evt *)&buf.vevent); +} + static void smmuv3_accel_free_veventq(SMMUv3AccelState *accel) { IOMMUFDVeventq *veventq =3D accel->veventq; @@ -397,6 +441,7 @@ static void smmuv3_accel_free_veventq(SMMUv3AccelState = *accel) if (!veventq) { return; } + qemu_set_fd_handler(veventq->veventq_fd, NULL, NULL, NULL); close(veventq->veventq_fd); iommufd_backend_free_id(accel->viommu->iommufd, veventq->veventq_id); g_free(veventq); @@ -424,6 +469,7 @@ bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error *= *errp) IOMMUFDVeventq *veventq; uint32_t veventq_id; uint32_t veventq_fd; + int flags; =20 if (!accel || !accel->viommu) { return true; @@ -445,12 +491,30 @@ bool smmuv3_accel_alloc_veventq(SMMUv3State *s, Error= **errp) return false; } =20 + flags =3D fcntl(veventq_fd, F_GETFL); + if (flags < 0) { + error_setg_errno(errp, errno, "Failed to get flags for vEVENTQ fd"= ); + goto free_veventq; + } + if (fcntl(veventq_fd, F_SETFL, flags | O_NONBLOCK) < 0) { + error_setg_errno(errp, errno, "Failed to set O_NONBLOCK on vEVENTQ= fd"); + goto free_veventq; + } + veventq =3D g_new0(IOMMUFDVeventq, 1); veventq->veventq_id =3D veventq_id; veventq->veventq_fd =3D veventq_fd; veventq->viommu =3D accel->viommu; accel->veventq =3D veventq; + + /* Set up event handler for veventq fd */ + qemu_set_fd_handler(veventq_fd, smmuv3_accel_event_read, NULL, s); return true; + +free_veventq: + close(veventq_fd); + iommufd_backend_free_id(accel->viommu->iommufd, veventq_id); + return false; } =20 static bool --=20 2.43.0