From nobody Thu Apr 9 04:05:07 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=1772095652; cv=pass; d=zohomail.com; s=zohoarc; b=Q0mtyt0e4D3ksNIdpUTM+UMVojFiAu/pqvEf0QskKzAwKUkvwDDgocRzSuUhERtoLDoBoHQv6Ls1SFUWGIfWJhPH3WYKwq2L4wtqHoy4VXRzM2BeJ+UQfNn0wHu0Ua9uKtVqeounk3kYY5JFKghzcvDc3GPYmKVs7MKc1Vbrjj8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772095652; 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=Brsd0HF5ygXOdIq34LPZDiEjUKSOIZK7t4l8AzdgqnI=; b=Tqog5WaxH1iov2xOVgAiO3EDCaHhstk3xJXQLhKWprw4xqne3sqIy3ITWZPPRCp2f2j/CZkDvW4dU3DqaG1YpkTZe/Gqj+CFdVPOg8UIoF2BJhWEFNz+Z+pNnV+J/XDSN9D3qYKgLn7TTgODmVU5+9NCjItWAsPEHJGYsdjjGtc= 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 1772095652745167.88522379839776; Thu, 26 Feb 2026 00:47:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvX0R-0004sl-BC; Thu, 26 Feb 2026 03:45:59 -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 1vvX0M-0004rQ-Np; Thu, 26 Feb 2026 03:45:55 -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 1vvX0K-0004yi-Jc; Thu, 26 Feb 2026 03:45:54 -0500 Received: from DM6PR02CA0091.namprd02.prod.outlook.com (2603:10b6:5:1f4::32) by IA1PR12MB7493.namprd12.prod.outlook.com (2603:10b6:208:41b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Thu, 26 Feb 2026 08:45:45 +0000 Received: from DS3PEPF0000C37F.namprd04.prod.outlook.com (2603:10b6:5:1f4:cafe::c9) by DM6PR02CA0091.outlook.office365.com (2603:10b6:5:1f4::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 08:45:48 +0000 Received: from mail.nvidia.com (216.228.117.161) by DS3PEPF0000C37F.mail.protection.outlook.com (10.167.23.9) 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, 26 Feb 2026 08:45:45 +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, 26 Feb 2026 00:45:23 -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, 26 Feb 2026 00:45:20 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZjQTWSyHPRDn3zLxC3K9ZKTkVRi+G3hHANiFLCqPuJFJxAHKyKZaPBbQgDws/YBYLLzsR/8D8JCmIt2Z6zCrDHXAIkkQD4xxWe644OhVzDgSV/2Bx2IZcDRsIBCDqbAbky1KaT5KCNCRL8Y0S7gdQM/X35rrazXattqSlXG39DMBIj7Rnn+viNikLT+5tCOWPJ/frzEReYRcF7wBXDLXFjmvFjLlG/6sB7o8sbN1x3Z40gYe5EC6RMKR90eoM2jebQS8jocMxfsEWI41RVInKSXofe7iJTt5vtY8PzkhxrkKSxs1Dqvq1MINeTELtRKTbSlZkhPQgPvYHo+LzExfLA== 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=Brsd0HF5ygXOdIq34LPZDiEjUKSOIZK7t4l8AzdgqnI=; b=M8KVH/vmFgAjt0HRL+vuBR/77YyO/fyc/AF5O689Nboz+kmjnKm8e+WqDVn27AeastPECYIjeybLLQb8X6XqP8v2J3JsF7QIQTnTKT3TjC0eQcF2h1/m2r6MwB7S/ETbgdau2FBkquLDbPr6Ye68oOZqs9IAvjGVWGgOMDvH95pNpIZAWKMB58mZbjkFweoyjyt1d4quRYmizSQ2wFlAJCPxzkcGrpu7Bs5Mw025+ynYCzUOiB1oPegCoSdH4nZieFy4P6Bs3eofR++RN5JEhuyI0IZ2I4YVn3eGcGtTY80yVHigaTfWoYXyPEdp0v4FXA+5N1PwVNrcHcTUiptVTw== 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=Brsd0HF5ygXOdIq34LPZDiEjUKSOIZK7t4l8AzdgqnI=; b=aWslJPsmC7fzEBD5aNe4ZU5tlbiVBr9mGVUcwdBZrsUjFsICnam+28UNyEvMrCO+DM4HDZJb5556p/zjzFUVq8PlLo8Y70vrte1u7cFijby527bhMZ51jqVgqIN2u2PcrmF605580IX+CSe202krAFHzKAJBGcYk9/5xtBKKdNTHpzTrFAV23Jg3t1Bb+Y6aWdAFXIoRazn6rYIpw6LNsIqQ8yMt/UCxDrXWdC7fsN4s+lS8RRZ0ZMffc8tvQsIpkz+63qS6whtQiLEavMD6q/eJQpRzvDwqBh76VLVUIBhEUDZ2PcTmdd6i8STvMmBB18HBW3VZBls1s0PJqKRnOw== 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 v8 1/5] backends/iommufd: Introduce iommufd_backend_alloc_veventq Date: Thu, 26 Feb 2026 08:44:52 +0000 Message-ID: <20260226084456.112142-2-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260226084456.112142-1-skolothumtho@nvidia.com> References: <20260226084456.112142-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: DS3PEPF0000C37F:EE_|IA1PR12MB7493:EE_ X-MS-Office365-Filtering-Correlation-Id: 743b764e-6150-48dc-acf9-08de75136e8c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: t+F6joi/9PbTyMic5ydEjBD2c0sYG2nP9zOXUGseTUX0qMKTgIwNjWzv8l/maAv92iSrKIgvJxUvEuA+D9hR4sWQtSh3NdOPSDxQv8twmqjVBtz6Ncl8bgDam2quynYzYmBaVxdqExVIVGV05BM7ohKGSoifkRl2/deP01oj+iWkVT+J48wRIIhuwo/iADpJ/Ec6Jke5cBzencEc41Tu4hAVjxY9W612d0QtNetCT7p6flUVNRdKo3UBbLnR/4wWbDw6JsVXrYAgzoQ3fRcRHXWtz1gxQPQ9W7692KhklZbut40+JzhHbBduZ2/yFGYjdxgO5JKxL9M1wmCVOjFXZ8X01kLhKzDDtqxYGGBIaDz+78/6RcF/pYps76QbL3SMi9BDsxiOhF3NBzrNLZngmt4nuHz9TmcPg9hqQnYn3qYfZVIcj21ZH6dGdTzwBoZNNObz8kT1oAeSaSd00dvhDSc0Vc416DVdDdoNf8IIGoWl8SyghTCI9Rb1rBeF0IToMZ51FpqmLMpiKSw/m4AwDpG2K5no8pLDEJfI0RFNEMAya1qEwG9mRDCIUeXLZ6NCtZ+QpAT+bOU7HgFJYqriB/wMCEtuJtTKSi0Sj4zUxfHc+HMhhGGYM0hS0BkMJIZIUqa+PXHsfrSXS/Cf3lZoGRXiWN1HBnoSQMKvE/PQgIrXzY/QWHcW8DtAPUQxDerGJIbV/8UHKLqKasMg8EVLBuCMXOfOU2v3D7Fe91zQyE+QcJ9wPtPseM6mp541xE8SvJcSfzxHlFp2IoEM0UDgaK4NVsG9DSINFuTcYbYqgURU57UGmr6JnVLcNs6YHwP0R/NFVQuTOjGWX8IW8ubxNQ== 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)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IrZW0Mit7C6IROniy8XkebFiWW5ElQdsDIecS99cG0nAnt1c/Ew7sSXvd8hs03x7BaMtkJ1uWwseqCiUZ6YIwSqw6weNbDOZN+K7qPicJtM876lZP8ouTW0Towdwp9FW0Gi5iJQCUQbzkUuUF22Nydj28/k+WS2r5/gfbC86C3nlieIb+nAzZyMITfC7WhYhCFhT+bSjSqqs87qcZ9pnlCXzQRjQW4QMoyWBPktcoND0BnWe/pmdVQ/EPDBIS5Dv5EpNynoeNoy+es/7Z0mX62QCNv4FctGJVV3S4UzUX+VIDz/Va5wmOLVQMaS1cimSVKaO0q5TLhJiHhO+9BqqE+d9Npt7kG876g5aqrEciNXd6i7y+fBuvi3tLPDKm7UYvgEscwJbTUwmHXLsTFSi/93Bys3ArW0XN/vWn+ddMdAOH8+MVgU37opg3EYi4+wm X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 08:45:45.0782 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 743b764e-6150-48dc-acf9-08de75136e8c 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: DS3PEPF0000C37F.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7493 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: 1772095653679158500 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 Reviewed-by: Nicolin Chen Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum --- 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 Thu Apr 9 04:05:07 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=1772095621; cv=pass; d=zohomail.com; s=zohoarc; b=JlIAIN2IQ+XGjWQwpdZoG2+N/XPYHf/Sr4FYkBf+eQi3yEhWMA8/jhKWAHxc2Qy+G/erLS1Gza3H3Vx1/UEpKn/vXeZq73SftM3C9Yonz3lVE41HNI06OX9cLoBiIebP7toESZdkmFA5d2Cx9hFvMovRyGd+lun0Mm7Oj3dbJuM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772095621; 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=EhJXzZI7/JCX/ctmvpYpnffs61jPn2hnuuQKLCEMmCA=; b=T886K5KPH3tWzJRybxgvk/VN+VyN0DLiF+i0+yfCVHTZY2AiaisG5nJIv7lo2B2tpQMdkZ0bdbieHggFag30RKKl+3okFxSiIk8/oumFY6+bPgFV5TcXBsi0IAEmawSQFZ/YONTisWKyILQ8j7n/L+MLlsck2PVDytN9ysuBdpY= 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 1772095621639497.95990941141895; Thu, 26 Feb 2026 00:47:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvX0c-0004vy-O4; Thu, 26 Feb 2026 03:46:10 -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 1vvX0W-0004uE-Or; Thu, 26 Feb 2026 03:46:06 -0500 Received: from mail-westcentralusazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c112::7] helo=CY3PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvX0T-00053e-IB; Thu, 26 Feb 2026 03:46:03 -0500 Received: from SJ0PR13CA0099.namprd13.prod.outlook.com (2603:10b6:a03:2c5::14) by SN7PR12MB6959.namprd12.prod.outlook.com (2603:10b6:806:261::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.22; Thu, 26 Feb 2026 08:45:54 +0000 Received: from CO1PEPF000066ED.namprd05.prod.outlook.com (2603:10b6:a03:2c5:cafe::ec) by SJ0PR13CA0099.outlook.office365.com (2603:10b6:a03:2c5::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 08:45:53 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000066ED.mail.protection.outlook.com (10.167.249.10) 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, 26 Feb 2026 08:45:53 +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, 26 Feb 2026 00:45:27 -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, 26 Feb 2026 00:45:24 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oF1S3em3hbYg2uFuYWd0Vi1QdSs/LhgE+PUcH7dAFHYznz9gZXduTBmdviFkQ/onBhvYzxFdXjHnVchq660SUJr5s0bFZ7gLK6nRVHFBBfk44f4tGF49yjxaxRQAduYy/J8lMiwuM82rCAafj5BtzuclL7MVZ1GKN3inBFK2/PngbSPD3lQkH/7w9f8tQvfJe23tUfM/IOkJ6dBxDfCEmtx9rneNhDzB47CCaAsG8JFn89aiZMtD/bwzD14Ve5h41Nzh/PkKHZ2GCzNojzp2+YPGIhd1Uq2MMb1+cljsQODOMLU0gvN0qjb5oonXDHt/hWF5/uuMsRKJzTtBg49XvA== 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=EhJXzZI7/JCX/ctmvpYpnffs61jPn2hnuuQKLCEMmCA=; b=GyJzXupdzxSGQvmlQpv/W/sYQ7cnhTATBwLpnGaZcgsNwcb5neOJZeTndf+VkuQdoGhp1nhR6TpWMALGWCVUqORY2K/f4W7+AvNim4U1c018MRWiVJACKqtZ3uAR8gShMTF5mR0KR1Dva4WoLz+FYJ38S96houvu0S8+cWi78aN4FytBya7ZOxWSQEsuopRjPim68zwvmQbUWLKzvLijqSypLnQ2G3OL+fdIsfPV2Rh5fWVosdkWkvIRxAPGY7lHaUQWek+zEfhyhJOZQH0m36ABxWySLGkCRhAZ2U6jxPSrzL4v0rIGTV1vXNGeBILQ3IUWBjcoyx6YfSS0+HVlnQ== 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=EhJXzZI7/JCX/ctmvpYpnffs61jPn2hnuuQKLCEMmCA=; b=Bvatnvgjfykinr8EpNar0W4VgYs3IbLaW9MAd2uD/4RlBjy06ZR+vT1sgSKHIbXsEFiUnZWkYuY5uDh2haXf12TBe+bWchditp6OAWSfREzBvfna05DtVaxl/8Trm+oRle5gPqlu44MtDWkhvTz/V/yLPaveTk4ecTNxMaV6HwKPgfvZtK/B6bSOrFmwwjfsQbTMm8z06cJ5BHDUHA0FMZXlNfUZL9Bw/wKHWsiVEvwnmJV8pQ/rOREfZvFa74tXy4iBd6mrJfqJZqrsluvqr2BUpS0DtKRyvyDVYRGsvaeRa4dM4dSWzRbGqj5/ChcX4N6VCj4r6t3gz3W1FJEMwg== 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 v8 2/5] hw/arm/smmuv3-accel: Add viommu free helper Date: Thu, 26 Feb 2026 08:44:53 +0000 Message-ID: <20260226084456.112142-3-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260226084456.112142-1-skolothumtho@nvidia.com> References: <20260226084456.112142-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: CO1PEPF000066ED:EE_|SN7PR12MB6959:EE_ X-MS-Office365-Filtering-Correlation-Id: 8745271b-11a4-4312-a99b-08de75137354 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: ROzRpZpdQeWJDpl6YBs0PPWQ/7hPHCS/Iqe6UUno5RlTB/qkVhL6gv9UZ5BMHdbtK6DbsjK/14sIAZjH6nLBtERwGm7x7nVVD+K82CQoV81yswSXA+hcqi6ZLEk9DyAuQ0o4HAf7XYCEtVcmh+Rh21JMIubLzMT/OYBKblKRUGcnA6LiP/g/5YUeafoLi4UT8mxeLaK9p+9Pfof3CdG6E/sCCTwK+2oupuBDrawx4z6+XdXsrYLMcd4aXVH7QqXDMYCvmpD9nQUODRvAvwDN2cZS+g0IdG0ALNvRmK52NBEPKk9+CBARZOR+pObge24L/pnLgQjT0eNcygM9JyCazfbxSrhaZ3rMFWLX+jZNUuF85/IZmvm9apAEFJmddRxiHBNUJRrYaI68RQfMKS1y1MJe920mCQjdNiOHU62XGgMi7jHYYN3J9O2HMjSSaqUsvcPYlJF+2vcXFkDa+0vIWh2qwfQl5PmoERJgCpNLFiAWUwQCszzhvEHkiFFPNXy6T0aegnrORr4YGPl6xibEHT0VisCf83kTJNRIEC7ZgH09FEHqRCN/OPZy/zsy8r64rMpLp/K35YyIn98qWjH8VXEWXV71LPjMZ/C28wqIuP4guVAj8wxjl9CYi2tz7xRWvnXjwZyPHb9fNC0kzl3p2eg3ICls0uA8kregG7/yLHbE7rBIzq1cHpxXNQ7vccZemy9lCIPz0wwa5Xg3+p8RlZiFUCD88aumd6MSKINlYgTxocz00Cx8sm0JBHaC+wIWEx0QMK1iyG1IVwG3FFEn9LqqsvOTTcKf+tRpYT2LCGZf+04UFoeVf14CBwt84d7smGwcoaZZqiffzHu5m2oUIw== 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: bAwN0SP0NpT2bayxD8uL46ipZe1BpQdPiujLD2unToMg+qgLgRH0NL0gp2z04N1tx4/6N7tUa6mMlorFPe+oyyWrqofp696qiNXVGfzFyjesZS3pR9btyHSF9HCy/HDVsBgvyD+Z6cGTaJSgJQyaTWFUaMVYeOIfX+REqroEyIhlHpL9NN7bUuo/+BE9LHCiDEDmtX2I1/M6/C4rqqUI/V1l9RbQPztkiT10ZefbRhD+TkxDjmDnDqNFUQXd+0uwHBjnjT3qo2JpTh9iRcW5XuWdbyFZEmD7ITxeT51NF8NkPBkX2eTAMnyTqEuiIRBtGLc4Zxou7H2bOhGD32lQNWg5lcdgHwArzR6+8SE2OHWpIp/I4+mhEUdE/D2niUrTiO5LOttVdLOtqXBciAJgZ8w9DUBcb5jG6b3wgdKlNgUrdm+qoht8LZDn8P3j60mW X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 08:45:53.1891 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8745271b-11a4-4312-a99b-08de75137354 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: CO1PEPF000066ED.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6959 Received-SPF: permerror client-ip=2a01:111:f403:c112::7; envelope-from=skolothumtho@nvidia.com; helo=CY3PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, 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: 1772095623946158500 Content-Type: text/plain; charset="utf-8" Move viommu teardown into a helper function and use it from the last device removal path. This groups related cleanup logic in one place and improves readability. It also makes it easier to extend the teardown in future, for example when freeing related objects such as vEVENTQ. No functional change. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum --- 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 Thu Apr 9 04:05:07 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=1772095676; cv=pass; d=zohomail.com; s=zohoarc; b=L0z9H8URyexmU3O9a7gyj5Xlz9lxa7gsMVeeMan5ehnoEIKhC6b2tfeV38h21RH7jOavdNgGeX0N6+yk6lJrktercFSfd9Hz5LnfbvEK3WDK4BMKdpQXehCcvqIFgoqG5777Z2wZrfSdTFwqsCnJA5rwPy5GijtesdJ74d7Y0P4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772095676; 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=Moxa23sTz6WJISn3YNhhHYEne9Lcbc5VZsMZVvuAy1s=; b=gVy+ETgrPfAIk0Fo11YL2hKsk0cdNKaLfsm7QbL/e/QBfTRu4BIimEeu5Coc9e0osRC7jaGdSIAdg4K7tsrGCiDcoj1UfQLsen8jxO+r7IAK/NfXr5aqDDEWhZ39KIVvOcSph0AlxDz+e9u5uPAdsPaKblTLvtFTkioENJ0dkXk= 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 1772095676605721.2437172378114; Thu, 26 Feb 2026 00:47:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvX0a-0004vg-Od; Thu, 26 Feb 2026 03:46: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 1vvX0U-0004tv-G6; Thu, 26 Feb 2026 03:46:03 -0500 Received: from mail-centralusazlp170110009.outbound.protection.outlook.com ([2a01:111:f403:c111::9] helo=DM5PR21CU001.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 1vvX0R-00053U-N5; Thu, 26 Feb 2026 03:46:02 -0500 Received: from CH0PR03CA0325.namprd03.prod.outlook.com (2603:10b6:610:118::31) by IA1PR12MB8222.namprd12.prod.outlook.com (2603:10b6:208:3f2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.14; Thu, 26 Feb 2026 08:45:52 +0000 Received: from DS3PEPF0000C37D.namprd04.prod.outlook.com (2603:10b6:610:118:cafe::77) by CH0PR03CA0325.outlook.office365.com (2603:10b6:610:118::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 08:45:25 +0000 Received: from mail.nvidia.com (216.228.117.161) by DS3PEPF0000C37D.mail.protection.outlook.com (10.167.23.7) 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, 26 Feb 2026 08:45:52 +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, 26 Feb 2026 00:45: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, 26 Feb 2026 00:45:28 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yN1kRMmA0DZ7M5C9tYmXWdDImSE5wovLVOC7wzLE1tgurJwNGLnl9YNyWOnvbxf99F/M2Nl1EE0kBrF1/wJMkKMQCWgd0ORa2z9O6JEvtGWUkhUzLMxB0a24h5NG4H0uQXeaK5Lt4ypizNa8kAaJgfCggGObkE9dw3VmwOKv9SV10sHPf352vSkzdZ69OQACqaIt1SED8yFLe8cWnX8EFyBuHTMgDH68Qnk9qxzPqE2BHXTcyPCnbqffQJctR0yPBC5/d47A3iRD4nDkVEvapevY1gZUgAX/lqVUU3NsLHxlxqqHlfWPx5pPaiWzZEizFds09+evFPktETwGNDvNdg== 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=Moxa23sTz6WJISn3YNhhHYEne9Lcbc5VZsMZVvuAy1s=; b=y9KFiynviLpLJsqDRKHEkf6voTnNfgmQ2diy1zC6mvJRvuayajz/mq+xCKfb5Msolw0FCJvhtw6oeCg9rhLlwfgQ42zzypjr3JfjEz7FEIXvnB1tfiaZHA7lWrCCbS4objMKy70j+HQue0COXb8CvQHBMfVQ+tvw9eCs6YIvmYyuoIiA/eNWaZg6GS+YerKU9hloC6M5FM99pdCAOHAyiTR1w8NptU2291Sp0Z5bKU3DT0FVG8gCVdQN9TrR5wKo8lS8FPsxT0iEWmjcqhQjFdfnmwk3h2DgKuHxJtO8VeFcNdoNsHRc4WzqGjiEf6HpXOrrO7CfEizQxxhbEjRnrQ== 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=Moxa23sTz6WJISn3YNhhHYEne9Lcbc5VZsMZVvuAy1s=; b=aJs6GU6OL+SmLK/QPt95Q5caBdbQGPE8XUvKi1MBWSFU6Yxv8p9qutsfowkwUTpLoiVCKEqN7rMIwier/k88UIOYRrcAKuzXBKxPoUgefOMstaMxQ2A8OcTZPAJkWXfM0DQjg1/a+tXmyDjvNzdInwu+Ib/fNyg62cwaAB6cD8QbjPXnfs1p6zVbkJAh2NVhrLxhzWCIJm8WbJsWCLrrRScX+ItNvH+BMQxupdOEVekGKY6lc0VttLfn46XdiPqXUYz4SkL9lh2qOqjifKg/pc55cdP/9UtSn1X4WdAirS9qN6BWqfQIFopseb/xt+ajXOTzeKNWH9K1gh8tps5aJw== 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 v8 3/5] hw/arm/smmuv3-accel: Allocate vEVENTQ for accelerated SMMUv3 devices Date: Thu, 26 Feb 2026 08:44:54 +0000 Message-ID: <20260226084456.112142-4-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260226084456.112142-1-skolothumtho@nvidia.com> References: <20260226084456.112142-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: DS3PEPF0000C37D:EE_|IA1PR12MB8222:EE_ X-MS-Office365-Filtering-Correlation-Id: 16320b75-2191-421d-7ee8-08de751372a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|82310400026|376014; X-Microsoft-Antispam-Message-Info: 8j3JrlpHHt5c60nUw4H348RWTKwCE1zV/SzzXY+7pgSMBEvLzr1y0urWDk0TF6SW2BMn7uuHdaSb6SmSmlYluMHyNOeoEBM5N17RhCKH6+9BGTRnQX37/TvaeBz3YPPHeHZKJo8HlafX7Tz6CGMGWIjyCnHeocK3/OqXyl9OrNs2oi+L56AKOohZ+ATCmNa+3YadgFikCX4hNaIb1xYPxMdW926r5Bryn970wRL/pjT4vl4jmFSYsnnLUDaGHVRcOmd2w1+iTrfNkpIExAeSJCoiTsn6uLnrLYbnWD6F0dIA7pzJh0+7p1+A0bc/vvW2lpUSVATYaH1fUVlhzTCNJKy6+irDRJ/YngaXiIf/qgZb/zGw3VMYjSUsH0kteqfRop1rRMPiKp36p93JEgMMth+9xnDaPKsEDpusS8pgtS96Pp27450YTDuv0+LAP0j9I2z3xq95UmyDWt7zu/mAMVGNfVFaPdrPYhT+zI7bQetFiqJCoz6HJivCr6Frw+UzHfvedDAe11XZSbqkJv3+pvDPToTvfoS0/XP7K1ibU20X529Fh9YPBfx+N7qrQns3q+xY24+7nxNw6Hyf1TkOKDUlXHrtFBbaHmJ/93slcjPvExQs8qMju0JRBrhVAFtcRX1AquTyNdQuFWcdc5do5st1bXVg1zZ7p285EfDncGU4aM4PdyFsNVeGjJ2yosWYki9Lf3x6yfA8xAQOng9HJnWMtZt0nOERQ6bYPRzgrGSDD9vtXkC7PnYL1HML2CL/DLU40MZKOm3wWbgUSb9Ufpf/4wmH2nt2QJaMWpzKgXFeYdQ8iWRyYGBazDiJ3p0EBOJs0HdkFO00MqWr+31fFQ== 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)(1800799024)(36860700013)(82310400026)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rioxQHukd2Fk0jpi1CC6cEQtSBEcf4Drsy2/NFcc/1BZCTeQMXkrW3+S/44MfsYuooD7m4y4CulBOJV9dQlb4GohcMsqCLDkjj8BX6lbx2ApKlfsx4tGGtBxb5i48esY8F2JO2SSDTqNOF9MfL3zFnv+3e6FUSo85nl5P6VmXRi5qXmXRLZ0bdi8yCa2SekJVUUheC5/WM6a91QEUK/C3KQbdPBsZiWRWY0abCoW95/Kn9q/D5GE0u7YMn7lbfMOvKwiODZYzsIpmADJRY6SvrMZmysFSGxbTx1V/ToW0eWUXGQ4bhqn2O8jRo3xnR4iFHGFPj8yzIzUrq0+20kJ32c4j8h8Dy6/I4gV2joRf1qHXi76VsMhEHGYVMHVOFrU0X8pPW1gD4C29KpjPC33SVgwsB3FEH4dEMhi/UWavA3Gd6GQkJeAGsAqHa3WY+vK X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 08:45:52.0083 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 16320b75-2191-421d-7ee8-08de751372a7 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: DS3PEPF0000C37D.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8222 Received-SPF: permerror client-ip=2a01:111:f403:c111::9; envelope-from=skolothumtho@nvidia.com; helo=DM5PR21CU001.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: 1772095677861158500 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. Allocate a vEVENTQ only when both of the following conditions are met: 1) The guest SMMUv3 driver has set EVENTQEN =3D 1 in SMMU_CR0. 2) A vIOMMU exists (created when the first VFIO device is attached). These two conditions may occur in any order. In the cold-plug case, the vIOMMU already exists before the guest driver probes. When the guest sets EVENTQEN =3D 1 during driver probe, the vEVENTQ is allocated at that point. With hot-plug, the VFIO device may be attached either before or after the guest sets EVENTQEN. If the vIOMMU is created first, allocation is deferred until EVENTQEN =3D 1. If EVENTQEN is already set, allocation happens when the vIOMMU is created. In all cases, allocation is triggered when the second required condition becomes true. 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 Tested-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Eric Auger Signed-off-by: Shameer Kolothum --- 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 Thu Apr 9 04:05:07 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=1772095621; cv=pass; d=zohomail.com; s=zohoarc; b=QLcIs5tTqEskrwr2LeTd65n19LPgq12Im97AMyw3ZhFViCH8R+9qr8F8XPG7WZyqBL5EunyCHPf81oCd9ylEW3PUdzigkhrhKPAIYdCpQe+DWN33C62kWu6UtafmCYsfZHLaJK/HBUzBxjcHFxa2SBZSh4Ac13G1WA1Aez4++mg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772095621; 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=ryb7l0u+b9lTcLpYAn+FUMKs2MINuV25mqvlij8oFmo=; b=K/V4eZJ68xxCqeYdpX30bE1JyqWR7X09D4r8wrgt1jLMNzuTRwkM+ej/EKY1HflBvFuOFQ24nOUosaNG1k6eysv7EESZ8NxR55C5f+cc05mRkmYRrIarFQx7CgzoKNXeq5EY9TyoUTaFBuo2Bd3aSKftKKsh3Lz1DtoImoohX2k= 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 1772095621936776.0828891391654; Thu, 26 Feb 2026 00:47:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvX0c-0004vw-OC; Thu, 26 Feb 2026 03:46:10 -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 1vvX0W-0004uF-OD; Thu, 26 Feb 2026 03:46:05 -0500 Received: from mail-eastus2azlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c110::1] helo=BN1PR04CU002.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 1vvX0U-00053l-9H; Thu, 26 Feb 2026 03:46:03 -0500 Received: from DS7PR03CA0103.namprd03.prod.outlook.com (2603:10b6:5:3b7::18) by PH0PR12MB5608.namprd12.prod.outlook.com (2603:10b6:510:143::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.11; Thu, 26 Feb 2026 08:45:55 +0000 Received: from DS3PEPF0000C381.namprd04.prod.outlook.com (2603:10b6:5:3b7:cafe::ac) by DS7PR03CA0103.outlook.office365.com (2603:10b6:5:3b7::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.26 via Frontend Transport; Thu, 26 Feb 2026 08:45:54 +0000 Received: from mail.nvidia.com (216.228.117.161) by DS3PEPF0000C381.mail.protection.outlook.com (10.167.23.11) 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, 26 Feb 2026 08:45:54 +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, 26 Feb 2026 00:45: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, 26 Feb 2026 00:45:32 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J0mM1ryytmp6jCWfp/GgRBJNEe1KYN2SguzGFD4/Bs06/t9yEVWjV+vUhsncH1gaelKBqGgwaGr+mPv6Ej+n1SbhHVC+SroJeTESpnWHSx8lucNQnzWCogVrDKZTQmcEklcxiWI5vAKaTUbH5/0GHgJgh6crf9RB/XgDG0VlRweXa41tTNaXNzAReWn05qK04yi//wlWXfh6voN0ozxCLpledrN6hGJPYnxIzkYfBLHu51iisrY3uG43tH9ip+06edpcdk3qmLzZtkq3zXfIwKCZ01tXqziHgbDdT9VfH0YggwaDAJXP6IQfyaoV6ih+sSUIO7UlcjbAPUTN4S2sxQ== 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=ryb7l0u+b9lTcLpYAn+FUMKs2MINuV25mqvlij8oFmo=; b=WNZL5SMot05zPRObVSZ4jr9fOVfbYLBTRWI99L0OjHzb/gRs+k0I7qgQCGwXbAeik6U0HpBTV/sczGlGfdYH9YYQN/eW4fJHTDerjsneDaPaj+nQyhh0+LjZN7752fpi1FkXwH1qJxC5WP0TQT/VslDgykHSybIKgOgMuS5YE2AeXZQRPkTRgABrmO4gK5SsOXt53E0NHTYLIZ71Y95hFCcRG9vnHCz/6ap3+DdBC8prcOoNLq6nPlZraDo4w74a+Fs5V1Ww5w+gNs/pNl/jr/6D/FGgO0CjFu/R1nO58+sQBIUQ5F7BOoSQtn/oWla31ZhTeTel0iwUBZVq3GvR+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=ryb7l0u+b9lTcLpYAn+FUMKs2MINuV25mqvlij8oFmo=; b=Dp67aCM2umSTPH3RbLbqgFSIVmk9zKPeFLNJRo3kY5p3gkjBK8mX2GokWubvKp/6GFDWN2wu21vBEv5qtkEmJbIfXFt3dMwWIpFoc4aepI8A1hZVrMxK3FUx/jkRHKjREz4MDqyiX8E2dPuZN8zYK4sjdPvsG/EEGJNuWR3Le7VtfGfZ8LDs8U1pdvY317emo8k09O+DxO1PkpCHuNebbVcvME3uV/7MYQLwv9+rTK0vzgaIq/Ptdo/72V6JgQKo3lQbLk2mD30FL5HAEccmmK9k6qfji2Jk3Mgfc3XIcyiHRD9jx+Wf/QWm40VD1LAbAjF3JLiRYMVchm4VNEgskA== 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 v8 4/5] hw/arm/smmuv3: Introduce a helper function for event propagation Date: Thu, 26 Feb 2026 08:44:55 +0000 Message-ID: <20260226084456.112142-5-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260226084456.112142-1-skolothumtho@nvidia.com> References: <20260226084456.112142-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: DS3PEPF0000C381:EE_|PH0PR12MB5608:EE_ X-MS-Office365-Filtering-Correlation-Id: d4288b16-2b6c-4c48-a771-08de75137473 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: L7/12S/eLX9YT8FS0E0rsNESW8q3y8eZGwQ1bHUDmFCtuxg2ER/rneeYKq2xxYu5M2MLHhR/8qKetgMVq4G8XrgftRRfRnJLlfBV0D+jL4meO916WgjKH3e7FE3qLz5KILEpU/jCE0cmb17VbrlUFxb6Y4p/PzyEhzEd411NxRfY8jnbKutfB5jspgVooRHtmlR13ySm/zAz55SKBZAQ9Kcd5PR25NthJ9GkZ0JDHJ6DD6zaVm/GKN309dT3CTj64J32wluvZyFb8sdPTE4ShT4ZIVc4GrKsNOu8l6qZPE2BVQW3nzJmMjXkHD/c2tog5gH6ilK9yrT7NVU6axhbfXFJ/wr+nDvCWYNPgV7syrif9Jg8bsgHRT0a5nQwvV4XIvw/KLNVWAGELhDyMXahMmQi01ecRid13yjmaVlVwnZRGqS8344U1OO0pZSyz5VPdHk0UmWTV+HxLVOwVcaxmRpndx4o4kJtqj1Aoon+r3RjzsTNRpfJCBjNbS4dAbV6zoJmyiGfBQaUgNEHo2OlWeWZ4r77N5co85AW9Uo0EANYQnXLIkVk9MYxK/Ch+Rp8ZkId+uJH7pdAfwq0JeHr9mAFj41C2zN3RaxWQnWNK+N8EOGpeVW4TLSAsn8ZiGr7dOLVsaKT79h+h7CQyvrXXfzel4ylLI5/9X197BH4H77FYvhC5d4G2chb0QYIJXIE4uv+mewO2xWuxJw8LfNiBP/ltuqsLj6F3u++B+nYaXWS09k9nNO7j6FlgF83OvhGfp7bFyhUOIlcUwVFrWwp9G98R915slmqSBf4NjgT6oe/DlvDR0NK75v+QMbqj3Ey6T/NOLxxv49KUrcdGjlYdw== 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)(376014)(82310400026); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: VLL3nhjhhkJQj17wuKI6MdJ6SDuR/yb2EX4FWywXykEiDFiWE2e8aEloaZJCVgx/wzwo82x5vuRm4O8hKyiNiWrJOEd9zTvgVpqsYn/8VUA+1QzP7XnsVTgb0BAwOormjZ4wZLEwrHgV/6SIjPJ8bFVM0LnAtaEX0hLZ0l5YZBjf7MJDvVP1ugvUjDNGvT5PfOpMYONC7ODwhH5+P8f9mXNpQ6jip3BzLO9CwMAjipyi7bBDrTslnWq02TBZ0rwuxJmEI2321ZmtRGtuy1oFVg23Fe4hN7FpDWyFwFNYIh5NcIiZG/N7fZCrMZjgTBwFM6aktivZaPzCM7l2VDnCQ32aEw5la+9Bi7e6SLVMQQu/znJHzsxT6HCZw0KKrSu6cAyj0FV7XXyeBGtm13u5sS1FTWycJJq95d4NuTWqvamZy5QiD/locH7JGv3ysYZN X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 08:45:54.8135 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d4288b16-2b6c-4c48-a771-08de75137473 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: DS3PEPF0000C381.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5608 Received-SPF: permerror client-ip=2a01:111:f403:c110::1; envelope-from=skolothumtho@nvidia.com; helo=BN1PR04CU002.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: 1772095623975158500 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 Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum --- 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 Thu Apr 9 04:05:07 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=1772095625; cv=pass; d=zohomail.com; s=zohoarc; b=TRSBUO+vSNES51MPyh8T5QdgcZ4jx/Z0s5AQ/XM7WbHS/AORLQZuatAhOP1o6c5hWR7+23aJh4jk3tVLZ4tnW1MqVldMAmpY0nWPRZa6G5+gTcc/VvhGclvAsrwTLRxkyWyjkB1kxpdl122dt9zzqxcIMdpwk3xVkw1VL0sFHdM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772095625; 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=Mx8w77jLC2339BfDF6gIf7PNvStkO/4I3uOMvquoAT0=; b=mtNilv76RiC7ZA/XyQUIcnmDnmReVXt7YGKrM143ylCN3mVI6wf0KHAu5RuPexv5pDLh3bl5HXZXCLd+QFbsNaiJ1pjTyiXnMuXM+MKSbJXIkwGCiCzoZxvibxM0eA6tysACeQl8JR6m1mCk4RvB4i8frBts8Kq0ZGbOfOWTxpM= 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 1772095625670532.9133293448537; Thu, 26 Feb 2026 00:47:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvX0f-00052J-5P; Thu, 26 Feb 2026 03:46:13 -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 1vvX0d-00050U-Vw; Thu, 26 Feb 2026 03:46:12 -0500 Received: from mail-westcentralusazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c112::7] helo=CY3PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvX0Z-00054h-90; Thu, 26 Feb 2026 03:46:11 -0500 Received: from SJ0PR13CA0104.namprd13.prod.outlook.com (2603:10b6:a03:2c5::19) by CY1PR12MB9604.namprd12.prod.outlook.com (2603:10b6:930:108::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9654.13; Thu, 26 Feb 2026 08:46:02 +0000 Received: from CO1PEPF000066ED.namprd05.prod.outlook.com (2603:10b6:a03:2c5:cafe::43) by SJ0PR13CA0104.outlook.office365.com (2603:10b6:a03:2c5::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9654.14 via Frontend Transport; Thu, 26 Feb 2026 08:46:01 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000066ED.mail.protection.outlook.com (10.167.249.10) 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, 26 Feb 2026 08:46:01 +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, 26 Feb 2026 00:45: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, 26 Feb 2026 00:45:36 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LZvjjjZs8BzXfN5Qm2vi2rItIlUDH+iHcm7Gj4xIhJA98qB9W5z1MeWkHAtz5YrCDbFvFwZzC+c/1gmi6KosRfmCsKR9E6cPPSzgcp1R8/v7dcS+l2iFPOF/THzgCCxrzmuM3LOqEM5L+1wVPfj5Gfs5Wr2w/oosnLI/RcOBY46wLDAcuMknuCR62DHLvN7L4aEssDwD4pCAhCLqv9BN2HroNAvwWTyZ+cQWf2gdhKSqRhPFtlvCxBxlTP+fi6DnOjey4WlaJ5Fl6sr/FpAI1GaQTnFHHupGBtDpppj9BgftRsUDQIVjAq5bC1UrHopGCfdbuIwu4oHksv58lotfjg== 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=Mx8w77jLC2339BfDF6gIf7PNvStkO/4I3uOMvquoAT0=; b=SrCTLRYJ/nShPw75XdRTPnfGIPdxT1bUs50NDJT2WMwg23NKnmTrIUN8NzcQVhsKIOsKumLEBF6VvjCgKE80WeSGB0IWwstQMn1S8FK8/yj9AfuBv7z6ypCFi46dZJ1RGL9J9++VsZQvdOoDMwOjbf07naNYxi+1JzF/55AtBtBe/sIJhMHK6tHUw/Rj3qb7ysCyPIIb5CKD6+zxtkxWP9jtyWMX2hMAczFaHbyQKdzxwCZwZElIc4jYUmBRWiR7TeWSvJRCMdKAPdYuQPTEFwY3USVyTbwK2eSI2zgrOrbwxPxYqCJP2/yLhwMqStNZA78MeN95u++xi0ZP2P3Xxg== 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=Mx8w77jLC2339BfDF6gIf7PNvStkO/4I3uOMvquoAT0=; b=gWEkptto+voxuMJopIxmJmn6cuHvtXhvDdgbhWyqCH65+agSm3O++Bolg+B6r2FTV905b1nFYhr7hO6Mf5hnTQjb2Dk59TAIoQLvrUaRQqCGw0NbxKwWeihZeuQd9DM0179qtcTUE9+UFPwjC+QZ6rqsXBqXTmsUwxRWkW7htj0+woD6c8VJf6+Fbl/mwJSYF6ZV6rmHvuS2//L+ALKXcVVaOOKyXS+SXIwprosaSRbI6N23th7JpYfXNwI7KbEIqGndL3DsWZtwdINdf9ogQv6oI2Rbp3qfJ1ny4Wqq4vAa07RIJK0rL4wA0LCEyqvDOeMPUNr2GrN86casjzf89A== 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 v8 5/5] hw/arm/smmuv3-accel: Read and propagate host vIOMMU events Date: Thu, 26 Feb 2026 08:44:56 +0000 Message-ID: <20260226084456.112142-6-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260226084456.112142-1-skolothumtho@nvidia.com> References: <20260226084456.112142-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: CO1PEPF000066ED:EE_|CY1PR12MB9604:EE_ X-MS-Office365-Filtering-Correlation-Id: df1937b5-ca4a-4e64-b6bf-08de75137868 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: ILlajkjeDP4lz8BHTgdcNzro3vYzidJwDvWO5wrGVfjUyFXJMjgXQj6Yw8wnT5dwNzI2lrraxzUKWBcf7mjCpTYrVKMiQ9nOViBbS4hcyu2M3XQe3HL4Mh9HukY3Idmj6HcQ52Q9kWxBCurN8M1sbqGWoZ4SEynObIFgZLaooBJVIv++agS/O70f8R+TVtqDQIcsmcC+h18qwSql8GR62761ck39LQFqa2JLzPL8hkjm+m2S5EEk59QU05Cxpe3I3h9jti+ccuzZD4lsaSXnH0+r4BTG92yoQ7KmLeL1AlwwQD7XthupdESOCiPskXB6tKbW4EzqF0vG4W4mnCiSKGpGndR2E56OF5IgxT071f50tOUat+ydnzqo9D6sc9YhdZv8QtLHISOFdE2s9JUORptX8rxKDayOAOaERPTetSlBsO2AVJPZDzQp903FvllbTrAY2sGNjQCFNEYNzlCNhelzsJuXTi+dNaHg2jxls0Q1mxaZkovzYzWWoFvqaxM5vXibiWQAI8gd0HxU4e16alsatK8ZUMkdm1Zfpbj9Y01orUCXsSyg/qZzK9CoP6zsXhcnxg5H44RG3UpMDNse3/NsSlY8mPk0KyZ6W3fih+Oj0oOjdcYx/G0fJ6qTeknXQPvfQHKzwX/dnHhIZuzVUwSUrdlQYn8XjBg4psb+jq7tx7JhW8M65c0eEDWR0maU4tzxaGKlo+MLvqkk+xJtkmUYy2pMBmSofcl/rfnNDC14TVPvVBmp/qMclr26vutgX+uq+Mlf1jyTguyaBEBp7DQBHoJtzm+Ny82ggHDNNR/kGEXqwc3Jwy3tNfwjlrYpdRsXZQ5cF+rIFngLjCI+Iw== 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)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rP0lLAnYw1+R9ibelcgYtMvnLxPmfvGDEwwqKET9nsbKSpKvbRMTDoI215OH/80doW4zXh0f18HVPx7/NGqMHNguoy+1ZcvrfqzG/YaCfUvFIRMeY6zszhncQBNhNGMnZOoZEWBS2YUcw8+1IHeeZzhDS4TmfPmJ6JOL31xY1WK5TrAKKRrP32qe4SznxqcXCZT4AyBWyf5q0NsiuKIn5rz/yttenHSQfRCLn4wurMWHZn1V8sngjE1XvCsEQH6fiiqi3uSQmNjOz0IOy4pVS69t7HE2ljm6iVHm7zWIApA7AUefEdD+7IDGt5hfcZUhNCGHnjwYAnVUJnOiA2R+SKxHnSGv7seX/i9jkvL1Z44UI5mxdKkCPUemxO/crHqUFNENJ8flHQV73vPas1qiOX6y5Fh/zzOenCRfXqCjbEWqVO2O/M2/N4hUFRaTpBev X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2026 08:46:01.6828 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: df1937b5-ca4a-4e64-b6bf-08de75137868 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: CO1PEPF000066ED.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB9604 Received-SPF: permerror client-ip=2a01:111:f403:c112::7; envelope-from=skolothumtho@nvidia.com; helo=CY3PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, 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: 1772095627802158500 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 Reviewed-by: Nicolin Chen Tested-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum --- 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