From nobody Sun Apr 12 04:36:33 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=1770979442; cv=pass; d=zohomail.com; s=zohoarc; b=Indkc5G3jrLFdMlC+WUfjFKeCvM46XuqYOx/BQqL1wKiNFGyjf4igBEwirGFu+onu0YputbCuQeoo+FFl3jZErdP8SClKhT40QLeB2/kYmlIv7GJHCEnCCCIVGThd4vIOXVDGtJQNlpON3TBby/C+lNkq+1T0USPa54n9wz4Ma8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770979442; 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=qxWp6a3HwZnmqXb+bhBKlmUo1MCnEn8NhVYJwJHgVh8=; b=T5+0zfk/iU6xgie+vA4mOFKiuN9gPEn5mnSVMDbRkk4vFGSG1Q6LW5HvM5RRLUwUPPRj+l8aXpKEfsk15j2o7HppNeDVzWuzvRzQS9kUOaBeqZutPGpiIw73Rg2zRtgJ6DtMMcFGygA2o9libX/NYTtNkmI5gHif41t0Y8domSk= 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 1770979442619256.4085697787989; Fri, 13 Feb 2026 02:44:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqqds-00085h-F3; Fri, 13 Feb 2026 05:43:20 -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 1vqqdm-00084W-I0; Fri, 13 Feb 2026 05:43:14 -0500 Received: from mail-eastusazlp170120007.outbound.protection.outlook.com ([2a01:111:f403:c101::7] helo=BL0PR03CU003.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 1vqqdk-0006RC-Nh; Fri, 13 Feb 2026 05:43:14 -0500 Received: from BL1P223CA0043.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:5b6::9) by SA0PR12MB4429.namprd12.prod.outlook.com (2603:10b6:806:73::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.13; Fri, 13 Feb 2026 10:43:07 +0000 Received: from BL6PEPF0001AB4D.namprd04.prod.outlook.com (2603:10b6:208:5b6:cafe::e6) by BL1P223CA0043.outlook.office365.com (2603:10b6:208:5b6::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.13 via Frontend Transport; Fri, 13 Feb 2026 10:43:06 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL6PEPF0001AB4D.mail.protection.outlook.com (10.167.242.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.8 via Frontend Transport; Fri, 13 Feb 2026 10:43:06 +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; Fri, 13 Feb 2026 02:42:53 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.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; Fri, 13 Feb 2026 02:42:49 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jn5c44bh8JAaXYWzCgNkx6amcnL6ysxMm1X2yCbnAShZLKXgqAEvDpgIOJrJ7Eqg3eUpzaQ2ZGgj3HVmWQScpbiuXPTQysEa7NUTMuzEPcgwQ5l0w0si2i6gAk6WD22BidoDypK1xkyNWW0kQ5EmAS2/QEmBVqD3VOZt7lrlSvUMlNPzJCF7GR6BnZWePYTXqUAOVGhDZftJZn2qdeGo3wM/efnvhQxBGRrVRXKMUhdTAzN6d3Ar0gHCRS4NSeiWz3CxCIy9Gafw2Qff4mavc/Wr+lhVBl15l3e7KOtQoIH7quWhlcwX+wWwF0FKKKldVVgEnSLW6wBiJnUVhAho9g== 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=qxWp6a3HwZnmqXb+bhBKlmUo1MCnEn8NhVYJwJHgVh8=; b=Jw5y6YyhUqgYeoGGruaWhxNeZzZCBuTLQlflavB3EA2tAJogDkHGvweQkRuw/9oHQiRr9w2GqiWCXlEX9UYX6tfJ8LoEFD59OfXQa03p2CwnOUKiuZ+PTOVCgGj5PY9xTTyrQoKxq3cQ5FPmCJICvLoBSCZLKreWOsrctjlcFVkdmCQvmnnoinsVXAplcD9m18mtad4YpwMdgHrCu3yYe493q+qqRQ0loNfl6F9iJyLGWZRWoRAyNJcsaUWLjMfpd37cer/2gh3HtrSegerqYPSN6PZ/vH+UMbiF7AiffR4trs9kfoz58no+obyd7ao9EwX/ZUERFZNOCFEFK2ezSw== 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=qxWp6a3HwZnmqXb+bhBKlmUo1MCnEn8NhVYJwJHgVh8=; b=r3aswSSBfvwyRzfH+sKVyHcI1aAlPWmLwn/+dQ2vP/yz4+WY1BN1MSiZOgPtxL0tXEh6pKY7D/Xfj2RyyHbbqTAt+X5QmIO1Vzxj+Dv5YF6R8doFe5OOSlLy11caekGFOydFuzpQxeu7/QiKKqhBwg+Jty40d5lI4IluAy5mHSjqiAc1pMBEEuxvuQizfYa2vK6q+qUNYt7Yll7AqEhs4UQuTSIeBNJ/Ljm6CnxKc9CWJeHayuXuDxv1zUxYGalqQNKqJIVzrKiFV+eM8oo+IeXlbReHumXyGND2AzFIZPxqkEziAGXjwUtx6SfPBmhZNlGkRQty1+PBe4y/YVHCzA== 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 v6 1/5] backends/iommufd: Introduce iommufd_backend_alloc_veventq Date: Fri, 13 Feb 2026 10:39:38 +0000 Message-ID: <20260213103942.142823-2-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260213103942.142823-1-skolothumtho@nvidia.com> References: <20260213103942.142823-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4D:EE_|SA0PR12MB4429:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f2ea19e-b50c-48c1-1ebd-08de6aecac36 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PWGbDTB6EgZjL/ALqn0TRxsLsa8MW7nwWkavW68HTSgRv3xZR2u8FdeYTnQ0?= =?us-ascii?Q?5hm+FJG7R2yqSCjrFWGpc1ZolUNQoKOnQbmzFwoPf7owknSW8vwdGrY+zGyf?= =?us-ascii?Q?bDkEhmHnP0jX0TPNsGWuXSaisL0rho1OXy2coOgQxd019orrZl7uU0uIWfKR?= =?us-ascii?Q?tb/TxzFvwSQ4nZe/tEMlLGwMnne2czl+Fb6zMF7Y0DRhhLdfl/HKcKAmGmDl?= =?us-ascii?Q?0lo32sJKCsnh2fvKhGpNcT6msEdtEkD6wV6bnHLKyunvIEkVizUXxUm8Qhoo?= =?us-ascii?Q?OK6IP75RX0pFGUp0wjbsU5VpUhJo+WUvEOXpJR+iv+bJRA33MNgyyHneTR6r?= =?us-ascii?Q?4myv1TrdMbsleuKnQyRT9zfbd0DCkspAUl1XdkVJu/I8bzPrQtT2RaVE85kc?= =?us-ascii?Q?utNh1/I+L6A6LM6pcaorOBxlorkmiIBCOmMapDCVkbD6JchXNGL+vVPAgfHP?= =?us-ascii?Q?Qhc5MEUTMFCZnJgyQhyYPH4IrfD+Ck6/AeZmFxGHVN5RCT3ulHaqcHF0wzd4?= =?us-ascii?Q?GK4Z8c1RZ0NlUlC5SUYcbm9gJtiUEOUXHZLwAVnfK8mVP+79yPGTlYMgj6p3?= =?us-ascii?Q?ioWSDn65jrzv09da1ed/1+dCscixxcXCbZBbDxMME4Z0Uh0QozdcWM4NoNKT?= =?us-ascii?Q?8cd7qtMwvgv2AgkfR/FMBKipDWFWTXXVCd3EUqyndVlhGpbz+DSOTzNgOHLy?= =?us-ascii?Q?XJ/xeSLEcx+Nh8Od7XKBG9IL39tPM1hKAVyoGKio4XVOX4e17kIBG0Pqodw7?= =?us-ascii?Q?PO0f0sZfwQ8O6q7mhrC1DUMxPMyWbyF4skTJrkQnXwSe+sEp5o7E3MwQNfKU?= =?us-ascii?Q?k3sMZhnGJAyhP+thhJ2BIIINTlQhw1nMuI6ilQEQSsBOCHQr45N++UZQN09L?= =?us-ascii?Q?X5S4+ydLmsr3oreWD7eYHkid6LPK9RaxglB6akQtGfEzuvdb9sxwctBqrVdv?= =?us-ascii?Q?NjwzXaJwwyyC9eHY378NFkkLmYM2WpAUcNYBllWaiVZegEOwSpPBUpWjmY6F?= =?us-ascii?Q?W5ZmdZMY9ct61zBFZxxIYtZjGLlOQUd2aatHVsavCn7WZ9R8Rq2iVlbZlM2k?= =?us-ascii?Q?s22PBTaM3JCkNNRP/1tqnC6RO2lVRPN6odSfAOa6nTPg73emOB0q93IxH2E6?= =?us-ascii?Q?/B7ZCfNWvs8fjeGHa98OvbAYHVrnHTqzYL4aaI3uOlOJx9zNoLfCj7RNkyEY?= =?us-ascii?Q?jgiya1UIAZxK1im2zEWxpFu3DcbS7kjfPdJVcuKZ8y6ue0kzjRpoyobPEj6P?= =?us-ascii?Q?7FaSgrjfAvdIHv3Khx5yOMknCb3Nv0PCyL2iwY/VPAgHWcdhexR+pOogV25h?= =?us-ascii?Q?eXhhXhQjhwKeNKZjzqDM6ZHrkv+jzrykB0dZjkiZIArKWz6VG7ibGDPrudH9?= =?us-ascii?Q?QpUv7lksjsyf1u+vAgejPUbr/WSabTJ3zSH4p7SYbpZb60+AfyB6GZzt5igT?= =?us-ascii?Q?zWtLk4w76RKTyziKAXiV/3KeJXrwgCB6WsM6niX61lFx5Tq1lll8ue2P5JkA?= =?us-ascii?Q?O3gsI7QS0OsyZPXBKGI3CxQQlIU8Y+AreDrl7QFeRjmzVmulsh8P81PF8NiE?= =?us-ascii?Q?8Vz6cJTL52mkjEI7EGDk6I6G5XA/dJ50J7G7Nl4cs4Cn7079rtjXs8JJdlaJ?= =?us-ascii?Q?p8Z0TvyqL8LnYArh1XiXf3UvC8LyhnxMH+HJnliMb/mv/Xn7CwWqwrkI5Nmq?= =?us-ascii?Q?Mg2sAg=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)(36860700013)(82310400026)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Uk9wTfd/mXazaQshEd/nm4xYKlrPvT2vlbEpMQg1I8qlrKTFY9TDmPVPsla+2mfSbx0OYFaAWyElagN3Rpp/NUdCztLLloepLwCym8GmucQuhh02rUwAcL8PzWa0LmrrY3tv68trkDQkQvvQOaAsPI61V9lxaOMNuYxLSZ4XYWKk+pIst9o7FdKwTpy7z1fVWArSOjrVKlGtGPPDHR9WMKSR8wHXDJCRCQTFl2FEa52/655+CYPwqmC3ekSo0PV/773ZNKZfss1nmk5Hyc6v3RvoxrGIYEXMtE9EGdfwuxhW8PMqPvdzPu90L0I6Szzly4/9vTS+aHgo842dfDQLjCMWp3SDbS343Zq0EFpeuPzy9rMDqMmV4OKcp9vQsZX4C96kbYvT1j9kI7jrfaDpA61Kn+5MlY+uy6cvheV4HkkAObMBNVMkcTNIsWUokzht X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2026 10:43:06.5031 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f2ea19e-b50c-48c1-1ebd-08de6aecac36 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: BL6PEPF0001AB4D.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4429 Received-SPF: permerror client-ip=2a01:111:f403:c101::7; envelope-from=skolothumtho@nvidia.com; helo=BL0PR03CU003.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1770979444707154100 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. Signed-off-by: Nicolin Chen Tested-by: Nicolin Chen Reviewed-by: Eric Auger Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen --- backends/iommufd.c | 31 +++++++++++++++++++++++++++++++ backends/trace-events | 1 + include/system/iommufd.h | 12 ++++++++++++ 3 files changed, 44 insertions(+) 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" diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 80d72469a9..e4ca16da70 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -56,6 +56,13 @@ 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; +} IOMMUFDVeventq; + bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp); void iommufd_backend_disconnect(IOMMUFDBackend *be); =20 @@ -86,6 +93,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, --=20 2.43.0 From nobody Sun Apr 12 04:36:33 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=1770979459; cv=pass; d=zohomail.com; s=zohoarc; b=awAxx2QmEHNRGzICLjDnve4ieXodEMePo/MdTROyW/IvySA0uougLZBnlSRnp/hGf31uJ3Aulhj0BmwyoXKHKzYjdoU7zo0ijB5FDDg7OG7mziz374KbRxKDPo9krehros0LmuGv2+Xyc9itITyd5fpB8lL49fp/qYN033KiJHg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770979459; 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=mHglJ2abxkStR6QvbiuUFMQSQepPlq05MA7T7PE8KFw=; b=GCZktnL8Eafgd86ePp7MW8i9agYjQszNDFfa7m3yWbCuqpNp6HkvNPtXu76XtePMCLiNDeGnHKvCoyEnAmd3g9op8Ut4ZIajTBj2MiF3g008V+vwatO8cF62Xcsm2cdZsC8nsifLpU7aBXFEUw3TCUnotL2hlOT1EOp9m9S4sL8= 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 1770979459435529.9870178670716; Fri, 13 Feb 2026 02:44:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqqdv-00086I-8j; Fri, 13 Feb 2026 05:43:23 -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 1vqqds-00085p-Uq; Fri, 13 Feb 2026 05:43:20 -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 1vqqdr-0006Uz-Cw; Fri, 13 Feb 2026 05:43:20 -0500 Received: from CH5P220CA0015.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:1ef::9) by DM4PR12MB8500.namprd12.prod.outlook.com (2603:10b6:8:190::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.13; Fri, 13 Feb 2026 10:43:11 +0000 Received: from CH1PEPF0000AD80.namprd04.prod.outlook.com (2603:10b6:610:1ef:cafe::69) by CH5P220CA0015.outlook.office365.com (2603:10b6:610:1ef::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.13 via Frontend Transport; Fri, 13 Feb 2026 10:43:06 +0000 Received: from mail.nvidia.com (216.228.117.160) by CH1PEPF0000AD80.mail.protection.outlook.com (10.167.244.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.8 via Frontend Transport; Fri, 13 Feb 2026 10:43:11 +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; Fri, 13 Feb 2026 02:42:58 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.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; Fri, 13 Feb 2026 02:42:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ONxKWEArVzj0piFFCmQKbjAlqMkEp89Zh7VhUMtk44ahVbTSMMM6PNJ31v498U0SChxKCnVu5hql2DQAUix7B8KdmQBDJwDbvo0FjIF8GQ/Swlq394pwNgm1La1V808wch+W5II9ks9JxBZ5oqDZYLwa876CRktqzanL57vYQkaughmhsTDxdWQufn9Q1+lx/58FWG5L3qNlA2vV1ALaKMNb4vzS9m/VxMDEVEULGab5hGbogq0JvZJkUN8k0yDtuAJ+zStF3d/Fl//O2Eik5I/TwexneTRW6XUwON0iNQo5Shp8zPUSqO6f08Ku8vnpR48S5TPr0Z+X6R7q6oTiJw== 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=mHglJ2abxkStR6QvbiuUFMQSQepPlq05MA7T7PE8KFw=; b=BOsY1CCc8A+BZTyViTIaEr6hvipPNvsvyO/pKajloSBblldjv+azzSr1esNt/hFUYjOQmqDTrxRyQCeZ99mMq/SdZ1NqaixWm9NSlM50ik7jhXMyKCrZlkuf2MAUDeflDiPmQr1/oxmWyipw/fruSu8SrVPKEHYbYc3Adx4OIx5/Xxqt6UFWr8hB8r7vglKRre5P5TyNV8Ur5MGPIdEC9pA5aa12cKt+oVvQUSBqz/oadtVdlYCs/TwNbI3ZEys49t2T3LFnCDYb1THqaALaD9X+zFyEDcs4w4Smz9aT00O3eQN7+A5EasFm2W8yZQFTVUxG+48Am7GtDXCMq7q47g== 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=mHglJ2abxkStR6QvbiuUFMQSQepPlq05MA7T7PE8KFw=; b=b0R2A/h8TA8L26ArnxYRz7tKcyxOD7LZGmwX/yiz2DMv/5zSj3jvjNjKrzFpeLejt5ZPtx+nwGWwAAyMwosW6nE7EI2hUbisC0YMpyH2cJG0i9DOgFI4GIFmHAsN8glw70nPkY6zb1bj+vS3hdZZ1zs55Pqj0UivWFVNyFNEqxla+U1iV2FdWoyWI7pLQhwyLdeV2duXKwHfNGxWxtqOExcQRnf+POAvy5kY2ZF6JcayVTNSmXVJZT3H2hLnIy2Tc4c0JpEzK9pIuXZfnbFdc5zCEv4D0r2SRLUDsqj36C9wWPts6dxzXF5cepLKjlh4yR4PRjTpxGs3gtaYRrsIuQ== 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 v6 2/5] hw/arm/smmuv3-accel: Add viommu free helper Date: Fri, 13 Feb 2026 10:39:39 +0000 Message-ID: <20260213103942.142823-3-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260213103942.142823-1-skolothumtho@nvidia.com> References: <20260213103942.142823-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD80:EE_|DM4PR12MB8500:EE_ X-MS-Office365-Filtering-Correlation-Id: 678b1bc7-2031-4e0a-0c2d-08de6aecaf09 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oTZc7JIdYhXL/DPLMdd5lq4dPh4OpUbGWtSKNvF2e7npxpNLtrTN9CWRXFo4?= =?us-ascii?Q?ccRIWEaIhkhWzoG/WDtQRfMPC1xD0BjVjVzdjOrSb7Uin+I50Fnl+IxmQm9H?= =?us-ascii?Q?Nw2AMza0ADkijlnHxxZDL8A0psaJhC0iTBOehvZMA1AUzcjbtC1DqgohPQ7Q?= =?us-ascii?Q?8ntLJF++UCK7BsYvYOx92FtGhSBksJ2M3AFeYYFPNym7axILU52BmJb5LDdE?= =?us-ascii?Q?tKleJEp2ZAsIfdT5gG0Bihg+MPd6/AiI1BBANOFtogzUVmL0/Sk7U6YcK9qj?= =?us-ascii?Q?jYRsLA314EYwtkDt9YxfYMaLqI3ilHFYIkPKgoI+pTwYmf/NMs6JbgGlOVQw?= =?us-ascii?Q?uSzvHts+p8ld9LhayKPsRonU85POkhh0we1C4ogWdduvPJIf7qIHJJnKEW55?= =?us-ascii?Q?MZ2jxSfQ6X6YrCDpJC8Nxxc2jmK8AgHUFoLxe52aY6L8kHGdUymKJ1twN3GL?= =?us-ascii?Q?ybduI3VtoD/0RySyabloNdjFpGBC95t8wH1pPGRqvVCgjNRpxy14hgKNPtsX?= =?us-ascii?Q?WJMLs711wraUY2p0KZCVAG9Eey1K9yh6VsbC1WDcj6IoirhNHZjZcspaCk3U?= =?us-ascii?Q?HUWryAWEWt+y8a5u6MqRdrD+LP9/gBe0PPGyVddhyKU7gApGjwSsbkBNT8Kf?= =?us-ascii?Q?7+VTivw+Dnboe5fNQjg8dXy4LjhRhnwHuwD+KQrkUHa4umu4Or4jxZMchhSF?= =?us-ascii?Q?IRaVsvKIKXg3WPbcJ8aWMzE7ecV3aq7E/t+ySHbT+S1Awl4jTsk++tesN7+J?= =?us-ascii?Q?Tmom83ZHeibrYUqpgqE4Kyv96s8qXqyeqsAWJbLIESLtlRK/xA1/o8eaa1oN?= =?us-ascii?Q?6Hpu7AaJywoqLSeHe4Wt80OmwHZNjR3DmOB9WX9dIpLvHxvcMrAqwxiupTfR?= =?us-ascii?Q?0fbQalCt21oAiHpos3V9/R7MXKANGhHypULG2osMt61IsYS+tDQm9ATd/ayk?= =?us-ascii?Q?n3oIm/7qo4AuH15uwKdJMq8DQGU7jTphmSVbI6yB+5CWiefhkSwkcRlbToJL?= =?us-ascii?Q?9Ye8q4K+w0qNGKNoxwpwtuxFtlMfPsrJPmseTYHEvlhk6zFPCZY+ZGk37gOr?= =?us-ascii?Q?ekNGnFBpHmvmKFFTx4jesCs3adabbSRJWR7krYp8n14sFZKnmTTpdsiurjWB?= =?us-ascii?Q?GydUuUTkSQv+ouUOhxRjLBbSswWEPc2YdvA5DO2YER9YgJj79GENCfBUpaGw?= =?us-ascii?Q?yGXB7vJ3AbQAnMmsVVoQKC2OB4+rk2CaiCtumuNpDvkdBMuqicKCZbOJX0Zj?= =?us-ascii?Q?gj4tIXfD9N9rP9i6+ovdnkDzdqH/8WLNDcd7IZIEkry8jREoh/5NCYpH2ET/?= =?us-ascii?Q?97YjQNd8Ljeo9iozazNIxZQJmFABecOIS8wozT+PEOj0DTqUSAVbyqUtnsKW?= =?us-ascii?Q?xACCvHSazKFX//bNqD0+NqSpYV5e02rIcpjf/oOv96yNqczOrY+PwjKq9jIA?= =?us-ascii?Q?wWcKScORiagV3CWEM92CARmN1prxG8wcAssOLfSqvAVJgxi/GXawAHXC/gmz?= =?us-ascii?Q?5dd9m1WxC0lRo6nVaEkSRM2/m+isDdPVJouna4HgFnL3Nh60H9YStDE71Ogm?= =?us-ascii?Q?3fAlwc2CtsuEm7MoKk0I9CEXf32BKRCR7hczqKdmRCifAzLfigAXOqMKER+O?= =?us-ascii?Q?7udgaOsAj0bPUonfsbtQIQ/Kq0Ezdb+ZjqkmnqxHvnMe7FZRRX2g3xcOvGGh?= =?us-ascii?Q?3yIK/Q=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bLyjio69L/nvMUx1PbtqXmcxwz5kxGpOE43PyxZE8g+eIaVGHVqoozsQBCNmV5Zf+88vAYHKPdBhL4sOJ23WnpNxKdi8pCamyXOajf7OdDDikg/z8Ue46MEs3sId88fGQqesqBIxK3py3A4bQ8MhWAIzuG+gAhG1fz3Q2HUXseem68A9XWY0Mx/XPp7LU5C9LRgX+jE5JjcaT7uYqrq9GubKLaIVJferT3fRyeTgmsRvNawp0IJOCn0ssK/Lvz0puurX12J8NXOq520SXQ54kPOKZyUuqgkE54OroR6EbhDeCsita38CrzYj5NQ0FBrivEE/c8aMmMfAfnUducEio0L8IVKZD3c4U+iHkiB0X4augD9nC7RnSrVtXiPmVBwYPDDdbqZqVKagOHdPc6P0IuFHEOMuWZkIsy6/pF2Md21Qzff3bo/SP03wod4kC7yX X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2026 10:43:11.3238 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 678b1bc7-2031-4e0a-0c2d-08de6aecaf09 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: CH1PEPF0000AD80.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8500 Received-SPF: permerror 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.001, 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: 1770979460720154100 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 Signed-off-by: Shameer Kolothum Tested-by: Nicolin Chen --- 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:36:33 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=1770979459; cv=pass; d=zohomail.com; s=zohoarc; b=bZtRSaIAC5iZ4boMVYTVDLU+12GjEvFZ7d1jXekg8TmzWhNiBO6p6WraRSpdRfGW42JSRyyMMPjxzjdBtKQZcdoI3Qr2jmAfyAmvgKAV3iMvcGKzywva2sYUfpVFX3/9sDIPHImHWHsGAOik51FL2tMvKIdPvw4NY1mUP9ZfSlE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770979459; 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=lQqZ+dPQZapFThe2osR0f6IPTDtvq+hAOoI7ZZOijGU=; b=fYj4nkIT1gsobHE66JZQBN2Kn7e0cShF2YH9wqd0z3EbUKglKrBIvrZDQnh89guww2cMtsFjcH6tw6TqcnxFOldfYPdHKhkbWeUL9wamCfK559xDI6uBh1Az4OpqFypQ3CyBwjI43Xu800AclXQxKkwV1JMxUPP0A9y+cC7UGIg= 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 1770979459017885.8663195163937; Fri, 13 Feb 2026 02:44:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqqdz-00087i-0a; Fri, 13 Feb 2026 05:43:27 -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 1vqqdw-00086r-Rh; Fri, 13 Feb 2026 05:43:24 -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 1vqqdv-0006Xp-0Q; Fri, 13 Feb 2026 05:43:24 -0500 Received: from BL1P223CA0031.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:5b6::6) by LV2PR12MB5726.namprd12.prod.outlook.com (2603:10b6:408:17e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.11; Fri, 13 Feb 2026 10:43:15 +0000 Received: from BL6PEPF0001AB4D.namprd04.prod.outlook.com (2603:10b6:208:5b6:cafe::50) by BL1P223CA0031.outlook.office365.com (2603:10b6:208:5b6::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.14 via Frontend Transport; Fri, 13 Feb 2026 10:43:29 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL6PEPF0001AB4D.mail.protection.outlook.com (10.167.242.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.8 via Frontend Transport; Fri, 13 Feb 2026 10:43:15 +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; Fri, 13 Feb 2026 02:43:02 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.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; Fri, 13 Feb 2026 02:42:59 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=N/aSryUBa51W7aKJuKpcAU2qyj0UUDjsH67tjUvu6iFioGG+ayXHcz2SZEDpjz+IrOG1QUPBIvTqpiiY0obRBhuF5B6iD7fNTt25gGDwR3Z7VX/6iM+T3CQa//I/kGf92yj5a2GSf0Fdn3U6h+oLjr4oBuUA7inRrrV9Cj/p7o8B3k89YEfyrikjc84F89FuwutvGXBgdSQKRA/u6BGb/rRsPGTwPsrEVMMs88PQY7Q8Jmd/dmpN3+TsGkni1+1MIQ4EQEpfSdeWr8RXJl8WBSKuep5FQlH83XW2T8meFcDt8A1SHSVWcc17ZQJ3qBUXPtSROqkpJuKt2rfQw9K1Lg== 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=lQqZ+dPQZapFThe2osR0f6IPTDtvq+hAOoI7ZZOijGU=; b=Sgh86yHq32QS1TCLo9CPqu6E3sidceiHfIOj4gWSoDy+H9U40J9TCPr+54SXZI2veL3M4GkFRjWeO8RG3NYS0sydzOgkBGZKLBR/8q3uwTpMew3hW2VQFzedpqx/n2jiMYDiBbmBgn1uGJSvCoOtWFhuXpYLpEeskumC/Bb5oAfOHTq1Je0v5kOdAsKkfdbxiZ5w346Iy57fNVmRDkty3x2/6PfBSQbf/t4nkvKBYDZDAED5Vwi2LTdzgxlzj0632aeHMOsBY233ivzBW4kXjx/ip8LOgzqStnbly5Q0oH3bd1Ur8vWlIp9mc6ThwBGsVFYVn3FXcWuMc74D7xDx4w== 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=lQqZ+dPQZapFThe2osR0f6IPTDtvq+hAOoI7ZZOijGU=; b=YwvC0ITSDQRhbtMRXdUhuF4Be6ot7EGUQqhiVxRfx8o4lQEFduRX7SQnMWeiFBOv3JjSCA/LWc8MptJu9+HifkOJrpk62ji5IuzF++XHDpwlL8rJpZ2hRd0BlsqM2RTNxZ5TbAf6N7hqWThjlzO0e07p4cJ8bD0hsU4mxiL8GOubRoYy8WHOzcuU15hI3jbhavw9jIRUQh39HU+7HZ1W/xh8IREcNBIcqvdBk9bIlhX57d8HRPorqdbzk9/DaljMboQUG7MbmP/kAG3iMxUos/Mreakegq7OlEOCB9PyYTrWYs0p6Lj6uqwZc4IlmanEpelzoKW5ZitYSgWTF+9c6w== 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 v6 3/5] hw/arm/smmuv3-accel: Allocate vEVENTQ for accelerated SMMUv3 devices Date: Fri, 13 Feb 2026 10:39:40 +0000 Message-ID: <20260213103942.142823-4-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260213103942.142823-1-skolothumtho@nvidia.com> References: <20260213103942.142823-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4D:EE_|LV2PR12MB5726:EE_ X-MS-Office365-Filtering-Correlation-Id: eb10c562-1f94-4456-5b1f-08de6aecb17b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?N3zqDgeltrDpZRtN+Cu+BDjyRWGizg4hf3hdFPMFwlG3K4yPJzftWCYlTe5D?= =?us-ascii?Q?Yo5sxpxuRPZuODWITBHFxueePVVFnZ8s3c6EXFetXx+rXy2jejLOvLwsfzJV?= =?us-ascii?Q?fWnJMfuXOnM+MoYu/qrlEzgEPC5YSsZbI8BSaPKd3vEZhSuj9weOPZLhaTeN?= =?us-ascii?Q?NgWIp+dtj8L1IfCfEp01HArqSwr4N9NGmPaC9JriqEGA5BxBujlz7ppvgh5/?= =?us-ascii?Q?y4cpGyYtgUNfaFDNfLVU/kj1T3a1rNejyB7HOTjPfXqt3lrHBkwveTqGLGwZ?= =?us-ascii?Q?hLsphgV83rb8oLtZzjp0K9oo4e/JSkLyPcW2HdEnkA3leTQqPAsech9yU9x8?= =?us-ascii?Q?DDYs4hjoFNVyr9e3fxg9iCkvRuJj0k02QY2GkCp9w/H3i4KoWePH5QYS+YUo?= =?us-ascii?Q?fQkIENCPBqTAppsWpg9djHCIw8JmkLeql2hpOqV5VlpIAHu5JI4Cq1+Lvl1F?= =?us-ascii?Q?HpfW3TU8HB9WdhoZGx30/lmBiqo0yXCV+LNxcKy84IWpHkng6XK3XuJ7VZBE?= =?us-ascii?Q?e9S2T4vcjs4OEVYnQBLjkFPYGjGW1SlGORqyREYYRObZk00rUbUewUy8pBoF?= =?us-ascii?Q?ZCYHb+JJlgELSBMIu0xiMV1hARPMPtimrgIMqDta7WCsLTFa/3wONgGhm2lb?= =?us-ascii?Q?lLugoDteb//xz+0Gilsa+1yySpeNmgETDTUleN1gtDHyPpByyJGg9G37T325?= =?us-ascii?Q?xMVwWIKr2UYQj4ncsAQycp54V2DMAE2w2XMUePpIRF9tZq7XrN1iMoYrHEuR?= =?us-ascii?Q?3oD05hEbgaPzLf2sQ8QWrRwppYA/+0982KvCwzht3TpLEj/xPRIcUNRUk3pa?= =?us-ascii?Q?mzpfLAsS+cBWhPwqMMHnkU6pxduQbxNV6cCyuz15DyYZFm+vcW2Sn3OT2IZQ?= =?us-ascii?Q?yoFVQPLP3mlAWql7beIA/ezq12VqNLt0vSPCMZbl+IL0LJ52Ok/3KllBKyji?= =?us-ascii?Q?RFAa+rObEnAUkC1Nkl0qKGH6R9/ht4T47FEK8pAv31UN+jPWC8RlWzij9mtP?= =?us-ascii?Q?TiG3yv3EkVDZ9KCW9wJEIgafN+qMcN7VIOA5+GbAnfkNeAlde+zr5WdQUXrh?= =?us-ascii?Q?6h8DcwgFiFHBFr+a2EjmSjKShTjPi+3X3wvW90hjr098lWVVNvNf/hmbucKU?= =?us-ascii?Q?pQeYYxzRWEWxOiqURcS7dlwyMJ7nEN+6TcRdjea4GzNUj2fzFRfozqHBZw2V?= =?us-ascii?Q?Vb3pNNTqluoBj5Aw4/fwOohO/ts3n7lJiG5eDDx7fAwe0LYDO5W3OJpmPzsT?= =?us-ascii?Q?jU7LIHj7pm5AYGaEE8DjoFSy5xibGoOSx1euzovzakfQZxT8/7Kq0Z7L276x?= =?us-ascii?Q?hBCdxUBJzJnropgZJFRKrYAa0qpl5/Tsu4PyDSRKt69ipl14k0KhvVTbEQ6o?= =?us-ascii?Q?TtIugk//f602VlrmN/4ZqEOwR3xKnLoHzsVLoRn3+CX9lbxxZRclkEbYiJaG?= =?us-ascii?Q?kLb1mDm7wx9MTxWzQqgzfrpxNnBK0XcK68Y9iWdIxawq2ALuKbdwoeXTh+37?= =?us-ascii?Q?yZHGOaMXbjg0dkA5ACSfvMTznnT69IUcfoz6xEwH3eztFCvMmKDM/9MFvLa7?= =?us-ascii?Q?iyPyte8fdSR2jAaacJyxZsN7XHbOnrGJNA1GK8AXurE8dW4f+EhgNyO3wHYm?= =?us-ascii?Q?poCCmaS/jRlYsSZWB3syeawgiJrlWkdvH+3nG8tBrroyYIBb6uUjWhIDCPsE?= =?us-ascii?Q?6D4kqg=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)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UeyRz8vPUcRRrDeNd7YC6/RTMQG5seVQSFY2wGkOSg1MFl1eT4zv7rGDYQPfIzGVnH763/H1yY5/TWbj5uHviZIDRGQ0dlKA1H6SxlaWhhD6YBTEYUicXyTrtwxi7L+dzQjZJ3xm+sh7deZRDqDUkZKU6lNfFRWDkRRkrmTKlUqZZGUbZI2+IV4lBQ+RX936g5Ip25EMxs+jv6H9blDCJJ5muVl/1lhEVzin6hzGJAuGbXAeLP9fSssN749qaNbOwiNv4ZeKp1hDgahVze846x3B3hIPAo4ecHanWK09nOeJJESy+kGla0kdzZ12grAew1fVFk5EiISAbvOUiO4lelQ526eGzpPaiI8vmiCPuDvxePjCCGqDI6zPwhjiL5I2vda4jqzgFT6btBRnDAR2mLbElV/6/NbffvFTB0sXeUETanLW6ktyZHNo4hnF4kum X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2026 10:43:15.3358 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eb10c562-1f94-4456-5b1f-08de6aecb17b 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: BL6PEPF0001AB4D.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5726 Received-SPF: permerror 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.001, 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: 1770979461187158500 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. Also, rename the local error variable and refactor smmu_writel() to use a single error accumulator with error_propagate(). Event read and propagation will be added in a later patch. Signed-off-by: Nicolin Chen Tested-by: Nicolin Chen Reviewed-by: Eric Auger Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen --- hw/arm/smmuv3-accel.c | 61 +++++++++++++++++++++++++++++++++++++++++-- hw/arm/smmuv3-accel.h | 6 +++++ hw/arm/smmuv3.c | 17 +++++++----- 3 files changed, 75 insertions(+), 9 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index c19c526fca..d92fcb1a89 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_new(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-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.c b/hw/arm/smmuv3.c index c08d58c579..f804d3af25 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1597,14 +1597,17 @@ static MemTxResult smmu_writell(SMMUv3State *s, hwa= ddr offset, static MemTxResult smmu_writel(SMMUv3State *s, hwaddr offset, uint64_t data, MemTxAttrs attrs) { - Error *local_err =3D NULL; + Error *err =3D NULL, *local_err =3D NULL; =20 switch (offset) { case A_CR0: s->cr[0] =3D data; s->cr0ack =3D data & ~SMMU_CR0_RESERVED; /* in case the command queue has been enabled */ - smmuv3_cmdq_consume(s, &local_err); + smmuv3_cmdq_consume(s, &err); + /* Allocate vEVENTQ if EVENTQ is enabled and a vIOMMU is available= */ + smmuv3_accel_alloc_veventq(s, &local_err); + error_propagate(&err, local_err); break; case A_CR1: s->cr[1] =3D data; @@ -1621,7 +1624,7 @@ static MemTxResult smmu_writel(SMMUv3State *s, hwaddr= offset, * By acknowledging the CMDQ_ERR, SW may notify cmds can * be processed again */ - smmuv3_cmdq_consume(s, &local_err); + smmuv3_cmdq_consume(s, &err); break; case A_GERROR_IRQ_CFG0: /* 64b */ s->gerror_irq_cfg0 =3D deposit64(s->gerror_irq_cfg0, 0, 32, data); @@ -1643,7 +1646,7 @@ static MemTxResult smmu_writel(SMMUv3State *s, hwaddr= offset, if (data & R_GBPA_UPDATE_MASK) { /* Ignore update bit as write is synchronous. */ s->gbpa =3D data & ~R_GBPA_UPDATE_MASK; - smmuv3_accel_attach_gbpa_hwpt(s, &local_err); + smmuv3_accel_attach_gbpa_hwpt(s, &err); } break; case A_STRTAB_BASE: /* 64b */ @@ -1671,7 +1674,7 @@ static MemTxResult smmu_writel(SMMUv3State *s, hwaddr= offset, break; case A_CMDQ_PROD: s->cmdq.prod =3D data; - smmuv3_cmdq_consume(s, &local_err); + smmuv3_cmdq_consume(s, &err); break; case A_CMDQ_CONS: s->cmdq.cons =3D data; @@ -1711,8 +1714,8 @@ static MemTxResult smmu_writel(SMMUv3State *s, hwaddr= offset, break; } =20 - if (local_err) { - error_report_err(local_err); + if (err) { + error_report_err(err); } return MEMTX_OK; } --=20 2.43.0 From nobody Sun Apr 12 04:36:33 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=1770979438; cv=pass; d=zohomail.com; s=zohoarc; b=HirSW626IhvRGK1xmvyX7rEeBirLCWeUQgK8E2l5VQZN9qlXXd/8NHQ6Geujh6b0XdTeJQ/I2Rty9HUNDk2XsiWYrr/OmHSPubmCpSo7btzF1bXNIedH8w0LBh8QWR+yWa9iTrw+cBvDZGgTXqc2LKITI1Khn5hJ98+dNj3S59I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770979438; 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=Tm5qg++ZxEfyin8nJhyKxvkYdXOUgUcbk/RAi6275gU=; b=m9n7gG7F+KIUdetZPCcbbFnBMQ2nvV9qs+os5cJpZAnyDAZX3VAoeIDP2TRrFm651LHgyUFqOwnZ38XUEPPpI0K2lMItQSGH3e3utYP+JiTEzCDAgBGXO9he/PswD2QVfcpAkghx2uivGRb9hOLdbEZzJ7NdNKfBnu++HxADx+M= 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 1770979438951915.1559466600672; Fri, 13 Feb 2026 02:43:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqqe2-0008A6-Jf; Fri, 13 Feb 2026 05:43:30 -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 1vqqe1-00087p-8T; Fri, 13 Feb 2026 05:43:29 -0500 Received: from mail-westusazlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c001::2] helo=SJ2PR03CU001.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 1vqqdz-0006Zh-PD; Fri, 13 Feb 2026 05:43:29 -0500 Received: from CH5P220CA0022.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:1ef::28) by PH0PR12MB7908.namprd12.prod.outlook.com (2603:10b6:510:28e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9587.22; Fri, 13 Feb 2026 10:43:18 +0000 Received: from CH1PEPF0000AD80.namprd04.prod.outlook.com (2603:10b6:610:1ef:cafe::eb) by CH5P220CA0022.outlook.office365.com (2603:10b6:610:1ef::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.14 via Frontend Transport; Fri, 13 Feb 2026 10:43:14 +0000 Received: from mail.nvidia.com (216.228.117.160) by CH1PEPF0000AD80.mail.protection.outlook.com (10.167.244.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.8 via Frontend Transport; Fri, 13 Feb 2026 10:43:17 +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; Fri, 13 Feb 2026 02:43:07 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.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; Fri, 13 Feb 2026 02:43:03 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PDuOV91HdEdYtLi6AkKJTWrguDzIcsDCETEDUAcTVKOsazJcxO8hbWyNNRRMZIiwWWfFFQz6C+TbHuXAXS/dmUTSE0zNeDGKeFpSvT0ex7y+0LjNOrG9HI7TXinwq2liApVIPDVZ6IV/47XEwKzK/x7/MrQX1V5gXhsEjNy5FpYd0qrGQ5fYn7nCsCWcMm2y+LORXLjs0L86wI3dasPPj0uWbyrsltBRNrLYx/G7SFt9BAEPxAGLuFrVsmiBL34qx11WgUwIv6YKAT47JMHQF47OeLBUJ2szNbItcR/CjN2b/n6Rba9Rr3O6iBlML/uTXShh5y8oCtQp5PxVtetaeg== 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=Tm5qg++ZxEfyin8nJhyKxvkYdXOUgUcbk/RAi6275gU=; b=NSqcTuUH00fbPpc+zti5Jxwvm6BP/WhrGVQBlGJf11tXJ3bp5DXRGomEzB8AQ5xgft4XGJHkoLDYF+FR2NxKTEuzjSYorjXSeC8Gu+vakYdmTftQ8hbceSrsZCI8vz2X+NjxYfQ5BnZdmFQpqmWG583jZG2kGJMDaCgmojbAf3tFFjGr63EdYEq2ORvonWg9ZShya6oIi3ou1veQI8fKKyy9RMszYqMuITNIDaP2g9zBxXulq4VVU3Ovs+oq4LdSCPskD9xkCthOhch2+jZjDMlvZPYyGa+cbxr/IgDdleVqJRDMdfpiZ57DIasTWn6wsaxJL/p67sz1VF1F2fDqdw== 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=Tm5qg++ZxEfyin8nJhyKxvkYdXOUgUcbk/RAi6275gU=; b=eDoMJkIjEU+rnXI4NpZeHMu+tz3GJc4d0obV70/EdGKgwONWxEibKXim/oFzzZAoZtLhGO3/75t7nO6Qps8k678271mXedP8Pt4X5Y28lyBPVJgsjVWGcTaGeNC3uJC4HQxMq27txW+GUDgvC9lzxH7tA3/+sXWyfe2EQRnPRqj5KQGW+bzNxUmyH0Y2T06o42ezDyJBrEyTOjNwqfi65zXXQ0jvflaULmPw3+eKa6K3iFDIR7E+RDIO0kPB75CrfejQGZ95iyZ7dltCSTGSrzqMskivrM3rEMosDEClJ+DwXGxXQMzrULj8msItCqtolyK8MYRJaI8PWyBhVlw/Mw== 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 v6 4/5] hw/arm/smmuv3: Introduce a helper function for event propagation Date: Fri, 13 Feb 2026 10:39:41 +0000 Message-ID: <20260213103942.142823-5-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260213103942.142823-1-skolothumtho@nvidia.com> References: <20260213103942.142823-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD80:EE_|PH0PR12MB7908:EE_ X-MS-Office365-Filtering-Correlation-Id: c0334b47-3b56-478d-0ed1-08de6aecb30b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+j2N1QNfpSFIWzcz2G0pcQ03ofh1jIoSb44n4CBwgL7a4hdSXJtlIyRsWA4C?= =?us-ascii?Q?Z1ORrQu3w9xPsp8V9dZrS/oP4aqvPKEscyTqDKA9VnJZkbZZO2H208UswU+u?= =?us-ascii?Q?Xoh6HNlXWLWRhXK5k1uS3AAdRvWlIvXXQQHxZJABVdy1dZsDgg02Aa3/o4Cq?= =?us-ascii?Q?ReHWB/rTfwuWuRVtZea6ERTocID51pjDaVNqJgGEIDkWn8u/RAARXmNc2EBi?= =?us-ascii?Q?9mSvSlj7+KFSsbTLB5AWc7Qg73Hiz/6Gnor9Gyefq7gY8bh+YEdnGNQWDTe/?= =?us-ascii?Q?D1eIdJB95V0sY3j99NWVpd94ziio1DUbDu+74y/3N30ZTPiO5D4EdQ/3f1ls?= =?us-ascii?Q?yKV844c3aaS8w+FftybZMZ/T5dE8f+B9prmlS9EJas1xis5DuZD1mPRzimuK?= =?us-ascii?Q?vkLkbb8e9flqPqM0WLWw99qGXg/ghNIcYJma7gEbgXu+Ki/Trx2dDIMkXFee?= =?us-ascii?Q?dH10OU0M5OtG9xNACCKucUzAyAKEC/SYHKkNZmYTkEbDZ4R+GzPgoFRsMVsV?= =?us-ascii?Q?ZSVyevsFuLcyw2VdiG7rWbrpu9EJbJD/DUpufRY/eYRQoMixt1fGl9fTKaHt?= =?us-ascii?Q?tlTunY5KCt4l880JLUSnALzA6m+wJANzaD/XvskW/ame0MvBRw9wc9SUKjBS?= =?us-ascii?Q?1/m73rfeFUVhQqMHtLVBlFTT7aSQ6mJuZOdrm1ufWNeEUqZSPn5hXh9YF4WB?= =?us-ascii?Q?OlpaaOfwKsQhoH29Jci95rCejYrHuCulkRSFSrearqqwUQHa2WLJY+pQem7b?= =?us-ascii?Q?K4h4LLsY9hhmYT757Gip4Q+RVDt5le53dGkHsWXg4uAO2TFT2EjsaCQz12Sm?= =?us-ascii?Q?CbpEJLu24W0zReWrl9amw25v/Q+a6xkQ+amuvC+1rZKgGDKF0tt8qlsJCmoB?= =?us-ascii?Q?9HE1ZtGZWO4B1iohdJInFrnaZK/vPfDBF6/PFCS0CTokN3qO1R1bYVyQZ3Ug?= =?us-ascii?Q?m3+Z2HW7WDxt2nRcStVc2Tkvrp7NduPIc7LbAGEtR8FBpEdtjZFdjh0qk20o?= =?us-ascii?Q?g9cdBE9QKYwNxLn2zxxohdSEjWhx1qff2hOnEUda44CWqx2h86rObjLJy7sW?= =?us-ascii?Q?goUx68N4vYcuLnioxburCWEu+kCqwBO3JRhXOvLWH1p3PIbfCrcPx7E8Sue5?= =?us-ascii?Q?t6EPOHpNdKVEKkqbNchindI2XAuuwsaEoXLB8s+jtP5Yf4H5qw8EbVkDXqiE?= =?us-ascii?Q?E/U3sLLweAxf+7IOeWT3JUerAFJuUblbSkt4XW/JOQYiNO6oszBINCfRmnvB?= =?us-ascii?Q?ZJzpPkk5Al7qui6EO5GIBsoFGyogywxqJL9/q6+bQ2HCUO0/LcHJ50L7Gu6q?= =?us-ascii?Q?i4UtXOzRcd+IPeBFy5+RAYVx7e5TGMB/mV//wbGmxkn6IxIKQHEJl96hOPKV?= =?us-ascii?Q?H265ikqS+RYtt/x3JjJBVPmf/hem14C53DnyfmipmwogGGWs4sPK++eWLSf/?= =?us-ascii?Q?IcXRGUX8FU5TfAQmenFFuClP1D2wOP7XhxI2hwW9lnRdeiMN2vII58lGxxo3?= =?us-ascii?Q?/dEu7+428nGH204ccJ7bGg8bSxmq2rFPdwYJDxlKP+1LXX96WTAGd9iHyJ/F?= =?us-ascii?Q?Gg8HDJEZpNah3Df8MYRUm6RGUMVf8l4t4/K6+1JNg3T1J6YYbVIlxMXFKyj/?= =?us-ascii?Q?CMXNJbLV02y1+pwUcSTM6s4GSvRL5udqEaH8iVVVvtAI+VDeakaVMFke8SL6?= =?us-ascii?Q?rvyjPw=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: flnCeI3Jvglj/U373iCr9CsG4sLiblgdKCtmN2KZ85pBTHeHJ/6Ez2zK3Jp9yMu/6w7+dKCLEXAm9sUE7vl/HQwi0s+rNGXmMlIfGA8DzmqAx117UFVDJD4Q0dCo4l2AGax/AMJItzAV0qFgmrE87ME+J/I1fbaOe8EIO9FTB9HQ118pDQN5pjDL9sUBfBfe6YQYMk2V4zaBliXebErjN5sro6oFWYniE5yN66bsDyrlr43DUzIEucY1FFUvwOkNBp7BhVbhVIRIlIvEIRoVLxOmZ2yfqMQbKzYRy3vriog/OS0R6UYv91Pl3FVxjmegLji+oD2UI/sHJiWBa3kogQGFdDZyHO/vT6IJwEAT8flLsINYUZVzX+Eml5fsAfELmwkZHZHvsF8g464bOHvGKD9/VDlRuztBDTNF8cbyUIV+cvNjZzAylzcGW1XmhF3X X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2026 10:43:17.9887 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c0334b47-3b56-478d-0ed1-08de6aecb30b 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: CH1PEPF0000AD80.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7908 Received-SPF: permerror client-ip=2a01:111:f403:c001::2; envelope-from=skolothumtho@nvidia.com; helo=SJ2PR03CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, 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: 1770979440472154100 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. Since this helper may be called from outside the SMMUv3 core, take the mutex before accessing the Event Queue. No functional change intended. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3-internal.h | 4 ++++ hw/arm/smmuv3.c | 21 +++++++++++++++------ hw/arm/trace-events | 2 +- 3 files changed, 20 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 f804d3af25..bcb9176c51 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -168,10 +168,23 @@ 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_mutex_lock(&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); + } + qemu_mutex_unlock(&s->mutex); +} + void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo *info) { Evt evt =3D {}; - MemTxResult r; =20 if (!smmuv3_eventq_enabled(s)) { return; @@ -251,11 +264,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:36:33 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=1770979450; cv=pass; d=zohomail.com; s=zohoarc; b=aDT4Y0Y3pieqbBspya4CKYeseRs7se1UHdrjyPznUs0HqrOJ0USfpjbx8Oc1GjE9BALsD52JphSXHU4SGfYmImb9+8VCqr8Yv8ejocw05drT8/YkI/s6ho+NRmXZrN+EuzrPXM40WkgAcFNZRY4sbKlNrdarfEq5zUgk06DuCdQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770979450; 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=pMOAaQGWVmFXeShfjJs5bSQVNS0YFvQBw16xqIM8FVU=; b=ASlB4Kq4QxLJYx4YFyYKv1VRkFfaf+ZIAoNmOjAdiqt4CNIV+ZK0scA5/mCWaMcyVZjL6sbH7pCI26uag3e6VhLMkwekoABYE2D7pGTbDL03EMmfvJao7HMW7jUc5+KLix5nl7Z1TKeKBpJYVc3mYG5uL2HeBw7kfy0E/qqKIOc= 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 1770979450253282.3849762604257; Fri, 13 Feb 2026 02:44:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vqqe8-0008K9-R4; Fri, 13 Feb 2026 05:43:36 -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 1vqqe7-0008HW-0Q; Fri, 13 Feb 2026 05:43:35 -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 1vqqe5-0006cm-9q; Fri, 13 Feb 2026 05:43:34 -0500 Received: from MN2PR19CA0066.namprd19.prod.outlook.com (2603:10b6:208:19b::43) by SN7PR12MB6690.namprd12.prod.outlook.com (2603:10b6:806:272::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.11; Fri, 13 Feb 2026 10:43:26 +0000 Received: from BL6PEPF0001AB4E.namprd04.prod.outlook.com (2603:10b6:208:19b:cafe::5f) by MN2PR19CA0066.outlook.office365.com (2603:10b6:208:19b::43) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9611.12 via Frontend Transport; Fri, 13 Feb 2026 10:43:25 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL6PEPF0001AB4E.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9611.8 via Frontend Transport; Fri, 13 Feb 2026 10:43:26 +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; Fri, 13 Feb 2026 02:43:11 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.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; Fri, 13 Feb 2026 02:43:08 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LJ1ts+l++C3sH7bkjgotgvVwOCglsIwTI4g+wHvozsJinbwCAPFgSk2aMr4f72V8LtYQzNlKecxbwmLAlcLn34ensuNWBS7tbHKYGVeTeJXhDGmRyKlpAsTUWghuzP7DvrZRqe7aFn9EPTIDIKlvXhYf+88uMvnuMkPTUisGNnvBZIDqGy933uMLszzXEm+1GCiCui15BLGzFem21BuVQTml9WSCSIma0lwtSYx2uK6Odmnm/cW2AScbyl0tWz9vqcFT5Mpd728s4hzDhHCAKVYS/0wyrjdMHsaV4SBRtjaYrENcKgA7mk/LeaXMNhFyuQ8XdMzLa8OsnreyGt1ssA== 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=pMOAaQGWVmFXeShfjJs5bSQVNS0YFvQBw16xqIM8FVU=; b=gciLnU3S8Qhw6GdbC6IzNsGDD075llrSr0wQ5nvyZQMIp+yJelNWJFDoduDFdJDHwlQ03sEhig97SJ6JsKw/tKUyxQg9xFZAdvQIcKEAoDPzZhbSbbFkvZfr/3fpwH0unDfWTV249PQsfcC2nN3tUnRXIa987OPDZ0VzJBxuEB2lmEiwEQ0IYW4dqreHZu+IInLpczn3yuI2KUVzpYzR64XjiyPxu6v6jTSoUvslEUU9aJWX2nsKwgME6L+V03/JWhvh/je8Hv+nH1/zJIwO3QLLMhIBKc+x3om31+FzqOsrfjM5Lhrc6SleEoMt59YWxDWr9m460i03KPw5+A4iuw== 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=pMOAaQGWVmFXeShfjJs5bSQVNS0YFvQBw16xqIM8FVU=; b=YY/GfCQ1G1e58wMmVEa9K1zdWnfPbUD4mmgD4FwV64f0ljd45aR5L8rTtqm6OPXVvWfAu7llNuoCRQfn3t4ck0EIaz4fr5jVTd0WDVss3Yxfl3g1JOefcFQ1wUIHr9Z2XDscSHMVBeUovBZ1Lc29K92v3+39CPYmZXVJ+T+KzAnaZH39RIkJ4fndB3yf4sdWKp3TTNa7L0r03u80DkitNSw+TRCNOlbTY3JkYuAn/O3z65983j22DE9YCIjNC3EN3zojOZeF1ejfScj18bELhEj9YqR05jm4m8hipqRLsEFKbRWjoh0YjnS8NISQp4P9f3lLFqALzHX9zLFrxpMIEQ== 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 v6 5/5] hw/arm/smmuv3-accel: Read and propagate host vIOMMU events Date: Fri, 13 Feb 2026 10:39:42 +0000 Message-ID: <20260213103942.142823-6-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260213103942.142823-1-skolothumtho@nvidia.com> References: <20260213103942.142823-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4E:EE_|SN7PR12MB6690:EE_ X-MS-Office365-Filtering-Correlation-Id: 9d71a405-a8d6-4cbf-5519-08de6aecb7eb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eHsceKdZzIK/moFT0TIiPMFgmEtjaQ5EmTfCzaF4Y7iAqQZFiZ09r7Krhrlc?= =?us-ascii?Q?JhIirtz8xCF7E8ZlScbXL5ybJnCxn9ZxDrgSL1T1UDO1qqJDF+lDs9f9B5+e?= =?us-ascii?Q?v6DLchvdDC4sNPwreTfaWlRSCgPmTktBzrLq+gJGm4x6WP2sB4HLzj/ve7x/?= =?us-ascii?Q?gC7BLN9oIAiFmHHtCmwYjDR0nvMyJRcqEnAexzbTmnGsJueuJ/rzfrqjkXzk?= =?us-ascii?Q?uWM5wD14ERgLlcnCaK1yKPtRhh/augXM8Mr0uV3e8gpI12b4MNIh1cat+Isd?= =?us-ascii?Q?ImV0jNyjlIIoUVPcGyUOJNOM5zOXzeHlaTKPPHc2rkMg0b5FJN/l0y115cBK?= =?us-ascii?Q?SpH3fYvvjT8u2WPwmBr9HHa6XeVQ6a4zm7lTVUJBMGsc4lxgud4AKvsGd8zV?= =?us-ascii?Q?KkXkb/gNRfCQbX1n/SVh6epqBFVv53BXFwg1JdVYLRQ9P7EwwyU7uqxUX8Pu?= =?us-ascii?Q?m25W6xlHQrKNNnhF2iWF2sHVZ9FSzel5ztPu+CPTA3dRjmao1LN3WgBRh+n7?= =?us-ascii?Q?SSdV9yQqQCU9xxojddP3y+V2/eGoDg/eeIIHau0okvw5+Rfh8YcRVh/IXNMC?= =?us-ascii?Q?PuRBJUuBI93dX+o5uP2yw09tI5eQeSH1nDZzdlGQ1aA7QdmRY8gSGVD0EPzZ?= =?us-ascii?Q?SX6jIukAR4iptT8i/xWdzyObtSQ8cImRMVxqv45N5aePwPIBEvxHKPeHGm7Y?= =?us-ascii?Q?WGrIy8OQgnjCk3FZnp9k++NIqIn+bYIvi1SFwu1YfFj/eJ5anKqAj0QXcIhj?= =?us-ascii?Q?4TwldmYXFQkx1x0iu+HD9eq5gFpJnEaHajdayKDykI8LnH7rgJ0mvj7veEJk?= =?us-ascii?Q?S4i2QFNlO5pUsyp+5NFy6Imhk3f5HU9F/4iJc+5FOoiIpoMhKPa+6sPXkwgY?= =?us-ascii?Q?ZWk4c2L+Ws9Gti2ISbVSa+llPr+VzK40HbQPaL6qI8Ziia6k/VRypUeAEDTd?= =?us-ascii?Q?bjI2kGcDbG7dTyRbcossSYU9ErwAJntqlR3ibBSJVVq2eJzTNN4i/lZoIN2+?= =?us-ascii?Q?QQgoMK/vgdZpi1sBb+qzWjL3S1d0NqfiCH9DrVbPIC+E3KpSkpCtY27Gt61Q?= =?us-ascii?Q?pxYfproxC7OAf3rYeHaQb8DRm+AOnQtTO0g13jfEFR2CnL1C3ZY2u5d6EHuH?= =?us-ascii?Q?XgidA8wWlOOZeINlZVKGfCdUh95kYnE/dKN8cbL6XwnRYMDs8w8fekib9B29?= =?us-ascii?Q?yvOM2TXp/FDHg66VIK4Yg0K/tffXhs66Ypc85+cwiEqRkTqg7ndXGMuT7FmA?= =?us-ascii?Q?1yJ2T7mcFo0NQ8ANXDtjm3fGb/io+tbOimlCl6PwVK5wZa0KLd/2vuoLUY6u?= =?us-ascii?Q?lOgZiHr6IEmcGBhJQsyAddipkQNGvIUxQNv63SLW1Me5/i6JZftkW9XP5dt8?= =?us-ascii?Q?RR3L1XMi1fCXcH07jHHQUJ3ze++cnecrJSnIxhTo7bPEeaBQeVpM7cxnABw3?= =?us-ascii?Q?n4vVeSZQlZKpBFb+mO0TVcSzfwL4T+wiDU50JmVnXJfICsbAjitB7PhcjtbZ?= =?us-ascii?Q?d7zM1f61yp7L4tCfiH9GKrtCrOQy2x7BbunG4wlGi3Z2P5Mlv4ul9MIQ8mqG?= =?us-ascii?Q?sHxfVXWw+cV6cuCbzPtQKCQnTW+gtb8QLkbh+Xv7k0VSGevgsf+TAZ2yu0fF?= =?us-ascii?Q?H4EqHOYpjLtGFBcxTH4wrwrENYbmLorfOWz/PsHxyiiebYO1WsW1Rt5T15jv?= =?us-ascii?Q?EElf0Q=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)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WcOq2UouT4E17lzLmuSRBCDOcxDIn67kAcMW6RQuBEeQszt0dW8kP62MkYlxPAUCYy2SdoP9cOh/ojCLB98iLassr5sY4kQp8HCf5zBmSdtpmxfQh5bTLUhErHdtO9Oj8WxMbMcmJtJBCeglrOkiouknUM5ePKj8FTgmG8nwtsqDEH0rhDWC/3bW+6chiI02mFMYFqhZSZsUV4xMYNQ48suMLvp0zMA5EYQy+GFVmwOXKb0FpCv6qRftjh7xsHBNcLBx5VKaacqj5FTn2t07W0A2QByjGE7mW86fNvmP7NUJXYqBD4wc+UZaXWK7fTneV89Qri8BI+lCu7WWlcCl6jWn2jNPmEUjaWxE1RDFXJ9Q7wHP3BZ3M/LYpHHAKVAUQVTyrUhoUM22bITSaWHaCgeE9TAiqLCnzjPgcXn3htFkp1reHJgCSMZhnxAVJ1YF X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2026 10:43:26.1833 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9d71a405-a8d6-4cbf-5519-08de6aecb7eb 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: BL6PEPF0001AB4E.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6690 Received-SPF: permerror 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.001, 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: 1770979451019158500 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(). Tested-by: Nicolin Chen Reviewed-by: Eric Auger Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen --- hw/arm/smmuv3-accel.c | 64 +++++++++++++++++++++++++++++++++++++++++++ hw/arm/smmuv3-accel.h | 2 ++ 2 files changed, 66 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index d92fcb1a89..dac4526a7f 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; + SMMUv3AccelState *accel =3D s->s_accel; + 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 accel->veventq->veventq_id; + uint32_t last_seq =3D accel->last_event_seq; + ssize_t bytes; + + bytes =3D read(accel->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); + accel->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 (accel->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); + } + accel->last_event_seq =3D buf.hdr.sequence; + accel->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_new(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 diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index dba6c71de5..c9c10e55c3 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -23,6 +23,8 @@ typedef struct SMMUv3AccelState { IOMMUFDViommu *viommu; IOMMUFDVeventq *veventq; + uint32_t last_event_seq; + bool event_start; uint32_t bypass_hwpt_id; uint32_t abort_hwpt_id; QLIST_HEAD(, SMMUv3AccelDevice) device_list; --=20 2.43.0