From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908022; cv=pass; d=zohomail.com; s=zohoarc; b=m+NzpOtp/oMa9cIfMSte+lCoDEYvNgwbcTwlyAxynEsG9c0fXbttknWoKLVKKYMJN0bqmff5CsJr77IDeb+4yLE31tHdEheseulLkjHRNQPiOkCueNx9rqUm5m04pYF0KYeCFZ4ds6JhGgm5AtG43/4aGOctE1uFjoKTh4DbWx4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908022; 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=ia5kC+o0xmi7ZGMm1OaeSl7CQLzO+HThMtd8rA6ehqk=; b=fHCOnEKznrhVizB4LkhQOSeANWaY1+dKy8AGHjfIqLLerUxkvpyvl+dG48S3VO1VgMIMikgnFtxGSI6Zs36lx8JpZS8hKidHAvZgxMr93LsdZxUFf9sFLS5cVq6IjtMO5khKTiEH+ryzZ3mu1MNxbmi4peHMHGKlRGC4a61ELDo= 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 1761908022389841.6904291273584; Fri, 31 Oct 2025 03:53:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmkN-0002iQ-Vr; Fri, 31 Oct 2025 06:52:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkM-0002hx-I1; Fri, 31 Oct 2025 06:52:42 -0400 Received: from mail-southcentralusazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c10d::3] helo=SN4PR0501CU005.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 1vEmkE-0002sx-5C; Fri, 31 Oct 2025 06:52:42 -0400 Received: from BYAPR02CA0040.namprd02.prod.outlook.com (2603:10b6:a03:54::17) by IA0PR12MB7506.namprd12.prod.outlook.com (2603:10b6:208:442::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.13; Fri, 31 Oct 2025 10:52:23 +0000 Received: from MWH0EPF000971E7.namprd02.prod.outlook.com (2603:10b6:a03:54:cafe::a2) by BYAPR02CA0040.outlook.office365.com (2603:10b6:a03:54::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:52:23 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E7.mail.protection.outlook.com (10.167.243.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:52:22 +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.1544.14; Fri, 31 Oct 2025 03:52:15 -0700 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; Fri, 31 Oct 2025 03:52:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FYA/tLg20SgnSfRWIGtPVDk9kxTkMSG3+2IxB5oPezgJpdJVsgP2H+SGmKWPwTyEQrfjaEioT8ePOR6AIX3hjr2RLbA58u/MEPkr8kgc/V9cyqaoGKRKwey/a3RsxdcVqCcB/G0TfuOk0w2/64kSZeibHnRBXshhjfE8zZdb5uPGTNw24AGL1BF0r6O9AKZXeljvCzMKefbzaKPHhLghS9mZpZanaJ2+3LgaRxhUHgVECqEASumvtY/JlDEHET54OvU7qhbXx+FhX2Slaj96TxKnilZmjNfTvZrYJWjScm/QJonn5vbYt5zqPTMkft3p8Fnq4zzeYLQkE0JR0hURDQ== 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=ia5kC+o0xmi7ZGMm1OaeSl7CQLzO+HThMtd8rA6ehqk=; b=jby2yglzDQhlxc5+b99k1kvSuWDNuulWtLaKRsatskRqvVHAX75aIDkLnhrcdSvuSKonNCxVM6v/hHWm8jIOJwpohCcSU8DrRTr30YoGgmcydA3D061uhQ+Lg7Jngo3Wj6PgP1ucFHB+WEaF3Wttrj1jVCJWpLIrlNsMOs43yMChEln1omzCitcRaoEQ2BGlSoxKu0rex7yokdC0yk6bN+19rELUm5pouvima0PvyjBiY3NS/CfdAHuy6vSxbvZX97HSH/pybnm7XngFJKf3inYm26JcrBeIlad0AjrI+EdDue+W/+2pCbAbdZKsh3E/MFC/fU10I1GkAfAsPHh77A== 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=ia5kC+o0xmi7ZGMm1OaeSl7CQLzO+HThMtd8rA6ehqk=; b=O2BMHEITUusPB+guoafvMKg/arpmJrxwAtYyOzRtX7LFUoXOgHRKzU3ED9VkaEvG5lSjcIuvmat7AnyBNG5Ym+A5wjtBfS38tV9g9sHw4lMzh2Erit9/XETG/Na9xiy8PwabToQqxOnQaph/85Ht+2WfO6ufGaflp8QSKQSRHlKMyExiwHzRH5zDZ5XP6zAmGn8mzaxkQpzF/aQf+HSKm+rT6ezWO9Qa2O+jQQNgGkbXcbn9j1sPMrSRfYnK0ocFEGcANYKyUWXufFO4oQxk3Ns+5/akcYitaPuDGiy7FV1m3qzr1ktGYlnlPtO3AwLgwtdZtIfzA6+EOLeEDBZKDw== 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 v5 01/32] backends/iommufd: Introduce iommufd_backend_alloc_viommu Date: Fri, 31 Oct 2025 10:49:34 +0000 Message-ID: <20251031105005.24618-2-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: MWH0EPF000971E7:EE_|IA0PR12MB7506:EE_ X-MS-Office365-Filtering-Correlation-Id: cafcb829-2916-4d88-e6c2-08de186b925a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|7416014|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rz4Nsk346wHETVoSBSs4+0b8OnErNuwY7Ap5IX2QPOgSuc/C80eOKSt5Xqcc?= =?us-ascii?Q?2Gz5bnO68Lz3tppvDJ/XoNl8w98SYOKDd/TI89qRMXvJEtCrslpCtTTCSUMu?= =?us-ascii?Q?Src+gcolPoorO4rcmpZxiukHs8q7LFqMIf5V+s2jJON6RSkjzs4LC+hnunbF?= =?us-ascii?Q?byQd0NZpdINpTWiP3vsDuC+21zS5EpDvEOedgky98vILbNLs+l5ev/aeSTns?= =?us-ascii?Q?/wyj4x8vk3BeE9hEBuQCd76PF0HO0iG6AZtu+Kc45uYTkwN8pWvdC1UofEKp?= =?us-ascii?Q?rCQEgdJS48i3JPMooOVlVVgTi8VmESktpPomDV3/S94RYwYdERq1TeBwoVbw?= =?us-ascii?Q?drUrwM0K9QB1cu9owv7mFTlgJ9UM/OSMbbAbNrpA3UIBCHk0JLxlk75K05Rb?= =?us-ascii?Q?xfK6vnTvRGaXWVKX2n2LbCOZAg7gFd9420uNjzu2uCaSJ2MkDnYs+BnxVTXQ?= =?us-ascii?Q?hIV++VT6RCmRs8B/1EoXoWawS3ATa2+9p214Bl2Jqt+OP0twiNarw2fwRNB3?= =?us-ascii?Q?XONa6EZpcSkzRLNKomPeLMHCnK4JOODg7hkhyTiFqZW4d2nIFuHEcLMm6Wo6?= =?us-ascii?Q?vJasPloStMaUs2nnSkB9u2NKBKH2Up7T89KToqCHDaMaBWUuW0wcBRqsQIcD?= =?us-ascii?Q?0Jd33m8pdzAc9fiSorhxUwEQJ51M6ra5u7+8NVVWWhcFuI0nWt42BTVDc7PA?= =?us-ascii?Q?D9nK0qwGJ7kFShUkxkm0vFssL8vkEfbJHAQaTsTZh3bZe5s3Ns+jl/GtxK0F?= =?us-ascii?Q?SLRMezEVk4CdZaYNGSFQxI5AElN4f2HkHXBzdbqB94zj2FrzSD3tdGIYAmpp?= =?us-ascii?Q?4yCMBAcVBMrEWx7lW1uD1/5ZXGltu4fgTYNLOs0OqMprsoO2Z2SOp0pJBob4?= =?us-ascii?Q?Uv5aZDz+2r7NAJh3n8MvcnBKs5RfCMa18S+I1QygEOvbnbw+cya3QbXnV/hV?= =?us-ascii?Q?NJWiTfsnvtjtBBDAXurecCSvzzw3dwI0+Jxtd1gQXiYTKFLMG9iSiAp990Bf?= =?us-ascii?Q?Cp/m7+fY83lsVuwBNrarQkfie2EcbQgJAEWVXGTqxF3a6u65YNPco8WZtjSM?= =?us-ascii?Q?ZKBSa4mz8yvwriVZ91Tz27OVyUa3T8yPw02yvWar/RODLFbUc98/81BQ8IX5?= =?us-ascii?Q?nRAypZDKy50AzCS+a6hP5NBXF5FP3NCGmkx41dOEInJXtoqobbsdhDt7PVin?= =?us-ascii?Q?XVIHl5nnWByRTMBnY00i+NcHGzV6dqjW9/lcLQ/nQ3t2N4AZE01CQXaic5Mz?= =?us-ascii?Q?3Y1clF+YUw+gHF83c+kXIetTNg5T/ttCxVnlUNiEgX6quAJ1FYCLyvMvRZ1F?= =?us-ascii?Q?QNc0/jOmsWzLqGw7GzBImydcnCWBI10r252yIQeNGeoNC/7R19yWLPypG/qZ?= =?us-ascii?Q?iA7Qtl7H5eM2BmyAo5JWZ59zD2PRNNyEuxyZ4sjCV+JpGUOvUHOTfkf4yssX?= =?us-ascii?Q?3TTqy8WVKMfRcBIbjzIpX7Dcv1o88lJtnMvcYmuUPCalvLuA9xAKMbZGU6mF?= =?us-ascii?Q?Uh9yLa/jHbnBF26bC4m4kGAnOzWoVjFW2aRtCdeYmwOIIfJoh5qniW6jT5zD?= =?us-ascii?Q?N4PMjtAyVEqmz+ObdeU=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)(7416014)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:52:22.8105 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cafcb829-2916-4d88-e6c2-08de186b925a 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: MWH0EPF000971E7.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7506 Received-SPF: permerror client-ip=2a01:111:f403:c10d::3; envelope-from=skolothumtho@nvidia.com; helo=SN4PR0501CU005.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, 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: 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: 1761908025333154100 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add a helper to allocate a viommu object. Also introduce a struct IOMMUFDViommu that can be used later by vendor IOMMU implementations. Signed-off-by: Nicolin Chen Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- backends/iommufd.c | 26 ++++++++++++++++++++++++++ backends/trace-events | 1 + include/system/iommufd.h | 14 ++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/backends/iommufd.c b/backends/iommufd.c index fdfb7c9d67..3d4a4ae736 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -446,6 +446,32 @@ bool iommufd_backend_invalidate_cache(IOMMUFDBackend *= be, uint32_t id, return !ret; } =20 +bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, uint32_t dev_id, + uint32_t viommu_type, uint32_t hwpt_id, + uint32_t *out_viommu_id, Error **errp) +{ + int ret; + struct iommu_viommu_alloc alloc_viommu =3D { + .size =3D sizeof(alloc_viommu), + .type =3D viommu_type, + .dev_id =3D dev_id, + .hwpt_id =3D hwpt_id, + }; + + ret =3D ioctl(be->fd, IOMMU_VIOMMU_ALLOC, &alloc_viommu); + + trace_iommufd_backend_alloc_viommu(be->fd, dev_id, viommu_type, hwpt_i= d, + alloc_viommu.out_viommu_id, ret); + if (ret) { + error_setg_errno(errp, errno, "IOMMU_VIOMMU_ALLOC failed"); + return false; + } + + g_assert(out_viommu_id); + *out_viommu_id =3D alloc_viommu.out_viommu_id; + 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 56132d3fd2..01c2d9bde9 100644 --- a/backends/trace-events +++ b/backends/trace-events @@ -21,3 +21,4 @@ iommufd_backend_free_id(int iommufd, uint32_t id, int ret= ) " iommufd=3D%d id=3D%d (% iommufd_backend_set_dirty(int iommufd, uint32_t hwpt_id, bool start, int r= et) " iommufd=3D%d hwpt=3D%u enable=3D%d (%d)" iommufd_backend_get_dirty_bitmap(int iommufd, uint32_t hwpt_id, uint64_t i= ova, uint64_t size, uint64_t page_size, int ret) " iommufd=3D%d hwpt=3D%u i= ova=3D0x%"PRIx64" size=3D0x%"PRIx64" page_size=3D0x%"PRIx64" (%d)" 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)" diff --git a/include/system/iommufd.h b/include/system/iommufd.h index a659f36a20..11b8413c3f 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -38,6 +38,16 @@ struct IOMMUFDBackend { /*< public >*/ }; =20 +/* + * Virtual IOMMU object that represents physical IOMMU's virtualization + * support + */ +typedef struct IOMMUFDViommu { + IOMMUFDBackend *iommufd; + uint32_t s2_hwpt_id; /* ID of stage 2 HWPT */ + uint32_t viommu_id; /* virtual IOMMU ID of allocated object */ +} IOMMUFDViommu; + bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp); void iommufd_backend_disconnect(IOMMUFDBackend *be); =20 @@ -59,6 +69,10 @@ bool iommufd_backend_alloc_hwpt(IOMMUFDBackend *be, uint= 32_t dev_id, uint32_t data_type, uint32_t data_len, void *data_ptr, uint32_t *out_hwpt, Error **errp); +bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, uint32_t dev_id, + uint32_t viommu_type, uint32_t hwpt_id, + uint32_t *out_hwpt, 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 Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908046; cv=pass; d=zohomail.com; s=zohoarc; b=nxEek8EoN4ssTdtDDhyQWdcHhekMMRuzVe514TxDoqVtqdvcTI2NXBjUFI2jpw2I+A828+/KZu4pQEhTWuSXbb7W7VOk0Vh2EoBBqqVF+M4ay54ZPcrZPVIXokALdvdnfG31VWYGEarLBIrAirlcZ4fC2YG1Rb0BJLNzxweJInI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908046; 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=2YTS3iXzIG+DnCnRnItzlaG1sH31jn47M1SaiNks5Ew=; b=X7v/k4xuMugUD++KdLfcJTbM7kltihayU8IwE5ggmUsDtSRM8WqR2lJDUC/mOxYJoHy7Cqkg87wb6XMeb7xRmb1ijoAhMFXH6IpW8VH3CU/sdId0KVh0mzm0/0mNZvGKZAeZ7fN+yc6eqJrLA7ooEeSuccCdL+M9H3jfZj0NkXo= 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 1761908046508251.8854690212147; Fri, 31 Oct 2025 03:54:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmkT-0002nn-NH; Fri, 31 Oct 2025 06:52:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkR-0002m4-A5; Fri, 31 Oct 2025 06:52:47 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] helo=PH7PR06CU001.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 1vEmkH-0002t3-MB; Fri, 31 Oct 2025 06:52:45 -0400 Received: from DM6PR06CA0079.namprd06.prod.outlook.com (2603:10b6:5:336::12) by CH2PR12MB4134.namprd12.prod.outlook.com (2603:10b6:610:a7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:52:28 +0000 Received: from CY4PEPF0000EE35.namprd05.prod.outlook.com (2603:10b6:5:336:cafe::20) by DM6PR06CA0079.outlook.office365.com (2603:10b6:5:336::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:52:23 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE35.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:52:27 +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, 31 Oct 2025 03:52:22 -0700 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; Fri, 31 Oct 2025 03:52:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iML5klru9A0movI9oS4Ef+XqVzQHgb7gL4fU+TfH68nMuH6mgZyDZBtZa8oh56VEZdW/0Kldz6Tnyw9uegRZX7j+UYApnxm/ZFPJdOhwYXqZpG0NTmVEG6OQvhm3dqpexGuOby5SbdW3uN+i/DG7hdgMW/Bi3ihSwaDAzrthYqtWGyn61p9y7Z3L0Ue4Eu2JGrbJAv7cYFo1MafB0mXlRIZIa1dcdsPHdeILJjLr4DVgf4Cpl0CbIjy9iZWta0xG7Rsf2fKAO3DsYIrJ9ihat/znaZlueI70cEM7F7DQNU7tPK1BI8ctt2fHB9ZY99EyVolEH0NIjJEc+5WB9RFFvg== 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=2YTS3iXzIG+DnCnRnItzlaG1sH31jn47M1SaiNks5Ew=; b=Hioia6/RD/TLXFdf9dhgKg0VE5LyMMlUSiyX3aHAprandITYEYhZ5m0lMDO+EFDjxrE5XVsEtPItgjidPY7FTSV7eyaORnQB6dNS8emyf3hke+TR459k/ZR1ucbEYktohKwjux3CA4AU8Q2C17nUqPlSpsw88093zJmU8lFxQereaghHbK45Nlk6Y7i/FASmVAnwfw5XXwQryaT1AdWjsIQgTvC2WRjbfC69HVgRlpn9g9+g8rcdIkoe5ViixhKX0zEMTvi2FVVyftdNLRf9OH2s3Al5BrdToexFvOK7JZsiFdp9TEwOxuoYBML2+cDyRf7RAfktMhj3xmEdf/17rQ== 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=2YTS3iXzIG+DnCnRnItzlaG1sH31jn47M1SaiNks5Ew=; b=tmNfBcWZxs6omwhvjGvgplVSkB8QzuOTXIc1X9hjt0lMmboeVCF3GctxfUI1JPpjlnSE8Ay4igobPbLEZb6plhD4tDBbKHlcrVztrN3zk3G34dmCIP4oMpl6hjgexSY4r2DENcIxJZH1dQKT5M9EAmxNhYhWb509SEitaldKEDOR3IR9F/O+43LnRE+WLdb8kVPMGdsKCWFynqW/xaAGwwTeW9XFNvkBWXFM8QwDhJcyL4Gpkcew4q+Q/nEUNTV1oxvGGGVRdIixij5iEQOJ+N9J3/8rY+SwgdWtBfQ6i2teXyXXVkgN4Z36OlPoU3Shc7ckC/N0wEzAeLS6vYX5Dg== 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 v5 02/32] backends/iommufd: Introduce iommufd_backend_alloc_vdev Date: Fri, 31 Oct 2025 10:49:35 +0000 Message-ID: <20251031105005.24618-3-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: CY4PEPF0000EE35:EE_|CH2PR12MB4134:EE_ X-MS-Office365-Filtering-Correlation-Id: 5031938c-fa5b-4ed5-0f8f-08de186b9525 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|7416014|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uxF2c+B2B5VeBj+5Ef0SQw7puq2lfiCAvmg2X7fAkq5NdDaZ8J53VwIkH7gG?= =?us-ascii?Q?s2TMJYZt5BY/UFdmMND+oCRcOeMo/xqXJk9QlTnAonMjcXQU8CAD65WTNhmF?= =?us-ascii?Q?QFpHDpKTvdJLe1FcitzdiBTzGMmOQtwUGw3mVDGb8Le5/9ELIlr0JKtvJlDl?= =?us-ascii?Q?rBDE3/ZO11Z+BguRG9+uZgd7MOWUKOipIjGAIdBztgPRp3SqAxfSzz5WW+pp?= =?us-ascii?Q?eUjO6ZOxkHBzwACQcVtLhefelVcTUmkeYnykt/8ary/aPU/3f0i21dY6I2op?= =?us-ascii?Q?cDBhJBliLeV2UU8khf7bLPiAPNoV3S4fXIMR9RL9BrSsniC1kifl4Gf1GTpO?= =?us-ascii?Q?UcGpq7W+QQYG1Rutfpm8Ym4Tnj08c8UbRkeNkdbw2++vGR6lU/v+mMgI6bon?= =?us-ascii?Q?gMT/hSo7m+P6UbCrMhWXDSjlifiANmddHBCmlWi16zJpRrOotM/Yii9IKTjP?= =?us-ascii?Q?WKDroUUsrHYBDbCzCWDGKq90g1fGUebUMjGF5OmBMwmqnzvr9bOvUiI17pv2?= =?us-ascii?Q?LBoKmgweXqEtVLzFMKtlasAlBCVEC8iZe8z4KNKmN2RiefFLQwhwHP3ZcYVq?= =?us-ascii?Q?ZZ1+k/zQDnKC7MVjU/njHYOojUa6vUUnK++g9tFt4O+dSEXsgUNl1IANYNvq?= =?us-ascii?Q?JTkIROU+4EwPVOVSD6JuRO3RkXAyCH51wBfpv3CRJnHfoBxAgznGvsSEhx63?= =?us-ascii?Q?aq988Fuuj1W0RSjq0PcCdlLhMKtp0PB3lxrFzhmJtO9sjY0d4aE6tevN5epe?= =?us-ascii?Q?HiRJL2j2ki1+K5YSt/tY06CrfZVESstzJKMAi3zsqM0bKTxUaDLTgNijBOrG?= =?us-ascii?Q?R9yLUUeSQgpSeZ/NbHlQUpkofw+kk/pvSoR+TmaHkIOgXu/VO2nuQmIIj5kj?= =?us-ascii?Q?H8l9kcALym1pXofiaPKaMZnrtLSD/bcfdopjdJI+N38LxPuHtS3tIIxU/kOC?= =?us-ascii?Q?XUYcDrGEfltmRM5wX93RQN/oSlCn+LK6o97h/ZKbX0caQBuJ255Dzcmwkkso?= =?us-ascii?Q?puzv9rV2qV3eYJ/QlWjUfbUvHJPHeLEm+GlSz9851FJMrJ3isxQ3xGSJ9TUn?= =?us-ascii?Q?ANd4xLklBzvLlWAdZ/sCqh6xXKpQ//k7FBDIDzF6MveWnk5BJvyRUjs3MhIs?= =?us-ascii?Q?Z9u6Zwx6umS1ohPKDg8BXtdJEWUOLVgZAhpxWPYFtRFc7mLeyPbryRC+6UN0?= =?us-ascii?Q?wzFD0yCJ8AbwruFJRyU1eNfCap3LhYcwbhNcypkXuUxbEcHdVZ6UIA1omArX?= =?us-ascii?Q?8N4n+qtrBouve4rnKKr6psZsuY3N+dQB/EEDSXDTm8wE1m5zvEmfC0mcR4rz?= =?us-ascii?Q?RoQSVYunPx8+d/nkCgAwA4NLcolAnNE0RffZnR3Gqd9QzZC5boi3Kc5RSVNk?= =?us-ascii?Q?v/AlzxxqKAj14ZeaAGb+KKhqaa0nUEnWmL2JSvlRlSZmzfY8bZRDBM/LPt+n?= =?us-ascii?Q?PiwLy7Gi6Y2mlKHDyQtSJAH8WIG4wG6MNKHvPk0wetoU5Z39LLlaMlhSgJXb?= =?us-ascii?Q?ytRPiJtWnobpdeRFtkHezECt8XXdQnmN6UTHIvr24KnZMkQTX8cWL15QVBlC?= =?us-ascii?Q?tv45Bh0W/eUjjSELMFs=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)(7416014)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:52:27.4976 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5031938c-fa5b-4ed5-0f8f-08de186b9525 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: CY4PEPF0000EE35.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4134 Received-SPF: permerror client-ip=2a01:111:f403:c107::9; envelope-from=skolothumtho@nvidia.com; helo=PH7PR06CU001.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, SPF_NONE=0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1761908050778158501 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add a helper to allocate an iommufd device's virtual device (in the user space) per a viommu instance. While at it, introduce a struct IOMMUFDVdev for later use by vendor IOMMU implementations. Signed-off-by: Nicolin Chen Reviewed-by: Eric Auger Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- backends/iommufd.c | 27 +++++++++++++++++++++++++++ backends/trace-events | 1 + include/system/iommufd.h | 12 ++++++++++++ 3 files changed, 40 insertions(+) diff --git a/backends/iommufd.c b/backends/iommufd.c index 3d4a4ae736..e68a2c934f 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -472,6 +472,33 @@ bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, = uint32_t dev_id, return true; } =20 +bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint32_t dev_id, + uint32_t viommu_id, uint64_t virt_id, + uint32_t *out_vdev_id, Error **errp) +{ + int ret; + struct iommu_vdevice_alloc alloc_vdev =3D { + .size =3D sizeof(alloc_vdev), + .viommu_id =3D viommu_id, + .dev_id =3D dev_id, + .virt_id =3D virt_id, + }; + + ret =3D ioctl(be->fd, IOMMU_VDEVICE_ALLOC, &alloc_vdev); + + trace_iommufd_backend_alloc_vdev(be->fd, dev_id, viommu_id, virt_id, + alloc_vdev.out_vdevice_id, ret); + + if (ret) { + error_setg_errno(errp, errno, "IOMMU_VDEVICE_ALLOC failed"); + return false; + } + + g_assert(out_vdev_id); + *out_vdev_id =3D alloc_vdev.out_vdevice_id; + 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 01c2d9bde9..8408dc8701 100644 --- a/backends/trace-events +++ b/backends/trace-events @@ -22,3 +22,4 @@ iommufd_backend_set_dirty(int iommufd, uint32_t hwpt_id, = bool start, int ret) " iommufd_backend_get_dirty_bitmap(int iommufd, uint32_t hwpt_id, uint64_t i= ova, uint64_t size, uint64_t page_size, int ret) " iommufd=3D%d hwpt=3D%u i= ova=3D0x%"PRIx64" size=3D0x%"PRIx64" page_size=3D0x%"PRIx64" (%d)" 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)" diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 11b8413c3f..41e216c677 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -48,6 +48,14 @@ typedef struct IOMMUFDViommu { uint32_t viommu_id; /* virtual IOMMU ID of allocated object */ } IOMMUFDViommu; =20 +/* + * Virtual device object for a physical device bind to a vIOMMU. + */ +typedef struct IOMMUFDVdev { + uint32_t vdevice_id; /* object handle for vDevice */ + uint32_t virt_id; /* virtual device ID */ +} IOMMUFDVdev; + bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp); void iommufd_backend_disconnect(IOMMUFDBackend *be); =20 @@ -73,6 +81,10 @@ bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, ui= nt32_t dev_id, uint32_t viommu_type, uint32_t hwpt_id, uint32_t *out_hwpt, Error **errp); =20 +bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint32_t dev_id, + uint32_t viommu_id, uint64_t virt_id, + uint32_t *out_vdev_id, 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 Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908025; cv=pass; d=zohomail.com; s=zohoarc; b=nDy38M3UN64Y2Cqxgt/DIWHyZ8Uu/PnHQsyVT9kCVjpHQ3nT0SUuIn3QLO0nCEs5CXXvHbLwUXJqS1wdAQ2p1Fl65gehumMvdoQoCMA3cUn4IYASetezVBLR9tCcY1rqR0J+TCUYcE9DK81pypIpUr6wRahGmjnMBcJbqcvoG+8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908025; 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=ClVGz80L8jUr8B2zYHZ1WY8NHWbShRbNSEA7lCu0ZzU=; b=S4Mu31Uu7NFnXklHdUozanp6NWRCAeefc1uVaAnHRGAQZiFHwUsEbsjLpBuqhiqzV5TULkR719OMp+ZJxvRSSoP8L+cRJ4iI4rX+L2V6S3S8Hq6vsyWBxH4rxIrFRXU6qGCgblw91ZQvt275HC9HmuSzlwCmALQoMukBdA9psRc= 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 1761908025593134.88660331264225; Fri, 31 Oct 2025 03:53:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmkb-0002ta-IN; Fri, 31 Oct 2025 06:52:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkX-0002qu-BD; Fri, 31 Oct 2025 06:52:53 -0400 Received: from mail-westusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c000::1] helo=BYAPR05CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkS-0002tn-8E; Fri, 31 Oct 2025 06:52:52 -0400 Received: from DM5PR07CA0098.namprd07.prod.outlook.com (2603:10b6:4:ae::27) by CH3PR12MB9078.namprd12.prod.outlook.com (2603:10b6:610:196::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:52:37 +0000 Received: from CY4PEPF0000EE34.namprd05.prod.outlook.com (2603:10b6:4:ae:cafe::70) by DM5PR07CA0098.outlook.office365.com (2603:10b6:4:ae::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:52:39 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE34.mail.protection.outlook.com (10.167.242.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:52:37 +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, 31 Oct 2025 03:52:28 -0700 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; Fri, 31 Oct 2025 03:52:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KuhDyjQubrcenBs3XsC3jg1YUz9pXmJwBpD6PV1hWLWVpXbDeRO+ARnUSBwkDbRDaWn1ZilUuVUzqqYbmfDVSxqwhP2ZeKrhI68x8sFtQSLSKoxxGkBt7CNUimFJygR3ULlmp/dFjEvBKq7CIY1efx+a9LYsEc+2+aAZt0oYnjCTA/mEbc1WhzE53pOFuWHpb0lkfx1vgSuSO3MkAU9XtU9Dqm4OxLqOATJn70QBrvHcd5/wlmetTWZaBr03sAAROfUj1mPZP/ya415BgCEqHfXqPv7tgesQrmeQIVw5y9ibuKtK3L+YIH8Ygp6nLF/XfiV11ZvaezUmExbR25BYQw== 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=ClVGz80L8jUr8B2zYHZ1WY8NHWbShRbNSEA7lCu0ZzU=; b=ETQlbdPScr/vDBaBAJqaCgXVlgE71o/bCaVhOApZsZRV7MB1UH8ce/SybZLTj7A4hGGsYFkgy/C5v7zaYhqlo3eIUVWChjAJPcAGnwWKczuiyNnyWbvuBW0sAf7H9TeZENQ4T1s+2riR83Ay47qcgh7sknBLnATIHJ/khjI6QmHr0wq8fFRdUWEsd/+BNvPjQGArjB4ACArKlLop4vfof3LcJsy3HLKGGxcdeRE+PlxLxno0rK8SF4LzfqJ8+4E5vCLtafYGVSTOiVo4RJ+lkyja6OVkOGlZysf1ZLjZ6ghG7+6q8s8Xcog3t40gwkue+Msa1BVSnhl9dT1zQP8VeQ== 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=ClVGz80L8jUr8B2zYHZ1WY8NHWbShRbNSEA7lCu0ZzU=; b=RvAJEgnYLqDjT50E/Bm96TXJFfDUxnAWuklW+VY7lZ4QSTQgZxAWeDVQ4yeorussIP9LKwtfnYYbr8JifmL/L1hFbL3I1rCZThmyK94btFnoXmHSJxOjv9N/SDyNvGVf+uoGYy2GADM1Qxg4XxWOF2hQ7M5eJjwYC0MgKeXQZMk1vbw5v69n6grqVxbF0GWIEmNfj8NlACUupjpomRViHIgQWApLhk7B87xnkmFPBsuruWYshbupay3HG1MjnI2DuSAZWhooPO8Qv/QyRTXFAZEsY9oW/5K6ZhrR2DL9dLkUFJq+DeR6iqifccZANf6vSJF8WOLQ+YCmOsIdutazEw== 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 v5 03/32] hw/arm/smmu-common: Factor out common helper functions and export Date: Fri, 31 Oct 2025 10:49:36 +0000 Message-ID: <20251031105005.24618-4-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: CY4PEPF0000EE34:EE_|CH3PR12MB9078:EE_ X-MS-Office365-Filtering-Correlation-Id: 094d92ae-2d1d-4b5e-7421-08de186b9ad9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?v/UEdEF9+DfBAEshsZore0JIfQvZl51gMLrX0RyVx+m/v/SGW+jeLKak0Qeo?= =?us-ascii?Q?o0SmdqTCO+lwsUlcCvkF5oJ06XBF9dOkCwiuzOGXwDO/kRqrEalf08xKiGiE?= =?us-ascii?Q?h180KlqsOqGTn2shtJFYNem0nPYignAqNz95YkoBdDa6snGdRTZZ+ISnHAVp?= =?us-ascii?Q?zrBDiszskP1qEVwT5v7xle81iNR4aJMKa36Y9a2gi+3rqWPNGtlx5JrfQQsO?= =?us-ascii?Q?NVQR2xozxDQ1nPgO4Iz2xHnoo+ZI/HG+hFYm9E1p1l60jO0RS+rOfhgKwuZ+?= =?us-ascii?Q?pKrWLhzauVaky+yU/8kEKTC2VdSAxvYiTtIo+0sGtoKAxifwiD02t87YUdxo?= =?us-ascii?Q?QPuz3K96NrnO2Pvu7k1x4aLEJs90f/tD+T2zWCuiuZdK8xaqTh66sd0GZmnV?= =?us-ascii?Q?+X61XHT+h5yrTD2jYuwA7ZUv9ni/hFYwzP5jQE4i81qZHReUZZWTDqy/UWLg?= =?us-ascii?Q?Azc1+N1sMlZ2t1ONmMdSijr3r4N83KHDpv4K2ncr+pBCifMNKDe6vir8XACW?= =?us-ascii?Q?quNckn7qLEEQE3mpME12zHQ1VeAwY95HAOibpBQrga8Muzde091ZNGP/HHBp?= =?us-ascii?Q?yvzVgt8FxZRXqXBtwfcEpvnolxJ8Qfvqv0/WbrI9uewHySvOSHPLRm7S/zPY?= =?us-ascii?Q?nEpvi4o0Na16pT4UcRCWbDZzqanRiuFcWk9yXTzY9iFEwmAElRNYIehyGgGw?= =?us-ascii?Q?PMA2Xyfro5lNn7EylceOc5DajdKLiq0sRDFz3fpsW8quWGd4TWQ7yYD3av6o?= =?us-ascii?Q?by8SjcS5zHLeW1mg8+eXlE4xzHa9KVG5Gm6SCUHPrhOBD+r5ITQz8iEcDm3z?= =?us-ascii?Q?elG33BgYiUnKJvQf6WKhUAlUtPv0H/UyTiuNmHiJM7gzQwWwkJZBYs6ALJ/5?= =?us-ascii?Q?nO9rNHzBzJxMhloTfdmvo2qQ+FymD/JqgOhAkiXwNF+5XXp/DiNlOYx8gL7g?= =?us-ascii?Q?CqeqAEsK97AqIchXmJlt3TCgSxO+HJyB8xRxsIOnkiEAxFaWzA9bbq0h7Swp?= =?us-ascii?Q?/PMTlX+Hzw98hQnvxPDPk35NUBlx9WLY+n5x/DNdRBYDmcO8XiFOaudmnMla?= =?us-ascii?Q?vQNxIRSyRMsxFyRNyQi8OaB4T/yqIF+RVFRVLainH1iVhVkM3zOlgV/einLW?= =?us-ascii?Q?CbCdSTacMykdj/PRWPFCM1+kEQ+QC9gQNkYRIa80H3rLmaYbk2A4XIY3R8q4?= =?us-ascii?Q?a9zshDivh8y7bOksRxg9UWRUAmX9kqgaBo44YyWF/341daO/mndX1bkDmT8Q?= =?us-ascii?Q?KBAJm1dDkrv9xoDY7BRe6gS4sagfD7CiITUt8NK0yzHqt4SPhOCV9eoLwSUJ?= =?us-ascii?Q?UCuUCmgs8u/LbA4HTbQBFI87E6D/DKgtuJW8Vj67pdoOcp7KpNfj7RxeS2WT?= =?us-ascii?Q?lYJYeLvrU+l3etgo/XoWQu+KjXP/QjT8xGRTpVyT1ahxf7mqATrTE9BvvHFr?= =?us-ascii?Q?9scrUUFzZb/9ny0Gu1mEqnwe3iT9Lx++tGOe1RiLGG0Ns14RskLRJMoxPCbx?= =?us-ascii?Q?fUqwq8TBsE24hzLfcR7+DW+ABjFyCOUpS1CRIu7g0C9l/8e6ptRQEhb8CpV+?= =?us-ascii?Q?zVyzpX6Rt+ZFUH+U02Q=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)(1800799024)(82310400026)(36860700013)(7416014)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:52:37.0537 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 094d92ae-2d1d-4b5e-7421-08de186b9ad9 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: CY4PEPF0000EE34.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9078 Received-SPF: permerror client-ip=2a01:111:f403:c000::1; envelope-from=skolothumtho@nvidia.com; helo=BYAPR05CU005.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 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: 1761908027432154100 Content-Type: text/plain; charset="utf-8" Factor out common helper functions and export. Subsequent patches for smmuv3 accel support will make use of this. Signed-off-by: Nicolin Chen Reviewed-by: Eric Auger Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/smmu-common.c | 44 +++++++++++++++++++++--------------- include/hw/arm/smmu-common.h | 6 +++++ 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 62a7612184..59d6147ec9 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -847,12 +847,24 @@ SMMUPciBus *smmu_find_smmu_pcibus(SMMUState *s, uint8= _t bus_num) return NULL; } =20 -static AddressSpace *smmu_find_add_as(PCIBus *bus, void *opaque, int devfn) +void smmu_init_sdev(SMMUState *s, SMMUDevice *sdev, PCIBus *bus, int devfn) { - SMMUState *s =3D opaque; - SMMUPciBus *sbus =3D g_hash_table_lookup(s->smmu_pcibus_by_busptr, bus= ); - SMMUDevice *sdev; static unsigned int index; + g_autofree char *name =3D g_strdup_printf("%s-%d-%d", s->mrtypename, d= evfn, + index++); + sdev->smmu =3D s; + sdev->bus =3D bus; + sdev->devfn =3D devfn; + + memory_region_init_iommu(&sdev->iommu, sizeof(sdev->iommu), + s->mrtypename, OBJECT(s), name, UINT64_MAX); + address_space_init(&sdev->as, MEMORY_REGION(&sdev->iommu), name); + trace_smmu_add_mr(name); +} + +SMMUPciBus *smmu_get_sbus(SMMUState *s, PCIBus *bus) +{ + SMMUPciBus *sbus =3D g_hash_table_lookup(s->smmu_pcibus_by_busptr, bus= ); =20 if (!sbus) { sbus =3D g_malloc0(sizeof(SMMUPciBus) + @@ -861,23 +873,19 @@ static AddressSpace *smmu_find_add_as(PCIBus *bus, vo= id *opaque, int devfn) g_hash_table_insert(s->smmu_pcibus_by_busptr, bus, sbus); } =20 + return sbus; +} + +static AddressSpace *smmu_find_add_as(PCIBus *bus, void *opaque, int devfn) +{ + SMMUState *s =3D opaque; + SMMUPciBus *sbus =3D smmu_get_sbus(s, bus); + SMMUDevice *sdev; + sdev =3D sbus->pbdev[devfn]; if (!sdev) { - char *name =3D g_strdup_printf("%s-%d-%d", s->mrtypename, devfn, i= ndex++); - sdev =3D sbus->pbdev[devfn] =3D g_new0(SMMUDevice, 1); - - sdev->smmu =3D s; - sdev->bus =3D bus; - sdev->devfn =3D devfn; - - memory_region_init_iommu(&sdev->iommu, sizeof(sdev->iommu), - s->mrtypename, - OBJECT(s), name, UINT64_MAX); - address_space_init(&sdev->as, - MEMORY_REGION(&sdev->iommu), name); - trace_smmu_add_mr(name); - g_free(name); + smmu_init_sdev(s, sdev, bus, devfn); } =20 return &sdev->as; diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h index 80d0fecfde..d307ddd952 100644 --- a/include/hw/arm/smmu-common.h +++ b/include/hw/arm/smmu-common.h @@ -180,6 +180,12 @@ OBJECT_DECLARE_TYPE(SMMUState, SMMUBaseClass, ARM_SMMU) /* Return the SMMUPciBus handle associated to a PCI bus number */ SMMUPciBus *smmu_find_smmu_pcibus(SMMUState *s, uint8_t bus_num); =20 +/* Return the SMMUPciBus handle associated to a PCI bus */ +SMMUPciBus *smmu_get_sbus(SMMUState *s, PCIBus *bus); + +/* Initialize SMMUDevice handle associated to a SMMUPciBus */ +void smmu_init_sdev(SMMUState *s, SMMUDevice *sdev, PCIBus *bus, int devfn= ); + /* Return the stream ID of an SMMU device */ static inline uint16_t smmu_get_sid(SMMUDevice *sdev) { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908065; cv=pass; d=zohomail.com; s=zohoarc; b=gqrZ7dxrnG92HjF3axjt8Wq1exhv5LCnNepW9IBSTuLFdZMFvn9bk2Oe4M2/KUSkTozmbHuKoPc/hruKE8wVCsuBji2ze4fEjMEp5PbOqrSZVp7lUTdt0E10WAxSEA35jr0KKlMYmMFjSEafhAQeJzDXU4rf/b3XNmKnF8GXsmU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908065; 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=NT2g5vF/5YuZRHXOXTenTet+4i7aaZUUGfb5MRXLka8=; b=M+x8xzF5vcSzxPzw927MpDUEq3wi6iKHUfgZ4ovVDjIqGgl0NPkvRgbUgGsXEMM6LOTcABnZ8BIATx8RnviGXuUw1lPkVmRQ56XDbu1AKHq6UbRjqXQHLh5fnkjtpqSzqeZRKw/DXj1x4mo8w2sJTLbqq0kZw6E4u17hm/itymo= 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 1761908065002800.4355283658216; Fri, 31 Oct 2025 03:54:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmki-0002y1-8W; Fri, 31 Oct 2025 06:53:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkd-0002wq-26; Fri, 31 Oct 2025 06:52:59 -0400 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 1vEmkU-0002uA-Cz; Fri, 31 Oct 2025 06:52:58 -0400 Received: from CYZPR12CA0023.namprd12.prod.outlook.com (2603:10b6:930:8b::19) by DS7PR12MB6141.namprd12.prod.outlook.com (2603:10b6:8:9b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:52:42 +0000 Received: from CY4PEPF0000EE31.namprd05.prod.outlook.com (2603:10b6:930:8b:cafe::30) by CYZPR12CA0023.outlook.office365.com (2603:10b6:930:8b::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:52:39 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE31.mail.protection.outlook.com (10.167.242.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:52:41 +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, 31 Oct 2025 03:52:34 -0700 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; Fri, 31 Oct 2025 03:52:30 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uepwMEqLxyLiceQ8mn04AOogCaGyWdg8R7VnCo8vqjJQcWggvllq8s/ZQtyhNY3HhYCaG3lQWYZWbOpGY1Lm3O7K0oZF0PdwRB5EtKuL5OL/cuEM6mFsewGhVX61o+mEKgnHmDyo22HKpzKwwrRQhhf34RzL87sHLeGuCNohJJf1k+9vx/5JqUsHLqFHB6HcF0FUm4VHxX/i5JDsy88N9C3hc/1jqjzpnjig2PRMoQZB5a6sTjm9jd4bEurXZy9Ka2jSm2HEcZlTk5PilGqxO4Cih+yjK/2L7ByFXgX89NJiOujkrgfEquljBO/rA76kiIjWvFAvmMgjtDF7bWio8A== 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=NT2g5vF/5YuZRHXOXTenTet+4i7aaZUUGfb5MRXLka8=; b=TkVraJq0A/2JZyNf7TXhkv/E2A4FgCQu69kqxVRcmy4Ghs/WF2UO3AsW8mkLXJ9cOpG673vMnVjp5dCE/sQoSbk7lOeJdVYGRGXrP7neN/WNwqiGg3SL6c9g9fwu/yjpNchx/VhZ/Qa7YvW9fgCnL3NUUaaQ7p/UgXJC+kX1qIKEvLBUhGfItWnUy0VWy0Q1QvNiXYQoqyaz4FWEw+B07FR7KR4B3ecZHJdw0Uh63HZDv5O8Y0dkdtcCec2NuNXpHapOQaQiMkwwXRF08sTwZ6Hou8evK6IRi2R/Pw8ozYilaEN+NPV8//UMR4LjZZO8DkJVMpLV064Suzi1OwDrdQ== 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=NT2g5vF/5YuZRHXOXTenTet+4i7aaZUUGfb5MRXLka8=; b=fjOZIUcJkQbuEeFDNFylHyawBSqot+T2ObCT1488OD4KfP6/Sh/rzBehKaeXbzAaIxVwoDdZ44fWTRBKXKudmSqrBERdvnLytZiBap+W++5KXZnCtr9+QaFOPYjUrDFDJ5paRFNtnSXSAFBM0N7bGv/EFHFgq36NuKTbS6MN0HKXCvnKIqaEFpjVjlWgzesivIlevpTcDFj2X08Ekbs4rK5UU6JgjrmZ1q1F/a4F/ezQGEv3tA30OaCSrExbq/GFVyCgjY4iLHRzroCxC3D3OEQEjIs1pEmdJUbZ+VNaOHz4Suv+Ke0m3CREEEJqY7R1C97k7RGn24/MaocyvGGerg== 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 v5 04/32] hw/arm/smmu-common: Make iommu ops part of SMMUState Date: Fri, 31 Oct 2025 10:49:37 +0000 Message-ID: <20251031105005.24618-5-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: CY4PEPF0000EE31:EE_|DS7PR12MB6141:EE_ X-MS-Office365-Filtering-Correlation-Id: e8348f6a-9e1c-43b5-3986-08de186b9d77 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?OSuM=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)(7416014)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:52:41.3990 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e8348f6a-9e1c-43b5-3986-08de186b9d77 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: CY4PEPF0000EE31.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6141 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: 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: 1761908068783158500 Make iommu ops part of SMMUState and set to the current default smmu_ops. No functional change intended. This will allow=C2=A0SMMUv3 accel implementa= tion to set a=C2=A0different=C2=A0iommu ops later. Reviewed-by: Jonathan Cameron Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/smmu-common.c | 7 +++++-- include/hw/arm/smmu-common.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 59d6147ec9..4d6516443e 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -952,6 +952,9 @@ static void smmu_base_realize(DeviceState *dev, Error *= *errp) return; } =20 + if (!s->iommu_ops) { + s->iommu_ops =3D &smmu_ops; + } /* * We only allow default PCIe Root Complex(pcie.0) or pxb-pcie based e= xtra * root complexes to be associated with SMMU. @@ -971,9 +974,9 @@ static void smmu_base_realize(DeviceState *dev, Error *= *errp) } =20 if (s->smmu_per_bus) { - pci_setup_iommu_per_bus(pci_bus, &smmu_ops, s); + pci_setup_iommu_per_bus(pci_bus, s->iommu_ops, s); } else { - pci_setup_iommu(pci_bus, &smmu_ops, s); + pci_setup_iommu(pci_bus, s->iommu_ops, s); } return; } diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h index d307ddd952..eebf2f49e2 100644 --- a/include/hw/arm/smmu-common.h +++ b/include/hw/arm/smmu-common.h @@ -162,6 +162,7 @@ struct SMMUState { uint8_t bus_num; PCIBus *primary_bus; bool smmu_per_bus; /* SMMU is specific to the primary_bus */ + const PCIIOMMUOps *iommu_ops; }; =20 struct SMMUBaseClass { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908071; cv=pass; d=zohomail.com; s=zohoarc; b=mMolMM7WCwUqcxv6kDlAzFo94jU7t/CzTIyvrOTrZOd8vHqSJOrQMcigFp2a6LAF/y6daxEKX08qq9ddr/u52su7/VqoXb8zcAWzd8J1SuDSQS/+UF+fK2pSqWrId4SFPvdtvSXfEiry5AiuQoV6+4iaj6smBbC/eYhd7KI2wes= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908071; 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=6jrRs3RnlNjljl37U7ZfKY7be7IXLRfZgmtCJPkqxVg=; b=Daax6UR8dl/V4ZB3weIUYczifD+kFdppU3TQo1IPugpYoyuAKNpMhOCNv9yUVtBsT/maHJEcWprx68I5eoBLfPOllfEsciJPhOQEPyoEydKBcXovMWsNMigUKZXSfBqpcFd2k5mP0FgPAyoOV5xyg9UGO9pOcrRCLZcgNZzx+0k= 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 1761908071537240.59806152564784; Fri, 31 Oct 2025 03:54:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmkp-000368-Ru; Fri, 31 Oct 2025 06:53:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkm-00031l-5i; Fri, 31 Oct 2025 06:53:08 -0400 Received: from mail-westcentralusazlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c112::5] helo=CY7PR03CU001.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 1vEmkj-0002up-EJ; Fri, 31 Oct 2025 06:53:07 -0400 Received: from BY5PR03CA0011.namprd03.prod.outlook.com (2603:10b6:a03:1e0::21) by CH3PR12MB7571.namprd12.prod.outlook.com (2603:10b6:610:147::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:52:53 +0000 Received: from MWH0EPF000971E4.namprd02.prod.outlook.com (2603:10b6:a03:1e0:cafe::d8) by BY5PR03CA0011.outlook.office365.com (2603:10b6:a03:1e0::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:52:53 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E4.mail.protection.outlook.com (10.167.243.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:52:53 +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.1544.14; Fri, 31 Oct 2025 03:52:40 -0700 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; Fri, 31 Oct 2025 03:52:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=abS3Dr3rjPxscHHATxs/3USajBaBAEtdVB0y5sYC4iGxluNJQt8QBorvn2mr7XeVKicxhPFTQLZXt0smGcDPj+sbsjyvSpkHWmksJLg1FhF7ydl4jQkUzCZtgCJx3PhFYDyvakG4pp2F5n9mPaPauSJpSRDDDkUtu5CQrkGKNSKCWlFoVJvO2v/EiF+7MVq5/bhzag64RVY+7X9PnwHP2BGAxqg6TLHuBalgqIL3omMlURk3C6aXXxLIVK+n80hdSn5a08DJSc6HmCD70mOvUBY3MMcmhPuScfNYy3uiHUy8f0v9HmoVPi2FfZMcREHxk2A98PN3L/kazdkkkznqhw== 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=6jrRs3RnlNjljl37U7ZfKY7be7IXLRfZgmtCJPkqxVg=; b=UxbFmcGe/KlIzCw5ezNybim9cSrLS0NQCA16bypFTO/xu8A1ym3CCeb50VRp8+vcR7ym5nmlIqQY5Z7yWuseyERSRmoxLh8nm5llJrgqi6LmwKTsKxtIXf+zScgMbRSfzjmhKJ0iNrbdi/nNaqKhE2NLvhmEx8lc5aA0Z4MMsQgtI6+2YX34CSsWNOqo/TO+MnCOG72NlcampNXLRSN9sKe/BYHNpB5WRurYb17HLt2pGIbC6I7zokYxkJ5kYV7WrO5cftOifk+A3z3rbdI7rqPTPe21Wmwsje3VuIOYKTuqMgaHg0QC18LuQc7n35U/cZpt9oDb7Fv0TlzHjxiCyw== 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=6jrRs3RnlNjljl37U7ZfKY7be7IXLRfZgmtCJPkqxVg=; b=Pb157ajDByAWQ4sZpbDMYSIvaVWhT97+axXKiLZSu52gVVrTTYfsZPoWID8Gh6dHXK98ujig/JR8Qiz1v8oNuD1PLP6jS5R/+mtiXDjzLVW3L6SpfcJz9zLXHBMsl8Zwq/K/Wk6DQtHbr1S8L0EasnjBl0VxrLzRMRsULxxGxAdvtLqsHxjtTvqKL93godWodJ1WBk4WAxDMgqtlX/cXFSCPQld9Z4ZessqdvEUB2Dx+2h6l9pXnoYBG+BIqidi81NL/DOw8k9ZhNOjmM26yRbuvW00pXRDVZL5j1ICOWTBdsuWOW/FULuA3kbVZ+vUFfA70NWBgD7T6S5zyUz5j8w== 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 v5 05/32] hw/arm/smmuv3-accel: Introduce smmuv3 accel device Date: Fri, 31 Oct 2025 10:49:38 +0000 Message-ID: <20251031105005.24618-6-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: MWH0EPF000971E4:EE_|CH3PR12MB7571:EE_ X-MS-Office365-Filtering-Correlation-Id: 61d07813-6efd-438c-a407-08de186ba480 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?QcE8=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)(7416014)(376014)(82310400026)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:52:53.2271 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61d07813-6efd-438c-a407-08de186ba480 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: MWH0EPF000971E4.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7571 Received-SPF: permerror client-ip=2a01:111:f403:c112::5; envelope-from=skolothumtho@nvidia.com; helo=CY7PR03CU001.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: 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: 1761908072881158500 Set up dedicated PCIIOMMUOps for the accel SMMUv3, since it will need different callback handling in upcoming patches. This also adds a CONFIG_ARM_SMMUV3_ACCEL build option so the feature can be disabled at compile time. Because we now include CONFIG_DEVICES in the header to check for ARM_SMMUV3_ACCEL, the meson file entry for smmuv3.c needs to be changed to arm_ss.add. The =E2=80=9Caccel=E2=80=9D property isn=E2=80=99t user visible yet and it = will be introduced in a later patch once all the supporting pieces are ready. Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen Reviewed-by: Jonathan Cameron Reviewed-by: Eric Auger Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/Kconfig | 5 ++++ hw/arm/meson.build | 3 ++- hw/arm/smmuv3-accel.c | 59 +++++++++++++++++++++++++++++++++++++++++ hw/arm/smmuv3-accel.h | 27 +++++++++++++++++++ hw/arm/smmuv3.c | 5 ++++ include/hw/arm/smmuv3.h | 3 +++ 6 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 hw/arm/smmuv3-accel.c create mode 100644 hw/arm/smmuv3-accel.h diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index b44b85f436..3a6dc122ef 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -12,6 +12,7 @@ config ARM_VIRT select ARM_GIC select ACPI select ARM_SMMUV3 + select ARM_SMMUV3_ACCEL select GPIO_KEY select DEVICE_TREE select FW_CFG_DMA @@ -628,6 +629,10 @@ config FSL_IMX8MP_EVK config ARM_SMMUV3 bool =20 +config ARM_SMMUV3_ACCEL + bool + depends on ARM_SMMUV3 && IOMMUFD + config FSL_IMX6UL bool default y diff --git a/hw/arm/meson.build b/hw/arm/meson.build index b88b5b06d7..32ec214434 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -62,7 +62,8 @@ arm_common_ss.add(when: 'CONFIG_ARMSSE', if_true: files('= armsse.c')) arm_common_ss.add(when: 'CONFIG_FSL_IMX7', if_true: files('fsl-imx7.c', 'm= cimx7d-sabre.c')) arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP', if_true: files('fsl-imx8mp.c'= )) arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP_EVK', if_true: files('imx8mp-ev= k.c')) -arm_common_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c')) +arm_ss.add(when: 'CONFIG_ARM_SMMUV3', if_true: files('smmuv3.c')) +arm_ss.add(when: 'CONFIG_ARM_SMMUV3_ACCEL', if_true: files('smmuv3-accel.c= ')) arm_common_ss.add(when: 'CONFIG_FSL_IMX6UL', if_true: files('fsl-imx6ul.c'= , 'mcimx6ul-evk.c')) arm_common_ss.add(when: 'CONFIG_NRF51_SOC', if_true: files('nrf51_soc.c')) arm_ss.add(when: 'CONFIG_XEN', if_true: files( diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c new file mode 100644 index 0000000000..99ef0db8c4 --- /dev/null +++ b/hw/arm/smmuv3-accel.c @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2025 Huawei Technologies R & D (UK) Ltd + * Copyright (C) 2025 NVIDIA + * Written by Nicolin Chen, Shameer Kolothum + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" + +#include "hw/arm/smmuv3.h" +#include "smmuv3-accel.h" + +static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUState *bs, SMMUPciBus *= sbus, + PCIBus *bus, int devfn) +{ + SMMUDevice *sdev =3D sbus->pbdev[devfn]; + SMMUv3AccelDevice *accel_dev; + + if (sdev) { + return container_of(sdev, SMMUv3AccelDevice, sdev); + } + + accel_dev =3D g_new0(SMMUv3AccelDevice, 1); + sdev =3D &accel_dev->sdev; + + sbus->pbdev[devfn] =3D sdev; + smmu_init_sdev(bs, sdev, bus, devfn); + return accel_dev; +} + +/* + * Find or add an address space for the given PCI device. + * + * If a device matching @bus and @devfn already exists, return its + * corresponding address space. Otherwise, create a new device entry + * and initialize address space for it. + */ +static AddressSpace *smmuv3_accel_find_add_as(PCIBus *bus, void *opaque, + int devfn) +{ + SMMUState *bs =3D opaque; + SMMUPciBus *sbus =3D smmu_get_sbus(bs, bus); + SMMUv3AccelDevice *accel_dev =3D smmuv3_accel_get_dev(bs, sbus, bus, d= evfn); + SMMUDevice *sdev =3D &accel_dev->sdev; + + return &sdev->as; +} + +static const PCIIOMMUOps smmuv3_accel_ops =3D { + .get_address_space =3D smmuv3_accel_find_add_as, +}; + +void smmuv3_accel_init(SMMUv3State *s) +{ + SMMUState *bs =3D ARM_SMMU(s); + + bs->iommu_ops =3D &smmuv3_accel_ops; +} diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h new file mode 100644 index 0000000000..0dc6b00d35 --- /dev/null +++ b/hw/arm/smmuv3-accel.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2025 Huawei Technologies R & D (UK) Ltd + * Copyright (C) 2025 NVIDIA + * Written by Nicolin Chen, Shameer Kolothum + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_ARM_SMMUV3_ACCEL_H +#define HW_ARM_SMMUV3_ACCEL_H + +#include "hw/arm/smmu-common.h" +#include CONFIG_DEVICES + +typedef struct SMMUv3AccelDevice { + SMMUDevice sdev; +} SMMUv3AccelDevice; + +#ifdef CONFIG_ARM_SMMUV3_ACCEL +void smmuv3_accel_init(SMMUv3State *s); +#else +static inline void smmuv3_accel_init(SMMUv3State *s) +{ +} +#endif + +#endif /* HW_ARM_SMMUV3_ACCEL_H */ diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index bcf8af8dc7..ef991cb7d8 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -32,6 +32,7 @@ #include "qapi/error.h" =20 #include "hw/arm/smmuv3.h" +#include "smmuv3-accel.h" #include "smmuv3-internal.h" #include "smmu-internal.h" =20 @@ -1882,6 +1883,10 @@ static void smmu_realize(DeviceState *d, Error **err= p) SysBusDevice *dev =3D SYS_BUS_DEVICE(d); Error *local_err =3D NULL; =20 + if (s->accel) { + smmuv3_accel_init(s); + } + c->parent_realize(d, &local_err); if (local_err) { error_propagate(errp, local_err); diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index d183a62766..bb7076286b 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -63,6 +63,9 @@ struct SMMUv3State { qemu_irq irq[4]; QemuMutex mutex; char *stage; + + /* SMMU has HW accelerator support for nested S1 + s2 */ + bool accel; }; =20 typedef enum { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908241; cv=pass; d=zohomail.com; s=zohoarc; b=QgpZy93ZPeOFmbUFB2W5kz3wuVyN3nkfeVexUG0eGW/6o60eksHR4pULcLvuDK4HtcJIzLTMko88nCn9x2BgX0uj5/n4QZ2QXKzA3CIzeK75oM1tOcSWdw23oGNkwv8gL34G11Uohmw5cH9+LSbXoYNDlem1KCwqHBLJhQqd1sE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908241; 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=oypk9S5+rRPeViLyCYrFwyvMLCmkXsDiAmLZkcX6wxA=; b=iP2r1skrDP1Tbn3ndYQn4hviZJWu2DcALf8n9Lm4noGE2278c9Xu7D9nuSOsWygXlxhJZ3l5P6apzE0bEzKMeJg/TsSuEGWKYobt5HNJ57daG2IRWo+DAQ2cbr8A4vR93lOE/m2zgvz534UbbrkQ0XYwHe27XAOtgmHrXQOxMgI= 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 1761908241479511.8440096122455; Fri, 31 Oct 2025 03:57:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmkr-00039U-Ly; Fri, 31 Oct 2025 06:53:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkm-00032d-Kv; Fri, 31 Oct 2025 06:53:08 -0400 Received: from mail-westusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c000::1] helo=BYAPR05CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmkj-0002v3-VU; Fri, 31 Oct 2025 06:53:08 -0400 Received: from PH8PR21CA0003.namprd21.prod.outlook.com (2603:10b6:510:2ce::14) by LV9PR12MB9784.namprd12.prod.outlook.com (2603:10b6:408:2ed::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:52:58 +0000 Received: from CY4PEPF0000EE33.namprd05.prod.outlook.com (2603:10b6:510:2ce:cafe::8) by PH8PR21CA0003.outlook.office365.com (2603:10b6:510:2ce::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.5 via Frontend Transport; Fri, 31 Oct 2025 10:52:52 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE33.mail.protection.outlook.com (10.167.242.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:52:57 +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, 31 Oct 2025 03:52:47 -0700 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; Fri, 31 Oct 2025 03:52:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xcy2Lulzg4A+OpztXzfJbYaYDz4yNAgFsigXx6rOfwsxJbeRkbSmP0VHoRo+lkEwvrIA7RqE2obJHlq9EfzLHC4RL44jbtTdiq77VlHtlq+V0pAJDuVhmEwrPUlOobuerxxtCdTw57NuXgXO71L82azsDqHh43AHQXI02gmL6itcgnrncgc/kpg4K7xakWvnnsEUeV/co4Mrf8zSyeQFhblyWrXXCVhJOz7wFr8Qqg91xYus7+2lGaEV7kRBpcPM3weZBFdeEWKK/xq4XSjVLlguZMOMss/e/ufTl5S6DGdlyepCdwEoWwIRaQF5rnCxexrhsZuG/g5ggI8qEyWNLQ== 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=oypk9S5+rRPeViLyCYrFwyvMLCmkXsDiAmLZkcX6wxA=; b=USd3CGQNoyhfPNjN1h0epMKX9kR31YaafF9rWJ2CDdQXO21j4kZnPaKHCEOg/QikKooZXC+IbON3pjp5bt0uqUHRIRuQ+QRSB41cFKV44MFon/CzBmeM2loafWfQ3viR6HR94v0iDRtpvlgQBlT2DHHocHHBxuKzVdw/rRH/NNpVPhx9nCoq5x0ADVHQrsnM0sDpG2nygSRhGqeQFYvsRdiVQ4c3O65vBMrib6cr6/Mfg29yACt769YG2QtMOUDJq54nf/q2d9QMTHfHb8dOWT+PLF2u2Amu6naJXHowsGulLNbLE4UAiGPEcylHI1s3Jd9fF4hEiTwjHIGqyIc6Dg== 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=oypk9S5+rRPeViLyCYrFwyvMLCmkXsDiAmLZkcX6wxA=; b=ShZ6owmS1j1sXHL7tcwl/9tAnRNg09LxH0Ko/ABZc5HLERLAPewmoiGU+LPF8Q9ENrek6yFc0dTPbK01tfSUo3NDTP8gTEXaTEu/FfGGhSDqHCr9Q1nY/YGlzoWpr1zP/7VLuKqmarf77IoWBGykSr6Py7s1lYD5vnwfjaRH5KG5I7EM2ySzshGt4wzVmJiiPrPiWQpUo1770S5GqOBw8cXywxL92pLmKid8dnazpKfDtvumrrV82ALYST8jcFa8rRJgfr+rZD5oi0sHPIlWh7BfpcIeRYZKWaHuwgEujtcxBjy+QHbFufVqW0f7ZfpUYMwyxBvxReYoxgX59qS+kg== 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 v5 06/32] hw/arm/smmuv3-accel: Initialize shared system address space Date: Fri, 31 Oct 2025 10:49:39 +0000 Message-ID: <20251031105005.24618-7-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: CY4PEPF0000EE33:EE_|LV9PR12MB9784:EE_ X-MS-Office365-Filtering-Correlation-Id: 8edba7c5-9d4a-4d3a-0ad5-08de186ba711 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|7416014|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1NWx3jkKJRTcSNYyfxD/8aVEHObWg6bDFeQTZnCui24yd4b88LBoswh+4+8e?= =?us-ascii?Q?AVSXL4HCvXtnbqGnAR9qaejen9rCGnDQvc0oq/wBXznW55n4Jo52X7oLK7Hi?= =?us-ascii?Q?+AAjjGC/VGbUCm5xX5atZX5wLSpgVQk178BgL4h1vpqsy+Rt+Ul4dyryCV1u?= =?us-ascii?Q?/V7VoVcaKMquHJ2S8dcjLDchPz66G33RX96czGgZvfjosjiyJG8EM+rhu544?= =?us-ascii?Q?Xy/2GZbWmks+cdRSLMJspWckWJhLnWRyUaXw59Va4DkvUd/7ANEXXq8PTH+c?= =?us-ascii?Q?32EjkjaHtywjDoNnMuKn4otR/Jd/lfFxPcdcbDAtKdL5B+nNItshro5vp41D?= =?us-ascii?Q?6Z3fhAAGhqlY/JutS0ld7ClSlWpxFRlXXDynB7nediOeZd6dMV/8k47wH1yb?= =?us-ascii?Q?Xf4NQq00vG3WKU91qiX8EqRyJLdkaIUDn8V9HgSK+XocDrT34Yy7BAse8ciL?= =?us-ascii?Q?GQ2/2Gh58r62lca4CJlLqLworPxBN5r1JGhaiZQ/EbmADVwJ0gPGSKbuTCwP?= =?us-ascii?Q?/6v0NAjLLFCW1xvaeL8rbKXautiOwsfWmIKEaaiBrWFcSlA21BriUQzuvmXG?= =?us-ascii?Q?iQ2S4oHw9FjVT9OBGR+AiK33gE7GKf2AqUCKHUOAweRRLzJvHQgK3Kduhls8?= =?us-ascii?Q?+K0tbgYkc37hFWVYr1KV/EXKEaNUuLdO/iU81owzDoab21FGyHHnXznqRisi?= =?us-ascii?Q?chKFieY7ikFKHuziSVmKxw1ZOVl8aHVzu+UJWc41vjjQIlXBbW1/rqrY8TLP?= =?us-ascii?Q?lsj1dQbjHLmfkE3Wz2le2EwDc7a4IQw9/A4QihkMUeQg7m+Zxtj3680VI6yD?= =?us-ascii?Q?2HJYtOD5SW6QEB0QNYHbG4n4rMxOEtMbHPJ3yiYKd11n+Reuv4WQ7L1Zr47U?= =?us-ascii?Q?LtPsT63UTHyzSNe5kNjcQwBPlvimraMbMniQpojZHlv83PIhS/5RPPJNyi+f?= =?us-ascii?Q?pjINmS5u1BLNzxicy9aZ0vBIIRQYP5eMRBb3y9tmH5iIsEbSmCaoFtkeC8rw?= =?us-ascii?Q?guVGHWFho2rjFH3UrGXzqMbOn5QRGkPnnGgP4eHpXoLnaZznSphC9TBBmkT/?= =?us-ascii?Q?PPQMkMckpjnhnjSEENfFBp0Ln4zd6fF8EutQvThuufQMrF425Yk5s3YKokyu?= =?us-ascii?Q?ijo8pmCAs09ZOBEKgjjs6sh4QBMktX9F6lmYuQWvnf1JgbqrsMjX/o7SXoFy?= =?us-ascii?Q?BbLcPcPozJUZqED41FLxN2X34jqCMYmzPVYkGCRjvv5S4vssb171x5j0rnIO?= =?us-ascii?Q?tpNOCLarMZzv3SGQijBqCX1zFHF5k3bUc4g2WMpwH1drmKqU8rj3HQ8NMzsg?= =?us-ascii?Q?6kOrB1wjIvJLOz+Tq2MhecyEtwgix1HRlyGman4ZBQNJSC3I0nudUNAZBLZT?= =?us-ascii?Q?80ft4mEA4OZ2WpSx0pBfafo5dRZml5y6L6PcvF1tzs/7mXnbB3Yw1H+OFcOq?= =?us-ascii?Q?p+XJOcjWYPX58jv6EklPTDYrTDaNFJVIInrD6VBw4ptZBh+z7K3pp5EOwXxZ?= =?us-ascii?Q?qvovAsYakbbfrZHjkRsFmUZuUTMtMCHqkQhfaM0TX8TOVSc43O/euLSNKKMx?= =?us-ascii?Q?MShzn1uTtt2VhVvUDlc=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)(36860700013)(1800799024)(7416014)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:52:57.5621 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8edba7c5-9d4a-4d3a-0ad5-08de186ba711 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: CY4PEPF0000EE33.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV9PR12MB9784 Received-SPF: permerror client-ip=2a01:111:f403:c000::1; envelope-from=skolothumtho@nvidia.com; helo=BYAPR05CU005.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 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: 1761908244701158500 Content-Type: text/plain; charset="utf-8" To support accelerated SMMUv3 instances, introduce a shared system-wide AddressSpace (shared_as_sysmem) that aliases the global system memory. This shared AddressSpace will be used in a subsequent patch for all vfio-pci devices behind all accelerated SMMUv3 instances within a VM. Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Reviewed-by: Nicolin Chen --- hw/arm/smmuv3-accel.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 99ef0db8c4..f62b6cf2c9 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -11,6 +11,15 @@ #include "hw/arm/smmuv3.h" #include "smmuv3-accel.h" =20 +/* + * The root region aliases the global system memory, and shared_as_sysmem + * provides a shared Address Space referencing it. This Address Space is u= sed + * by all vfio-pci devices behind all accelerated SMMUv3 instances within = a VM. + */ +MemoryRegion root; +MemoryRegion sysmem; +static AddressSpace *shared_as_sysmem; + static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUState *bs, SMMUPciBus *= sbus, PCIBus *bus, int devfn) { @@ -51,9 +60,27 @@ static const PCIIOMMUOps smmuv3_accel_ops =3D { .get_address_space =3D smmuv3_accel_find_add_as, }; =20 +static void smmuv3_accel_as_init(SMMUv3State *s) +{ + + if (shared_as_sysmem) { + return; + } + + memory_region_init(&root, OBJECT(s), "root", UINT64_MAX); + memory_region_init_alias(&sysmem, OBJECT(s), "smmuv3-accel-sysmem", + get_system_memory(), 0, + memory_region_size(get_system_memory())); + memory_region_add_subregion(&root, 0, &sysmem); + + shared_as_sysmem =3D g_new0(AddressSpace, 1); + address_space_init(shared_as_sysmem, &root, "smmuv3-accel-as-sysmem"); +} + void smmuv3_accel_init(SMMUv3State *s) { SMMUState *bs =3D ARM_SMMU(s); =20 bs->iommu_ops =3D &smmuv3_accel_ops; + smmuv3_accel_as_init(s); } --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908068; cv=pass; d=zohomail.com; s=zohoarc; b=n2iBFYk1r/rwn9moOYfvNjdKufA3BqlnWlOSxtJYY/rpS7oJjwJrUlYrM25t2jC9I0ock2LO94pIoJ+Pb20t8bxFJQs6nghy01SxJgY2vSCtx3Tp4CKZ4d5uEUvgFcvg6eWRahkGD4dlsaLeDLKCvlKccZWwiJbT751bfnk3olQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908068; 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=Lxow5QtR7bNSCwuDfC+nol8YZsHsPfzG0o52XW2VBB4=; b=e4qGAZMOHNpJ/rcWm6v5fvdn5Se/tCr7Ja4nKNscl0m4w+0WqaldyyW+qXZda79CNHr7PP1wxDj+CHbEvBVrhLXttQb7CNg0Q/I25vFyAe5tuQz6tqot0dmt0N8EUogmamRerdHcNVWZArYvk6622BjJ/fh8Va+gocPAiWvic2E= 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 1761908068960673.2073193348211; Fri, 31 Oct 2025 03:54:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmlR-0003yD-3Q; Fri, 31 Oct 2025 06:53:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlJ-0003gj-20; Fri, 31 Oct 2025 06:53:42 -0400 Received: from mail-northcentralusazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c105::7] helo=CH4PR04CU002.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 1vEmlE-0002wB-3U; Fri, 31 Oct 2025 06:53:40 -0400 Received: from BY5PR03CA0001.namprd03.prod.outlook.com (2603:10b6:a03:1e0::11) by DS7PR12MB6213.namprd12.prod.outlook.com (2603:10b6:8:97::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:53:20 +0000 Received: from MWH0EPF000971E4.namprd02.prod.outlook.com (2603:10b6:a03:1e0:cafe::bf) by BY5PR03CA0001.outlook.office365.com (2603:10b6:a03:1e0::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:19 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E4.mail.protection.outlook.com (10.167.243.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:19 +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.1544.14; Fri, 31 Oct 2025 03:53:08 -0700 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; Fri, 31 Oct 2025 03:53:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=E0qojKM2LYM32No/iCoTGzMei4YVriOatxAXNQCY7wiSAs7a8uD9eEiNROBnSzDRL2q35/tAdkv6sME3FVdgeDiNbBQKPDV6S4++D4RKyx82EO94kyfotqKcHeTMrY61bfHspPC1NERVlWlPNUPdD2GnT/EFg/KYU8kd4j+RQkbuRiDNZqQwv9U5qmyhViFxWDw9UTeOZbr/06NpIK9gTaQtNrHTMKC2JtvPzqvgWyltFC9nQiQuG71v11nr1TaKMNdUe80yqa63LiswV+PiOa0hsGplnvErP5Dt9Tu5+wnG52oXU1kaWOGSgHlN+t3YWCIrA+pxZcP4AZwJ5z9LjQ== 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=Lxow5QtR7bNSCwuDfC+nol8YZsHsPfzG0o52XW2VBB4=; b=obGBGrtXRXNRq/1PQhL5+PU0OM+7hH0zw+N4m+Ozskz2WaGLsaGnmu1XaqIold5RMJ2boHMb76TqX10fQEOUo3eFQUzBOUupttlRh8T4u3cD08RqkgyTsg7OFLBg4y3lINjSaQSMrVkdCg7Bkr5YVUf2N5cieRKnD8s0W3Q5o2oB0egxihWoujm3Z5QvgQO4MxL/uTONLMcnSATzcASuc+jkGQ4LkuTMWdr+xBEBYqecT1i03j0RQHRXjNSNOeaPl3OX9QDHD6nw0YT2r5VSstbl6oXQCZIHUGgJiTiqNwmxzUAOgCOXBjD7Oe0SVYaGeWR3JyJSybhOrHxBSIilVA== 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=Lxow5QtR7bNSCwuDfC+nol8YZsHsPfzG0o52XW2VBB4=; b=Nng9WVi/KEUf1mhPOlO062RFjwJw9ibFiL6LGMqLGWLXElKDFZ1JqigwLTvf4rga0ChMuk2Ai/VxoTFKiQsmRMtlVCfdV8+nSbjGewApa8Iuwcd/6d64rwEVvgQWX0Jx1wKLeVc0VRfmz6+CbX+9TNArD/6xKBP5fjEIXH4SIUUJm5SsM4eD4cjSzXxV7jiLWcAs+dzazq8K+HCE0ipufG3pmRTQARa80tknBcyJVU3EcBOruwyxPl6Xn74Mg4Z4niWLpgcmUGtY9JeVbDPS2qzrDjU6gBOMjSPwE7nGKGmwoRViIf5m6QwpQ+mOTNQ8CY5rIsF+r/nCJMlKcPT2Rw== 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 v5 07/32] hw/pci/pci: Move pci_init_bus_master() after adding device to bus Date: Fri, 31 Oct 2025 10:49:40 +0000 Message-ID: <20251031105005.24618-8-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: MWH0EPF000971E4:EE_|DS7PR12MB6213:EE_ X-MS-Office365-Filtering-Correlation-Id: 1ec5d7de-0f4b-4710-ef3d-08de186bb43d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|7416014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DwPwjPHjoiwkhuQg5t6mLf3CoXjKze9MAqdbH0ZGn0RSaGMqhIlR560aGDOT?= =?us-ascii?Q?J5InWe+TIPVLUee4DfTSV2auAMOsYjFv35pNDYWwhLMWhmApIOoX87ufHFTu?= =?us-ascii?Q?6HNoHsG9hCSrIx0ywjRBcO5+dBoAXzHvJYJoY8dMFhfAGXX3WojOPk8hEOMi?= =?us-ascii?Q?5K7Dd4GuAEpw6lv9b0thO9r74xPhU5rnMWdnkTZvnc7mrdayxgBNuRrmIyQ3?= =?us-ascii?Q?iJGQ0BDLzm/vs7oeOYo6Zo1zJ6wZg5EJOV21bWH+9HGAgRGdUbMbrhiY3M7N?= =?us-ascii?Q?a36QUD2HWui0rohQs2WlRf+TYaOAlFoYNXSN0ry1tElZpWgWsNbjcmkOI5eD?= =?us-ascii?Q?5YNtsApAZL/avknirV8Nhh+6KbdTUSoCDnTIMK7shEEuDznU7nAgIqS21WVP?= =?us-ascii?Q?QNMbHjG1znIiSJDmPSJnGckFhfWIVD7hGwsI/vSos4/LswLSI2RIdVvKZum8?= =?us-ascii?Q?qeOtFPmfS5zMqsLLIc5rP3lmPolpZIy9C1sqZ0hD+YAY4LX0r+gp2Q+PhhCV?= =?us-ascii?Q?2Sq0X4KiG/LdUv8XHGb3M2LMZhObcUli43DlWYh/pCv+LiVps/PGG22IxsGE?= =?us-ascii?Q?SECzT6Tb2sszZVghI9vSRhMcVCsb2wWXXfKsmTdAT54ZrP7jrShei+I0dO5+?= =?us-ascii?Q?dHO88nLoJByRq6qxw8Dq0+lohv7li0ex0XS9YzaWiiSdtpXMf5+hxChruNtX?= =?us-ascii?Q?LFg4CBwRIDxMrTsq5stZX5MVQytoTiWO/2eHgmijDKBmonGRdC49HuhBoUz2?= =?us-ascii?Q?pUuATNGApbQhj2smUuxw8ttexs7n8RTDr6CUoWryaDbP9QuS8Qlgj5isPxXN?= =?us-ascii?Q?g7lJme/d5tTMDLdOEhfASxIIwmuqSI2Smz91Ja2iwmIYFync33GJZPlyKJdy?= =?us-ascii?Q?3YeMxWWIcNr/IogrUgPuVw9FDwNKS7YXqpsBmhlXAeqynTneFv1TLM51iivH?= =?us-ascii?Q?2FG5qG+Jm3kSQDpg6XB25K3geOWZSSOGkWbCUpMpiJWYbcxdDLkCHmatNPB3?= =?us-ascii?Q?rXyq4rK4Tji4mWo8HHSwt2UtTIUmLTGLzDYZq8449P5yOdP/ENmtN7xrOaO5?= =?us-ascii?Q?UJyU+VfhqwZukAjbYeq663I+a760NtD/Iqd0rHOrHyGNFJqKVcvtJG0RzOmZ?= =?us-ascii?Q?mZWwrLFeDR819+0AGx5bNHCihFq5+h1nelwrvad/LzYLJGdHQ7Tkdx1ZWADh?= =?us-ascii?Q?4F/RRCcYMn684TrOCUzOdfEELdf4R3UcRSel+XXVR2i7rfpgL8w0aZqtEFJj?= =?us-ascii?Q?KjVeyL6GJSPZ+xWt97F35BEYkzYUTaOb/sWMKF779Un+hWVmcin5kkkf1GIb?= =?us-ascii?Q?tK/pC3R2hPB4XN4PgQHu9Tm6IW9RiGqC/D79HzC0x1eypWmOusfYdS/C9Pvq?= =?us-ascii?Q?k+7WnpOacRk6c+7Ya/DrPIYj46bKY6MIsNWS3UvHOeJVq955JRjmVwR80ccN?= =?us-ascii?Q?KaGQIhIhfLXwicwkVW5wTC3J/Hg8CPkClJpMgTh55VzwM+nGTEQMRQ5aGWJJ?= =?us-ascii?Q?IVa3ypRcXStbWCWDjLuj9kQHvWZtttdFn8GKeioXf/I46tsm9eNG/M3CN/Lc?= =?us-ascii?Q?OmvOMC62ir7k65HYv6o=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)(7416014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:19.6339 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1ec5d7de-0f4b-4710-ef3d-08de186bb43d 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: MWH0EPF000971E4.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6213 Received-SPF: permerror client-ip=2a01:111:f403:c105::7; envelope-from=skolothumtho@nvidia.com; helo=CH4PR04CU002.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: 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: 1761908070760158500 Content-Type: text/plain; charset="utf-8" During PCI hotplug, in do_pci_register_device(), pci_init_bus_master() is called before storing the pci_dev pointer in bus->devices[devfn]. This causes a problem if pci_init_bus_master() (via its get_address_space() callback) attempts to retrieve the device using pci_find_device(), since the PCI device is not yet visible on the bus. Fix this by moving the pci_init_bus_master() call to after the device has been added to bus->devices[devfn]. This prepares for a subsequent patch where the accel SMMUv3 get_address_space() callback retrieves the pci_dev to identify the attached device type. No functional change intended. Cc: Michael S. Tsirkin Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron --- hw/pci/pci.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index c9932c87e3..9693d7f10c 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -1370,9 +1370,6 @@ static PCIDevice *do_pci_register_device(PCIDevice *p= ci_dev, pci_dev->bus_master_as.max_bounce_buffer_size =3D pci_dev->max_bounce_buffer_size; =20 - if (phase_check(PHASE_MACHINE_READY)) { - pci_init_bus_master(pci_dev); - } pci_dev->irq_state =3D 0; pci_config_alloc(pci_dev); =20 @@ -1416,6 +1413,9 @@ static PCIDevice *do_pci_register_device(PCIDevice *p= ci_dev, pci_dev->config_write =3D config_write; bus->devices[devfn] =3D pci_dev; pci_dev->version_id =3D 2; /* Current pci device vmstate version */ + if (phase_check(PHASE_MACHINE_READY)) { + pci_init_bus_master(pci_dev); + } return pci_dev; } =20 --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908100; cv=pass; d=zohomail.com; s=zohoarc; b=DDiEjva6l6Zocyvt2IihqrhO9MSZDQm3xSixzmlCV+NG3aPHeiOIzvpcdOuUQyhW6l6FEaK6Zw7Tb45hcpNI3rrbcVWWiXeLFi8k6HjPaPpTPTMAqMlAE0vUqbjuQSpo4Kq/6GlLYHW+dhV184UJHHSSZQZOuHiASOSoYLW4hlk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908100; 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=xMuHvEIZbTyChcsvhpbyemVmRBIGh3P6ZLZg4RJKXgc=; b=HnzjZcQo+weeUGCrtzMudtRp0smumNW569Yc2ZayEXUcTi/8J0257BONbwjEMH0TazQtBZvaezuSrLDj7aF1H3oRdfoT7n20cVogPIAjaWHhA1QTQGDlmVeffDUgmHYXsy3hQB1nz193GUeZT+Ql26KovKPffCw+ac6HA+yQkvI= 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 1761908100176965.7850814291536; Fri, 31 Oct 2025 03:55:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmlT-00049C-4M; Fri, 31 Oct 2025 06:53:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlR-00041w-3o; Fri, 31 Oct 2025 06:53:49 -0400 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.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 1vEmlF-0002wN-LC; Fri, 31 Oct 2025 06:53:47 -0400 Received: from BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) by CY1PR12MB9675.namprd12.prod.outlook.com (2603:10b6:930:105::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:53:29 +0000 Received: from MWH0EPF000971E4.namprd02.prod.outlook.com (2603:10b6:a03:1e0:cafe::e5) by BY5PR03CA0022.outlook.office365.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:27 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E4.mail.protection.outlook.com (10.167.243.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:27 +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.1544.14; Fri, 31 Oct 2025 03:53:12 -0700 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; Fri, 31 Oct 2025 03:53:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dHiFlbZgXuT0woIvwFzBBGv0GCEq8ItyemhST0EIltCkydYNmZght0HHwB4okFagTatEc/iij35Xpx9r5neOfoq6pNlyJvNu/vlwLUhL43yEWvoN9Arp1MYbFnvIPlM5q9U9qLSvhgBFN+uSLnlOvcnrJH/WgErVTXnmYft4KVfXj7tK9c1J1NposNSOV85GBPrj0UOJcaS9JRixZ0qO0CB9DiHmyehIUo0rOaaE6u1+EZ5HUqRJZMKVaf3pAtaonY01toQzJXVEDV8qDaStVwW1oJrgFWSlFbO6xHjxogC7Xg6ER+s1HZU9XgRyMPnJvnLEJugxGXCVHNqerYUWlQ== 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=xMuHvEIZbTyChcsvhpbyemVmRBIGh3P6ZLZg4RJKXgc=; b=gnqQ6oO6slxVYcb4RhYNHbHz/PyXgFU8xpGBWLpwJNs/RaLYW/lp394a9wNj1GaU9QtszOFgwVPbDKi5yTKS4pjfP+K7xoUIaCA8TPwTLmS0RJRbEqYhei7p0PaN4DOeOsHTx/iOHNuhsCQZDZB0wL99V4nrwf0PI5tqd/1rEp+8W23XAXm2ebTTB3VzX1l4DAq9FOc9QvTXcussGL65sokjVMo0lXB6+mKGA4rhdsRCU8CN0BmWRA3WvNkhVA/QTCBKo1/5/2EADH3FUE0E+GCWP+OV9yFG4AeJx6t9bwhE3poTHUMOhgUmhS3zxXh7whPIrMv2hB8YjR7r0Ibsfw== 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=xMuHvEIZbTyChcsvhpbyemVmRBIGh3P6ZLZg4RJKXgc=; b=sowgPTUgfyEypDkogOmajIeJaIjXMYs14RMgeW3ykVKcKJBTYhAtI+f/nj1pXonufSW8WyL3azbP06YQzpFKKDGax3IF+a8OLW3kKLlpy6qAhdLe289kKYlNvmO15KXBNyLmVh4Ue7oUBG1fhIMyz7yV8mgT3wno4jjR+0VxorcJdBENPxluLu8mVYcYYpb4+rlxJsGoEcT4dXQODQRW7tccxyg8C5bZyNqKTRsZegyz9N7RtF4VtWrnrm63pnNyMgWAqRNfEVVQbD8uLIe90Upzo3vFd+iCMr1e/3ZzU6420Jk7NtL4Z5YsX20yU1cCqvZfeZpX/EwtChNAuW8ZAA== 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 v5 08/32] hw/pci/pci: Add optional supports_address_space() callback Date: Fri, 31 Oct 2025 10:49:41 +0000 Message-ID: <20251031105005.24618-9-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: MWH0EPF000971E4:EE_|CY1PR12MB9675:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a339825-faa5-43b8-b70b-08de186bb915 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?y9WHv7v5iGceC08Y0Nmqynub7hl3aMK1TgNrT+yF7D/Ye427oLwJzcZmwkM+?= =?us-ascii?Q?A8+xzqPf98/UICph2huPUNwmdf/L6WZcyL/uveAfy7Y4Ywi9Hbw+69rD6YBa?= =?us-ascii?Q?WGNkdhyhrLKChJSTogAvVq9KN9ov+Dm7s46q0sI9a+A2wdLyuRGss1+zZzen?= =?us-ascii?Q?y7D6kEoMLNUsohy1/QpJ/7dtl0eCbG0H+u+nRhhzYUIguZ4w9guEOADUAsnD?= =?us-ascii?Q?wKRVdrSrVyg/r8QIjidPwtCFnKQ+5xXefR4Kmj6DKTb01TnMqh5QsOZEmxOp?= =?us-ascii?Q?gIdCdHopsvfg8XvDD3zJpv2GNfPMqYKy2ZOQvgsZmBPoS6yDgyGwAhOVAOa4?= =?us-ascii?Q?RMilddtWxOooPGbKTrFh04rUzf6XlWxQMsnkMqpRORFBT9A44S5RW59cyQFv?= =?us-ascii?Q?OktVRGUeozWCNMwtOys2fXoylAzUj4tq9geuFZpsuwnoWNwGduOWerUobDO7?= =?us-ascii?Q?F4+OVFXMciiPan58ahviV6yA0GJYcYBgrUKVmyMCc15h678kM3M1Y7ye/sgU?= =?us-ascii?Q?8Vrg4LB136sxrurYX4iCV9DXwakE9TSsnzq6ECR4xYzGbFRBm/bbgKlKGem+?= =?us-ascii?Q?g0JGOclV9JwPHQob0Vub5QyIw4zpxTISzge1Jtji3xFLsrL0UV9pN0EqALTJ?= =?us-ascii?Q?lXsFXnogSnmHTY21co9XOZzElaklqdCpeBr5TF/v4Ki534HP+/ysJm6+Y6E6?= =?us-ascii?Q?qz0gRXzsmBHsCpHRWkT1vjX/h28tnTHewwYB2nnV3SV2jJSZWhuEQMKJbQYE?= =?us-ascii?Q?wAlcwwWIp+FeBHQibBsO92PERkh+FwvwlaSt8uXGB44vhV82sVmXoyJseN43?= =?us-ascii?Q?qBeJ8s/JotXrrUL7Onp3XVJHjjZpYW5NdBNwNcoCo4MNL/ZJpHjOE+39aNKH?= =?us-ascii?Q?4bWvTBVhydIv/3DUWCuE8TvuTl4xNKFBu9wi8GYREEOooV89WXcoo9Tux8P6?= =?us-ascii?Q?tpaw/O0mD4VoOSoHk7y8QuaJkFJF7v0bHls+oU9o7cu+34v1SZHHuYU8TiFO?= =?us-ascii?Q?2BRQMwRsyRHXkyo2HxLO2/yKsUOWcQzq1Lfec+D3hwYfZibNn/Fq6ExetW0l?= =?us-ascii?Q?uQB/6srf7bnhqO/KX0+PjhtLTAlJN0F/scMru3mEZPZLjDD1CA0FRebEeTPT?= =?us-ascii?Q?p33b02MsbQ6YU3NqHzr+znA5Xs9bnomOONfVGmHOzCmoMEsyW+FDR/3WBbAq?= =?us-ascii?Q?q0s/i5PL7uYPWtDSU6g7zkcPfccpB+bhnLtcFHgpoH9zfaWCjiRsVy2ReHO4?= =?us-ascii?Q?DNxGRGkZQa6GgSymFkD8/jUAfP70P+lm5Bo3xRnPNzy9v3CH9g+2BBIDv50f?= =?us-ascii?Q?qEaoSrt9zSnmOEOo/QJyF8VOYdRIlwXUhA/xSMWRUO41g09r6BEAm6cHEDUD?= =?us-ascii?Q?SSH7xYRXn2y7yOH/uqcHJN4LJehlqO8dvR2Dn+afkOmHHEuayz3xMSV13BFw?= =?us-ascii?Q?jiZ6PhoIXVSczncigF4o7PdgDRAeB/4R2zhkH0b7u2zMwdxo6OWrj2Kn1Ewj?= =?us-ascii?Q?rB+ttyGEjQ0powqlmrANt1c9Y/P8JsZuSJRRCa+lXIs/abGTddEcl5j8CATE?= =?us-ascii?Q?UlbhA1k+h8CMN0O7pfk=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)(1800799024)(36860700013)(376014)(82310400026)(7416014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:27.7591 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2a339825-faa5-43b8-b70b-08de186bb915 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: MWH0EPF000971E4.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB9675 Received-SPF: permerror client-ip=2a01:111:f403:c107::3; envelope-from=skolothumtho@nvidia.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, KHOP_HELO_FCRDNS=0.399, SPF_HELO_NONE=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: 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: 1761908102232154100 Content-Type: text/plain; charset="utf-8" Introduce an optional supports_address_space() callback in PCIIOMMUOps to allow a vIOMMU implementation to reject devices that should not be attached to it. Currently, get_address_space() is the first and mandatory callback into the vIOMMU layer, which always returns an address space. For certain setups, su= ch as hardware accelerated vIOMMUs (e.g. ARM SMMUv3 with accel=3Don), attaching emulated endpoint devices is undesirable as it may impact the behavior or performance of VFIO passthrough devices, for example, by triggering unnecessary invalidations on the host IOMMU. The new callback allows a vIOMMU to check and reject unsupported devices early during PCI device registration. Cc: Michael S. Tsirkin Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron --- hw/pci/pci.c | 20 ++++++++++++++++++++ include/hw/pci/pci.h | 17 +++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 9693d7f10c..fa9cf5dab2 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -135,6 +135,21 @@ static void pci_set_master(PCIDevice *d, bool enable) d->is_master =3D enable; /* cache the status */ } =20 +static bool +pci_device_supports_iommu_address_space(PCIDevice *dev, Error **errp) +{ + PCIBus *bus; + PCIBus *iommu_bus; + int devfn; + + pci_device_get_iommu_bus_devfn(dev, &iommu_bus, &bus, &devfn); + if (iommu_bus && iommu_bus->iommu_ops->supports_address_space) { + return iommu_bus->iommu_ops->supports_address_space(bus, + iommu_bus->iommu_opaque, devfn, errp); + } + return true; +} + static void pci_init_bus_master(PCIDevice *pci_dev) { AddressSpace *dma_as =3D pci_device_iommu_address_space(pci_dev); @@ -1413,6 +1428,11 @@ static PCIDevice *do_pci_register_device(PCIDevice *= pci_dev, pci_dev->config_write =3D config_write; bus->devices[devfn] =3D pci_dev; pci_dev->version_id =3D 2; /* Current pci device vmstate version */ + if (!pci_device_supports_iommu_address_space(pci_dev, errp)) { + do_pci_unregister_device(pci_dev); + bus->devices[devfn] =3D NULL; + return NULL; + } if (phase_check(PHASE_MACHINE_READY)) { pci_init_bus_master(pci_dev); } diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index cf99b5bb68..dfeba8c9bd 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -417,6 +417,23 @@ typedef struct IOMMUPRINotifier { * framework for a set of devices on a PCI bus. */ typedef struct PCIIOMMUOps { + /** + * @supports_address_space: Optional pre-check to determine if a PCI + * device can have an IOMMU address space. + * + * @bus: the #PCIBus being accessed. + * + * @opaque: the data passed to pci_setup_iommu(). + * + * @devfn: device and function number. + * + * @errp: pass an Error out only when return false + * + * Returns: true if the device can be associated with an IOMMU address + * space, false otherwise with errp set. + */ + bool (*supports_address_space)(PCIBus *bus, void *opaque, int devfn, + Error **errp); /** * @get_address_space: get the address space for a set of devices * on a PCI bus. --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908109; cv=pass; d=zohomail.com; s=zohoarc; b=iFt6NOyDgu0ieltJnhUmm50uNeLYjPU3vhKxxj88me6OmxRreZ47skduT7Ngz+F0K1M6J1lAOzYlSejcqj8YFutirZRjKB/XSHU6/+KXlcMxa7VhYDMSsduaYsDYbG/giuHXO7NTYfT6n06XXLHXQvci6pzLrXL5o6bTToslpTc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908109; 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=Rx0t6yErUDaEZlgyh2m6Z+oTtSQN8Wl6skzEnWig61c=; b=nZ3Sijjqvve7F4NGpr/dFd7iCU+7QenbL6anjlVzoPKiPTB67LCcjDvl7tt6J7WTsWs6HSCdPzxC3JUMo9ERomBJwj6L1VQRRICtET1HSVxSNPEbvWazr+BhYw3+taIh0IWSwBqz9KnKLAg9XMeAsJcAtyZ0o4uI5Q51vs/rRsY= 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 1761908109749293.60672950223795; Fri, 31 Oct 2025 03:55:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmlt-0004VD-Ai; Fri, 31 Oct 2025 06:54:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlW-0004Gl-2p; Fri, 31 Oct 2025 06:53:54 -0400 Received: from mail-southcentralusazlp170130001.outbound.protection.outlook.com ([2a01:111:f403:c10c::1] helo=SA9PR02CU001.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 1vEmlN-0002wk-Tt; Fri, 31 Oct 2025 06:53:53 -0400 Received: from MW4PR04CA0315.namprd04.prod.outlook.com (2603:10b6:303:82::20) by SA3PR12MB8762.namprd12.prod.outlook.com (2603:10b6:806:31f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:53:33 +0000 Received: from MWH0EPF000971E5.namprd02.prod.outlook.com (2603:10b6:303:82:cafe::1) by MW4PR04CA0315.outlook.office365.com (2603:10b6:303:82::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9253.19 via Frontend Transport; Fri, 31 Oct 2025 10:53:32 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E5.mail.protection.outlook.com (10.167.243.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:31 +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.1544.14; Fri, 31 Oct 2025 03:53:17 -0700 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; Fri, 31 Oct 2025 03:53:13 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xoZTxAGORYLlZtK+8k8UXZkLGlWN1viII9nVaJKJJpen644UWEhagoKmN8oDaN855/kch8qHopaYG8d4q+gEs04elIPVbahXCGJWWP82bDk63M1x5ntk1NEsM+SG5xBhOwwD7Glu7TzFA1S/U5yffPKH30bgI4n6urqnf6X7D9pNH+WXyFiyn8mz6vMOVYrCqyJd8SCjYDajNsO9+B6nAppAojRdPDqu1S48Es+iBhWDcAGGM1YQ1sYBVVCTZ9F0CrPHp0BAeMPIA8rPKnPPCoQKNTCU281qpxLeDV0gcRLGub1ChCFBftSULtXiSo17KyOrOEouwE/dFadMubrcFg== 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=Rx0t6yErUDaEZlgyh2m6Z+oTtSQN8Wl6skzEnWig61c=; b=Ht5Bmmebj2YaF+futSaaIBq3WgL5iW2Lk2jQRI/TgA4EzrrB2or0gN4yQPoUbQPDUeK1LuyykpJwjD4XHLHx813Fb1EHFE1IKmajdwScE4jxppgl8M46CkRFbYoSSqyqrR4AF2HHLC8q/mLy2g5PFDFtS0OHGO9ne6uw51PsvkHwfJuce6JBrT/XtYKGqAlPAVsPzHIqckJfcHzwJ1rB/AtCxaxT+4R0lXWZLiBYM42NerZXh4vcb2+MuYvWMRpVKPkfwp/GPAo3MP6Q9/OT5peTmSIXgHgYIYgjhplFjxeka7/g1JtzPlCOZHkLfhU3flMdcvnMswTHQJUTLakFoA== 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=Rx0t6yErUDaEZlgyh2m6Z+oTtSQN8Wl6skzEnWig61c=; b=QNzDaexIGi3ToPqlYM47vqxZwhLRiEdW+8fqMNLSuIKL0p3pnFhWiuxl6B/uputV9DhKX/I4AW2UPdbQWtHNiq5taMiWDv3qbEwc6rtQadXPtbgGtGAtajkIDSfI9GBMtibfhribrtJCBB1TxowKk9z8b8FIe2xHzTyPvDv0rxm5843cBhZrYjILVMQSfmA6RiRAmMuAWu+HbgCabZGFSQu0ptRlP/+8FDQOXtteJDuV9WZ5vGMHGu1Eb4kmY1+oy5CyuhbPR8nSXpWB4v3OdqJlettspnodGOl6GOAAkV7/XAD6Z7qAMj7IDjrdM64nVK5v9RAdJBeFI0C18N4aIQ== 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 v5 09/32] hw/pci-bridge/pci_expander_bridge: Move TYPE_PXB_PCIE_DEV to header Date: Fri, 31 Oct 2025 10:49:42 +0000 Message-ID: <20251031105005.24618-10-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: MWH0EPF000971E5:EE_|SA3PR12MB8762:EE_ X-MS-Office365-Filtering-Correlation-Id: 6c1f98ba-33f8-4550-ee44-08de186bbb9a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|82310400026|7416014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AcFDborJxIV9K+yruZr4dPQH8RUkZKXNhSd5n7MXwDgpbfR2lDpDGY/KDPvy?= =?us-ascii?Q?Xf+G/ZSe+vJ6ZdnCPmZrncgZ4uYBSRWKUQH9fgOx/lalsHaxqv3bVC+oT4fO?= =?us-ascii?Q?VYLLg2yBDt8SdPEruClc9O/rQLnSFWvqa66uUMb/R5sYCr2Jf7oA4/I/jiPj?= =?us-ascii?Q?wuyQO6B+Qd36bql+bsJCM7KlLH8RaGNtGI+sgLM7F4A49ptkDQo00iEdgRpd?= =?us-ascii?Q?+rLIZ/Dq/K00j0+W5QsmXWSirzJRLfaqQ6sPxFkmN1QpRqI2/JEke7D5MH1g?= =?us-ascii?Q?gRuDxwDk4UYygH5lcFtFVeHt+GsFKSrsMA/e4rVAMYE2OMJHvuDxdPW2PLtC?= =?us-ascii?Q?pvexyLB/Ty6kHQGU+I8ZkhDstWjlP14TpIh2Iu1ZA6Hx76YsDHjYj3LMgrar?= =?us-ascii?Q?i0H7cp1EqnhEIBiHvAbTWReFqXZm8p785bVm8MlxOouUuZTns9UevZREnESO?= =?us-ascii?Q?uz/DXLKQVI8vH9sonb19lwhus50y0w+TpT7FWqEahdH7RyJ95gfihzXhwviT?= =?us-ascii?Q?JilmCxZwDQigXC4QOS6ooshM50SSw6PuCHEQWei38MdC2RyFQwqpS3J/oGMb?= =?us-ascii?Q?UXn7SybAXrKaJZyp54pXVC2qWaGpVaAvxVf5cgUdpTTpheTlXq/H4coW5uF5?= =?us-ascii?Q?WuWTfIr1mzVr8DnsVqrMUeX3K/ySqnCXZw8WKz2gIcqEUcfQQSUcBkpcvxh0?= =?us-ascii?Q?vRj+gQMcQiyFHLJEzor+kfA0IWQzYwIC6AIFW4qqffQshKE61BkZKXBygmTa?= =?us-ascii?Q?v2rP4Y9O7qEblRKFUyagWOOyl2xqtgxQdP8RvDoofJ0jjGXmvn+HmCYhi+Ws?= =?us-ascii?Q?dDl35nNNBYNsS1ZWFPHshR6A83vOTDQVmdWeylvY+1+i62qa8yXa94imPRJT?= =?us-ascii?Q?GOx8nJQ0X9Y6xCkihxksbLIYxOnbNekR4rRK4+i0M5tShbDE6sbXS+2BVV0q?= =?us-ascii?Q?pypDaQgbt5pHJ0cdn/nC1KyoFPWGgPJVmsMG1zkNHFBv24zj6nld4RtRMc9p?= =?us-ascii?Q?79PsbjnWM02V9oHbbVnnaIXyX46hLqS/OEvUYmuCp27Csx5lzqjjJ6JgChUW?= =?us-ascii?Q?uxnrIor5etSGD1UzR3RQZ5NTyrABHo5YUiiDnqRHcTbvGmDd4ag53DODYAkC?= =?us-ascii?Q?6CPVMipFhF6Od9h8qbhEzI2awCQo3+S49GVH+VfnBL3igiQCSULnlc5b7+JI?= =?us-ascii?Q?1ztsbSVEWCAnC2Zt4Ds8IDqbLrlmygCVlxxdKrA5T74Y1x6PGDgvgUAXpxDF?= =?us-ascii?Q?9IN33Md8eAZ1YCqJFo1YNPJPrbbEAKNbmHjykju5eKpWU+kH21IPaoU4BCoS?= =?us-ascii?Q?yqh87DoHptPyrFj8khXw7eD/9mZO+5BHuEXVrUXYt9Aau/GW9b+Dz3TpVn6B?= =?us-ascii?Q?PuFqxSHLI7+7e/t6GkbBBGtygC/JOhEuPPkHTPkRIBbYfVIypF3Bbtp3q2XJ?= =?us-ascii?Q?G3jk9R/xfQF13HjLbPEqGbgHkHROELRregoTK8tp4AqkpVb0a8RNoSPbWb0M?= =?us-ascii?Q?/bp2y9KfgpphtRsYuzNIBLvHFDt/Yrg08t4srpc/Qo83luWD1AdpBajn62GZ?= =?us-ascii?Q?Op2n3TOytjxA3cfWPp4=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)(1800799024)(376014)(82310400026)(7416014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:31.9856 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c1f98ba-33f8-4550-ee44-08de186bbb9a 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: MWH0EPF000971E5.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8762 Received-SPF: permerror client-ip=2a01:111:f403:c10c::1; envelope-from=skolothumtho@nvidia.com; helo=SA9PR02CU001.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: 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: 1761908112203154100 Content-Type: text/plain; charset="utf-8" Move the TYPE_PXB_PCIE_DEV definition to header so that it can be referenced by other code in subsequent patch. Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron --- hw/pci-bridge/pci_expander_bridge.c | 1 - include/hw/pci/pci_bridge.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expand= er_bridge.c index 1bcceddbc4..a8eb2d2426 100644 --- a/hw/pci-bridge/pci_expander_bridge.c +++ b/hw/pci-bridge/pci_expander_bridge.c @@ -48,7 +48,6 @@ struct PXBBus { char bus_path[8]; }; =20 -#define TYPE_PXB_PCIE_DEV "pxb-pcie" OBJECT_DECLARE_SIMPLE_TYPE(PXBPCIEDev, PXB_PCIE_DEV) =20 static GList *pxb_dev_list; diff --git a/include/hw/pci/pci_bridge.h b/include/hw/pci/pci_bridge.h index a055fd8d32..b61360b900 100644 --- a/include/hw/pci/pci_bridge.h +++ b/include/hw/pci/pci_bridge.h @@ -106,6 +106,7 @@ typedef struct PXBPCIEDev { =20 #define TYPE_PXB_PCIE_BUS "pxb-pcie-bus" #define TYPE_PXB_CXL_BUS "pxb-cxl-bus" +#define TYPE_PXB_PCIE_DEV "pxb-pcie" #define TYPE_PXB_DEV "pxb" OBJECT_DECLARE_SIMPLE_TYPE(PXBDev, PXB_DEV) =20 --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908111; cv=pass; d=zohomail.com; s=zohoarc; b=VC3i/IWDqyEhApa5j7bLG3YkNgwJ9BqxtE6kw3t3EIwzVD6pbjSlyChcLncFijlZbj+R53Cjlsorx229LlTS+O2vzxxY8AptZsldmrE+KN6h8eyYg3mWlw+P/zjJwbfXqBTdIjRa/lVnZTF/SotUm3xqBN325HYUJ1nUhdn9RRU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908111; 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=mkZ3AYA/jgEMOsNSbJQFTXXinfmlKImMW7bteh4tKpw=; b=mA+FP/KpTpYPVFSaSnoc9DWs2VNlKnUzqJrjxaYiJNLE9mZx5o5x1wn2z+SCFblpHK/pe2cl2CM4qhy+u7T1MUYy8xD9bu80FLL2O0wa0SWbgyTTtvV5hYm5M7rUEiTmAXjJ/7B8+uyBEksjYWzc2wkuc28buxW5Z4hskk0oVmM= 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 1761908111509713.3718195842512; Fri, 31 Oct 2025 03:55:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmG-0004uL-JI; Fri, 31 Oct 2025 06:54:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlg-0004R7-VO; Fri, 31 Oct 2025 06:54:06 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlV-0002xL-JT; Fri, 31 Oct 2025 06:53:59 -0400 Received: from BY3PR10CA0029.namprd10.prod.outlook.com (2603:10b6:a03:255::34) by MW6PR12MB8957.namprd12.prod.outlook.com (2603:10b6:303:23a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:53:37 +0000 Received: from MWH0EPF000971E2.namprd02.prod.outlook.com (2603:10b6:a03:255:cafe::3d) by BY3PR10CA0029.outlook.office365.com (2603:10b6:a03:255::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:37 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E2.mail.protection.outlook.com (10.167.243.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:36 +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.1544.14; Fri, 31 Oct 2025 03:53:22 -0700 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; Fri, 31 Oct 2025 03:53:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iiekEEAC9/9xAqivq8+ANitt44UoodknR/mJBFbfJ4vKAuk1N4uVAILLldoU93FeZEBVjkakgYUSAZVkyVkgYOKuXVr7LDcpBLD90PLQJwUqxi7J5DNw9E+ST7ITDXFYIwYjqA1h3zspI6cHKAja8nWI62xW6NTSciFCVj5C+SkHtrW/IaGujgCXKDs/YygtYK1a85rua67M5jSCCYLpXlYXnOVdjnna6JJYe0ttl27X7/qaxkUQxmYvoo1Ir7yEn9u0zMvbNmQBXzgc8hObL5pdyIXQf1/ti37OrC71sW5KeFE9NtqXI/LkBdhyWt7HBADj25LvZpMC87KrDh7KUA== 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=mkZ3AYA/jgEMOsNSbJQFTXXinfmlKImMW7bteh4tKpw=; b=N+evgmPvKKrLD1h8SdpyqS/0b7DWWT21E4ajpaIuMfu6HwAqksi6SJA/QMgcQCb7rnaYPtaU+YiHJYkqSDdXJ/S9Zf90BHJ2n4Vg4at7ZEJB/QACpaOxADAT1kKXxqQMH+o9XrAW1jIWgq5NZozv+sxkIuhkoad5QN06oc3lx+yTs1Ez6LKxXve+pgO2sFua4g5pVcwn4OGuGpG9THsUymWL9nl0mv8XJvu1/TFOQcvY5KZa08mSWnIjSRwJRWYL244MN8KAL6wzMId7WZXWAgpSajTSlfpMtg0yF1OIhREHuF6f/Elte8Xz1SbMHFL/JpvtknDs5Rx+zwhGw7bhkA== 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=mkZ3AYA/jgEMOsNSbJQFTXXinfmlKImMW7bteh4tKpw=; b=Hc7+IgoRtmb5KiVkCF/fwyLtoHkaU0kLjZUvAPe64wVfCla9MA/az0dlTd8ZamkV3hCQTOMsid67CmrDZGYUHpKjXb3PW2gFkiumtrlngpjObNrqHonJ5ws6543+OVMGG2t9weznww/+zOdDzJatRtU0+XATqD+Dmj55BME9I2aj9ouMv8u8NwKFE1MS99LjBQiMRO3p0KFJR4FjwUCt6sg8o/aec+I0HqMOGajk9fxOoCY9gG+KevCdAx2McyC91fyoPXh6QpE9UQwg3n5H51FRzPgwTIqbRmucrT7bvqVrQqNmR+PPNBYL1F4ZBHKv03VixuKbKr2ORMh4TMqlEQ== 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 v5 10/32] hw/arm/smmuv3-accel: Restrict accelerated SMMUv3 to vfio-pci endpoints with iommufd Date: Fri, 31 Oct 2025 10:49:43 +0000 Message-ID: <20251031105005.24618-11-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: MWH0EPF000971E2:EE_|MW6PR12MB8957:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b28b95c-ef29-4496-ea3b-08de186bbe48 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?bnlE=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(7416014)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:36.4810 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4b28b95c-ef29-4496-ea3b-08de186bbe48 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: MWH0EPF000971E2.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8957 Received-SPF: permerror client-ip=2a01:111:f403:c005::5; envelope-from=skolothumtho@nvidia.com; helo=CO1PR03CU002.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, SPF_NONE=0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @Nvidia.com) X-ZM-MESSAGEID: 1761908114490154100 Accelerated SMMUv3 is only meaningful when a device can leverage the host SMMUv3 in nested mode (S1+S2 translation). To keep the model consistent and correct, this mode is restricted to vfio-pci endpoint devices using the iommufd backend. Non-endpoint emulated devices such as PCIe root ports and bridges are also permitted so that vfio-pci devices can be attached beneath them. All other device types are unsupported in accelerated mode. Implement supports_address_space() callaback to reject all such unsupported devices. This restriction also avoids complications with IOTLB invalidations. Some TLBI commands (e.g. CMD_TLBI_NH_ASID) lack an associated SID, making it difficult to trace the originating device. Allowing emulated endpoints would require invalidating both QEMU=E2=80=99s software IOTLB and= the host=E2=80=99s hardware IOTLB, which can significantly degrade performance. For vfio-pci devices in nested mode, get_address_space() returns an address space aliased to system address space so that the VFIO core can set up the correct stage-2 mappings for guest RAM. In summary: - vfio-pci devices(with iommufd as backend) return an address space aliased to system address space. - bridges and root ports return the IOMMU address space. Reviewed-by: Jonathan Cameron Reviewed-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- hw/arm/smmuv3-accel.c | 66 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index f62b6cf2c9..550a0496fe 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -7,8 +7,13 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/error-report.h" =20 #include "hw/arm/smmuv3.h" +#include "hw/pci/pci_bridge.h" +#include "hw/pci-host/gpex.h" +#include "hw/vfio/pci.h" + #include "smmuv3-accel.h" =20 /* @@ -38,6 +43,41 @@ static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUState= *bs, SMMUPciBus *sbus, return accel_dev; } =20 +static bool smmuv3_accel_pdev_allowed(PCIDevice *pdev, bool *vfio_pci) +{ + + if (object_dynamic_cast(OBJECT(pdev), TYPE_PCI_BRIDGE) || + object_dynamic_cast(OBJECT(pdev), TYPE_PXB_PCIE_DEV) || + object_dynamic_cast(OBJECT(pdev), TYPE_GPEX_ROOT_DEVICE)) { + return true; + } else if ((object_dynamic_cast(OBJECT(pdev), TYPE_VFIO_PCI))) { + *vfio_pci =3D true; + if (object_property_get_link(OBJECT(pdev), "iommufd", NULL)) { + return true; + } + } + return false; +} + +static bool smmuv3_accel_supports_as(PCIBus *bus, void *opaque, int devfn, + Error **errp) +{ + PCIDevice *pdev =3D pci_find_device(bus, pci_bus_num(bus), devfn); + bool vfio_pci =3D false; + + if (pdev && !smmuv3_accel_pdev_allowed(pdev, &vfio_pci)) { + if (vfio_pci) { + error_setg(errp, "vfio-pci endpoint devices without an iommufd= " + "backend not allowed when using arm-smmuv3,accel=3D= on"); + + } else { + error_setg(errp, "Emulated endpoint devices are not allowed wh= en " + "using arm-smmuv3,accel=3Don"); + } + return false; + } + return true; +} /* * Find or add an address space for the given PCI device. * @@ -48,15 +88,39 @@ static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUStat= e *bs, SMMUPciBus *sbus, static AddressSpace *smmuv3_accel_find_add_as(PCIBus *bus, void *opaque, int devfn) { + PCIDevice *pdev =3D pci_find_device(bus, pci_bus_num(bus), devfn); SMMUState *bs =3D opaque; SMMUPciBus *sbus =3D smmu_get_sbus(bs, bus); SMMUv3AccelDevice *accel_dev =3D smmuv3_accel_get_dev(bs, sbus, bus, d= evfn); SMMUDevice *sdev =3D &accel_dev->sdev; + bool vfio_pci =3D false; =20 - return &sdev->as; + if (pdev && !smmuv3_accel_pdev_allowed(pdev, &vfio_pci)) { + /* Should never be here: supports_address_space() filters these ou= t */ + g_assert_not_reached(); + } + + /* + * In the accelerated mode, a vfio-pci device attached via the iommufd + * backend must remain in the system address space. Such a device is + * always translated by its physical SMMU (using either a stage-2-only + * STE or a nested STE), where the parent stage-2 page table is alloca= ted + * by the VFIO core to back the system address space. + * + * Return the shared_as_sysmem aliased to the global system memory in = this + * case. Sharing address_space_memory also allows devices under differ= ent + * vSMMU instances in the same VM to reuse a single nesting parent HWP= T in + * the VFIO core. + */ + if (vfio_pci) { + return shared_as_sysmem; + } else { + return &sdev->as; + } } =20 static const PCIIOMMUOps smmuv3_accel_ops =3D { + .supports_address_space =3D smmuv3_accel_supports_as, .get_address_space =3D smmuv3_accel_find_add_as, }; =20 --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908162; cv=pass; d=zohomail.com; s=zohoarc; b=ijP7NseQcmslanDDh7kDQnWytq8PWhOkytyzfIsydXW4fXPdB7mu8KeocKLu9aln+FRp8Qpc/HcKmeWnKBjlg+n/uWu0W6MA/qPAlRWCZjlqhM3HfWCZAUO7zXwAAYUEp8c8OXstj/Dx6NrEs2OYyz6VSCB0PA/XkuqIOnaaQJQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908162; 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=zXVWr9vcNxrjKqLKUQwunzU/I3cl2yYcnk4qyNHlQIc=; b=LXuII2axv77H/7jYhIu3dCSr6F9nWptsvCs6ZmEgjbPcKPfApvLJibw8iutALMRHF9ZH31YoQNkfo+BKvpQPh3Cil+YGCDEU7grVJXGCS6N0xuY1V0hvN5KHRZ+/LYjc4GJpNN47/FIK4KlE7B3oD1EjijFIFd3wNOBAtoxhwCA= 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 176190816243785.20318124499545; Fri, 31 Oct 2025 03:56:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmQ-0005T3-1y; Fri, 31 Oct 2025 06:54:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlk-0004TJ-Sx; Fri, 31 Oct 2025 06:54:11 -0400 Received: from mail-northcentralusazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c105::7] helo=CH4PR04CU002.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 1vEmlX-0002xD-Ac; Fri, 31 Oct 2025 06:54:08 -0400 Received: from BY3PR10CA0013.namprd10.prod.outlook.com (2603:10b6:a03:255::18) by MN2PR12MB4392.namprd12.prod.outlook.com (2603:10b6:208:264::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:53:39 +0000 Received: from MWH0EPF000971E2.namprd02.prod.outlook.com (2603:10b6:a03:255:cafe::16) by BY3PR10CA0013.outlook.office365.com (2603:10b6:a03:255::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:16 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E2.mail.protection.outlook.com (10.167.243.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:39 +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.1544.14; Fri, 31 Oct 2025 03:53:26 -0700 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; Fri, 31 Oct 2025 03:53:23 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=teqD9dtYalTM4Q8ElkP+StapqCCGqCREaohAawfePJbBCdBf77fBPWze1W7KSrYnK3nDj6j4e/oeZV+i5+eRzi52i/bHaqYiM3CuIASF1RpJppUVvEDJ31VJ0tTnYS9zqXn8uSSVricy+LJDMnaTEhNrDeGcljB3fWdg4z6seiJS02ZWzGmiFfdZY0EwZMWlQFlys9t45gSWTsOSWV5pX04Fa7WpAR8ThgYvHKrjcs2nOF9DQgSU2WsHRdM/fZW22gmgMlgpd0xk0DOIy3/I7fTXQUc8zGyw0RW+pt1YPKseIII0eTNoZl/1rEM2XIGgOitoOA0sQXUtKXFBPC+83g== 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=zXVWr9vcNxrjKqLKUQwunzU/I3cl2yYcnk4qyNHlQIc=; b=ESpt3KC38SNkGMeMEuopjxRencgwEcVgucSlr+XOKzwaXZ1CrK9Tl+rhuThCXpJaeyeTmH+BSzAgSyc5gnxfUUvNE64w9464wBwhBs/Aq79iHh8rUg5n3QOvhBWYgZBs70KLnmXLMJbKEZAVY/s9k8n1l1Dm9T8U1X5T7MmSJG3GYgwZghwVbsWhSk9EF6A4G4WQ/UON12UJEfUl5CHf60+s9+u7Als4a8nGgecFiVPaWC5QnVethFN5luWK2u2taSuubXgo91AxJoY9HNZ/NhjvvTbaLjhJsPj6nSPM/ss6wwTpbBNNqZp45BN6HVJCnw9AcrMU3/t17N/pa9mF9A== 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=zXVWr9vcNxrjKqLKUQwunzU/I3cl2yYcnk4qyNHlQIc=; b=YH9vV5fL0avZ1WqFKxz7YPTHmAAhnR2WT3wQSxGzDSBYis8mygAtKvZ6LSZ5BdpZt1Dsof87Ml7hG0Mj9TziY31833cJpbFDgwtBpLc8U+OEPlImMAkudU23cTqtjCdQtD8VMDLH/w0MDtppNBgbkHGKOisBVC4rlEDui6+x/Plyfk7SIfJoJGBQlrelck23l/U9kpNXjb//DVthRv3Y6kmSywr+vYE28JNYuHgPSG5VQrXJIz3dpz+BC+7IybKx2EgOiTkrmxtnQn4HLleHOCfqvTzhdOB83GssVa7YoPMtpe3ZthpTqV8ikPtFen1VHNV7lc5huagqdEdVUyirFA== 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 v5 11/32] hw/arm/smmuv3: Implement get_viommu_cap() callback Date: Fri, 31 Oct 2025 10:49:44 +0000 Message-ID: <20251031105005.24618-12-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: MWH0EPF000971E2:EE_|MN2PR12MB4392:EE_ X-MS-Office365-Filtering-Correlation-Id: c0e1994f-a82b-443a-ecab-08de186bc00a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|1800799024|7416014|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2b4M5LakeZAm7NhbkdlurgF88ghbwZ36Ftvnbrx3peReDNjpZKw5f49RTZKH?= =?us-ascii?Q?7P8bVPD2FH4Yf7E4BNjIIuCBO73154GPPUl7zoF0F+5I03rYXK6v4UJR0ANc?= =?us-ascii?Q?i9KLaC8LH4p55lLkT3x7BeOdrqNyhz1EwTZCFVBuJmnriwfyGAXlcZWmm0HA?= =?us-ascii?Q?5rsant368ZWGw20lMAevKcmqxffGJV2H1R1/B9gTgYwIkvebaGwSPAUgwwf8?= =?us-ascii?Q?HkHsk8TWMy08zqupwwY+6fybsNgS6eSECSzqpdh/WT3xwvQn15D/NylkTcrZ?= =?us-ascii?Q?taczAa6fbiXNk70IayRm/lvFbZVAG2TfVvdqXW1thwMhshkQyW70MAtjUjiy?= =?us-ascii?Q?V1uFFXBWNJWeEzyoEPRy73LquCx5WzPSX/rR2Zs5ucLOVgqzXVVDE4UocmuO?= =?us-ascii?Q?jY4Znh5Frn2xwXQcWn09NxcWjHprFBqiTuJ06HOuXw5YRER+LTnW3QsbLZuP?= =?us-ascii?Q?gPbRG7Elw52nVmqfqiiTHA87MCZ2zqnDwl1krnorvzGVBOY6dFLv0JET9sDZ?= =?us-ascii?Q?V6q48m+dZbOliC2becmU0ctk1EL23M0Leoiww9+h2LJW02Bm2nohsdekTGoa?= =?us-ascii?Q?l8CF+8X/gi20IVWjaMkES8kHVSrI7MGg4E9Wbj0zSiBUBkl6eZbnTle3WJy5?= =?us-ascii?Q?/IV6M7zGk/bUUNV8mayA+KAMsmmOi6Blo8MgGXtXDW8EWC6ZYF+rYsdNAv0t?= =?us-ascii?Q?4w8xsf6Pc0T2V2mXFn9IMbL4shiniBai0uzNceIqwIJYo7OJHn3IPIX2EPDE?= =?us-ascii?Q?MTkpnKra1c+79LXdqwiQlWYJvY8Kh/7Xdgj8zjzjZqn8UDJMyNoFhVoobPZj?= =?us-ascii?Q?JJL0o68u1NsOwxk58v6ET6kfTmYJp7mLuGdupkbhT8v162tFKM/ebjUe/Mg/?= =?us-ascii?Q?mAz6n5F4NRyU7eBmcldXnsHOGF8QX9qak9ZFx0a41alDZTfbOIYo9mM0s18k?= =?us-ascii?Q?Ysxn273+cbz2Yp8c4tVuF1iZzPhTynjx1FQjRnCX5CPR/Zp69aapDlUXv7CK?= =?us-ascii?Q?4dQr/IfURkRVbnCmlC46b0opbY54bNE1mPvKZXA/h9jqf8ySvqIZaA3Nv3n+?= =?us-ascii?Q?nyDmLhyrBOeyBSXDpzWrTOQCrNuCfQ53gOaUg8BaeG5MqZYpsv2B+0soClb5?= =?us-ascii?Q?VRILOMCgk0CvNHUTJw7LBSpdvUNT3pI+kGOoMA+i/sn5MYwsZNQBc3d39ext?= =?us-ascii?Q?VID7OCyfGPDq4Q1i/WDr96icI/W9JmaXJkippnM+Tize6Mwg4tQn7ihLStBx?= =?us-ascii?Q?TYtrGsAwcQoBSWngj/9XTjYx1mRJn9A9CR7P7gQ4oeeESXYEmW8vEOXz/aEU?= =?us-ascii?Q?ldMRyDC2EFNaxP/u47Bxgjq1I1sPdH3ZreTERq63kMVNUKoFng66dQsNEFrP?= =?us-ascii?Q?nA/6LRyczNbeHFXGVujpIxXeKjo6UuI33y41xxE59kQsxJaw+U4o3KicCsPK?= =?us-ascii?Q?VcXqc/QdnJz0v/Zov8q6WDT9oiEiTJyyM5FbB4BI3dPIrxn+qXlUskZvlOa4?= =?us-ascii?Q?pnbes1FF8y+NvEK7UBMFln5U8j1La1t74P9+Am/R82bzangsWDGasOoKl57u?= =?us-ascii?Q?sXS5eOsknc1wS8SxuGU=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)(82310400026)(1800799024)(7416014)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:39.4811 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c0e1994f-a82b-443a-ecab-08de186bc00a 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: MWH0EPF000971E2.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4392 Received-SPF: permerror client-ip=2a01:111:f403:c105::7; envelope-from=skolothumtho@nvidia.com; helo=CH4PR04CU002.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, 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: 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: 1761908165981158500 Content-Type: text/plain; charset="utf-8" For accelerated SMMUv3, we need nested parent domain creation. Add the callback support so that VFIO can create a nested parent. Reviewed-by: Nicolin Chen Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- hw/arm/smmuv3-accel.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 550a0496fe..a1d672208f 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -10,6 +10,7 @@ #include "qemu/error-report.h" =20 #include "hw/arm/smmuv3.h" +#include "hw/iommu.h" #include "hw/pci/pci_bridge.h" #include "hw/pci-host/gpex.h" #include "hw/vfio/pci.h" @@ -119,9 +120,21 @@ static AddressSpace *smmuv3_accel_find_add_as(PCIBus *= bus, void *opaque, } } =20 +static uint64_t smmuv3_accel_get_viommu_flags(void *opaque) +{ + /* + * We return VIOMMU_FLAG_WANT_NESTING_PARENT to inform VFIO core to cr= eate a + * nesting parent which is required for accelerated SMMUv3 support. + * The real HW nested support should be reported from host SMMUv3 and = if + * it doesn't, the nesting parent allocation will fail anyway in VFIO = core. + */ + return VIOMMU_FLAG_WANT_NESTING_PARENT; +} + static const PCIIOMMUOps smmuv3_accel_ops =3D { .supports_address_space =3D smmuv3_accel_supports_as, .get_address_space =3D smmuv3_accel_find_add_as, + .get_viommu_flags =3D smmuv3_accel_get_viommu_flags, }; =20 static void smmuv3_accel_as_init(SMMUv3State *s) --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908119; cv=pass; d=zohomail.com; s=zohoarc; b=jQxnYp+5fycIvnkzmQ9i2yMtH/UCvXsybH4Ni4XF7yUlBTeF7SBUFU9bCJeoLxZJhkvCoFlDZR8nUH63158WvRcotXIP2M9xVmR+2tntzzHicGlVQ0CRniUg4jfWm2rKSk0qAJuKR7BI6R0hOt/b3xpFR4kqZ8QjvS1IUmhqKXo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908119; 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=hiYKIH7EHrbC98rwIxCGqy8f2yC2y2tZh0ZHPWf+OZk=; b=Od21BtBqPykVI9d5dvUJVS2JF8cddchVhZeFEwqfzdZoFAof/czCzA3EV4GCO/jVEccA71WVNqthXOyLSrhviRPyQiafqnnJFmgXR88H6E9dmdBwRyW1xriVXPN8PC/X8Np1J1nxymg0eFRMffFzRaCi0CJascEo/DY/CAyOSXk= 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 1761908119217563.3246570107527; Fri, 31 Oct 2025 03:55:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmE-0004nL-5C; Fri, 31 Oct 2025 06:54:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlg-0004R6-VT; Fri, 31 Oct 2025 06:54:06 -0400 Received: from mail-southcentralusazlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c10d::3] helo=SN4PR0501CU005.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 1vEmlS-0002xO-KY; Fri, 31 Oct 2025 06:53:56 -0400 Received: from PH7P221CA0043.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:33c::31) by CH3PR12MB9729.namprd12.prod.outlook.com (2603:10b6:610:253::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:53:40 +0000 Received: from CY4PEPF0000EE30.namprd05.prod.outlook.com (2603:10b6:510:33c:cafe::9) by PH7P221CA0043.outlook.office365.com (2603:10b6:510:33c::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:38 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE30.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:39 +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, 31 Oct 2025 03:53:31 -0700 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; Fri, 31 Oct 2025 03:53:27 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sYSwOJUQMtO2Sg14K6FtPBavRx6TGPtMo/8n55y3XdyjK+7XLVF7wvIfedT39IdjTrNkHQ4fEeKyvK5fasOMPq02bg1ciX1mVE2Ro2KCgWYfdNRFAs+PgHSiGHVTCsHiqSXkYJ0m5A1hZzaLU0hypEjcYirNGDt+KUDxeruXPRp1ywOWMZzhZL1BIwSEe6W7MvuxLs5HA9X7G9v4LH91Tto8C+gBA1gc88Z1F0AxbKiMTEg4TJ/pWM4juZPFk5daloDroFYGc5DGFdxYvOBk/jEo0U4o1elTOwSToAhwLFRIWmg0MELV3rxQnBV2SiZJnBFnpbV39cr2AOsOsS4HvA== 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=hiYKIH7EHrbC98rwIxCGqy8f2yC2y2tZh0ZHPWf+OZk=; b=bnsJ5FqemOrB3omlRt85ZrwRgBfz8tWYHLEq0ZcMxi13BIH6I8Of7LIYVKGV8pB76pjAakVOdsebMWatgXzBCiuheV5XPZ2kesrqXdOj4NIgXyH2HmBb0avrCM3YRJ+CBLYYUgHpxTCtN3L8KC2LhGy9Y4RaB1osp5hAw4lB2JopSSGGaKpc1jNzfgme2w6LLYjtixGqayqELttX0oQrfIS4+mUAGbX6lZLlOLl6pYlTof0d0kXxO3vNJLnm9e5/CuyJW54tVuIPaaxc8/ERC47REcLeKHU0vp0Q9NLNp2mf9gcv02QeJ3DfzOW17wFLMvYFrxXh6+J3Gv68kWNb9Q== 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=hiYKIH7EHrbC98rwIxCGqy8f2yC2y2tZh0ZHPWf+OZk=; b=jfwfC3j5KJAPxcgMnmZca9scXtVEY+izm1NXyH3m5+AVGvHnkGgdyWyJV+CFysFsXQJv9LQgjZcefEViGuWvCwlE+WA3GbO3rR/kAPG2pQAaOUE4lYdUxzSvZkAZ+HQpIMz/uD88flQ8RFreC3nD5hbJP/WNOrxFLmVJ//bCYHktKTE9EiR4Qjiow+G8XWRvpR9aVB9+lz8Z1CJAY4FB0va+bxNRD3BThq28HWddgwp9joLdYZIJCHveKh9lChpBMkF6s4l7PyT+FtyvnTC2F9HidWossYd3qS1F8KatruaV3Oo3wz56Weg/bCiOfiNAU8RKm/n8jck7ZvRjiuFq1g== 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 v5 12/32] hw/arm/smmuv3-accel: Add set/unset_iommu_device callback Date: Fri, 31 Oct 2025 10:49:45 +0000 Message-ID: <20251031105005.24618-13-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: CY4PEPF0000EE30:EE_|CH3PR12MB9729:EE_ X-MS-Office365-Filtering-Correlation-Id: b5c6709d-7fa1-490d-048e-08de186bc029 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?yAeY=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)(36860700013)(1800799024)(376014)(7416014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:39.6625 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b5c6709d-7fa1-490d-048e-08de186bc029 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: CY4PEPF0000EE30.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9729 Received-SPF: permerror client-ip=2a01:111:f403:c10d::3; envelope-from=skolothumtho@nvidia.com; helo=SN4PR0501CU005.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, 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: 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: 1761908122370154100 From: Nicolin Chen Implement the VFIO/PCI callbacks to attach and detach a HostIOMMUDevice to a vSMMUv3 when accel=3Don, - set_iommu_device(): attach a HostIOMMUDevice to a vIOMMU - unset_iommu_device(): detach and release associated resources In SMMUv3 accel=3Don mode, the guest SMMUv3 is backed by the host SMMUv3 via IOMMUFD. A vIOMMU object (created via IOMMU_VIOMMU_ALLOC) provides a per-VM, security-isolated handle to the physical SMMUv3. Without a vIOMMU, the vSMMUv3 cannot relay guest operations to the host hardware nor maintain isolation across VMs or devices. Therefore, set_iommu_device() allocates a vIOMMU object if one does not already exist. There are two main points to consider in this implementation: 1) VFIO core allocates and attaches a S2 HWPT that acts as the nesting parent for nested HWPTs(IOMMU_DOMAIN_NESTED). This parent HWPT will be shared across multiple vSMMU instances within a VM. 2) A device cannot attach directly to a vIOMMU. Instead, it attaches through a proxy nested HWPT (IOMMU_DOMAIN_NESTED). Based on the STE configuration,there are three types of nested HWPTs: bypass, abort, and translate. -The bypass and abort proxy HWPTs are pre-allocated. When SMMUv3 operates in global abort or bypass modes, as controlled by the GBPA register, or issues a vSTE for bypass or abort we attach these pre-allocated nested HWPTs. -The translate HWPT requires a vDEVICE to be allocated first, since invalidations and events depend on a valid vSID. -The vDEVICE allocation and actual attach operations for these proxy HWPTs are implemented in subsequent patches. In summary, a device placed behind a vSMMU instance must have a vSID for translate vSTE. The bypass and abort vSTEs are pre-allocated as proxy nested HWPTs and is attached based on GBPA register. The core-managed nesting parent S2 HWPT is used as parent S2 HWPT for all the nested HWPTs and is intended to be shared across vSMMU instances within the same VM. set_iommu_device(): - Reuse an existing vIOMMU for the same physical SMMU if available. If not, allocate a new one using the nesting parent S2 HWPT. - Pre-allocate two proxy nested HWPTs (bypass and abort) under the vIOMMU. - Add the device to the vIOMMU=E2=80=99s device list. unset_iommu_device(): - Re-attach device to the nesting parent S2 HWPT. - Remove the device from the vIOMMU=E2=80=99s device list. - If the list is empty, free the proxy HWPTs (bypass and abort) and release the vIOMMU object. Introduce SMMUv3AccelState, which holds a reference to an SMMUViommu structure representing a virtual SMMU instance backed by an iommufd vIOMMU object. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3-accel.c | 150 +++++++++++++++++++++++++++++++++++++++ hw/arm/smmuv3-accel.h | 22 ++++++ hw/arm/smmuv3-internal.h | 5 ++ hw/arm/trace-events | 4 ++ include/hw/arm/smmuv3.h | 1 + 5 files changed, 182 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index a1d672208f..d4d65299a8 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -8,6 +8,7 @@ =20 #include "qemu/osdep.h" #include "qemu/error-report.h" +#include "trace.h" =20 #include "hw/arm/smmuv3.h" #include "hw/iommu.h" @@ -15,6 +16,7 @@ #include "hw/pci-host/gpex.h" #include "hw/vfio/pci.h" =20 +#include "smmuv3-internal.h" #include "smmuv3-accel.h" =20 /* @@ -44,6 +46,151 @@ static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUStat= e *bs, SMMUPciBus *sbus, return accel_dev; } =20 +static bool +smmuv3_accel_dev_alloc_viommu(SMMUv3AccelDevice *accel_dev, + HostIOMMUDeviceIOMMUFD *idev, Error **errp) +{ + struct iommu_hwpt_arm_smmuv3 bypass_data =3D { + .ste =3D { SMMU_STE_CFG_BYPASS | SMMU_STE_VALID, 0x0ULL }, + }; + struct iommu_hwpt_arm_smmuv3 abort_data =3D { + .ste =3D { SMMU_STE_VALID, 0x0ULL }, + }; + SMMUDevice *sdev =3D &accel_dev->sdev; + SMMUState *bs =3D sdev->smmu; + SMMUv3State *s =3D ARM_SMMUV3(bs); + SMMUv3AccelState *s_accel =3D s->s_accel; + uint32_t s2_hwpt_id =3D idev->hwpt_id; + SMMUViommu *vsmmu; + uint32_t viommu_id; + + if (s_accel->vsmmu) { + accel_dev->vsmmu =3D s_accel->vsmmu; + return true; + } + + if (!iommufd_backend_alloc_viommu(idev->iommufd, idev->devid, + IOMMU_VIOMMU_TYPE_ARM_SMMUV3, + s2_hwpt_id, &viommu_id, errp)) { + return false; + } + + vsmmu =3D g_new0(SMMUViommu, 1); + vsmmu->viommu.viommu_id =3D viommu_id; + vsmmu->viommu.s2_hwpt_id =3D s2_hwpt_id; + vsmmu->viommu.iommufd =3D idev->iommufd; + + /* + * Pre-allocate HWPTs for S1 bypass and abort cases. These will be att= ached + * later for guest STEs or GBPAs that require bypass or abort configur= ation. + */ + if (!iommufd_backend_alloc_hwpt(idev->iommufd, idev->devid, viommu_id, + 0, IOMMU_HWPT_DATA_ARM_SMMUV3, + sizeof(abort_data), &abort_data, + &vsmmu->abort_hwpt_id, errp)) { + goto free_viommu; + } + + if (!iommufd_backend_alloc_hwpt(idev->iommufd, idev->devid, viommu_id, + 0, IOMMU_HWPT_DATA_ARM_SMMUV3, + sizeof(bypass_data), &bypass_data, + &vsmmu->bypass_hwpt_id, errp)) { + goto free_abort_hwpt; + } + + vsmmu->iommufd =3D idev->iommufd; + s_accel->vsmmu =3D vsmmu; + accel_dev->vsmmu =3D vsmmu; + return true; + +free_abort_hwpt: + iommufd_backend_free_id(idev->iommufd, vsmmu->abort_hwpt_id); +free_viommu: + iommufd_backend_free_id(idev->iommufd, vsmmu->viommu.viommu_id); + g_free(vsmmu); + return false; +} + +static bool smmuv3_accel_set_iommu_device(PCIBus *bus, void *opaque, int d= evfn, + HostIOMMUDevice *hiod, Error **e= rrp) +{ + HostIOMMUDeviceIOMMUFD *idev =3D HOST_IOMMU_DEVICE_IOMMUFD(hiod); + SMMUState *bs =3D opaque; + SMMUv3State *s =3D ARM_SMMUV3(bs); + SMMUv3AccelState *s_accel =3D s->s_accel; + SMMUPciBus *sbus =3D smmu_get_sbus(bs, bus); + SMMUv3AccelDevice *accel_dev =3D smmuv3_accel_get_dev(bs, sbus, bus, d= evfn); + SMMUDevice *sdev =3D &accel_dev->sdev; + uint16_t sid =3D smmu_get_sid(sdev); + + if (!idev) { + return true; + } + + if (accel_dev->idev) { + if (accel_dev->idev !=3D idev) { + error_setg(errp, "Device 0x%x already has an associated IOMMU = dev", + sid); + return false; + } + return true; + } + + if (!smmuv3_accel_dev_alloc_viommu(accel_dev, idev, errp)) { + error_append_hint(errp, "Device 0x%x: Unable to alloc viommu", sid= ); + return false; + } + + accel_dev->idev =3D idev; + QLIST_INSERT_HEAD(&s_accel->vsmmu->device_list, accel_dev, next); + trace_smmuv3_accel_set_iommu_device(devfn, idev->devid); + return true; +} + +static void smmuv3_accel_unset_iommu_device(PCIBus *bus, void *opaque, + int devfn) +{ + SMMUState *bs =3D opaque; + SMMUv3State *s =3D ARM_SMMUV3(bs); + SMMUPciBus *sbus =3D g_hash_table_lookup(bs->smmu_pcibus_by_busptr, bu= s); + SMMUv3AccelDevice *accel_dev; + SMMUViommu *vsmmu; + SMMUDevice *sdev; + uint16_t sid; + + if (!sbus) { + return; + } + + sdev =3D sbus->pbdev[devfn]; + if (!sdev) { + return; + } + + sid =3D smmu_get_sid(sdev); + accel_dev =3D container_of(sdev, SMMUv3AccelDevice, sdev); + /* Re-attach the default s2 hwpt id */ + if (!host_iommu_device_iommufd_attach_hwpt(accel_dev->idev, + accel_dev->idev->hwpt_id, + NULL)) { + error_report("Unable to attach dev 0x%x to the default HW pagetabl= e", + sid); + } + + accel_dev->idev =3D NULL; + QLIST_REMOVE(accel_dev, next); + trace_smmuv3_accel_unset_iommu_device(devfn, sid); + + vsmmu =3D s->s_accel->vsmmu; + if (QLIST_EMPTY(&vsmmu->device_list)) { + iommufd_backend_free_id(vsmmu->iommufd, vsmmu->bypass_hwpt_id); + iommufd_backend_free_id(vsmmu->iommufd, vsmmu->abort_hwpt_id); + iommufd_backend_free_id(vsmmu->iommufd, vsmmu->viommu.viommu_id); + g_free(vsmmu); + s->s_accel->vsmmu =3D NULL; + } +} + static bool smmuv3_accel_pdev_allowed(PCIDevice *pdev, bool *vfio_pci) { =20 @@ -135,6 +282,8 @@ static const PCIIOMMUOps smmuv3_accel_ops =3D { .supports_address_space =3D smmuv3_accel_supports_as, .get_address_space =3D smmuv3_accel_find_add_as, .get_viommu_flags =3D smmuv3_accel_get_viommu_flags, + .set_iommu_device =3D smmuv3_accel_set_iommu_device, + .unset_iommu_device =3D smmuv3_accel_unset_iommu_device, }; =20 static void smmuv3_accel_as_init(SMMUv3State *s) @@ -160,4 +309,5 @@ void smmuv3_accel_init(SMMUv3State *s) =20 bs->iommu_ops =3D &smmuv3_accel_ops; smmuv3_accel_as_init(s); + s->s_accel =3D g_new0(SMMUv3AccelState, 1); } diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index 0dc6b00d35..d81f90c32c 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -10,12 +10,34 @@ #define HW_ARM_SMMUV3_ACCEL_H =20 #include "hw/arm/smmu-common.h" +#include "system/iommufd.h" +#include #include CONFIG_DEVICES =20 +/* + * Represents a virtual SMMU instance backed by an iommufd vIOMMU object. + * Holds references to the core iommufd vIOMMU object and to proxy HWPTs + * (bypass and abort) used for device attachment. + */ +typedef struct SMMUViommu { + IOMMUFDBackend *iommufd; + IOMMUFDViommu viommu; + uint32_t bypass_hwpt_id; + uint32_t abort_hwpt_id; + QLIST_HEAD(, SMMUv3AccelDevice) device_list; +} SMMUViommu; + typedef struct SMMUv3AccelDevice { SMMUDevice sdev; + HostIOMMUDeviceIOMMUFD *idev; + SMMUViommu *vsmmu; + QLIST_ENTRY(SMMUv3AccelDevice) next; } SMMUv3AccelDevice; =20 +typedef struct SMMUv3AccelState { + SMMUViommu *vsmmu; +} SMMUv3AccelState; + #ifdef CONFIG_ARM_SMMUV3_ACCEL void smmuv3_accel_init(SMMUv3State *s); #else diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index b6b7399347..03d86cfc5c 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -583,6 +583,11 @@ typedef struct CD { ((extract64((x)->word[7], 0, 16) << 32) | \ ((x)->word[6] & 0xfffffff0)) =20 +#define SMMU_STE_VALID (1ULL << 0) +#define SMMU_STE_CFG_BYPASS (1ULL << 3) + +#define SMMU_GBPA_ABORT (1UL << 20) + static inline int oas2bits(int oas_field) { switch (oas_field) { diff --git a/hw/arm/trace-events b/hw/arm/trace-events index f3386bd7ae..49c0460f30 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -66,6 +66,10 @@ smmuv3_notify_flag_del(const char *iommu) "DEL SMMUNotif= ier node for iommu mr=3D%s smmuv3_inv_notifiers_iova(const char *name, int asid, int vmid, uint64_t i= ova, uint8_t tg, uint64_t num_pages, int stage) "iommu mr=3D%s asid=3D%d vm= id=3D%d iova=3D0x%"PRIx64" tg=3D%d num_pages=3D0x%"PRIx64" stage=3D%d" smmu_reset_exit(void) "" =20 +#smmuv3-accel.c +smmuv3_accel_set_iommu_device(int devfn, uint32_t sid) "devfn=3D0x%x (idev= devid=3D0x%x)" +smmuv3_accel_unset_iommu_device(int devfn, uint32_t sid) "devfn=3D0x%x (id= ev devid=3D0x%x)" + # strongarm.c strongarm_uart_update_parameters(const char *label, int speed, char parity= , int data_bits, int stop_bits) "%s speed=3D%d parity=3D%c data=3D%d stop= =3D%d" strongarm_ssp_read_underrun(void) "SSP rx underrun" diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index bb7076286b..e54ece2d38 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -66,6 +66,7 @@ struct SMMUv3State { =20 /* SMMU has HW accelerator support for nested S1 + s2 */ bool accel; + struct SMMUv3AccelState *s_accel; }; =20 typedef enum { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908891; cv=pass; d=zohomail.com; s=zohoarc; b=fOEt3HHvCr8gmww6DC4e1YWO5NKtCStsPWsnQ5F2ZluRVvAQrVlEiXhg9Gp3hcuF3HptnkUv8T2k8F2ciFmcR0xXTn+v293p7Z6/sQ0U/BDCHLjXTRr/H4CuCya/URFPWmiaI6TaZHfWkutSu+wvwrAsd+OG6cLeHyLMFVoxcyE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908891; 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=HD/grpbbGtyJTNtddlw+D9zZYbJ6z0DvrZ2KRKuQRTw=; b=lUdXvCiWULFUZhWDlzYxutmMHUgXFLIjaUaOe4l7rnJT/VNnKt48dKAjI/HP7ixeQZvLfligDmvu3h76MOBSkNysHfZVv7rGyyTMwG7ghDyu1wdxq/XhRiN6RY2702PgdhTNRx935eaILX83ByOqSauT4W1KMs8fJmsZ4t9XO3U= 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 1761908891543389.8766448434427; Fri, 31 Oct 2025 04:08:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmX-0006KO-1D; Fri, 31 Oct 2025 06:54:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlr-0004b5-Qq; Fri, 31 Oct 2025 06:54:17 -0400 Received: from mail-westus3azlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c107::1] helo=PH8PR06CU001.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 1vEmli-0002yN-8c; Fri, 31 Oct 2025 06:54:14 -0400 Received: from PH7P221CA0040.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:33c::24) by MN6PR12MB8514.namprd12.prod.outlook.com (2603:10b6:208:474::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:53:44 +0000 Received: from CY4PEPF0000EE30.namprd05.prod.outlook.com (2603:10b6:510:33c:cafe::f) by PH7P221CA0040.outlook.office365.com (2603:10b6:510:33c::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:45 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE30.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:44 +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, 31 Oct 2025 03:53:36 -0700 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; Fri, 31 Oct 2025 03:53:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Pcr70hpb9dGKC3TdiHM73NpDCP5asJwSP09KHjcL74F0CjJU8f/li0ipC7BwygTinau9v8IGJJRcEB5tzlbkfBfPNRsv+kqrEzzwSq72xx+2UwJyDmd7j4T/WjUXmU5T/ATUI9JdZc7Vaw5agyXY0ktXwAcRlWCfHQV3EsxGe6X25lwtOoIczgsUW8n+MW8Ds0l+3A2jypqaSWqVz0OAmwdUpXF5QxWoqQ21xqfrChGSQ8Em5H/LKfS4EvBxsF+J5WW8SUQZs4kE7bZAkuNL+vl3oLDTjR3tZop6CRGJrEIkhYTEYMbsD7LHtBfIC+lZSKlvxoeNtk5OZdPwk1JMFw== 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=HD/grpbbGtyJTNtddlw+D9zZYbJ6z0DvrZ2KRKuQRTw=; b=Yrptgb9evCt++RUMPzrNhFL5W2DftwJFC6EhodMgJXA3LgQ111seV5XvGh8Q+hlSGSjUq4l73aDHe/ryFBNKFRE0JguPqFTENplN42zqE2fUZ+SrWqye9WnDcEsswDFklj0pp8JCO2Qt7epFWsHNIMxm9MrUtGPuolUWecEOFG8LT1rI+c57tAXbR+mXEO5NeCMp7RbEp6SYwkuFprPQ5zxXVyxnvkA0n1F186rk/JnkJ+alkGT8LhfX0zKCA5M07YhJssMH1LYPg9fdOR3vWS7shmDEg05ZRZbVJS8bmy46Jo3S3jPcJcSK/WMsNe3rQr0qpdCraSCOzAQnSNU/oA== 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=HD/grpbbGtyJTNtddlw+D9zZYbJ6z0DvrZ2KRKuQRTw=; b=KVgn/OLQPbGyiU21YvtH5TC8jCGgQlVaMd7OymodF9AxC0gB276GGp9ip1VX4NJWIqErcRzFXnQXGub6x+76t94Svzizi4TWd//V1zW/pjuihELxfh7cWV/urKeN1+5ECKuVr/e6CTsTZjm5Anap1n7x598Lcy5y65QJfJDl2t3078Pf6r7Bip4KUNfJwYuLX/pSBsw0oj32Ccvpq9SjdFsWzezpkMDmqh2wmafpUIGwJaR4awPUQDJfFcB3sXeEAE5ddLR4vywnG7it2yXqgGns03XCpi0c4PWIz+S1yT5D7cv5N8KRzd5HvBg7z0JQli5cuSoe6lFiz+tdNNsxFg== 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 v5 13/32] hw/arm/smmuv3-accel: Add nested vSTE install/uninstall support Date: Fri, 31 Oct 2025 10:49:46 +0000 Message-ID: <20251031105005.24618-14-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: CY4PEPF0000EE30:EE_|MN6PR12MB8514:EE_ X-MS-Office365-Filtering-Correlation-Id: 0f063ea2-3894-48d7-baad-08de186bc30a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?eK4XfNFgcsSGA70jcQrqe23ie7wMF+/ySUxhufT6pefMmDnyLhucndI5wYoO?= =?us-ascii?Q?cvHFLsytTkVQUzuFnsz/XaucbAw8COlM7/jvXjAA/IXKxUat/p7/pCYKga2Z?= =?us-ascii?Q?PilfGD2goreu4sA9+mKVPGIv1pudVI36Kn4LHayG52sm8fRBr2YfukVVUUB7?= =?us-ascii?Q?jvc+01q1eTYBmZkXsaGXls1dt8UGkVLs80B/DP37DqED7JXTHr8OEBPP9/ky?= =?us-ascii?Q?nrpd8tWJ4DPLlqdBKy22nwtPvghDyj+4QfziF4eZ+2dC93DxynZllhPcwZTZ?= =?us-ascii?Q?v51c73ikrGVazdXQoLnJRzaLzxA7ClhJ1mPqk4zp/hq7Ewy8kcTyP82Urnbb?= =?us-ascii?Q?BnWJqfSsB9iZpgJ5WyyepkY9yZK0jBEVY8AVZ1Gak1uBvBXzzUPoeVBfSoTi?= =?us-ascii?Q?JL+AIeZ8tpnX5gjvdzy1rLnvuHbl7mZzw3TT9TZZuvdYFyESG9PoH1+gODOG?= =?us-ascii?Q?3CuUeCq8vpnrxYCJT3oc32+jeS3en5PiHs56kSDtLd6eOEVlVrIWV2m/bVmi?= =?us-ascii?Q?ApujXqaLmU2kz4l7KnDTYsBNkV3iPWYbG3qoVuLX+Pm8yN7cxbxjt6MJJ/kN?= =?us-ascii?Q?tJIffaEjk6Vph9ue1SeMrgVzhdPsFhoZBOS4rHduur9qtOeqfmQH5+nug5W2?= =?us-ascii?Q?EPLGUsrK+T4jSi6Nmuu6zFoJZkgUw3G33rdcXruiYVKYuvuCCYrdckh8jF7Z?= =?us-ascii?Q?PgsqQCMCsqxite3KJQpDHQX+UWM6w+oDP2JkgPuUw6MxV4pljzXstFNmigVd?= =?us-ascii?Q?WK0cFylyAmgr6IJ+Y6DHd9gKQ1govrFpGKFiSqWwHdqMpb5/morBVXLNvW7x?= =?us-ascii?Q?j1L3h+v55ZCBAuooyzHxTDWVjwJ/QYD2Oc8AJ2ELjqzHMyIej/OJOta9JWsy?= =?us-ascii?Q?JHJIg+yfkswzd14oEkidMb8eLG4f6Zo60E1luH+2/52qrL32kzrXZbSNtwUt?= =?us-ascii?Q?KMYcn/v3s11uV49WJ/moukbHwio3guTJULhYE5xRhJFjKi4TnLrhWdTr+TCi?= =?us-ascii?Q?Cq/7HaqfnF3Fb0gg6nGE71RXN6CWvyNcK9dkvQGcfTaoCSSPkjsndEv8kgRu?= =?us-ascii?Q?0f/L32BkarTxQl2pVlaqfbpqfjQwMqebW2/t3F5XlrTRO0LE9LozeWdUdPd1?= =?us-ascii?Q?a5qONqHgqMt47Vc50JAufaJ4PEOzj8kRkbh3FYJqSfmfH0ev+xCYJmvE1XWe?= =?us-ascii?Q?EzYLpghdAdP0qdMHQ92+v+KHAcaOYScsmP/x40nPl6q4YHZ0SWVf+hjsCuVN?= =?us-ascii?Q?PURPXeABCiBLyVT6M6oz/mDVW5UebTmWwwMs5U1sxJUKVv08/IAdXWe4iu9U?= =?us-ascii?Q?4L/S31p30psD8zI22YRqutkyovXpMdyGK894ocbA1105noyfMpscgipPsE/F?= =?us-ascii?Q?lH5G5rMGDFDBas5vKuWCGuWk28CGcb7XQYKd8FwRr+w3THz2wTr55icM8I0A?= =?us-ascii?Q?bDGm727rq++EdiAJjh01TT8pxHkvFjw5Wi/gc4txxBJgLy3NTPSPa5ghW8NX?= =?us-ascii?Q?FC3p6Xo7cE9RGAPukKsrMUXq6G+FCP55OK7Ox1N12bITG/n7epZxbwZLYcda?= =?us-ascii?Q?DccNDNZ4UgTe7sQbtkQ=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)(36860700013)(7416014)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:44.4830 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0f063ea2-3894-48d7-baad-08de186bc30a 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: CY4PEPF0000EE30.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8514 Received-SPF: permerror client-ip=2a01:111:f403:c107::1; envelope-from=skolothumtho@nvidia.com; helo=PH8PR06CU001.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, 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: 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: 1761908893543154100 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen A device placed behind a vSMMU instance must have corresponding vSTEs (bypass, abort, or translate) installed. The bypass and abort proxy nested HWPTs are pre-allocated. For translat HWPT, a vDEVICE object is allocated and associated with the vIOMMU for each guest device. This allows the host kernel to establish a virtual SID to physical SID mapping, which is required for handling invalidations and event reporting. An translate HWPT is allocated based on the guest STE configuration and attached to the device when the guest issues SMMU_CMD_CFGI_STE or SMMU_CMD_CFGI_STE_RANGE, provided the STE enables S1 translation. If the guest STE is invalid or S1 translation is disabled, the device is attached to one of the pre-allocated ABORT or BYPASS HWPTs instead. While at it, export both smmu_find_ste() and smmuv3_flush_config() for use here. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3-accel.c | 193 +++++++++++++++++++++++++++++++++++++++ hw/arm/smmuv3-accel.h | 23 +++++ hw/arm/smmuv3-internal.h | 20 ++++ hw/arm/smmuv3.c | 18 +++- hw/arm/trace-events | 2 + 5 files changed, 253 insertions(+), 3 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index d4d65299a8..c74e95a0ea 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -28,6 +28,191 @@ MemoryRegion root; MemoryRegion sysmem; static AddressSpace *shared_as_sysmem; =20 +static bool +smmuv3_accel_alloc_vdev(SMMUv3AccelDevice *accel_dev, int sid, Error **err= p) +{ + SMMUViommu *vsmmu =3D accel_dev->vsmmu; + IOMMUFDVdev *vdev; + uint32_t vdevice_id; + + if (!accel_dev->idev || accel_dev->vdev) { + return true; + } + + if (!iommufd_backend_alloc_vdev(vsmmu->iommufd, accel_dev->idev->devid, + vsmmu->viommu.viommu_id, sid, + &vdevice_id, errp)) { + return false; + } + if (!host_iommu_device_iommufd_attach_hwpt(accel_dev->idev, + vsmmu->bypass_hwpt_id, errp= )) { + iommufd_backend_free_id(vsmmu->iommufd, vdevice_id); + return false; + } + + vdev =3D g_new(IOMMUFDVdev, 1); + vdev->vdevice_id =3D vdevice_id; + vdev->virt_id =3D sid; + accel_dev->vdev =3D vdev; + return true; +} + +static bool +smmuv3_accel_dev_uninstall_nested_ste(SMMUv3AccelDevice *accel_dev, bool a= bort, + Error **errp) +{ + HostIOMMUDeviceIOMMUFD *idev =3D accel_dev->idev; + SMMUS1Hwpt *s1_hwpt =3D accel_dev->s1_hwpt; + uint32_t hwpt_id; + + if (!s1_hwpt || !accel_dev->vsmmu) { + return true; + } + + if (abort) { + hwpt_id =3D accel_dev->vsmmu->abort_hwpt_id; + } else { + hwpt_id =3D accel_dev->vsmmu->bypass_hwpt_id; + } + + if (!host_iommu_device_iommufd_attach_hwpt(idev, hwpt_id, errp)) { + return false; + } + trace_smmuv3_accel_uninstall_nested_ste(smmu_get_sid(&accel_dev->sdev), + abort ? "abort" : "bypass", + hwpt_id); + + iommufd_backend_free_id(s1_hwpt->iommufd, s1_hwpt->hwpt_id); + accel_dev->s1_hwpt =3D NULL; + g_free(s1_hwpt); + return true; +} + +static bool +smmuv3_accel_dev_install_nested_ste(SMMUv3AccelDevice *accel_dev, + uint32_t data_type, uint32_t data_len, + void *data, Error **errp) +{ + SMMUViommu *vsmmu =3D accel_dev->vsmmu; + SMMUS1Hwpt *s1_hwpt =3D accel_dev->s1_hwpt; + HostIOMMUDeviceIOMMUFD *idev =3D accel_dev->idev; + uint32_t flags =3D 0; + + if (!idev || !vsmmu) { + error_setg(errp, "Device 0x%x has no associated IOMMU dev or vIOMM= U", + smmu_get_sid(&accel_dev->sdev)); + return false; + } + + if (s1_hwpt) { + if (!smmuv3_accel_dev_uninstall_nested_ste(accel_dev, true, errp))= { + return false; + } + } + + s1_hwpt =3D g_new0(SMMUS1Hwpt, 1); + s1_hwpt->iommufd =3D idev->iommufd; + if (!iommufd_backend_alloc_hwpt(idev->iommufd, idev->devid, + vsmmu->viommu.viommu_id, flags, + data_type, data_len, data, + &s1_hwpt->hwpt_id, errp)) { + return false; + } + + if (!host_iommu_device_iommufd_attach_hwpt(idev, s1_hwpt->hwpt_id, err= p)) { + iommufd_backend_free_id(idev->iommufd, s1_hwpt->hwpt_id); + return false; + } + accel_dev->s1_hwpt =3D s1_hwpt; + return true; +} + +bool +smmuv3_accel_install_nested_ste(SMMUv3State *s, SMMUDevice *sdev, int sid, + Error **errp) +{ + SMMUv3AccelDevice *accel_dev; + SMMUEventInfo event =3D {.type =3D SMMU_EVT_NONE, .sid =3D sid, + .inval_ste_allowed =3D true}; + struct iommu_hwpt_arm_smmuv3 nested_data =3D {}; + uint64_t ste_0, ste_1; + uint32_t config; + STE ste; + int ret; + + if (!s->accel) { + return true; + } + + accel_dev =3D container_of(sdev, SMMUv3AccelDevice, sdev); + if (!accel_dev->vsmmu) { + return true; + } + + if (!smmuv3_accel_alloc_vdev(accel_dev, sid, errp)) { + return false; + } + + ret =3D smmu_find_ste(sdev->smmu, sid, &ste, &event); + if (ret) { + error_setg(errp, "Failed to find STE for Device 0x%x", sid); + return true; + } + + config =3D STE_CONFIG(&ste); + if (!STE_VALID(&ste) || !STE_CFG_S1_ENABLED(config)) { + if (!smmuv3_accel_dev_uninstall_nested_ste(accel_dev, + STE_CFG_ABORT(config), + errp)) { + return false; + } + smmuv3_flush_config(sdev); + return true; + } + + ste_0 =3D (uint64_t)ste.word[0] | (uint64_t)ste.word[1] << 32; + ste_1 =3D (uint64_t)ste.word[2] | (uint64_t)ste.word[3] << 32; + nested_data.ste[0] =3D cpu_to_le64(ste_0 & STE0_MASK); + nested_data.ste[1] =3D cpu_to_le64(ste_1 & STE1_MASK); + + if (!smmuv3_accel_dev_install_nested_ste(accel_dev, + IOMMU_HWPT_DATA_ARM_SMMUV3, + sizeof(nested_data), + &nested_data, errp)) { + error_append_hint(errp, "Unable to install sid=3D0x%x nested STE= =3D" + "0x%"PRIx64":=3D0x%"PRIx64"", sid, + (uint64_t)le64_to_cpu(nested_data.ste[1]), + (uint64_t)le64_to_cpu(nested_data.ste[0])); + return false; + } + trace_smmuv3_accel_install_nested_ste(sid, nested_data.ste[1], + nested_data.ste[0]); + return true; +} + +bool smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SMMUSIDRange *r= ange, + Error **errp) +{ + SMMUv3AccelState *s_accel =3D s->s_accel; + SMMUv3AccelDevice *accel_dev; + + if (!s_accel || !s_accel->vsmmu) { + return true; + } + + QLIST_FOREACH(accel_dev, &s_accel->vsmmu->device_list, next) { + uint32_t sid =3D smmu_get_sid(&accel_dev->sdev); + + if (sid >=3D range->start && sid <=3D range->end) { + if (!smmuv3_accel_install_nested_ste(s, &accel_dev->sdev, + sid, errp)) { + return false; + } + } + } + return true; +} + static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUState *bs, SMMUPciBus *= sbus, PCIBus *bus, int devfn) { @@ -154,6 +339,7 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bus= , void *opaque, SMMUv3State *s =3D ARM_SMMUV3(bs); SMMUPciBus *sbus =3D g_hash_table_lookup(bs->smmu_pcibus_by_busptr, bu= s); SMMUv3AccelDevice *accel_dev; + IOMMUFDVdev *vdev; SMMUViommu *vsmmu; SMMUDevice *sdev; uint16_t sid; @@ -182,6 +368,13 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bu= s, void *opaque, trace_smmuv3_accel_unset_iommu_device(devfn, sid); =20 vsmmu =3D s->s_accel->vsmmu; + vdev =3D accel_dev->vdev; + if (vdev) { + iommufd_backend_free_id(vsmmu->iommufd, vdev->vdevice_id); + g_free(vdev); + accel_dev->vdev =3D NULL; + } + if (QLIST_EMPTY(&vsmmu->device_list)) { iommufd_backend_free_id(vsmmu->iommufd, vsmmu->bypass_hwpt_id); iommufd_backend_free_id(vsmmu->iommufd, vsmmu->abort_hwpt_id); diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index d81f90c32c..73b44cd7be 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -27,9 +27,16 @@ typedef struct SMMUViommu { QLIST_HEAD(, SMMUv3AccelDevice) device_list; } SMMUViommu; =20 +typedef struct SMMUS1Hwpt { + IOMMUFDBackend *iommufd; + uint32_t hwpt_id; +} SMMUS1Hwpt; + typedef struct SMMUv3AccelDevice { SMMUDevice sdev; HostIOMMUDeviceIOMMUFD *idev; + SMMUS1Hwpt *s1_hwpt; + IOMMUFDVdev *vdev; SMMUViommu *vsmmu; QLIST_ENTRY(SMMUv3AccelDevice) next; } SMMUv3AccelDevice; @@ -40,10 +47,26 @@ typedef struct SMMUv3AccelState { =20 #ifdef CONFIG_ARM_SMMUV3_ACCEL void smmuv3_accel_init(SMMUv3State *s); +bool smmuv3_accel_install_nested_ste(SMMUv3State *s, SMMUDevice *sdev, int= sid, + Error **errp); +bool smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SMMUSIDRange *r= ange, + Error **errp); #else static inline void smmuv3_accel_init(SMMUv3State *s) { } +static inline bool +smmuv3_accel_install_nested_ste(SMMUv3State *s, SMMUDevice *sdev, int sid, + Error **errp) +{ + return true; +} +static inline bool +smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SMMUSIDRange *range, + Error **errp) +{ + return true; +} #endif =20 #endif /* HW_ARM_SMMUV3_ACCEL_H */ diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index 03d86cfc5c..5fd88b4257 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -547,6 +547,9 @@ typedef struct CD { uint32_t word[16]; } CD; =20 +int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE *ste, SMMUEventInfo *e= vent); +void smmuv3_flush_config(SMMUDevice *sdev); + /* STE fields */ =20 #define STE_VALID(x) extract32((x)->word[0], 0, 1) @@ -586,6 +589,23 @@ typedef struct CD { #define SMMU_STE_VALID (1ULL << 0) #define SMMU_STE_CFG_BYPASS (1ULL << 3) =20 +#define STE0_V MAKE_64BIT_MASK(0, 1) +#define STE0_CONFIG MAKE_64BIT_MASK(1, 3) +#define STE0_S1FMT MAKE_64BIT_MASK(4, 2) +#define STE0_CTXPTR MAKE_64BIT_MASK(6, 50) +#define STE0_S1CDMAX MAKE_64BIT_MASK(59, 5) +#define STE0_MASK (STE0_S1CDMAX | STE0_CTXPTR | STE0_S1FMT | STE0_CONFI= G | \ + STE0_V) + +#define STE1_S1DSS MAKE_64BIT_MASK(0, 2) +#define STE1_S1CIR MAKE_64BIT_MASK(2, 2) +#define STE1_S1COR MAKE_64BIT_MASK(4, 2) +#define STE1_S1CSH MAKE_64BIT_MASK(6, 2) +#define STE1_S1STALLD MAKE_64BIT_MASK(27, 1) +#define STE1_EATS MAKE_64BIT_MASK(28, 2) +#define STE1_MASK (STE1_EATS | STE1_S1STALLD | STE1_S1CSH | STE1_S1COR= | \ + STE1_S1CIR | STE1_S1DSS) + #define SMMU_GBPA_ABORT (1UL << 20) =20 static inline int oas2bits(int oas_field) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index ef991cb7d8..1fd8aaa0c7 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -630,8 +630,7 @@ bad_ste: * Supports linear and 2-level stream table * Return 0 on success, -EINVAL otherwise */ -static int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE *ste, - SMMUEventInfo *event) +int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE *ste, SMMUEventInfo *e= vent) { dma_addr_t addr, strtab_base; uint32_t log2size; @@ -900,7 +899,7 @@ static SMMUTransCfg *smmuv3_get_config(SMMUDevice *sdev= , SMMUEventInfo *event) return cfg; } =20 -static void smmuv3_flush_config(SMMUDevice *sdev) +void smmuv3_flush_config(SMMUDevice *sdev) { SMMUv3State *s =3D sdev->smmu; SMMUState *bc =3D &s->smmu_state; @@ -1330,6 +1329,7 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) { uint32_t sid =3D CMD_SID(&cmd); SMMUDevice *sdev =3D smmu_find_sdev(bs, sid); + Error *local_err =3D NULL; =20 if (CMD_SSEC(&cmd)) { cmd_error =3D SMMU_CERROR_ILL; @@ -1341,6 +1341,11 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) } =20 trace_smmuv3_cmdq_cfgi_ste(sid); + if (!smmuv3_accel_install_nested_ste(s, sdev, sid, &local_err)= ) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } smmuv3_flush_config(sdev); =20 break; @@ -1350,6 +1355,7 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) uint32_t sid =3D CMD_SID(&cmd), mask; uint8_t range =3D CMD_STE_RANGE(&cmd); SMMUSIDRange sid_range; + Error *local_err =3D NULL; =20 if (CMD_SSEC(&cmd)) { cmd_error =3D SMMU_CERROR_ILL; @@ -1361,6 +1367,12 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) sid_range.end =3D sid_range.start + mask; =20 trace_smmuv3_cmdq_cfgi_ste_range(sid_range.start, sid_range.en= d); + if (!smmuv3_accel_install_nested_ste_range(s, &sid_range, + &local_err)) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } smmu_configs_inv_sid_range(bs, sid_range); break; } diff --git a/hw/arm/trace-events b/hw/arm/trace-events index 49c0460f30..2e0b1f8f6f 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -69,6 +69,8 @@ smmu_reset_exit(void) "" #smmuv3-accel.c smmuv3_accel_set_iommu_device(int devfn, uint32_t sid) "devfn=3D0x%x (idev= devid=3D0x%x)" smmuv3_accel_unset_iommu_device(int devfn, uint32_t sid) "devfn=3D0x%x (id= ev devid=3D0x%x)" +smmuv3_accel_install_nested_ste(uint32_t sid, uint64_t ste_1, uint64_t ste= _0) "sid=3D%d ste=3D%"PRIx64":%"PRIx64 +smmuv3_accel_uninstall_nested_ste(uint32_t sid, const char *ste_cfg, uint3= 2_t hwpt_id) "sid=3D%d attached %s hwpt_id=3D%u" =20 # strongarm.c strongarm_uart_update_parameters(const char *label, int speed, char parity= , int data_bits, int stop_bits) "%s speed=3D%d parity=3D%c data=3D%d stop= =3D%d" --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908310; cv=pass; d=zohomail.com; s=zohoarc; b=TxKEGwQeuCIBTolpeCSWa+dBBO8DdP/HSmadvJWcwoftPSU6T5GKJZlZb9KXwjwBLaV9jWfPuVGK1IdsDj8x4jUpYZr2p8wElWw+24nC3BC/jHVeRCc01jBacubJhzehwLY5jnxqaylWftr3JX31KcDcHt+/zcCgne6LakgxNno= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908310; 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=zBshBLrBLQ7PW3X9kfcNX2QLfyNZMDHiUhVg0U9w3J8=; b=KBoT+TjL39b0juNwAoSoKaFgHpwvi4MqXygwIW2g9y62P0X9Tz32UTQznu6Gfq/7Rdd+hwshzzyHzOByLV0EoyeOeRc+wrmCshrC+m/ByXh1vaL2PzlVCPfZPXd1Cqx9tdU7YOxyFEKBCnkxFhQeUxyhEpyjeGN2xJmP/ScR6Qw= 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 1761908310109784.433427885758; Fri, 31 Oct 2025 03:58:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmb-0006hq-QW; Fri, 31 Oct 2025 06:55:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlt-0004bO-Bp; Fri, 31 Oct 2025 06:54:22 -0400 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.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 1vEmli-0002yi-FW; Fri, 31 Oct 2025 06:54:16 -0400 Received: from CYXPR02CA0027.namprd02.prod.outlook.com (2603:10b6:930:cc::17) by DS2PR12MB9614.namprd12.prod.outlook.com (2603:10b6:8:276::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:53:49 +0000 Received: from CY4PEPF0000EE36.namprd05.prod.outlook.com (2603:10b6:930:cc:cafe::ca) by CYXPR02CA0027.outlook.office365.com (2603:10b6:930:cc::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:45 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE36.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:49 +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, 31 Oct 2025 03:53:40 -0700 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; Fri, 31 Oct 2025 03:53:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DVsSzQKn2QU/m7dWDC+hHyJBxf/v1w1mFpNBjUvEyw7cbOf5QHmLQUdadEghjCEyEo3yRYViqMGDBiTFbUwaP56Qdr4QPxLjpF8Q3SEIRFeF881jPNMWUIp7K/EHFyZs2DKSNC4a3iyKdg4wlCMwx1THZfyt3vn+4UsaITsRHDdl34nPh4LUzbI3U0ol46DOaC+a4pXlu388qwdDTCxHIrSkrrp4FBrNXY9SuL1lRvNzgucxnxn7JwCkS12Z4ezIkl2aJmWYGJAb0ngmHFtSANn+JJCdm8MaLZVZVOCjJQjpsofRtMgbwCdL1DIHyfqwFOQpYf0pm7RssWwS3louxg== 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=zBshBLrBLQ7PW3X9kfcNX2QLfyNZMDHiUhVg0U9w3J8=; b=l7XXwyZYht5al1f8TiJpyDIsVDDMhaFy/3CqNWKvdjaOOr7h0DchGFj8vlwXYz0ZlhkKjiEljeE80hNk2hUVl+ejT3ggCvVHcqHaWiYC3ztQ187lhafUaljVcuM8K49IQPXZC74XhWpgAxLan7RWyDsXMiVTfgBamwVsoeU+iYr/e5g1kprVY/Htbtp1pWRT6SEpkILCyuEpWkKAU6SmbHKzsf1q2czZdWrRHHNWNd/lskJxAvdEsLj1cmf0HNQ4sUzR3ZP/8FHy9Dfxhle4CQirxYFzwIKiibnhkXyCEdoBp0d8Q+Qa/eAmNexbNgGgD5z7gpVRSLylBdXjRqZ5tg== 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=zBshBLrBLQ7PW3X9kfcNX2QLfyNZMDHiUhVg0U9w3J8=; b=ZDPeYoy7OsHV0puV5SPl1QQgH/+okTDYP6WBJ++/7RZX98a4duCQjHoTOlS4OLnybE96cagOCUEXvfK6QJj3/xV/4qFQDk60pgdbkzQ2QJJHtXO4TLPGIyr12TYldpguCpwqhEIpb5kfQfQu+rYgO2xA5AKVMAdSmUZU7gi2C0kJV2XQNkSv6DlvIrfZ5QT900vxfj2ptz6cvYY7ql/tNRAWYyehzgTOMenZe6J4wAt4y9oVavDUTQjoudtdKCNujRmq2kn9R26h1gndaVgHcWzPUf0jMQIpjjgdsZCLhX7DdUVwGjGTCJLgbhvKbaIWPlhyGIHt+72+VHCwqMSDIw== 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 v5 14/32] hw/arm/smmuv3-accel: Install SMMUv3 GBPA based hwpt Date: Fri, 31 Oct 2025 10:49:47 +0000 Message-ID: <20251031105005.24618-15-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: CY4PEPF0000EE36:EE_|DS2PR12MB9614:EE_ X-MS-Office365-Filtering-Correlation-Id: 240fb212-9f89-40fc-f6c8-08de186bc5fd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uvxLQ7ChOugwktSvc3DuvSg1dp8/8nMR66hu97MN7wGgOe4JitlrF+d88rd+?= =?us-ascii?Q?qFvdrBxqUUrTvaN3Uup2gGHpA52zTI9NblG8ltVbohz5WXdvULDwJHemb98G?= =?us-ascii?Q?miitZI1OMgAMRc+fl1J0gxaQg9wQd9ADfngCWh/7cxRkhwJu5wShkVJxTyiw?= =?us-ascii?Q?Aadl7jC1xPsgXmb55pDwybijccL+KTuQVxzM7xGwvWTG9xXGAp8FMdEvpk2j?= =?us-ascii?Q?kN9cAJYlbTtdUtxMgnpIqZohN9rtGLypPRdVBUcOA/wtIGh3CWZyDjl2eXbJ?= =?us-ascii?Q?rlblSi8FK6RNQLUSc/x9jicZmeE3kJxmZ7UcFSgm+/Y58wOtXMHzxbQRPh8v?= =?us-ascii?Q?2fuWfloqSWdvZuEXPdDbAJLAR4zisd39TP+JhLCjXxwLjyJUO+b1+O61UJ0X?= =?us-ascii?Q?TwTDeITArfUP0FGR0PYOz2GfjnqqleMUe30qt6N2693jywPDWihc7U1d84Oh?= =?us-ascii?Q?0R09kyvqgonnyVUQwsLyWams1UevnRoKDHly08GMt3PWbN6xIV1wmGq7APC4?= =?us-ascii?Q?CXLKf2014d2lrKp4WKost62yLmh1gQRUhj5AfglGFO/m/le6g6suXqq5xx+P?= =?us-ascii?Q?0YbBpeNLHRWS/02K+Ow0U9q2VI6FQekmkQ9NKaJow30xVtIQYlPbM5SZ9YFz?= =?us-ascii?Q?j9qUh9LqF4XizcFOARnhC0FB75yoHE09ZGhQzeL5VB/0vuwMHgKGePW5dS/V?= =?us-ascii?Q?MBU3u/QL5NeAiGDwXYNBS9aO29UKJwqfg8af3RbUi/gXIOjcTi2ljUqGuM7x?= =?us-ascii?Q?KuDMmi8bJSuYRY/DMqJP3evDGSQ787SZlhE+ssPEBKxKvPvN4JBi6+e+Aw4J?= =?us-ascii?Q?MBN04DkQNBrWHwinff7T2pgkkCfDHXuS2abzym7sxTs6fXN17IHF9U45S5Jb?= =?us-ascii?Q?OnFGsVNDPG6ofIaH0XVm93zaJLt0qgk8skgV2bDqPcVVl3AkaWUKFMeZ46sv?= =?us-ascii?Q?mfIm0pRdyEwPp4hvmt1OvobhYzsklTUKzbdmfnEOtbc2ZpCLmsbGrTeJQgLr?= =?us-ascii?Q?MpAI4zEniqxLdNtFhv6dc0Xc5/ByU6bRLaO+w4VwZbLZUL7uX62FAAELRmWE?= =?us-ascii?Q?aNwoez5iK5c+Ym3/CEvfxHl33chsiU6wPqWl3lt2dMno8ks9RCG+R5RG9AEL?= =?us-ascii?Q?FPktuPH4xWW0Qw7lH8cr3ZtXqchvkbJihg1EHey72AAKaC6wtgdiPvLC21WC?= =?us-ascii?Q?esv0sN96Xr8dJkMFkyrgShFt81TFgBlFMd+onagG2TYZH98MWNQbDwmcsQqS?= =?us-ascii?Q?nxxVnE9jUflKxHixBTe7RixM7Ng34WQA9d8u0I5weBV4Tm02+4Pk1xjC/PPy?= =?us-ascii?Q?sq6RKyNktE43OpAvAyWJJWmDfEwsnOiwFoo6C4iXyr1ejXUKlbCq22erkclH?= =?us-ascii?Q?zRtWetFP+ITcOgTYWe3P5DlHDELPgw8ziHWK53TQigc43WQqtaNbWdxu3ntB?= =?us-ascii?Q?JIiiXIeDN6arosYqeLenCW/FAxxrdPc+rbQogUMRn6MQMgBFHdNA/3uROlw3?= =?us-ascii?Q?gVFlryZ2He7yMJbyJxqO1n1S4/wRt9yRMhgVZAH305yq2LEljCA9pMaCzFlO?= =?us-ascii?Q?gtjpHX2FLkmXhQhKZyY=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)(36860700013)(7416014)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:49.4483 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 240fb212-9f89-40fc-f6c8-08de186bc5fd 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: CY4PEPF0000EE36.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS2PR12MB9614 Received-SPF: permerror client-ip=2a01:111:f403:c107::3; envelope-from=skolothumtho@nvidia.com; helo=PH0PR06CU001.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, 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: 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: 1761908315593158500 Content-Type: text/plain; charset="utf-8" When the Guest reboots or updates the GBPA we need to attach a nested HWPT based on the GBPA register values. Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- hw/arm/smmuv3-accel.c | 42 ++++++++++++++++++++++++++++++++++++++++++ hw/arm/smmuv3-accel.h | 8 ++++++++ hw/arm/smmuv3.c | 2 ++ 3 files changed, 52 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index c74e95a0ea..0573ae3772 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -479,6 +479,48 @@ static const PCIIOMMUOps smmuv3_accel_ops =3D { .unset_iommu_device =3D smmuv3_accel_unset_iommu_device, }; =20 + +/* Based on SMUUv3 GBPA configuration, attach a corresponding HWPT */ +void smmuv3_accel_gbpa_update(SMMUv3State *s) +{ + SMMUv3AccelDevice *accel_dev; + Error *local_err =3D NULL; + SMMUViommu *vsmmu; + uint32_t hwpt_id; + + if (!s->accel || !s->s_accel->vsmmu) { + return; + } + + vsmmu =3D s->s_accel->vsmmu; + /* + * The Linux kernel does not allow configuring GBPA MemAttr, MTCFG, + * ALLOCCFG, SHCFG, PRIVCFG, or INSTCFG fields for a vSTE. Host kernel + * has final control over these parameters. Hence, use one of the + * pre-allocated HWPTs depending on GBPA.ABORT value. + */ + if (s->gbpa & SMMU_GBPA_ABORT) { + hwpt_id =3D vsmmu->abort_hwpt_id; + } else { + hwpt_id =3D vsmmu->bypass_hwpt_id; + } + + QLIST_FOREACH(accel_dev, &vsmmu->device_list, next) { + if (!host_iommu_device_iommufd_attach_hwpt(accel_dev->idev, hwpt_i= d, + &local_err)) { + error_append_hint(&local_err, "Failed to attach GBPA hwpt id %= u " + "for dev id %u", hwpt_id, accel_dev->idev->d= evid); + error_report_err(local_err); + } + } +} + +void smmuv3_accel_reset(SMMUv3State *s) +{ + /* Attach a HWPT based on GBPA reset value */ + smmuv3_accel_gbpa_update(s); +} + static void smmuv3_accel_as_init(SMMUv3State *s) { =20 diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index 73b44cd7be..8931e83dc5 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -51,6 +51,8 @@ bool smmuv3_accel_install_nested_ste(SMMUv3State *s, SMMU= Device *sdev, int sid, Error **errp); bool smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SMMUSIDRange *r= ange, Error **errp); +void smmuv3_accel_gbpa_update(SMMUv3State *s); +void smmuv3_accel_reset(SMMUv3State *s); #else static inline void smmuv3_accel_init(SMMUv3State *s) { @@ -67,6 +69,12 @@ smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SM= MUSIDRange *range, { return true; } +static inline void smmuv3_accel_gbpa_update(SMMUv3State *s) +{ +} +static inline void smmuv3_accel_reset(SMMUv3State *s) +{ +} #endif =20 #endif /* HW_ARM_SMMUV3_ACCEL_H */ diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 1fd8aaa0c7..cc32b618ed 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1603,6 +1603,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_gbpa_update(s); } return MEMTX_OK; case A_STRTAB_BASE: /* 64b */ @@ -1885,6 +1886,7 @@ static void smmu_reset_exit(Object *obj, ResetType ty= pe) } =20 smmuv3_init_regs(s); + smmuv3_accel_reset(s); } =20 static void smmu_realize(DeviceState *d, Error **errp) --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908245; cv=pass; d=zohomail.com; s=zohoarc; b=iihh4UB77KgedOEv5NUZ4JPaB3IM9QtXTiH4S6KaKU3WIpKBFCpGnXVho4ilJQwnZmdXmddrbiFvBLoFMGXjJ4ok/RrAcxNJXc28fLH7QXS31LOOqvSITD7RwIsMx931kPWLTQ1uWmvTV+N78nSjYjnPDyy9jYXoq9M+WyN4K9g= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908245; 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=smYXMaMzV9bIOVuceCDG+5tnSQaxMYi5596VHdCrtaI=; b=fQ0U3o/NZYFpchQ6n5MAPIRmUI27SJDRBL0gQj7v1YutkgvR1SrEV2ST8QFwTuhmnS68vI+Gdtf+BVZik6DIDJiX6Y9U8YqcJqelApWwFoZypsoWD9Slc8qRITfLyuHmTFjvy/vQK2Ged/oSITqi2oVGa2KwC6fbykT6kdkMzIg= 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 1761908245163691.5335233160857; Fri, 31 Oct 2025 03:57:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmM-0005Jr-Qo; Fri, 31 Oct 2025 06:54:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlr-0004b4-Qp; Fri, 31 Oct 2025 06:54:17 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmli-0002yy-9E; Fri, 31 Oct 2025 06:54:14 -0400 Received: from PH7P221CA0050.NAMP221.PROD.OUTLOOK.COM (2603:10b6:510:33c::13) by LV5PR12MB9754.namprd12.prod.outlook.com (2603:10b6:408:305::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.13; Fri, 31 Oct 2025 10:53:55 +0000 Received: from CY4PEPF0000EE30.namprd05.prod.outlook.com (2603:10b6:510:33c:cafe::53) by PH7P221CA0050.outlook.office365.com (2603:10b6:510:33c::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:52 +0000 Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE30.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:55 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Fri, 31 Oct 2025 03:53:45 -0700 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; Fri, 31 Oct 2025 03:53:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bs1gboZww9FGS4VEjue3CSQPokMzKHPIUUaYgBmL2zyU+yA9AZ9Xrc6ZODWJ0FN7ss4qImEWYr2ldanaR4BMGbe9Q+A5/A0XZvecThLskI4u5Uou1w7PLKX0XoCT89chVbURNcnEC2aUMlOXCL9d5NWQMX/wEHR7/viqPVDl0AISVa1Ip1YfRN/44jDosQ5mOZhML6z7BLJ+Xho53iczH7XxQEZ0tbtYeQSLQTMGaWJ7h22E9QnFX3i7ASEWlmbICSw78EFRVDAbINTJuuU5ULxIpcRXEAgr6h/1h7v7qjXh3nFkCDJp/vXxO0CGab6xIlfr9/CcaIS0iMRmYFRNRA== 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=smYXMaMzV9bIOVuceCDG+5tnSQaxMYi5596VHdCrtaI=; b=VFVnMG23sROz9WX05K2w8dn5i2DrsCw8BGwz1285U+P8XfML9jZpTC+AIaBtW0LRtn6yuNCjSzLn3ZXsRGAOB9ISOYufihmNShQm9JN6sQU/L0pa5WHEMyrRZd3Y6jRS6yGtHpgzywAke2N9Sx24Vlazf8djoZ3OwZG9iMGvD/CJgiEr1n+zaRxgHHlaPqRs4PCvoGXyobqkYh0DWQuf98jaYU1PVy39JGHJvQOstp6/aD4poSHYzilslX5b4rHJgBToaZW++RpWX7gBJf4eit4ZA24WbE5jAQcN8mZeiO5QMOC+DtFTIyuQGM0xLmre728cqhSqyA83YQgqn9Plrg== 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=smYXMaMzV9bIOVuceCDG+5tnSQaxMYi5596VHdCrtaI=; b=c+VzCBRFPY3I5FYuomH3S4fey2rcy59baFs1n+/rC9V9Gmn51Rc3I8wh3IxNANkl+K4CBPcspGY1jWaNwf6B1oDAWGvgOiWpYtNn39lFPN052t00Hm49TW7i3otmWO2S6sc5SeFI+FoBMcFA2uz2Rs5PofhsH7ukFdPotCzTAM5ldMOz+YeFZf49VC1DJD4Cpn6e1Wq8yhWfDzykWg0Sk1ahkr+c+Q5zJKXOKfPNlxUKrngAAkzr2WpQFkvcqM0m19cV05gCDs4bzbAG5L7oTIDZ9DYPdW9vQ8TxakttpFhuCS7/2cR9RPoHylhUgRPKGgD4oBVxdhwfAzG3A9/UzA== 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 v5 15/32] hw/pci/pci: Introduce optional get_msi_address_space() callback Date: Fri, 31 Oct 2025 10:49:48 +0000 Message-ID: <20251031105005.24618-16-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: CY4PEPF0000EE30:EE_|LV5PR12MB9754:EE_ X-MS-Office365-Filtering-Correlation-Id: a7e008e3-5887-4ac1-5f8b-08de186bc964 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|376014|82310400026|7416014; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?JWMs=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)(1800799024)(36860700013)(376014)(82310400026)(7416014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:55.1331 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a7e008e3-5887-4ac1-5f8b-08de186bc964 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: CY4PEPF0000EE30.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR12MB9754 Received-SPF: permerror client-ip=2a01:111:f403:c005::5; envelope-from=skolothumtho@nvidia.com; helo=CO1PR03CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 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: 1761908246761158500 On ARM, devices behind an IOMMU have their MSI doorbell addresses translated by the IOMMU. In nested mode, this translation happens in two stages (gIOVA =E2=86=92 gPA =E2=86=92 ITS page). In accelerated SMMUv3 mode, both stages are handled by hardware, so get_address_space() returns the system address space so that VFIO can setup stage-2 mappings for system address space. However, QEMU/KVM also calls this callback when resolving MSI doorbells: kvm_irqchip_add_msi_route() kvm_arch_fixup_msi_route() pci_device_iommu_address_space() get_address_space() VFIO device in the guest with a SMMUv3 is programmed with a gIOVA for MSI doorbell. This gIOVA can't be used to setup the MSI doorbell directly. This needs to be translated to vITS gPA. In order to do the doorbell transalation it needs IOMMU address space. Add an optional get_msi_address_space() callback and use it in this path to return the correct address space for such cases. Cc: Michael S. Tsirkin Suggested-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron Reviewed-by Nicolin Chen Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by Nicolin Chen --- hw/pci/pci.c | 18 ++++++++++++++++++ include/hw/pci/pci.h | 16 ++++++++++++++++ target/arm/kvm.c | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index fa9cf5dab2..1edd711247 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -2982,6 +2982,24 @@ AddressSpace *pci_device_iommu_address_space(PCIDevi= ce *dev) return &address_space_memory; } =20 +AddressSpace *pci_device_iommu_msi_address_space(PCIDevice *dev) +{ + PCIBus *bus; + PCIBus *iommu_bus; + int devfn; + + pci_device_get_iommu_bus_devfn(dev, &iommu_bus, &bus, &devfn); + if (iommu_bus) { + if (iommu_bus->iommu_ops->get_msi_address_space) { + return iommu_bus->iommu_ops->get_msi_address_space(bus, + iommu_bus->iommu_opaque, devfn); + } + return iommu_bus->iommu_ops->get_address_space(bus, + iommu_bus->iommu_opaque, devfn); + } + return &address_space_memory; +} + int pci_iommu_init_iotlb_notifier(PCIDevice *dev, IOMMUNotifier *n, IOMMUNotify fn, void *opaque) { diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index dfeba8c9bd..b731443c67 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -664,6 +664,21 @@ typedef struct PCIIOMMUOps { uint32_t pasid, bool priv_req, bool exec_req, hwaddr addr, bool lpig, uint16_t prgi, bool is= _read, bool is_write); + /** + * @get_msi_address_space: get the address space for MSI doorbell addr= ess + * for devices + * + * Optional callback which returns a pointer to an #AddressSpace. This + * is required if MSI doorbell also gets translated through vIOMMU(eg:= ARM) + * + * @bus: the #PCIBus being accessed. + * + * @opaque: the data passed to pci_setup_iommu(). + * + * @devfn: device and function number + */ + AddressSpace * (*get_msi_address_space)(PCIBus *bus, void *opaque, + int devfn); } PCIIOMMUOps; =20 bool pci_device_get_iommu_bus_devfn(PCIDevice *dev, PCIBus **piommu_bus, @@ -672,6 +687,7 @@ AddressSpace *pci_device_iommu_address_space(PCIDevice = *dev); bool pci_device_set_iommu_device(PCIDevice *dev, HostIOMMUDevice *hiod, Error **errp); void pci_device_unset_iommu_device(PCIDevice *dev); +AddressSpace *pci_device_iommu_msi_address_space(PCIDevice *dev); =20 /** * pci_device_get_viommu_flags: get vIOMMU flags. diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 0d57081e69..0df41128d0 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1611,7 +1611,7 @@ int kvm_arm_set_irq(int cpu, int irqtype, int irq, in= t level) int kvm_arch_fixup_msi_route(struct kvm_irq_routing_entry *route, uint64_t address, uint32_t data, PCIDevice *d= ev) { - AddressSpace *as =3D pci_device_iommu_address_space(dev); + AddressSpace *as =3D pci_device_iommu_msi_address_space(dev); hwaddr xlat, len, doorbell_gpa; MemoryRegionSection mrs; MemoryRegion *mr; --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908345; cv=pass; d=zohomail.com; s=zohoarc; b=jkSHGoloShawyDtKZgMJhKYGgtz8VVd5psvWosw4gxsw0nAkRuwwScDgjLw33IQkSeazMHEk1+yJksrGcLZGSM1Yg/TLMsk4k0HEdWolCyVkhC2kK6QRCV5hyn6Q5wfNVuqlBwYHczetwlCMemGOvPhOkp7RVGhiqN+7EpN1Stk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908345; 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=t/3tGnoLyqadzqVGyYrz0w+2fTck8+yeEPboDIBoOgw=; b=U++0Gu3bTRegS+V0/Vxdk/OP+KgeN4eVysbkLncaj/RKFKlsCZ6uI/z5lbY/M7zgtEZ1ZCL9ZfgpwOky73AFVRfuU1jI+vu1e+GRMlVbP8Nn+j4nbJFYCzUJj0VGBs7/jtYoqqpQ/0HFUPCQg2zTiprA2cKFgMTIydka3l4+QTM= 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 1761908345342336.8062667807461; Fri, 31 Oct 2025 03:59:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmY-0006FN-CA; Fri, 31 Oct 2025 06:55:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlz-0004fX-5y; Fri, 31 Oct 2025 06:54:27 -0400 Received: from mail-westus2azlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c007::2] helo=MW6PR02CU001.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 1vEmlo-0002zE-UA; Fri, 31 Oct 2025 06:54:22 -0400 Received: from MW3PR05CA0020.namprd05.prod.outlook.com (2603:10b6:303:2b::25) by CH3PR12MB7641.namprd12.prod.outlook.com (2603:10b6:610:150::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:54:00 +0000 Received: from MWH0EPF000971E4.namprd02.prod.outlook.com (2603:10b6:303:2b:cafe::68) by MW3PR05CA0020.outlook.office365.com (2603:10b6:303:2b::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.5 via Frontend Transport; Fri, 31 Oct 2025 10:53:50 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000971E4.mail.protection.outlook.com (10.167.243.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:53:59 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Fri, 31 Oct 2025 03:53:49 -0700 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; Fri, 31 Oct 2025 03:53:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Sy5lmgiAWL7vnCRNPEF0kQwAxmzgc6Jx9um8itpQZzzpN6KGdZjleiNHCYI53EZWHPvTEKnVViu+obxgpt3Xjm7xekeiZGRoa1P52USFL+UzTO2zE4CobRrhU21kdQbYug2ld0cmF508on16MBCblDmE6yfvDbprk/EYr98FmqfZTqg34ZBBHNGofk+HEQGG+Z0cT3SoED0Xrp+K93KSdhC4PZP5Pkoi5QbQ9QP2TxC0MrlSRF6QSMkx6EXIQooaFL99xyBlJWyfoXpHPyfDGnwGI8S7OVNWTPRJE9FVuPCpClKLASRIIGEIYzkFD5yUrfLMwmAIaUgZV1HRc0+wdA== 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=t/3tGnoLyqadzqVGyYrz0w+2fTck8+yeEPboDIBoOgw=; b=zK+gZ+xQwqxklcIO0QllLe18aws8F+ToTteLHnYc7a6bn09SKM1N6yOdq/pSjM/7wMg5ELAtzh4TaRkBW+HNLDG8RQxRB117kq6TTW6w2AvStdBdI9tnB8FCvhWlkiydK1ecn3PhlNZ4sXhC62D7BDcqsbzMDiZ+52CkqjEyVfrFjAbLMFyC5Dr0Zow+MIQ3fKaUFxnUXfYCVDpZlS+we5KKAHKVAKi5f73wTRVA/443fjAmWkXelNSEY+ac/tz4WLm2Rhugu9bupmiEVDlJSHq50d6E+Kg9X/V4qLcVm4W7rLhV1HtSVOnB6RLafDvPwPGCpELkretZH+F/TeBY6g== 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=t/3tGnoLyqadzqVGyYrz0w+2fTck8+yeEPboDIBoOgw=; b=Cd83CjRhi8958Fb6E3tTy6gZ6AQHKgSjoUJf8l+/f/biACzA5uzkHkoOdBeCZGcgInf8d3lvAlHixpi6908Da9V5LBcigY7rUQjncVQzX031bRat38A+YYkuNB9FqWmtRpvfHCd6tC19G5fsebSHbRNnDFilBmibzXUwh5qPpv7Hnu0czmutlOH477Mavx8fiDUk8i2mU0yCAJmNCAXWTerAfAnsYwIt+n3oTsHgfO+3sqtK5YteA2KJW5Pp00Qad8AHBarf2n3CiFG8V7XnQG5oTNE8CvrW9xCtNkAFu3komFEtHTBSoRsu7jJb2soSJkj0vP9b1tB9fsJh00fBpg== 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 v5 16/32] hw/arm/smmuv3-accel: Make use of get_msi_address_space() callback Date: Fri, 31 Oct 2025 10:49:49 +0000 Message-ID: <20251031105005.24618-17-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: MWH0EPF000971E4:EE_|CH3PR12MB7641:EE_ X-MS-Office365-Filtering-Correlation-Id: 9faf4361-ef81-4c1e-d24c-08de186bcc10 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|7416014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qZdHh8ohl81jHN6p2lLSTNZoXTuNqUU3zRML++eV2zAHPw/1k1Ml6LwbuRNj?= =?us-ascii?Q?/mvZex/uvsf9P+2M0y7iP05wP64mmZCEKk/dAdyNIg++wtfBYFcbthl8no3h?= =?us-ascii?Q?uIGKHqpM/3jGcnOlRe9SnIOB1A9rJjbzWTK224bNKFIuaiYa6bPHxYrZxEZa?= =?us-ascii?Q?p44YeV9g6Y+lvLNBVgb8rnT5o/za45PrYU4oDFaTFQ3DErouna0f/Yb0EpKD?= =?us-ascii?Q?t/MJPOY7asU6kuGhxip/HzGndleV/sT8xBYOhBshgcY/k11nhi+2ZJ6AdYtk?= =?us-ascii?Q?QM5LsOpNnnTs5lwBEA2f9xzXHak3kd2ohqRnN+bWl8lJoVdoVq7SXMJz0WCZ?= =?us-ascii?Q?ubAjxdR9mWQNL6G9o3rxT4sWii/cUolllrC+PrP8U5TwwufgcO4sx2Hxh5bi?= =?us-ascii?Q?VXo5iEfEibZCaYWGe80lRfR0LQqSF0pLWIbOnLH+ahTqXNtls+9f1kmdMQCp?= =?us-ascii?Q?KT8jF6RqxZVnc2k4BrHZMFFALlLkN5nQTFZGjwzUqYI+szEhGa+EMGIlA3Zy?= =?us-ascii?Q?KOkFt99JYxmayfe2NTd0leXRRtvZzsO/pfqDJVUm2rUyhAUjRxIKDwNpX1zT?= =?us-ascii?Q?EzsNYSw7wsxbQeV5t0MDQvlOHa1KMX6UUerZYuzakXBBXzvJGbAzExb6gFIr?= =?us-ascii?Q?gVSbc2FAlWUrr7dgcuNNjcmzRZP7TWDbauXBIlPmfZyG+3gJuUNjdt2FgtmR?= =?us-ascii?Q?bJK9Jdx4iEl534WyU/sgZtVVqz3i22x1wrESbU2oHP6T4Dv838nhtc3v6M00?= =?us-ascii?Q?3fFqZyNj0J5RnFQ2G/iauvx+oAb3qE1Jrbrrc6+NPcr76MkTwSaoJLL8mqqE?= =?us-ascii?Q?AmPlmgqMp5ORYFXfrtb0MAheCdYf8GkvfAmEK/t2D5DVcvIQXSZ/+JYgYLwc?= =?us-ascii?Q?m3YEAm1eWZ1jTU7cP2L5jZaqxbbzz8494V92angG+cnqMa/JwsJlCXrxFfWA?= =?us-ascii?Q?nDHXVzznCI44nUTZDvZf7iOBFS5ldqGdPI0iun2KmLCUb27C6Dbo+5QtKreV?= =?us-ascii?Q?yiq5BXO3toyIfR+PYt+aApclgKigKKmkQu91Fv3+m+DyWQWdLhDqj10iLY1K?= =?us-ascii?Q?4ijHww9o+BaDctIB9ZW77LXZnFqWYgPIzF8jvSdCoXR/ZnLsM/+ZdbyujrEu?= =?us-ascii?Q?2BfWrhD9ciUn/jMaeCS3XdPUq/sWYzlcY/+kSiMF+Ox8qDuq/uMoMf1MQlWK?= =?us-ascii?Q?tvb3Mv5zWT7CqwUDeeptTv44mdICNyqRmRzffE3I+eFBo47n7n3Dhjgt0PKD?= =?us-ascii?Q?aMR9IxouWEA9LzX9O5jenS/OMA+2GzmqFM4FXw2KudolcnHkMQD0aqJ8PTfl?= =?us-ascii?Q?3PwmrJBTj1C4oooZNuEiNyErTHZD6ZUCsNCJfOL3kBpYx+rdqbdySflhcBqR?= =?us-ascii?Q?DAfm0kytYHA4JpmkMOJ7lNqHpmjL8oWBmSm+HmFG06sgBBEo2NSgS23IJb2r?= =?us-ascii?Q?amdG2JJG75LHN9MSA9X5yDl0n+/tbmQPrjNcL/S8QPKOs4vt2C8WEfBSJySS?= =?us-ascii?Q?aCtBRdYvUtsKiW3ROCVU2ipEqAX05WyVY57y1L7DVVRNEkRfYWiY/1Ek8quy?= =?us-ascii?Q?YkeSFNH7dTZKrY0cR2Q=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)(7416014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:53:59.6035 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9faf4361-ef81-4c1e-d24c-08de186bcc10 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: MWH0EPF000971E4.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7641 Received-SPF: permerror client-ip=2a01:111:f403:c007::2; envelope-from=skolothumtho@nvidia.com; helo=MW6PR02CU001.outbound.protection.outlook.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, KHOP_HELO_FCRDNS=0.399, SPF_HELO_NONE=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: 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: 1761908347001154100 Content-Type: text/plain; charset="utf-8" Implement support for get_msi_address_space() callback and return the IOMMU address space if the device has S1 translation enabled by Guest. Otherwise return system address space. Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3-accel.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 0573ae3772..395c8175da 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -384,6 +384,26 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bu= s, void *opaque, } } =20 +static AddressSpace *smmuv3_accel_get_msi_as(PCIBus *bus, void *opaque, + int devfn) +{ + SMMUState *bs =3D opaque; + SMMUPciBus *sbus =3D smmu_get_sbus(bs, bus); + SMMUv3AccelDevice *accel_dev =3D smmuv3_accel_get_dev(bs, sbus, bus, d= evfn); + SMMUDevice *sdev =3D &accel_dev->sdev; + + /* + * If the assigned vfio-pci dev has S1 translation enabled by Guest, + * return IOMMU address space for MSI translation. Otherwise, return + * system address space. + */ + if (accel_dev->s1_hwpt) { + return &sdev->as; + } else { + return &address_space_memory; + } +} + static bool smmuv3_accel_pdev_allowed(PCIDevice *pdev, bool *vfio_pci) { =20 @@ -477,6 +497,7 @@ static const PCIIOMMUOps smmuv3_accel_ops =3D { .get_viommu_flags =3D smmuv3_accel_get_viommu_flags, .set_iommu_device =3D smmuv3_accel_set_iommu_device, .unset_iommu_device =3D smmuv3_accel_unset_iommu_device, + .get_msi_address_space =3D smmuv3_accel_get_msi_as, }; =20 =20 --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908158; cv=pass; d=zohomail.com; s=zohoarc; b=lIL78ENJgdF73ZwkkrpVIytaJPNo2cLV3/IAvqSa9MpT2lq/HXn4mkbWPMBelEfVeror4XNTAB7vs/JwUBU9cFT0WHWPPd08fdXN2VAazZQLo1jd7br5h85RsA2uy24OGuUeqKnMiAoboBjRKbdPE/yiR0/y9KcWWTzdaFX+T2U= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908158; 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=zaJPUeRUDJXOTWHES77yxEK6wd+zsMjye2o/PJBq/1o=; b=G/GY4nkPECDFQ+4fgpWNB39JTZxhqEyjp001qchgnDyS28uJWjcNeQGeFZ6fr29IBRsM5aw0IrHC4baAzWhgqeF0euYVwtP+aHXFlZKaL21GAkZy4QpjIUB7vghA7UqyHBli9cg/aFJ18ug9KgzVcSyZ5ZcYZR+9WNXbOGOcxMs= 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 1761908157989907.6361471353154; Fri, 31 Oct 2025 03:55:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmz-0007Kz-UX; Fri, 31 Oct 2025 06:55:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlw-0004dm-0v; Fri, 31 Oct 2025 06:54:27 -0400 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 1vEmlq-0002zV-IN; Fri, 31 Oct 2025 06:54:19 -0400 Received: from MN2PR02CA0033.namprd02.prod.outlook.com (2603:10b6:208:fc::46) by CH3PR12MB9024.namprd12.prod.outlook.com (2603:10b6:610:176::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:54:04 +0000 Received: from BL02EPF0001A0FE.namprd03.prod.outlook.com (2603:10b6:208:fc:cafe::63) by MN2PR02CA0033.outlook.office365.com (2603:10b6:208:fc::46) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.14 via Frontend Transport; Fri, 31 Oct 2025 10:54:03 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FE.mail.protection.outlook.com (10.167.242.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:04 +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.1544.14; Fri, 31 Oct 2025 03:53:53 -0700 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; Fri, 31 Oct 2025 03:53:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CrdEQAOrWsB8Bg53fsNGV2beg6DDMHjyvyGasMxlFNO4e+SiLY9CWzFGvdhcP2luYWDvIT5xcV2FhjpRwrgQ43ul5uIdsZ5TefdAnFRK+B/Ztz0Y31hFLPvi9cb6gCOSavIJbzoS/XYL91YLjOov3bJUDV8tbMxJvggTHWuGxlIcH2yUpRVk5/udx+h3/VfnjhDRW+8DK52emBhJ35gOl+nsoE/Umaouqj13cdYCTEqGhzJffG8otTo0eqYUBvN6LEXxSvXf8U/md9fXW7TxXsAqq3oagNmS6Mjk3+LjjWmvGKy7WTIKc78WVlSqwFviZlgiO9I47p81Ujl8EtJXvw== 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=zaJPUeRUDJXOTWHES77yxEK6wd+zsMjye2o/PJBq/1o=; b=dZtM5Y6zDQ8MBsN6gvXe/saH1oaHcWHN3NGfaA0N2bNQj9QETcK4Z8Nl2L6oZblzq+33vZUG66y8JsMfKmTiSZ8TiBzubPKkurz8r4BuwqVpYbNhjr9ZGZEj39FBB01HNUMMCNggdQVHruIirJm0kuE1pu+veES2bbVA8IQmbe4hcyC8AwK0Nq0cIaPSnXhRv9uNi8a7tXzRwSNnizdoisa6b0qjJ6qdYBKoG5MZjCB7cMnXURdgzThxFerbXQgL1xV/BaD+/JQrPZVmcN80+2AQEc+k1geA6B0aKqkgE37TRnrFPBys6i9oEqMKCVHyfzKg5M+XYY15CPmNgkGGVw== 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=zaJPUeRUDJXOTWHES77yxEK6wd+zsMjye2o/PJBq/1o=; b=oFxszCTwhT0sbG4TW3S3o5+jp4wceTrRF5XFY7Et9sI/HNZzG67DJoe14u07jlJyL7WVCWodWerU6uw05IluR7k6NqYIxD677l2NB8JDfoqqM16wDYg7N4eiglEWukQGozdNieY4Eoz1Bf4J2Y6W+5JVoHmBkdz7+YA1kp+9vXAFw5mw9yP/Lb9eaEisbcwLpNGU509bF7sb7mP3XRxCsG2wWqOWe96KKCvF6N/14GMzouJGRLqW9yQPExsYUhL8TA3LsQPRf5xuKc5UfKclSlMYO61zOcWfbj3dqAIPYQ0GRNSaiFEYMRVVu43qiq2iiWFTHD0o+QSOdmZAhXQqnA== 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 v5 17/32] hw/arm/smmuv3-accel: Add support to issue invalidation cmd to host Date: Fri, 31 Oct 2025 10:49:50 +0000 Message-ID: <20251031105005.24618-18-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: BL02EPF0001A0FE:EE_|CH3PR12MB9024:EE_ X-MS-Office365-Filtering-Correlation-Id: dac1f42e-ab1c-4f54-13fd-08de186bceb8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|7416014|376014; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?PgkU=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)(7416014)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:04.0221 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dac1f42e-ab1c-4f54-13fd-08de186bceb8 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: BL02EPF0001A0FE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9024 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: 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: 1761908160760154101 Provide a helper and use that to issue the invalidation cmd to host SMMUv3. We only issue one cmd at a time for now. Support for batching of commands=C2=A0will be added later after analysing t= he impact. Reviewed-by: Jonathan Cameron Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Nicolin Chen --- hw/arm/smmuv3-accel.c | 35 +++++++++++++++++++++++++++++++++++ hw/arm/smmuv3-accel.h | 8 ++++++++ hw/arm/smmuv3.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 395c8175da..a2deda3c32 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -213,6 +213,41 @@ bool smmuv3_accel_install_nested_ste_range(SMMUv3State= *s, SMMUSIDRange *range, return true; } =20 +/* + * This issues the invalidation cmd to the host SMMUv3. + * Note: sdev can be NULL for certain invalidation commands + * e.g., SMMU_CMD_TLBI_NH_ASID, SMMU_CMD_TLBI_NH_VA etc. + */ +bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void *cmd, SMMUDevice *sd= ev, + Error **errp) +{ + SMMUv3State *s =3D ARM_SMMUV3(bs); + SMMUv3AccelState *s_accel =3D s->s_accel; + IOMMUFDViommu *viommu; + uint32_t entry_num =3D 1; + + /* No vIOMMU means no VFIO/IOMMUFD devices, nothing to invalidate. */ + if (!s_accel || !s_accel->vsmmu) { + return true; + } + + /* + * Called for emulated bridges or root ports, but SID-based + * invalidations (e.g. CFGI_CD) apply only to vfio-pci endpoints + * with a valid vIOMMU vdev. + */ + if (sdev && !container_of(sdev, SMMUv3AccelDevice, sdev)->vdev) { + return true; + } + + viommu =3D &s_accel->vsmmu->viommu; + /* Single command (entry_num =3D 1); no need to check returned entry_n= um */ + return iommufd_backend_invalidate_cache( + viommu->iommufd, viommu->viommu_id, + IOMMU_VIOMMU_INVALIDATE_DATA_ARM_SMMUV3, + sizeof(Cmd), &entry_num, cmd, errp); +} + static SMMUv3AccelDevice *smmuv3_accel_get_dev(SMMUState *bs, SMMUPciBus *= sbus, PCIBus *bus, int devfn) { diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index 8931e83dc5..ee79548370 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -51,6 +51,8 @@ bool smmuv3_accel_install_nested_ste(SMMUv3State *s, SMMU= Device *sdev, int sid, Error **errp); bool smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SMMUSIDRange *r= ange, Error **errp); +bool smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd, SMMUDevice *sde= v, + Error **errp); void smmuv3_accel_gbpa_update(SMMUv3State *s); void smmuv3_accel_reset(SMMUv3State *s); #else @@ -69,6 +71,12 @@ smmuv3_accel_install_nested_ste_range(SMMUv3State *s, SM= MUSIDRange *range, { return true; } +static inline bool +smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd, SMMUDevice *sdev, + Error **errp) +{ + return true; +} static inline void smmuv3_accel_gbpa_update(SMMUv3State *s) { } diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index cc32b618ed..15173ddc9c 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1381,6 +1381,7 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) { uint32_t sid =3D CMD_SID(&cmd); SMMUDevice *sdev =3D smmu_find_sdev(bs, sid); + Error *local_err =3D NULL; =20 if (CMD_SSEC(&cmd)) { cmd_error =3D SMMU_CERROR_ILL; @@ -1393,11 +1394,17 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) =20 trace_smmuv3_cmdq_cfgi_cd(sid); smmuv3_flush_config(sdev); + if (!smmuv3_accel_issue_inv_cmd(s, &cmd, sdev, &local_err)) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } break; } case SMMU_CMD_TLBI_NH_ASID: { int asid =3D CMD_ASID(&cmd); + Error *local_err =3D NULL; int vmid =3D -1; =20 if (!STAGE1_SUPPORTED(s)) { @@ -1416,6 +1423,11 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) trace_smmuv3_cmdq_tlbi_nh_asid(asid); smmu_inv_notifiers_all(&s->smmu_state); smmu_iotlb_inv_asid_vmid(bs, asid, vmid); + if (!smmuv3_accel_issue_inv_cmd(s, &cmd, NULL, &local_err)) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } break; } case SMMU_CMD_TLBI_NH_ALL: @@ -1440,18 +1452,36 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) QEMU_FALLTHROUGH; } case SMMU_CMD_TLBI_NSNH_ALL: + { + Error *local_err =3D NULL; + trace_smmuv3_cmdq_tlbi_nsnh(); smmu_inv_notifiers_all(&s->smmu_state); smmu_iotlb_inv_all(bs); + if (!smmuv3_accel_issue_inv_cmd(s, &cmd, NULL, &local_err)) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } break; + } case SMMU_CMD_TLBI_NH_VAA: case SMMU_CMD_TLBI_NH_VA: + { + Error *local_err =3D NULL; + if (!STAGE1_SUPPORTED(s)) { cmd_error =3D SMMU_CERROR_ILL; break; } smmuv3_range_inval(bs, &cmd, SMMU_STAGE_1); + if (!smmuv3_accel_issue_inv_cmd(s, &cmd, NULL, &local_err)) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } break; + } case SMMU_CMD_TLBI_S12_VMALL: { int vmid =3D CMD_VMID(&cmd); --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908153; cv=pass; d=zohomail.com; s=zohoarc; b=Y/og3wk30iVJlLwazB289Invzg+0EGQi/XKEVLRKjzhugBN4mNoI9dZ0wbw0jGjT3Mv5R1FkxxCSHakJmzXrBTI1lACLQ8/WfVKoRNh6sGwSXQl6ZroOOMqsusTBOtgGseIC0/QV1Pugz7OEsvRE5zMPV0ZnCR8jaXStgj+Rx8A= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908153; 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=V1564gZWsiX8wsj62jsFc/NIGNl9IxdjAXWZ7sqBwtA=; b=ElraA1T/sosZ/zuAYeJSR9TVhXCL5ukuuSOTBD6/4fyJoGlVlIAioy+Om0JrcUKi6K6wceijj7/Y5l9BUd7eWZQlVSTyRrBbEedstcOx95KQRYoEx0uhIIcg3kYKXK57N81ZQgU4bd/7Vu8OX/F6fMSOHGBmrj1L2HvBil6/MuA= 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 1761908153708796.3869801614661; Fri, 31 Oct 2025 03:55:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmml-00070i-6f; Fri, 31 Oct 2025 06:55:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlt-0004bP-1l; Fri, 31 Oct 2025 06:54:19 -0400 Received: from mail-southcentralusazlp170130001.outbound.protection.outlook.com ([2a01:111:f403:c10c::1] helo=SA9PR02CU001.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 1vEmlo-0002zi-T6; Fri, 31 Oct 2025 06:54:16 -0400 Received: from BLAPR03CA0178.namprd03.prod.outlook.com (2603:10b6:208:32f::32) by SN7PR12MB6790.namprd12.prod.outlook.com (2603:10b6:806:269::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.17; Fri, 31 Oct 2025 10:54:06 +0000 Received: from BL02EPF0001A103.namprd05.prod.outlook.com (2603:10b6:208:32f:cafe::b) by BLAPR03CA0178.outlook.office365.com (2603:10b6:208:32f::32) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:53:54 +0000 Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A103.mail.protection.outlook.com (10.167.241.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:05 +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, 31 Oct 2025 03:53:57 -0700 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; Fri, 31 Oct 2025 03:53:54 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KdDsSrG/Mztal2lKG9f0O9l2KhqoyweXOGBkNoz0US4NSUaI5UnH5K7bfRnfnYdG30qVFkdmvIHB3dY7pUkzgkf9vJYRBh8NaUEompdmZ8WVLfpuCT2qKCX+4zM3uh4suzywozRxz26cOnUfit1nTZ1hspN4xo6bfR44NySH3BK8twF5hk/qkuFkVqB+NvDN85Gq81NQnKXTJ5kCeXBgF7D5sEpe+aAxlXou3pdyCeKXrWpL7EqhAKq6QgzLhKBCh+GQ1rUy/LwPZp8TlSb/Lxwyx5VzFLsokbZzRvygsudj5XqjL9HThUWOm8fUlgkRMo/XunX/KIqs9hKJytjAQA== 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=V1564gZWsiX8wsj62jsFc/NIGNl9IxdjAXWZ7sqBwtA=; b=nhh+QMjvFMN+xQF0EF2I3ZplpA3m6fmHQdFHRVPoS5R2SEV0pnIUDp3Zd6PAVNSHQPedYxvGhE7ViW5TAtph4EyVRzE7klYEKMdS9m1Q0RLmfin7veXVuq3Wki++0wWQu+Ha0gX/Mo32OU+OomagIU5eq8xL7/6OJnQLj+cos8ZWh5Jnx5WXvpp5LJGX1SB9DuMrwh7nnj5dQYFf2FCr1lmS+v7SMTwEQmf4I/zr6ZW3vejy13BJU+EsI+tOhdYKE5cuNzgdP1+EASwxPF+4r22mn5AgCgsgitRjq1OKMTNymUcJa1tvBSLMmb6S+UquENHQNF3gvzsepQPqJfliVQ== 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=V1564gZWsiX8wsj62jsFc/NIGNl9IxdjAXWZ7sqBwtA=; b=XaolbOgP3VIjlFU6xW9VkdsPE+IvQ8TkPGHzzi7/XCNlvHVTN+m64CJBdgVGMf80wIgnRuV+EgL+US3AOwGVg92R7utuV/OiLyL1aQacxcErlu35HYc6bfJOWEI7QhvDM8VGIR8rSIixZE4V+c8WFOhbv0jtwRA6MbfNwsixXpnJm8v7R1OIKOH+pYMZtl1gHWVwTvFEZynJK3VD7kCj8QljSbGaUhUXQ2s9L31tZy9y4hMr7yZphx6uGZ76sXSyDPRvZ0ofAiqZRDZESMS50VMwvUfQNz2Sf8K/uqD9ih6UILnrdTEUKCUR5pT1Q1MiVk16FEErsOapR7yYJ8tyQA== 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 v5 18/32] hw/arm/smmuv3: Initialize ID registers early during realize() Date: Fri, 31 Oct 2025 10:49:51 +0000 Message-ID: <20251031105005.24618-19-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A103:EE_|SN7PR12MB6790:EE_ X-MS-Office365-Filtering-Correlation-Id: a696c65b-18b6-46e6-0716-08de186bcfa0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?s7oL04oeZNQP1tG3PIJ482WGciAW3wNmUVr6Z8OEjphFLXVyY+LBm9zrJIYq?= =?us-ascii?Q?gLaeCS5hXZCSJcExwrfoSmsmxhDJOCxOpcHUuSYWq3ctEA1S+4RpI7rZk3PB?= =?us-ascii?Q?9J6Wheghq8Mpxra5fjcwv69tPCHZsxUwl5g18V7JHy0WbAY6YT7GHMKvbH5w?= =?us-ascii?Q?isPePRsVDFcoCah5EFpJ41wKk+g5Bx37sBXJqB0DUatu2rtQ3SOxbVKC3iyg?= =?us-ascii?Q?g65rei7itu9umqLgLLc+qjjjWB49I92/e/27lXIPF/FuiSddzUAF4meY+tf2?= =?us-ascii?Q?UQ2Cx7Tl2BnbcmWa1sGETtaLwi3pAL2n+96mRazLvjb/KvuE6n5pZIJ74Amq?= =?us-ascii?Q?30Rd3a//BuWtlFtDacu2c5lDRiIO+kXnKAhr3zOyC/PvEvWhcKvmV49S4JDI?= =?us-ascii?Q?8I6SzmooW0y17XnsPYKkVm4ARmB9Z3DzF7405H/JX6blv9H4uRLGbH5C5mnA?= =?us-ascii?Q?PmJiEY7WgRzlwegJT0ARDvOtZ/csF5gUpFEc4HY/1a7fXnsknEr3iGZ16D8f?= =?us-ascii?Q?FWzOx+BU+HKIExwb4ObuXK77RlFoB2SzmmqXckCZXblGLhI/UKuJaOqvT+kN?= =?us-ascii?Q?B5JF1hI4DarCm9rkpg9+RdQBbAXSlReoaXbf9ey6ua+5c+ruVlDYGjw2e0sC?= =?us-ascii?Q?FWUTk+ackMIVqtfNEJNW6bZ1ejlxa8FrfCQoyIXb7e6IY8lHCAP/sUnyO56t?= =?us-ascii?Q?nxsZivB52T/2WVQc2XuaRlC1uFAxQroJVvCkFX06pqdFbX+TnJx8tbkPW7Dg?= =?us-ascii?Q?tpZzTPnXL1k97t3c3m+GS+h3u2go5uQhrM6sj/hn898PykgFEibmHr3UIkvH?= =?us-ascii?Q?wVy5KkCEQny6/EWJrG7E2qHjTPANleHs+6O9/qJ10DdwB1BGNPeU3TMX8CQj?= =?us-ascii?Q?8wXlLwcdzKI97WRqJo0Ff9ds3BgUh2Az6WOQaZrJS/RPddTv7WaqAS9s35bq?= =?us-ascii?Q?l2HtY/Cuug3/bEzKFvw8hlfJ97P6xrwqO4RFNwJ2x4vfrgaYkcSt3oJvnlKC?= =?us-ascii?Q?dJkGDbjsq0A5S9/uCTOURoZQaA+h1RuwXVFi68UXSpwoqp/OD04fgDyODh3F?= =?us-ascii?Q?60yn+EkVkmTAhqYzzZBiW9wnc/zWkzOM68ES+9XDz+MVkP4aXk2dDuJ2v5Ck?= =?us-ascii?Q?W/27n39/d/vhaU6ep4wWxqVJLS0H3APzFWOoP4NmDdaKiX/nUOIErJM9RQok?= =?us-ascii?Q?MSx/s9Uq+JYWE3Erva/Pi2zywUR6gxUQ736SFRgRTLy1fbYeXNmMpFINiaB0?= =?us-ascii?Q?EYmNKcH8fuj3aoMUGOsjd/a6mEahHeOtQNzdKnUz3RP/FelggkLI2MH4CN+e?= =?us-ascii?Q?CcIyE7D8sRyZD/k+qyCHPzEniYGZBiPbGCl4SXUMXavQ0ELFLVS1wtKq0TLu?= =?us-ascii?Q?R9/6UrK5RjnulJU/+fd5j2K9/08YIVHLg1KqzhEmPD1g5XXhDahhEacEizSO?= =?us-ascii?Q?5+09/eqJS0dugmoUyIkA1fUck6O07m//f6z+1JVYhMgKlbT9yhNJ8iMUPyqa?= =?us-ascii?Q?H5XIgHoYaDF2dleCOqFxZ6fzsiSh6jPijx3ZlEjgxO9rdkIV7fiwV4d0YkIp?= =?us-ascii?Q?qLzt0yzq5Z3RIMJZpzI=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)(36860700013)(1800799024)(7416014)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:05.5415 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a696c65b-18b6-46e6-0716-08de186bcfa0 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: BL02EPF0001A103.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6790 Received-SPF: permerror client-ip=2a01:111:f403:c10c::1; envelope-from=skolothumtho@nvidia.com; helo=SA9PR02CU001.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: 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: 1761908156670154100 Content-Type: text/plain; charset="utf-8" Factor out ID register init into smmuv3_init_id_regs() and call it from realize(). This ensures ID registers are initialized early for use in the accelerated SMMUv3 path and will be utilized in subsequent patch. Other registers remain initialized in smmuv3_reset(). Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron Reviewed-by: Nicolin Chen --- hw/arm/smmuv3.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 15173ddc9c..fae545f35c 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -258,7 +258,12 @@ void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo= *info) info->recorded =3D true; } =20 -static void smmuv3_init_regs(SMMUv3State *s) +/* + * Called during realize(), as the ID registers will be accessed early in = the + * SMMUv3 accel path for feature compatibility checks. The remaining regis= ters + * are initialized later in smmuv3_reset(). + */ +static void smmuv3_init_id_regs(SMMUv3State *s) { /* Based on sys property, the stages supported in smmu will be adverti= sed.*/ if (s->stage && !strcmp("2", s->stage)) { @@ -298,7 +303,11 @@ static void smmuv3_init_regs(SMMUv3State *s) s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN4K, 1); s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN16K, 1); s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN64K, 1); + s->aidr =3D 0x1; +} =20 +static void smmuv3_reset(SMMUv3State *s) +{ s->cmdq.base =3D deposit64(s->cmdq.base, 0, 5, SMMU_CMDQS); s->cmdq.prod =3D 0; s->cmdq.cons =3D 0; @@ -310,7 +319,6 @@ static void smmuv3_init_regs(SMMUv3State *s) =20 s->features =3D 0; s->sid_split =3D 0; - s->aidr =3D 0x1; s->cr[0] =3D 0; s->cr0ack =3D 0; s->irq_ctrl =3D 0; @@ -1915,7 +1923,7 @@ static void smmu_reset_exit(Object *obj, ResetType ty= pe) c->parent_phases.exit(obj, type); } =20 - smmuv3_init_regs(s); + smmuv3_reset(s); smmuv3_accel_reset(s); } =20 @@ -1947,6 +1955,7 @@ static void smmu_realize(DeviceState *d, Error **errp) sysbus_init_mmio(dev, &sys->iomem); =20 smmu_init_irq(s, dev); + smmuv3_init_id_regs(s); } =20 static const VMStateDescription vmstate_smmuv3_queue =3D { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908248; cv=pass; d=zohomail.com; s=zohoarc; b=Gp6vnBZhxBSKjleiCA38BoAf/rgMya9Kk4kuNNLe5SdYY7HM6jsSEikBmVwQs4zJnP30LMU6KOjB5RA9gd5W9KXHIA2wrvid+0k6ePt3SQ/e7nhA2HqubVqK1eArriXwaSLRAu7NZ1E+v64qYx6ULeHDicNr4nELzNcIHEZymsw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908248; 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=0UoTXKGRWRZ1acBaSwjtyZR0MJqqaY87u1SXDQ374/c=; b=Wu7ep6e5sBgI2mXPUL2rM6zd3WcShKsw9Jnt9HZcmY8aJ8oYsPW6VBZu9DqB0hi73Gag2DPQ3Ruo112QKxXmVkJda6dgiczhCDbE0kT8cuAbAqBA3WPR9svWF5HFhbxpleEeazMkiVKwXm5CS4HKRdeTBZ/7nnkib5HFGOlWBdw= 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 1761908248346750.5850338010102; Fri, 31 Oct 2025 03:57:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmd-0006ou-SD; Fri, 31 Oct 2025 06:55:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmlx-0004dx-8Z; Fri, 31 Oct 2025 06:54:26 -0400 Received: from mail-westcentralusazlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c112::5] helo=CY7PR03CU001.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 1vEmlt-000309-GY; Fri, 31 Oct 2025 06:54:20 -0400 Received: from BL1PR13CA0109.namprd13.prod.outlook.com (2603:10b6:208:2b9::24) by IA4PR12MB9835.namprd12.prod.outlook.com (2603:10b6:208:54f::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:54:09 +0000 Received: from BL02EPF0001A104.namprd05.prod.outlook.com (2603:10b6:208:2b9:cafe::d6) by BL1PR13CA0109.outlook.office365.com (2603:10b6:208:2b9::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9298.6 via Frontend Transport; Fri, 31 Oct 2025 10:54:09 +0000 Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A104.mail.protection.outlook.com (10.167.241.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:09 +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, 31 Oct 2025 03:54:02 -0700 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; Fri, 31 Oct 2025 03:53:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tyj40cu2LPcrNsktlzSYJ5z4Qdx57jBrv39LFpMEpkD8cKnLVSTuNFgQrEXTug3ijmpi3szEcnTWCL4v2PpK13nNPj+aO2pCwSU/HEP8nqxait9PXQu82rfL9SzvmOxWqPvl3Jq6uWuFYGEcVVbVWGan80SR85VG3TMR0zCak6Qk2zXShuQHwl+UNcNBaPBguiM9jN7YwUgrJGO3SY5nbLRggjQSfDniJIcaH1SA72qGqSL/wW0EIa3DZnuF4SsJ515D/MGPg8qFXjoxviIOPw0Xw+ruq7llYo83Ch14dKJS1zUJ5aB9/9nCcMeUYQcd8tnAsEd0qxh4jeHipQwZAw== 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=0UoTXKGRWRZ1acBaSwjtyZR0MJqqaY87u1SXDQ374/c=; b=KXEf5xXvrMas6QQy+4wNvQ6m941iORKFM7FwtxYirc3meSY233xakhv00Eq/LYbP3Em/XmGY6ukRGDzeELsDORrmgZ7SXHXf0YGBQowKHJPCz8nGrKPbB7RdsDpSGYUHOpN8KALrBnEY7Afofnou5CsDMX50UabmsFRB32NSKbLz+b7SPYtqgvoaSg0DTUrqjOCNdcToCC0+ah8MZc6xKW4p/HsU3tpHFQTdE7mpJmAtH49UB1I5TIuD5Cnqs65LZ7jn3OPSX/rxcWFupOjpMdiEOENFAsUX5h/z3fd/RiAhGmMZaIK0zfXDCijkYwVWnMalJIo5U+brfkPv865eVQ== 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=0UoTXKGRWRZ1acBaSwjtyZR0MJqqaY87u1SXDQ374/c=; b=IXhLPb92C8w9lWx07Z6IDJelpmtCS5VGxvfRKrvM6QFyYP4OQbDvE7CzmKMUKpjqZOvs8W1w+lc1jtnF+IM8xspsNPWqJrS635xuIIq8bqvI0deYolY3VXjMiuVzP0FrGWCXm3ZSIX3uE2flzLNnROIqSqiFSLtCglW43ji5zvRNnlGGRvSIP5OlQ91Fu5Qs6LAYsH459wa2l6mwm3dhg61eJtFpt72dGe8Qx2WxeevHbXILAsQXahy+63DU6jOEAneMVzS3xvu3k233gSoAQAJFqPH5Di4oL0CKzdChOKGIpnULoybewJwlizEjQPPYZjJiKBbWF0m4821noFiY+w== 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 v5 19/32] hw/arm/smmuv3-accel: Get host SMMUv3 hw info and validate Date: Fri, 31 Oct 2025 10:49:52 +0000 Message-ID: <20251031105005.24618-20-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A104:EE_|IA4PR12MB9835:EE_ X-MS-Office365-Filtering-Correlation-Id: c3e10b33-28cd-4031-73aa-08de186bd21f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yY3q9zdj/2qyeMtK1Yfoakt0scraZrUg3Nj8rFnfSjsmdQFUEbtRf7bcchyQ?= =?us-ascii?Q?mR7MfeDEII5yoWfbEkkTKpsTAIDtzqwraPVnvD4poD/TqEMhSIH1t3CIpJ03?= =?us-ascii?Q?qnefWHTbvqTr8wxHQkMIeD4q5aIa6Qfu05bMygWGX4GX3Y+ECnXUbGbrC6Ck?= =?us-ascii?Q?Ir5PY+ttJ5m+AqFQN7zUGo4etC28kk+lFZIQkGxgz0enD/Hw+/QguaiEwEvZ?= =?us-ascii?Q?2MwA4NwmpnvidHPVOACA8or0y6J9f2FLyERkl2FwYy2pnMBB6+wKB+t5luHz?= =?us-ascii?Q?PIkDQLZmprXg+5TBmIXr4lsI2MQmFr/PV3Lm6B4uhv7OqmoB3UhRtdaEZnZ9?= =?us-ascii?Q?SlONGNAniLutAprWm5oIf6Iv4jD5bifijpF+pWLUzkZB8+ZwgJmyOIvVuiYp?= =?us-ascii?Q?X258VquJGpxlSTzafvBf2GK4lNnc5kcnZoC80n0TFgQFTMdy/8Fw9pWAetmB?= =?us-ascii?Q?t4O+kE5u/K2b9YPEvBIKpq+dw5ZPu+kpkRvNadr3D93MfJUb+5EXWkYsmbdr?= =?us-ascii?Q?hs2yhQVeAukLeLSW2HVITmBfnD1lmACSe7FO0YdgDD9q125MWe2ogaaz9nph?= =?us-ascii?Q?0EAMBKFPchT1LilvfXHCcUGRvGMqKQ3DF1DE1z3lTJizOxReUPotYp5aARmE?= =?us-ascii?Q?s/1Ycr48sOw0+pwgxoX0mLQvrfocNcB+LwYULw7dO0LDz+4wCnte2LWIxEwh?= =?us-ascii?Q?AGaS5M/OdGGeO/PZuBKFdmoOyeY3Jy/A8Q0d/i6DFuHJaHMUPesuh+0son+v?= =?us-ascii?Q?rpRgyHJuXdEn041fPji/Bv/2Hs1x4lXgTUKr/t79MAdlHA6bTtejJjS9SCaY?= =?us-ascii?Q?mjaZPZ3fnO6B/dfFevh1YOqp66hfZbmI/g2houCVj4I9/bYzXzrw0zjch2fD?= =?us-ascii?Q?5TnZLW46ndA3cJxP3fpQj9sU0iYd1YDB7XGsEu2VTW6ITWMO0bsZGCYNExz1?= =?us-ascii?Q?TzPFpuC6vhTH4Zd1jrl3EXinHIdpMz95gvrw2wZuOn/wwD2DG+uJUUkHR3gR?= =?us-ascii?Q?hlwJjMGIgMYKV4ojM47i+OcNqs7XD6WRAJOFbOwA5MHLjU+4bRA7el+YIvLz?= =?us-ascii?Q?R3TuOpgD3xn8LjY8ejOkQcvAQJtmZSpKBIeD8IjuzYz/RRE/mz2yZrHwsXPt?= =?us-ascii?Q?QmX510ZPlYm6JI4HeCrhAplkRWRVUoUPVzbmpKPgeZ1rGWAxamDQZU64dLzF?= =?us-ascii?Q?CmwY+t8A//m/s27yoZNRxKLcR8OR2iY2kfi+qnjBNsbm12qEmHBnUdL4BtMp?= =?us-ascii?Q?sceoK6vTRSuCFyxs9cmKyrikBBbbgK8NULGjaQkppNkRfm53jJ8AxNJJD4tm?= =?us-ascii?Q?Qm1ce2EdzOKTxEFRaD/HjRyHzZQIv6j96aIBApPN9uKAanF/AUWWzQ3RwPMp?= =?us-ascii?Q?P68G7DlYdI4lw+XUsu8YT+qbwWjX3SHTSXZc6/qdaZW/4q3Y3z5uXUUx3esi?= =?us-ascii?Q?HadNZyZTFkMp8J46/AVwARAvws/FOZCCLdczJGiG5T+nLU3ETCPFa6mpyVNz?= =?us-ascii?Q?h3lDdiuuivZicyq26nLx+dILx9W3iEQAffrbP1O30w4GQ0g+t9ILxuI5Uxs+?= =?us-ascii?Q?QdiyZ6ua1QGqJGfANDE=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)(7416014)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:09.7314 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c3e10b33-28cd-4031-73aa-08de186bd21f 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: BL02EPF0001A104.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA4PR12MB9835 Received-SPF: permerror client-ip=2a01:111:f403:c112::5; envelope-from=skolothumtho@nvidia.com; helo=CY7PR03CU001.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: 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: 1761908250808158500 Content-Type: text/plain; charset="utf-8" Just before the device gets attached to the SMMUv3, make sure QEMU SMMUv3 features are compatible with the host SMMUv3. Not all fields in the host SMMUv3 IDR registers are meaningful for userspac= e. Only the following fields can be used: - IDR0: ST_LEVEL, TERM_MODEL, STALL_MODEL, TTENDIAN, CD2L, ASID16, TTF - IDR1: SIDSIZE, SSIDSIZE - IDR3: BBML, RIL - IDR5: VAX, GRAN64K, GRAN16K, GRAN4K For now, the check is to make sure the features are in sync to enable basic accelerated SMMUv3 support. Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron Reviewed-by: Nicolin Chen --- hw/arm/smmuv3-accel.c | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index a2deda3c32..8b9f88dd8e 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -28,6 +28,98 @@ MemoryRegion root; MemoryRegion sysmem; static AddressSpace *shared_as_sysmem; =20 +static bool +smmuv3_accel_check_hw_compatible(SMMUv3State *s, + struct iommu_hw_info_arm_smmuv3 *info, + Error **errp) +{ + /* QEMU SMMUv3 supports both linear and 2-level stream tables */ + if (FIELD_EX32(info->idr[0], IDR0, STLEVEL) !=3D + FIELD_EX32(s->idr[0], IDR0, STLEVEL)) { + error_setg(errp, "Host SMMUv3 differs in Stream Table format"); + return false; + } + + /* QEMU SMMUv3 supports only little-endian translation table walks */ + if (FIELD_EX32(info->idr[0], IDR0, TTENDIAN) > + FIELD_EX32(s->idr[0], IDR0, TTENDIAN)) { + error_setg(errp, "Host SMMUv3 doesn't support Little-endian " + "translation table"); + return false; + } + + /* QEMU SMMUv3 supports only AArch64 translation table format */ + if (FIELD_EX32(info->idr[0], IDR0, TTF) < + FIELD_EX32(s->idr[0], IDR0, TTF)) { + error_setg(errp, "Host SMMUv3 doesn't support AArch64 translation " + "table format"); + return false; + } + + /* QEMU SMMUv3 supports SIDSIZE 16 */ + if (FIELD_EX32(info->idr[1], IDR1, SIDSIZE) < + FIELD_EX32(s->idr[1], IDR1, SIDSIZE)) { + error_setg(errp, "Host SMMUv3 SIDSIZE not compatible"); + return false; + } + + /* QEMU SMMUv3 supports Range Invalidation by default */ + if (FIELD_EX32(info->idr[3], IDR3, RIL) !=3D + FIELD_EX32(s->idr[3], IDR3, RIL)) { + error_setg(errp, "Host SMMUv3 doesn't support Range Invalidation"); + return false; + } + + /* QEMU SMMUv3 supports GRAN4K/GRAN16K/GRAN64K translation granules */ + if (FIELD_EX32(info->idr[5], IDR5, GRAN4K) !=3D + FIELD_EX32(s->idr[5], IDR5, GRAN4K)) { + error_setg(errp, "Host SMMUv3 doesn't support 4K translation granu= le"); + return false; + } + if (FIELD_EX32(info->idr[5], IDR5, GRAN16K) !=3D + FIELD_EX32(s->idr[5], IDR5, GRAN16K)) { + error_setg(errp, "Host SMMUv3 doesn't support 16K translation gran= ule"); + return false; + } + if (FIELD_EX32(info->idr[5], IDR5, GRAN64K) !=3D + FIELD_EX32(s->idr[5], IDR5, GRAN64K)) { + error_setg(errp, "Host SMMUv3 doesn't support 64K translation gran= ule"); + return false; + } + + /* QEMU SMMUv3 supports architecture version 3.1 */ + if (info->aidr < s->aidr) { + error_setg(errp, "Host SMMUv3 architecture version not compatible"= ); + return false; + } + return true; +} + +static bool +smmuv3_accel_hw_compatible(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, + Error **errp) +{ + struct iommu_hw_info_arm_smmuv3 info; + uint32_t data_type; + uint64_t caps; + + if (!iommufd_backend_get_device_info(idev->iommufd, idev->devid, &data= _type, + &info, sizeof(info), &caps, errp)= ) { + return false; + } + + if (data_type !=3D IOMMU_HW_INFO_TYPE_ARM_SMMUV3) { + error_setg(errp, "Wrong data type (%d) for Host SMMUv3 device info= ", + data_type); + return false; + } + + if (!smmuv3_accel_check_hw_compatible(s, &info, errp)) { + return false; + } + return true; +} + static bool smmuv3_accel_alloc_vdev(SMMUv3AccelDevice *accel_dev, int sid, Error **err= p) { @@ -356,6 +448,14 @@ static bool smmuv3_accel_set_iommu_device(PCIBus *bus,= void *opaque, int devfn, return true; } =20 + /* + * Check the host SMMUv3 associated with the dev is compatible with the + * QEMU SMMUv3 accel. + */ + if (!smmuv3_accel_hw_compatible(s, idev, errp)) { + return false; + } + if (!smmuv3_accel_dev_alloc_viommu(accel_dev, idev, errp)) { error_append_hint(errp, "Device 0x%x: Unable to alloc viommu", sid= ); return false; --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908907; cv=pass; d=zohomail.com; s=zohoarc; b=O9A3NgXQexm0MiFki4EHuqbLoGUL/qEsm4vCQdNDCzCUOdWKxS46xMEKHlMkj11eGa5ZnUFyQEOBtkq72WLdNXz+lg81C+3jOkvZh2CE9mpmiuTS7w/o9wjjhD1zVcmD4fbPQABUhOiahbvQ0Op65XFGSNAsm+0anMMGc+4qGow= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908907; 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=3xx7t1bIM6tzdozXR3/ut9c9HKLMHGPRjcrZna1gvaM=; b=Y8q1Jion08y0tZ+o5bjochQ5b538uhldIS3L6d3J3oh6p6rhkK0j9k3K0kBWyE7A5hFNWU7LMGjhoWjQB+mG61x2JjwQDeXs3filmk7DID940lUhLkR47ATZ8yDTFACNA6XKrtYYDmWikPXmJP5JKtvrnO4hsqt4j60HoXkP4qI= 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 1761908907287200.99262435161927; Fri, 31 Oct 2025 04:08:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmX-0006RV-Or; Fri, 31 Oct 2025 06:54:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmm9-0004oJ-D2; Fri, 31 Oct 2025 06:54:37 -0400 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 1vEmm3-00031G-8f; Fri, 31 Oct 2025 06:54:32 -0400 Received: from MN2PR12CA0020.namprd12.prod.outlook.com (2603:10b6:208:a8::33) by CH2PR12MB4149.namprd12.prod.outlook.com (2603:10b6:610:7c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.19; Fri, 31 Oct 2025 10:54:17 +0000 Received: from BL02EPF0001A0FB.namprd03.prod.outlook.com (2603:10b6:208:a8:cafe::e1) by MN2PR12CA0020.outlook.office365.com (2603:10b6:208:a8::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:21 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FB.mail.protection.outlook.com (10.167.242.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:16 +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.1544.14; Fri, 31 Oct 2025 03:54:07 -0700 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; Fri, 31 Oct 2025 03:54:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vHJ5jObU8DgS4UK1ybfW9KYCwMS1aAZse6CvzdjU/1/vD4DcH3OBHNbFKAZg0oQEo+EoAIgtiRaFMuhs8/SbMaIBNb4wGPV/kOl2Ybx5Xrcp6MyFjPi/6BxK0mlKEUfUQEM0kVy2+2to7e+uTC2I9zlnW0zL22Qz3J3La+MMiJjIVugskewDnEQH2mzT7sPVDtcoM4pSfqwLmDT9ip61ZO1+xpcsHwLkzEQs6czi1+lOHwblYOaAyllp8lRlUMNSCZBvFXl04FRlyqGmkidCy9zwnFAoQ7L+2L3qT6w5JZvVeTsP8v0c3iGpqtye+NfP5JS1uK3IbbdXHKWi4QfejQ== 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=3xx7t1bIM6tzdozXR3/ut9c9HKLMHGPRjcrZna1gvaM=; b=zQQSLnPPXXcmnBCFcM7xNjKsuBZiR/aZ2jDx0a6G8XvGqsWuvG/B04bN+U38DObHdFCPy0l5+M5AcoaUdSzaCKD8zwMgjdOvoSL4pzz+ijjDDpnInXfB0MIWqfJMYA46KFhigFSrHbpgyC/pQjTCWLTyENo6fZs+oITxk+Y3ZpQ3p7kBftm3LaK9cFuwoSeyu0tP8LxB1Qv4VnK8bQUXmrIew8V7cLJH7fHaZuJnYwd5+T5edEJa55V6xtC8l6RHo+uFRDTEetYlaECNeEetdtiRxJym4MwJGkFgzhkf6Bpf2cx92px1iFhbrE9lKdmtZA8T1iQXJDXQZFlUCDe/Iw== 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=3xx7t1bIM6tzdozXR3/ut9c9HKLMHGPRjcrZna1gvaM=; b=WvK9wQw9c5tAKAP1hQENHREdt33hkRiB2pUbaulv6Q9SSrPNB/qQx/PIEwxG/LPCVzPU4+HfbSHN1LimoxTl8ZEa4ZXTuh9D2dAgDxlr837FBj12JM5wVN0FLj1VSgFWg9m7bALu1zRG5e6GksGkjoO7OI68pCRB3dB46S22AjCEKEZiPdFdCohiP92pYggtgcTEnCiCNDwMRQAaa9ILJR5sWFx1YhgPL/sCiWkHcGsEGBn6QAgAV1zPeN4FkPe1glNV2JGnm6rweNWCektk8WK4bdBXBwhhaQJhz1s0O9enyiE6VcmW1XqULBW5KZnONZSUHQsW2ALrLZicM2+TlQ== 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 v5 20/32] hw/pci-host/gpex: Allow to generate preserve boot config DSM #5 Date: Fri, 31 Oct 2025 10:49:53 +0000 Message-ID: <20251031105005.24618-21-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: BL02EPF0001A0FB:EE_|CH2PR12MB4149:EE_ X-MS-Office365-Filtering-Correlation-Id: 35a271f2-9182-4ab8-3243-08de186bd649 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|376014|7416014|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YjhNSHdVYU1VR1Fkb3dEdldOTzlaMUpQMnV2UDBZNFovQUJRNnVla3dmUndG?= =?utf-8?B?Vld1c0xMbkRNSWFuemcrV1NPZnBoNzZKQzJhWHNJZWcyS29tTTMvblNsalFy?= =?utf-8?B?azc5ZDlJU1VjclowTU1uYVVUbnFabEoxM3d3QmZHeHJGeVpud2xJNjF4NjNh?= =?utf-8?B?a3NlN0IwdzY5a296a3FtV08zY1dlZHBWY2FjcWtITDJ1ZDZvbWliWXNEOWND?= =?utf-8?B?UnFZNjFqRzRwSzdUZTVqT1lXTGRxdWRlbWtLcmVkZTNqQUFIYUo0aXYxeTg1?= =?utf-8?B?SVB5Tm00R1hYaW8wTXd0d0VNTUZMK1haWTdQMndYS1hSblFQcGplZUtBTlJH?= =?utf-8?B?d2N6NUV0ai9pcVhVdHhKQUU4MXQ1cy9yNUdtRFhIQkJQR3hBUXRmeHZTYm5F?= =?utf-8?B?M1VIN3oyNlJpOUwvKzJVQzlUeU5UNmdmMHpacVV1Mm5icXhBOCtPelhjQ28z?= =?utf-8?B?bGhNaEtYUkcyN2NYS2V2UldKMWJxUjJaeHRwQjBzSVp2eW5VclNvSjdCa2wz?= =?utf-8?B?RjZGRi9KRzNQMzhRZGl2ZWRtRFIwc3dyZktXSVRmamtRUDVxaEx3bldKU0tH?= =?utf-8?B?QnBvUk9LWExjM2EwWFJ5OWJEeGlmek5WaE5tVCtZZjcrdXY5OFZaYVNCd1Q0?= =?utf-8?B?ZDNqK1dUeFlZUmMya0ZNV2gra0FZSTVJMG1jZHFXRjdSS1ZsOEwvVjJ3SjlL?= =?utf-8?B?TmdJQy9MTGthbWV5aFNjOXNubG05WFNCdVJFckNoMXpSVXR6Z0RxZjZ5RG12?= =?utf-8?B?Z3FoSG5Fcml4L01qTjkxT2p3NWRUZ0RMZHZaSmZlZXRjM3ZOYlM0enFva01a?= =?utf-8?B?S1R0NDVUOUZ0YUV2VDE3Q054TlQvS3YrbllnUmx4dTduMEYwNXdITjV3TWJr?= =?utf-8?B?U1JTZ0NIVWhMckFUOG1NRFhyaGVhN1NOVHFCMHpkSFBrRzNGN2ZkUmdNa3hR?= =?utf-8?B?bjZFNlF3L0FGUHM3c0hZUVRSNWRtT1VNNmR2dGNCMW1rTEpHcjhTZEpUUXBJ?= =?utf-8?B?dkFVcjQybWNEN0Q5dVE3alpMdVlwUVFXSkgxWHlpM2VhY1Y1QkRRRDdsdHNI?= =?utf-8?B?UjM0cXJRelhCc0pwK1BINTNkMFhYRHRVU2I2bFFBSDNkakpPclpPUlNhVkpZ?= =?utf-8?B?dGg0Y3hlZHAyeUNBTGQvOUxqMi85UFczRTJmSWcxRWMwQ3Uya0hnc3lRL0lt?= =?utf-8?B?Tnlnc0hubTU3c2JPZEhrQnBxMjdVaVhaQjFtZnUyZEErUm50TEFDekFBdFJm?= =?utf-8?B?SDRZQzJBSjdqTUREZS9vWGtMY21Ua2NnR3VueHRaWnJoc0JCalNXM1Rld2RD?= =?utf-8?B?S2pZRFhJREVnVWhic1lDZ0d0akVzZ1ZGRFZ6d2xwTFN5K2dhYm9CZzlkVitv?= =?utf-8?B?aTBhaTdrTVhBQnpFSENBejYxUU1EM3p4NnE4d3NBZjk0Z1hSRnVVS2FlUkEr?= =?utf-8?B?ZWJkcW5WRkNvdVQ1QjlnSUpEMFhlOG55OUpGakhTZ0FZT015eTlQRWthTllH?= =?utf-8?B?YTh6NzRLaVNYcUg1dVhGVEFGWUthaXBmUG1JVmp1M2ZaRk1DVVphWjJRTkZH?= =?utf-8?B?YStLQUdBRzhCWXEzM0VYOG5nUkxteEVhQW94WEJqN0ZkeEJlM1JDTXhjTFNK?= =?utf-8?B?VnhiYzRHVUxXTkp2WlRkWWJRQnRkZzNNYjV4OGFhVDRFdmdiVjMzbkNqeE50?= =?utf-8?B?MTR0aG9qM1dHMjdKUHc1ZTQrd3MwKytxZDluQlFuc3gxYXFiazg0VS9kS2pR?= =?utf-8?B?SW9GLytOeWxLVmhLRDJsN3E5Vk80ZmR3UzFoMThZVDcyVzVvclFDTFhNNjBs?= =?utf-8?B?ZVpZSk9hRVM1MTBYZnJDamZPZ0ltVEhvSnZ2c1JKOTQ2ZmNRQjdZQkJvMUZP?= =?utf-8?B?Qjg0OTQySDdEWGVDS21nS1RuRFFmRGZ0VUVKb2crUE0xVEI2RlpJdkp5dkd0?= =?utf-8?B?dlRJa3VZUDhTbjNIU1NwZm1VVllvN3FsUGwvcUhMYkl3cEpRTzkxcXpVSmJj?= =?utf-8?B?akpaVURhaklzcEpBS1RNWWpXY1ZyUGxWVis5WmVIYzlsNjl5bFBqVUVoVURY?= =?utf-8?B?QXMzU2F6d2IxQk8wSjhOREtnb3BERVlvZVJIdVRYdFpDNFZHWXJkWGFSbkRq?= =?utf-8?Q?YLNM=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(376014)(7416014)(1800799024)(13003099007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:16.7083 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 35a271f2-9182-4ab8-3243-08de186bd649 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: BL02EPF0001A0FB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4149 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: 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: 1761908910661158500 From: Eric Auger Add a 'preserve_config' field in struct GPEXConfig and, if set, generate the _DSM function #5 for preserving PCI boot configurations. This will be used for SMMUv3 accel=3Don support in subsequent patch. When SMMUv3 acceleration (accel=3Don) is enabled, QEMU exposes IORT Reserved Memory Region (RMR) nodes to support MSI doorbell translations. As per the Arm IORT specification, using IORT RMRs mandates the presence of _DSM function #5 so that the OS retains the firmware-assigned PCI configuration. Hence, this patch adds conditional support for generating _DSM #5. According to the ACPI Specification, Revision 6.6, Section 9.1.1 - =E2=80=9C_DSM (Device Specific Method)=E2=80=9D, " If Function Index is zero, the return is a buffer containing one bit for each function index, starting with zero. Bit 0 indicates whether there is support for any functions other than function 0 for the specified UUID and Revision ID. If set to zero, no functions are supported (other than function zero) for the specified UUID and Revision ID. If set to one, at least one additional function is supported. For all other bits in the buffer, a bit is set to zero to indicate if that function index is not supported for the specific UUID and Revision ID. (For example, bit 1 set to 0 indicates that function index 1 is not supported for the specific UUID and Revision ID.) " Please refer PCI Firmware Specification, Revision 3.3, Section 4.6.5 =E2=80= =94 "_DSM for Preserving PCI Boot Configurations" for Function 5 of _DSM method. Also, while at it, move the byte_list declaration to the top of the function for clarity. At the moment, DSM generation is not yet enabled. The resulting AML when preserve_config=3Dtrue is: Method (_DSM, 4, NotSerialized) { If ((Arg0 =3D=3D ToUUID ("e5c937d0-3553-4d7a-9117-ea4d19c3434d"= ))) { If ((Arg2 =3D=3D Zero)) { Return (Buffer (One) { 0x21 }) } If ((Arg2 =3D=3D 0x05)) { Return (Zero) } } ... } Cc: Michael S. Tsirkin Signed-off-by: Eric Auger [Shameer: Removed possible duplicate _DSM creations] Signed-off-by: Shameer Kolothum Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron --- Previously, QEMU reverted an attempt to enable DSM #5 because it caused a regression, https://lore.kernel.org/all/20210724185234.GA2265457@roeck-us.net/. However, in this series, we enable it selectively, only when SMMUv3 is in accelerator mode. The devices involved in the earlier regression are not expected in accelerated SMMUv3 use cases. --- hw/pci-host/gpex-acpi.c | 29 +++++++++++++++++++++++------ include/hw/pci-host/gpex.h | 1 + 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/hw/pci-host/gpex-acpi.c b/hw/pci-host/gpex-acpi.c index 4587baeb78..d9820f9b41 100644 --- a/hw/pci-host/gpex-acpi.c +++ b/hw/pci-host/gpex-acpi.c @@ -51,10 +51,11 @@ static void acpi_dsdt_add_pci_route_table(Aml *dev, uin= t32_t irq, } } =20 -static Aml *build_pci_host_bridge_dsm_method(void) +static Aml *build_pci_host_bridge_dsm_method(bool preserve_config) { Aml *method =3D aml_method("_DSM", 4, AML_NOTSERIALIZED); Aml *UUID, *ifctx, *ifctx1, *buf; + uint8_t byte_list[1] =3D {0}; =20 /* PCI Firmware Specification 3.0 * 4.6.1. _DSM for PCI Express Slot Information @@ -64,10 +65,23 @@ static Aml *build_pci_host_bridge_dsm_method(void) UUID =3D aml_touuid("E5C937D0-3553-4D7A-9117-EA4D19C3434D"); ifctx =3D aml_if(aml_equal(aml_arg(0), UUID)); ifctx1 =3D aml_if(aml_equal(aml_arg(2), aml_int(0))); - uint8_t byte_list[1] =3D {0}; + if (preserve_config) { + /* support functions other than 0, specifically function 5 */ + byte_list[0] =3D 0x21; + } buf =3D aml_buffer(1, byte_list); aml_append(ifctx1, aml_return(buf)); aml_append(ifctx, ifctx1); + if (preserve_config) { + Aml *ifctx2 =3D aml_if(aml_equal(aml_arg(2), aml_int(5))); + /* + * 0 - The operating system must not ignore the PCI configuration = that + * firmware has done at boot time. + */ + aml_append(ifctx2, aml_return(aml_int(0))); + aml_append(ifctx, ifctx2); + } + aml_append(method, ifctx); =20 byte_list[0] =3D 0; @@ -77,12 +91,13 @@ static Aml *build_pci_host_bridge_dsm_method(void) } =20 static void acpi_dsdt_add_host_bridge_methods(Aml *dev, - bool enable_native_pcie_hotp= lug) + bool enable_native_pcie_hotp= lug, + bool preserve_config) { /* Declare an _OSC (OS Control Handoff) method */ aml_append(dev, build_pci_host_bridge_osc_method(enable_native_pcie_hotplug= )); - aml_append(dev, build_pci_host_bridge_dsm_method()); + aml_append(dev, build_pci_host_bridge_dsm_method(preserve_config)); } =20 void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *cfg) @@ -152,7 +167,8 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *= cfg) build_cxl_osc_method(dev); } else { /* pxb bridges do not have ACPI PCI Hot-plug enabled */ - acpi_dsdt_add_host_bridge_methods(dev, true); + acpi_dsdt_add_host_bridge_methods(dev, true, + cfg->preserve_config); } =20 aml_append(scope, dev); @@ -227,7 +243,8 @@ void acpi_dsdt_add_gpex(Aml *scope, struct GPEXConfig *= cfg) } aml_append(dev, aml_name_decl("_CRS", rbuf)); =20 - acpi_dsdt_add_host_bridge_methods(dev, cfg->pci_native_hotplug); + acpi_dsdt_add_host_bridge_methods(dev, cfg->pci_native_hotplug, + cfg->preserve_config); =20 Aml *dev_res0 =3D aml_device("%s", "RES0"); aml_append(dev_res0, aml_name_decl("_HID", aml_string("PNP0C02"))); diff --git a/include/hw/pci-host/gpex.h b/include/hw/pci-host/gpex.h index feaf827474..7eea16e728 100644 --- a/include/hw/pci-host/gpex.h +++ b/include/hw/pci-host/gpex.h @@ -46,6 +46,7 @@ struct GPEXConfig { int irq; PCIBus *bus; bool pci_native_hotplug; + bool preserve_config; }; =20 typedef struct GPEXIrq GPEXIrq; --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908666; cv=pass; d=zohomail.com; s=zohoarc; b=Fa+EvKwIdb7dmUG8nubWWqygJQfFnxX05tB2teAfnR9z6seyrCJ/FnpkRdSvywudQBDA3rjR8LNFeocq+ARsE0cI/aAikbwMYLWM8kICSkHJ8mwh/J7cNV45ro74d7ZAZEkz7LQKcSK9D9H1bWAK8W7HGDuopHjdwIAd9WShOI8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908666; 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=487XgYj2qbrQLpJ5W9zs+2RVdbhhKynI8krASd2Drio=; b=kCwZRul+RoVf2EkXWQAQu1n7mtQ2BAxuv4y/JCUyRj1VLdiiDuURJIQHYLOLQApLk0vFNq3uitkCulu2XDjDvINB5b5OxNsiLsZ6fe9qNzTJMK3UYzQrm39x3SfsUwRbZW6KJydS0Lp1ueBKteAnPuHNaGN6EYfDM8arJ9ldahA= 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 1761908666636480.298806079257; Fri, 31 Oct 2025 04:04:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmn8-0007WI-5o; Fri, 31 Oct 2025 06:55:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmK-0005CL-N7; Fri, 31 Oct 2025 06:54:44 -0400 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 1vEmmA-00031V-Nz; Fri, 31 Oct 2025 06:54:43 -0400 Received: from BLAPR03CA0075.namprd03.prod.outlook.com (2603:10b6:208:329::20) by BY5PR12MB4305.namprd12.prod.outlook.com (2603:10b6:a03:213::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:54:21 +0000 Received: from BL02EPF0001A0FC.namprd03.prod.outlook.com (2603:10b6:208:329:cafe::b6) by BLAPR03CA0075.outlook.office365.com (2603:10b6:208:329::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9253.18 via Frontend Transport; Fri, 31 Oct 2025 10:54:21 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FC.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:21 +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.1544.14; Fri, 31 Oct 2025 03:54:11 -0700 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; Fri, 31 Oct 2025 03:54:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C3zvOuzRvTaVJN7kCCc369AAbWJfHWHffsN56Sp7fkK1u3Xpl+Z/KM/gjeMUZyR5H7+COh3dxtPuODQO7PtV1FwhKXxmQGPZ2u6O09kob7AYCDH4iPe/KetE8+yyfWamnGjkwjGuNwvg2m4DMZwFxuAaf/jRGhnH5znSxrt7r7SB0IzXAxDdBIcYaDC3fX0XJiDARMZi/l4JivgmfavtuvezlLl+tnW5HXDcdvg/42/2j00uS2KD1Rb7xSfBqfiwnOzvrDxxDKeG2ZGkkEQsx6JXXxS0KDQ1BMwPgTOtvwZ7FioavhbsqgawPSkpxczaXCvuzsfk8k6rYgqLL07C1A== 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=487XgYj2qbrQLpJ5W9zs+2RVdbhhKynI8krASd2Drio=; b=U8Fa38qJZKW80KXwC5soM8P0oBgIQMQHTzokbxzWdhhGyBJUj9XfuLFqWn8fk7hx5BHAdZv7c8K9f5tYVuuT+SxZlPr4mccfzHIGC1wYbuZ3GJ3Y/1aO/e0Jh4A1Sl0opJPHCrnnTUxgGUtGMTaYxgFDmyXTbios8qjSmHOB9fXEXrMFEvw26mmrQUgoWIuV9VevkoAtFPVhacr+2riFhRfKzw2C3E+s+sL9oOjZN+yCN3z3kk/8vkZScfCl4G9H08M23uIur8ViOvPjkODuzSS/CDdy8TEYd0RTpsNNWYjrd8YDZfiGxTywuQYInBu35zXIgR318s2/02xTkKpNIQ== 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=487XgYj2qbrQLpJ5W9zs+2RVdbhhKynI8krASd2Drio=; b=nunmBiAaKnRtfx8qX3oOwUhdoNk11IqKLrTxxw6fzvEUkh4yiGNBF1ZJ366Kc9Eots2u1f8LNYHSc+hYcg6EHHAgvMGnNnpxMDFy6nrKOlGwd8m27LfoIib0GqS6fV+vYKHB7cfGfRAc0ORmvI7UURDE00kTpFyc6yFKL9mO+UFfk6OV7xos7+miO1HgjERSw3IHTozCKY9Pi+Qj1Hw+854A61+SF/kuvtYzQcJMW6v/esAtZTDouRfRe5GuqslpWAjxRj0GqZlALadd44O9OOY0IRu9LdeuW0wrWLZ+0leX2o1vHJuokB4Hw8pBcCoH+7R1ishD0W5stGY7rOivgw== 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 v5 21/32] hw/arm/virt: Set PCI preserve_config for accel SMMUv3 Date: Fri, 31 Oct 2025 10:49:54 +0000 Message-ID: <20251031105005.24618-22-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FC:EE_|BY5PR12MB4305:EE_ X-MS-Office365-Filtering-Correlation-Id: e6d09d9b-0b3b-4124-8501-08de186bd916 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|7416014|376014|30052699003|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Fzwz5Ta5PKEbJFjTWK0byY/d50n15IGOXX/eUWJQnKbg7s6dKO1kwkeX95Zr?= =?us-ascii?Q?DsdM6yF3fG/MZzPzLZc+jElOOg6cga58IDo2tjpVlLTm7O/TKiJR2CNxwWPO?= =?us-ascii?Q?a18uHZCXxZobePUX/wxbYD65A9/yf5bwxYxuJ/L5RehV+qPtee2x5kr6rfb3?= =?us-ascii?Q?XMPTwq5A+YoTm/64KMWqiidzlfhIOWlKtvcouz9N/N9azeHGm55rtiI4MKai?= =?us-ascii?Q?SkNv0rFlxXCjnRZDUSKylrQvJzBKUXksVDGpdWyM4qs0FspfFD+5Thj6+mPE?= =?us-ascii?Q?Z8fsHzP2Q4S6wRSjqqRpt7FkatFaMMrtPJxaJX1CVjkKZizKkkCGbmmBfBNK?= =?us-ascii?Q?e/q+PD0XMfwtxug3ae6sncTxGiwzQdeXAPgxXUxu6pjDbxm3xpG37L4o+rFw?= =?us-ascii?Q?efgVgrzrM8NtFQpFnkGAPnBSA28xXAWPbEiHIMczsG+Z+MDsbuQI3xDQY7kt?= =?us-ascii?Q?U7ODKtRJU3hZIO/xj/TVI3YEfU656wOOm/TFBK9DGrECKW3zJZ9/Zpfi2EcD?= =?us-ascii?Q?s8ISXhG6q110k1Vs1umRvsux/NLr2SpKV1pFrHFTxkB5SNqV/eJqw0UheDpe?= =?us-ascii?Q?Ut9zhHcsywue/U2oD/DkacZKofAPdLXy2G8o3BEPXI0/ccShwtnTJT5p/O+2?= =?us-ascii?Q?q0/OLFvH+EM8r8ObnqEjcB0fCwnV8UYzWvAMKb1d9ueO2cEErn3z52MLP/iO?= =?us-ascii?Q?+pSwP/cSAYjD+iwllN0I3kzR/Ub44C9Y5/C/6gQsd9Qze4RuSE0kJstv5jA8?= =?us-ascii?Q?zFl9X/hBa4io37KeOjf/ZlIh60fR8AIPVGJB+jQdEw9KmAYy2IttIa/9D7wI?= =?us-ascii?Q?z0wzorlBwLPiN3CsxlTfDp9g4STyguldoTL+wGCyaYPIH5nU+4qJAktBte52?= =?us-ascii?Q?FrSBR/Qt2pWolZdN7ybkxkfwqBG2jCzfOfCcGHKN46IUWJYqWETjKSXN6ueD?= =?us-ascii?Q?pkTIT5xdzKGbzKxUmaimjPaOaOzhZE1aj45trUgW1oi2vKUzQU6HDj4uFo3t?= =?us-ascii?Q?rYgCbcL2Vm6r+Itn8CMei1o6a2pXy/Ynhu3SThVV/YddKRw9r5oq0Wd7+QxC?= =?us-ascii?Q?KDCvwRyih048C2qm7ggFV/nrhXlNPfpfFUmzLp9AVMaT2unb6LLqaJN8seIc?= =?us-ascii?Q?VeDR9Psp7aeEErgSYLS2vdls5N0xzSOL2Y8JmYGOgYzIBy7ryp8Bj6yVO22q?= =?us-ascii?Q?OZndt7gZMb90aMj9XIFkGpb2F79jbtrPMzPjIS28P3oCqCD4kfD2X5TVEVFT?= =?us-ascii?Q?Oq8dsV5vPndqjwyVFtCZpq8Oyw26pSTGhC+pp3xWvmba0c4ATFyoGnjI4BrG?= =?us-ascii?Q?E0zW75sLKXXAv4UMnHCSoPklZXpNPY89BfaTtGuOLQj1f4DPOHFASuIZZDLh?= =?us-ascii?Q?wg67n8IE0YyeiYV58e33TLEcgL8Hv1JCTheSxvVANRuSa7aWDiM9dNg+KNIt?= =?us-ascii?Q?m2WMj9zKqXqi52IVizzaDpWdrB1V1BKssHhl5qBgebD3nqjyt3k7qFEQOXee?= =?us-ascii?Q?3+Ssi68j8S6Da2cgRMwzGttizZ4fS6uEFtSgEYnepmJyGXGcd6tlPlpYFtrU?= =?us-ascii?Q?gJpBk5l9aO3UJospQB8=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)(1800799024)(36860700013)(7416014)(376014)(30052699003)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:21.4115 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6d09d9b-0b3b-4124-8501-08de186bd916 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: BL02EPF0001A0FC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4305 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: 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: 1761908669719158500 Content-Type: text/plain; charset="utf-8" Introduce a new pci_preserve_config field in virt machine state which allows the generation of DSM #5. This field is only set if accel SMMU is instantiated. In a subsequent patch, SMMUv3 accel mode will make use of IORT RMR nodes to enable nested translation of MSI doorbell addresses. IORT RMR requires _DSM #5 to be set for the PCI host bridge so that the Guest kernel preserves the PCI boot configuration. Reviewed-by: Jonathan Cameron Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- hw/arm/virt-acpi-build.c | 8 ++++++++ hw/arm/virt.c | 4 ++++ include/hw/arm/virt.h | 1 + 3 files changed, 13 insertions(+) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 8bb6b60515..d51da6e27d 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -163,6 +163,14 @@ static void acpi_dsdt_add_pci(Aml *scope, const MemMap= Entry *memmap, .pci_native_hotplug =3D !acpi_pcihp, }; =20 + /* + * Accel SMMU requires RMRs for MSI 1-1 mapping, which require _DSM for + * preserving PCI Boot Configurations + */ + if (vms->pci_preserve_config) { + cfg.preserve_config =3D true; + } + if (vms->highmem_mmio) { cfg.mmio64 =3D memmap[VIRT_HIGH_PCIE_MMIO]; } diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 175023897a..8a347a6e39 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -3091,6 +3091,10 @@ static void virt_machine_device_plug_cb(HotplugHandl= er *hotplug_dev, } =20 create_smmuv3_dev_dtb(vms, dev, bus); + if (object_property_find(OBJECT(dev), "accel") && + object_property_get_bool(OBJECT(dev), "accel", &error_abor= t)) { + vms->pci_preserve_config =3D true; + } } } =20 diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index 04a09af354..60db5d40b2 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -182,6 +182,7 @@ struct VirtMachineState { bool ns_el2_virt_timer_irq; CXLState cxl_devices_state; bool legacy_smmuv3_present; + bool pci_preserve_config; }; =20 #define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM) --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908637; cv=pass; d=zohomail.com; s=zohoarc; b=eLfIUYBAgN6VvsdgpKk0eCkydaZ4eiSbE8CHbVgsJM6A4qK6hw+eqh9JoPUJM9eGWmu+bGvpdMOChjqclzpJu1t7se1IsH1aq/rzw/WE6/QRCSrX6wG/UBitiPwLTXDh/zlbEu3o39MqTMwM1bbtsDM4TdaLBLM9my0jUHrRS3I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908637; 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=NixQd3gPWQmXET4tY+IAmx69jImRanwGlNLfCy8YfWE=; b=jtXqxegi7+4Hz+erJc7HLk8H5A3MgB50dv7wx3VEM+yJTJ64MydA53v5CrCqHnMCR6lUmlgxBzlp4V2M+uVi7cN/cUHaHqL84TQ9gCL2N9x9Uk+diRkZLg9FALrzSxZmlYYd1HB9fnoOSk8WUawciQjziYh5Zd3uBf+Nc0TLj5o= 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 1761908637849493.5834701819265; Fri, 31 Oct 2025 04:03:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmmZ-0006Zt-LA; Fri, 31 Oct 2025 06:54:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmD-0004rI-0e; Fri, 31 Oct 2025 06:54:39 -0400 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 1vEmm8-00031e-16; Fri, 31 Oct 2025 06:54:36 -0400 Received: from BLAPR03CA0158.namprd03.prod.outlook.com (2603:10b6:208:32f::24) by MN0PR12MB5833.namprd12.prod.outlook.com (2603:10b6:208:378::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:54:23 +0000 Received: from BL02EPF0001A103.namprd05.prod.outlook.com (2603:10b6:208:32f:cafe::e1) by BLAPR03CA0158.outlook.office365.com (2603:10b6:208:32f::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:11 +0000 Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A103.mail.protection.outlook.com (10.167.241.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:23 +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, 31 Oct 2025 03:54:15 -0700 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; Fri, 31 Oct 2025 03:54:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TAzC8k4xlypSgtT0uAPxpklt6cTq1hrCUrO6LzGtGiGchs3FpSfOnvRMixWHEeRh0mDvfNnRBi7EtOWHIv3gi9pqqeEawXXSYEFYVy20FtxejQoFoMxOROwYNevJ14lWi3it0QIBkWLrr480BVzzUxb20T/gvNY3ahhu13NfUMU0Iq8sqjfmG1EBCFiKKGQ/CyQa7YQc0EpI1SSydUFTF9OxglkDAsOGDEGRuJ+GhRreRLHCA366NY7cqUQOz9ORDvJZA97fYC9MSXCiCjxB03Tf71yBs8XGrNZI7T45bPaBepL58DtGH3wOhnK1joZji35rx7voX02Ug50qSHl/cw== 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=NixQd3gPWQmXET4tY+IAmx69jImRanwGlNLfCy8YfWE=; b=fTYUkbCad/acm1bQNuWkN5qqySHUpIPjTOqBIVrQ7+3a4Dz3m4QRt8Du893W7Eq6TQSv6ot1x3zLnx+JgQ7Ea0Dbg5thS9M+0saMsS80S6ugM6bKZ/aSixCB+z2SJvtcbKu4pGJMKtXo5wcNivcTNvzoz8NhndQ68Pn9zVWBW9y5OyhpUcENPGa8lFvWU+h0sthPNpGs475xu6VPrfMQ8fdL9ogzEHXJyxBxafo0ReR3sKkmyEaxexp1QNNEHxKA5OZaijq9Et8cqfdsvXxX7RCD9YRUgsOeKHFyrwBtl3UeQZBWghIII+l81IasiotoZkH06OA7l/8+1aZfRY464w== 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=NixQd3gPWQmXET4tY+IAmx69jImRanwGlNLfCy8YfWE=; b=tENqzV1zg0Wr26Xa+okU5hygvoKaqvjiz11HA/AytO19Gi0TWCRpmC7DUXFXYWi3z+pLbd56oX3SqowwS6HXUpuF9fzfszjHCa9pkUzobLBkv7BkVdRd34PxkVByLgaEKcpMg1d+NnJH+l9iiykCmfQr2sW3ujCouWndZBEpVqVPHcAJirCsvMCvKoJycO1rD2mv2ftkO1V7YlWlj4J91yhAIBCfhtLIjJj4YO4u6m3kSFEHOVG5SjFNnz0Cuo+P48EnI+tTlCy5KYCefXfw82hADw+NIYz20cxmxS06Sxzm3y3hkmhlcxqGrx+oUTpfTbU/utBmYnkqWn4hyV1vXQ== 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 v5 22/32] tests/qtest/bios-tables-test: Prepare for IORT revison upgrade Date: Fri, 31 Oct 2025 10:49:55 +0000 Message-ID: <20251031105005.24618-23-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: BL02EPF0001A103:EE_|MN0PR12MB5833:EE_ X-MS-Office365-Filtering-Correlation-Id: 9a3d3b3e-e5c4-479e-a72d-08de186bda0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|1800799024|376014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?vXos=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)(7416014)(1800799024)(376014)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:23.0260 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a3d3b3e-e5c4-479e-a72d-08de186bda0c 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: BL02EPF0001A103.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5833 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: 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: 1761908640461154100 Subsequent patch will upgrade IORT revision to 5 to add support for IORT RMR nodes. Add the affected IORT blobs to=C2=A0allowed-diff list for bios-table tests. Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron --- tests/qtest/bios-tables-test-allowed-diff.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..3279638ad0 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,5 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/aarch64/virt/IORT", +"tests/data/acpi/aarch64/virt/IORT.its_off", +"tests/data/acpi/aarch64/virt/IORT.smmuv3-legacy", +"tests/data/acpi/aarch64/virt/IORT.smmuv3-dev", --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908432; cv=pass; d=zohomail.com; s=zohoarc; b=Rq+mEp6f6QC/pMOtOns8wpYEiHp2XBhc0XUmq3hvZp8ulIyIRwilI6BNcAC1PxBw2oS1vnzHW1QReNYOcUZgONTzJMpW0nOn6T4F5D51mFfMecVRB/qKu4AImqEGyfvkAb/8OQhQ0HFfbkHSg8uGBDIs/enbTHF4ZcTU5zAi8Rw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908432; 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=gIvEYMIj9vdXT/qC/n46Om8mUHifkOju1OU+ZoDKPD4=; b=Dj84KAU/fMTID6WaofgCr6FPW+92DmBqb6fEg3e9TioBkwehXs6OyXu/zqhzlOLe88D1tNaAiw7HOAdIuPBXzINV/RuIZOp+Xn4bFMfu/VIt/kcTf7aYS28UE294z8avIZg/yfsTgIw38fcQG1JSbzvExKdxnp9vUeMgv3yi/+w= 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 1761908432909399.80125786054975; Fri, 31 Oct 2025 04:00:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmnE-00085Q-Mn; Fri, 31 Oct 2025 06:55:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmQ-0005fi-AK; Fri, 31 Oct 2025 06:54:50 -0400 Received: from mail-westusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c000::1] helo=BYAPR05CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmK-00032c-P1; Fri, 31 Oct 2025 06:54:49 -0400 Received: from BLAPR03CA0068.namprd03.prod.outlook.com (2603:10b6:208:329::13) by CH1PPF0316D269B.namprd12.prod.outlook.com (2603:10b6:61f:fc00::604) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:54:30 +0000 Received: from BL02EPF0001A0FC.namprd03.prod.outlook.com (2603:10b6:208:329:cafe::37) by BLAPR03CA0068.outlook.office365.com (2603:10b6:208:329::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9253.19 via Frontend Transport; Fri, 31 Oct 2025 10:54:30 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FC.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:30 +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.1544.14; Fri, 31 Oct 2025 03:54:20 -0700 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; Fri, 31 Oct 2025 03:54:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hmRMeLgZGRgomot/DV5g+qf1TtRK4gG+BIGBT4y5FCS3uxR/h9Y78WjAMhzKZC/j9EQofpWdVpK0vTo5D9uGogMejox62hIYU6WEYDQeheal26VdymmEYKn9wPPHemDnw0JPa2ij5WcBb6n5o/eL3EA0SIbAO0Py+h2Es0/H4UGUydMEZmQ1Lz2oD635K/a04h+maIpxCAqGXnTRvqcABZLOo6jrVhreaBZhhZfJonCerIMdD/XEqTkW4NWFFTH+tQLTH9kD5gdAgMSqZbU3JPoufIlE+ydO5cpv7fYfyhQmJe/ju2tdqxSIm2czwMR4ew7Sr9hVGBiQRWgJdumN7Q== 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=gIvEYMIj9vdXT/qC/n46Om8mUHifkOju1OU+ZoDKPD4=; b=QPgWASr4ycnit39eYzacdRWpEdPobuA1QgExtsebOLs3qcYaFRMUo12y0mgpe1wqGT8bOJwKW2gXxf3zbOs0UTvz0zgjF/KmUGSOJ+Ub7nTa27LIFqJNeQLkmeGtsnGK99k2QNQ38/RNWwzEJ1LHeB9/ycSPkc5jfHqmkgwW87ZSj1xCs5P35aXZgwBif2K1XYnrTG6jft0+grKZCgAPn1NLRPsPpF5FddCDJHIq8HoioP5B5yymWFgNlVNMk0mFNFnwS/BkoAhNX/yjGEIQiuDprNmyBTSRjc7LoXt1NKTeCfyVKwlSJqK1wWedpoNA2ps4H7Vc7ty6AyV9DgzwrA== 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=gIvEYMIj9vdXT/qC/n46Om8mUHifkOju1OU+ZoDKPD4=; b=JPoqQN2Ar6j8BcMHhRJ4f54Qnj3nyYwCJC03B6uROaAHElSVBNSdvukwBI0dTpNlR2GIX3hGCVbsuKtCXdXfDZ6KNDQ6jZvZ6r26jtemAARpzf+RS5Oyb22dU49830v7T/l3FuOoKE2BRyu9OuieBeRHLC1br9HmmaXt1BeCRjEpLzpbkjGjLtB1glZOjO3nmwjQdVviHSW/zG6WlVzeMW6+XKg0v+crMbI1aCnfcOxZB+eQUlrRxo4NOfrwhkWskHu9xwm+eL1g1yRZpuhVhDdGXs0JST4cP8ugMHeeGoVvPgl8Eup8D0aJoGKy4h7rJIHTE8S1uWqgQIGxxyDeyg== 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 v5 23/32] hw/arm/virt-acpi-build: Add IORT RMR regions to handle MSI nested binding Date: Fri, 31 Oct 2025 10:49:56 +0000 Message-ID: <20251031105005.24618-24-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FC:EE_|CH1PPF0316D269B:EE_ X-MS-Office365-Filtering-Correlation-Id: 9d7a3f93-9d9d-4b95-26b2-08de186bde6d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Q8eAL8cwqhgMmI6LTxSFUlutYFiCYOjlDD0uMMYjxpFbvkhBz4vUHIcWZgMP?= =?us-ascii?Q?mm1ds2PdHbgdA2842B6c7rlarIiQBt2hoXb3AxkellNLVVKyM2HZdd1lF5WI?= =?us-ascii?Q?H1LHQWFGwQ3ZIEY5uq1Vjsfd+G3hWS8tw/MFVLI7XhSF2kZuN7pz/RkMnP8o?= =?us-ascii?Q?lxQnMlN1eoUZq+2CkL/cMtPdcGml3OAolPgQdywZvzaLQ5HBIK0JWphcGg5/?= =?us-ascii?Q?kAwrWtH+P2lhVqTukh3DDidC54rdG2GioV6ATyN/kp3nR0BF03Y1NfOZ8H1n?= =?us-ascii?Q?dbPr8MpWqihr53C1W6VUb8q22vmebTFuK54sUODN5kQhty/ESdrgYBd7KET4?= =?us-ascii?Q?t8uVdXDMsbM8kJPSOta9ckZytbyXOa2suU710F1h5ob46EnPhn8mS/zLuaBJ?= =?us-ascii?Q?c8heVxNqA2PrZB2BZLTYOmYss+me1WIUsaPo28oemoHhhM9KbhA4Ho3WO/zH?= =?us-ascii?Q?c8jlzWDvnpIsaN10KpdXVshV8chPT1PGDxG4UUNPLo43W//TPx3qkfY+sJch?= =?us-ascii?Q?Obk1dsQFamUJ+7KI3LEFXpugZA5o3V59i3uyZJF0w8qXrcwt7XruDoz7WSmF?= =?us-ascii?Q?8s4kJSvoVT78LvGfKasSYOZuPLOUmndCy22qj8U9juTt6Ve0eHdamHXAfLAo?= =?us-ascii?Q?uz98WePvo9SAr52bkMjGDrG3vpaTu67Z0JeBQ0H8qYtCsCcF+leFmO/zfP5m?= =?us-ascii?Q?QHW9GzC1OQogBw23dMjE/ZgJeQ2wsu/2wtVaMm8utRGRBLlFzE0jUcvfpuyJ?= =?us-ascii?Q?7kobDmsfMfCZq289ObQ6jeloTJd4SjZfZa41UV+53gXhkzGsst8qMvW/l/Ev?= =?us-ascii?Q?B6gnfmiNgSYVnzeN+114/3ZUPcQgpDn0FXbC6TJtMAOAs2vJwj4YK5Ev8Y5t?= =?us-ascii?Q?+xU63PKCDa3DsdE/oAiIOQ32kcowEybETxLWwyLE2Z3BeLMCjqXkf11fQygt?= =?us-ascii?Q?ZVhfkJ5C541pcj1uFyoegUVqqWqp1wOkTtIseJWqNfHQU08pXWC7Mt2RlBZ0?= =?us-ascii?Q?bx2j9iYFgqhyu9r4/k6cshYdcbA3fFqJh7Vm9m6u4RSLoK3o9mH07OkbsQNJ?= =?us-ascii?Q?FYw16fF8UDy85EPTHPKRSri7TBtAhLyY7DN3hNgimZ/OT0EUw6AbOIbvHt5R?= =?us-ascii?Q?0u6+8wcym9+bKn9BFGfM8ysgA/xsOV3kUmrNvOzDeu7kbpx2bdatB1oOo54U?= =?us-ascii?Q?G5Cf3KyvudoWl3JOZijfz7Hq93GfURgvnA/8o9Ikh6VSLKGEzgZqpavBYn5T?= =?us-ascii?Q?ZxSSjRxK2ptEu3S5JTYwgRsGR7K86PmC1gIWOq+RU0OaSBYtLMB87CHDIgZL?= =?us-ascii?Q?VKRnVqq1gAi1PEN69qdPzWlh65WEssLpr43LVF6ADKh6CBPAsT/7CFhS6hvc?= =?us-ascii?Q?quJR4yijlAhSLu7kgeCVuHnmKA+WdkkpdeIiEo+aRbVhKnryzVMuBQ2McjeV?= =?us-ascii?Q?gsg80s3QYhIITIkHjcaQpjj1Ov5YMj12FBEq0F7FKDnzjir+eCeJEwegaJww?= =?us-ascii?Q?GcKrTlIVHHKtndqfjsaMqtD16PcUgtKnxyKBo+c8bRl/UBMo33L6VB3542DT?= =?us-ascii?Q?taW22V0CXF5KHZP2NJk=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(7416014)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:30.3744 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9d7a3f93-9d9d-4b95-26b2-08de186bde6d 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: BL02EPF0001A0FC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH1PPF0316D269B Received-SPF: permerror client-ip=2a01:111:f403:c000::1; envelope-from=skolothumtho@nvidia.com; helo=BYAPR05CU005.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 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: 1761908435204158500 Content-Type: text/plain; charset="utf-8" From: Eric Auger To handle SMMUv3 accel=3Don mode(which configures the host SMMUv3 in nested mode), it is practical to expose the guest with reserved memory regions (RMRs) covering the IOVAs used by the host kernel to map physical MSI doorbells. Those IOVAs belong to [0x8000000, 0x8100000] matching MSI_IOVA_BASE and MSI_IOVA_LENGTH definitions in kernel arm-smmu-v3 driver. This is the window used to allocate IOVAs matching physical MSI doorbells. With those RMRs, the guest is forced to use a flat mapping for this range. Hence the assigned device is programmed with one IOVA from this range. Stage 1, owned by the guest has a flat mapping for this IOVA. Stage2, owned by the VMM then enforces a mapping from this IOVA to the physical MSI doorbell. The creation of those RMR nodes is only relevant if nested stage SMMU is in use, along with VFIO. As VFIO devices can be hotplugged, all RMRs need to be created in advance. Signed-off-by: Eric Auger Suggested-by: Jean-Philippe Brucker Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron --- hw/arm/virt-acpi-build.c | 112 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 104 insertions(+), 8 deletions(-) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index d51da6e27d..097a48cc83 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -256,6 +256,29 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineS= tate *vms) #define ROOT_COMPLEX_ENTRY_SIZE 36 #define IORT_NODE_OFFSET 48 =20 +#define IORT_RMR_NUM_ID_MAPPINGS 1 +#define IORT_RMR_NUM_MEM_RANGE_DESC 1 +#define IORT_RMR_COMMON_HEADER_SIZE 28 +#define IORT_RMR_MEM_RANGE_DESC_SIZE 20 + +/* + * IORT RMR flags: + * Bit[0] =3D 0 Disallow remapping of reserved ranges + * Bit[1] =3D 0 Unprivileged access + * Bits[9:2] =3D 0x00 Device nGnRnE memory + */ +#define IORT_RMR_FLAGS 0 + +/* + * MSI doorbell IOVA window used by the host kernel SMMUv3 driver. + * Described in IORT RMR nodes to reserve the IOVA range where the host + * kernel maps physical MSI doorbells for devices. This ensures guests + * preserve a flat mapping for MSI doorbell in nested SMMUv3(accel=3Don) + * configurations. + */ +#define MSI_IOVA_BASE 0x8000000 +#define MSI_IOVA_LENGTH 0x100000 + /* * Append an ID mapping entry as described by "Table 4 ID mapping format" = in * "IO Remapping Table System Software on ARM Platforms", Chapter 3. @@ -264,7 +287,8 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineSt= ate *vms) * Note that @id_count gets internally subtracted by one, following the sp= ec. */ static void build_iort_id_mapping(GArray *table_data, uint32_t input_base, - uint32_t id_count, uint32_t out_ref) + uint32_t id_count, uint32_t out_ref, + uint32_t flags) { build_append_int_noprefix(table_data, input_base, 4); /* Input base */ /* Number of IDs - The number of IDs in the range minus one */ @@ -272,7 +296,7 @@ static void build_iort_id_mapping(GArray *table_data, u= int32_t input_base, build_append_int_noprefix(table_data, input_base, 4); /* Output base */ build_append_int_noprefix(table_data, out_ref, 4); /* Output Reference= */ /* Flags */ - build_append_int_noprefix(table_data, 0 /* Single mapping (disabled) *= /, 4); + build_append_int_noprefix(table_data, flags, 4); } =20 struct AcpiIortIdMapping { @@ -320,6 +344,7 @@ typedef struct AcpiIortSMMUv3Dev { GArray *rc_smmu_idmaps; /* Offset of the SMMUv3 IORT Node relative to the start of the IORT */ size_t offset; + bool accel; } AcpiIortSMMUv3Dev; =20 /* @@ -374,6 +399,9 @@ static int iort_smmuv3_devices(Object *obj, void *opaqu= e) } =20 bus =3D PCI_BUS(object_property_get_link(obj, "primary-bus", &error_ab= ort)); + if (object_property_find(obj, "accel")) { + sdev.accel =3D object_property_get_bool(obj, "accel", &error_abort= ); + } pbus =3D PLATFORM_BUS_DEVICE(vms->platform_bus_dev); sbdev =3D SYS_BUS_DEVICE(obj); sdev.base =3D platform_bus_get_mmio_addr(pbus, sbdev, 0); @@ -447,10 +475,70 @@ static void create_rc_its_idmaps(GArray *its_idmaps, = GArray *smmuv3_devs) } } =20 +static void +build_iort_rmr_nodes(GArray *table_data, GArray *smmuv3_devices, uint32_t = *id) +{ + AcpiIortSMMUv3Dev *sdev; + AcpiIortIdMapping *idmap; + int i; + + for (i =3D 0; i < smmuv3_devices->len; i++) { + uint16_t rmr_len; + int bdf; + + sdev =3D &g_array_index(smmuv3_devices, AcpiIortSMMUv3Dev, i); + if (!sdev->accel) { + continue; + } + + /* + * Spec reference:Arm IO Remapping Table(IORT), ARM DEN 0049E.d, + * Section 3.1.1.5 "Reserved Memory Range node" + */ + idmap =3D &g_array_index(sdev->rc_smmu_idmaps, AcpiIortIdMapping, = 0); + bdf =3D idmap->input_base; + rmr_len =3D IORT_RMR_COMMON_HEADER_SIZE + + (IORT_RMR_NUM_ID_MAPPINGS * ID_MAPPING_ENTRY_SIZE) + + (IORT_RMR_NUM_MEM_RANGE_DESC * IORT_RMR_MEM_RANGE_DESC_= SIZE); + + /* Table 18 Reserved Memory Range Node */ + build_append_int_noprefix(table_data, 6 /* RMR */, 1); /* Type */ + /* Length */ + build_append_int_noprefix(table_data, rmr_len, 2); + build_append_int_noprefix(table_data, 3, 1); /* Revision */ + build_append_int_noprefix(table_data, (*id)++, 4); /* Identifier */ + /* Number of ID mappings */ + build_append_int_noprefix(table_data, IORT_RMR_NUM_ID_MAPPINGS, 4); + /* Reference to ID Array */ + build_append_int_noprefix(table_data, IORT_RMR_COMMON_HEADER_SIZE,= 4); + + /* RMR specific data */ + + /* Flags */ + build_append_int_noprefix(table_data, IORT_RMR_FLAGS, 4); + /* Number of Memory Range Descriptors */ + build_append_int_noprefix(table_data, IORT_RMR_NUM_MEM_RANGE_DESC,= 4); + /* Reference to Memory Range Descriptors */ + build_append_int_noprefix(table_data, IORT_RMR_COMMON_HEADER_SIZE + + (IORT_RMR_NUM_ID_MAPPINGS * ID_MAPPING_ENTRY_SIZE)= , 4); + build_iort_id_mapping(table_data, bdf, idmap->id_count, sdev->offs= et, + 1); + + /* Table 19 Memory Range Descriptor */ + + /* Physical Range offset */ + build_append_int_noprefix(table_data, MSI_IOVA_BASE, 8); + /* Physical Range length */ + build_append_int_noprefix(table_data, MSI_IOVA_LENGTH, 8); + build_append_int_noprefix(table_data, 0, 4); /* Reserved */ + *id +=3D 1; + } +} + /* * Input Output Remapping Table (IORT) * Conforms to "IO Remapping Table System Software on ARM Platforms", - * Document number: ARM DEN 0049E.b, Feb 2021 + * Document number: ARM DEN 0049E.d, Feb 2022 */ static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) @@ -464,7 +552,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) GArray *smmuv3_devs =3D g_array_new(false, true, sizeof(AcpiIortSMMUv3= Dev)); GArray *rc_its_idmaps =3D g_array_new(false, true, sizeof(AcpiIortIdMa= pping)); =20 - AcpiTable table =3D { .sig =3D "IORT", .rev =3D 3, .oem_id =3D vms->oe= m_id, + AcpiTable table =3D { .sig =3D "IORT", .rev =3D 5, .oem_id =3D vms->oe= m_id, .oem_table_id =3D vms->oem_table_id }; /* Table 2 The IORT */ acpi_table_begin(&table, table_data); @@ -490,6 +578,13 @@ build_iort(GArray *table_data, BIOSLinker *linker, Vir= tMachineState *vms) nb_nodes++; /* ITS */ rc_mapping_count +=3D rc_its_idmaps->len; } + /* Calculate RMR nodes required. One per SMMUv3 with accelerated m= ode */ + for (i =3D 0; i < num_smmus; i++) { + sdev =3D &g_array_index(smmuv3_devs, AcpiIortSMMUv3Dev, i); + if (sdev->accel) { + nb_nodes++; + } + } } else { if (vms->its) { nb_nodes =3D 2; /* RC and ITS */ @@ -562,7 +657,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) /* Array of ID mappings */ if (smmu_mapping_count) { /* Output IORT node is the ITS Group node (the first node). */ - build_iort_id_mapping(table_data, 0, 0x10000, IORT_NODE_OFFSET= ); + build_iort_id_mapping(table_data, 0, 0x10000, IORT_NODE_OFFSET= , 0); } } =20 @@ -614,7 +709,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) AcpiIortIdMapping, j); /* Output IORT node is the SMMUv3 node. */ build_iort_id_mapping(table_data, range->input_base, - range->id_count, sdev->offset); + range->id_count, sdev->offset, 0); } } =20 @@ -627,7 +722,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) range =3D &g_array_index(rc_its_idmaps, AcpiIortIdMapping,= i); /* Output IORT node is the ITS Group node (the first node)= . */ build_iort_id_mapping(table_data, range->input_base, - range->id_count, IORT_NODE_OFFSET); + range->id_count, IORT_NODE_OFFSET, 0= ); } } } else { @@ -636,9 +731,10 @@ build_iort(GArray *table_data, BIOSLinker *linker, Vir= tMachineState *vms) * SMMU: RC -> ITS. * Output IORT node is the ITS Group node (the first node). */ - build_iort_id_mapping(table_data, 0, 0x10000, IORT_NODE_OFFSET); + build_iort_id_mapping(table_data, 0, 0x10000, IORT_NODE_OFFSET, 0); } =20 + build_iort_rmr_nodes(table_data, smmuv3_devs, &id); acpi_table_end(linker, &table); g_array_free(rc_its_idmaps, true); for (i =3D 0; i < num_smmus; i++) { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908667; cv=pass; d=zohomail.com; s=zohoarc; b=R1n/M0TyQaVvcyFekG7nDQpRiMpg449EPRrBqbJfi0eoU46ZlwE3W/v22YbLhKaQ/qSEH4juKevsuY38ZAdoNK+KT5OhzuIeyV5e2mbiI+DEa2I13Hqr+tgFEIKwJ18BGgrV7Stj3LEQrA2Sba5TAUYPEt8JIKP2Zt46w8RNqQ0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908667; 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=qaScdJr3eH2L7EPTd/PvjT91oOc9w27F4/RJzlgAEcc=; b=fcVYB76U8sQhBm/+8LxsKvxvc72qFNt66J2r7/VUr0e0SnssxbwvohIur3f18aD5wWVB1evrDAcjrLm5QWKvSE7g9+h5gbg5rLAg0Ch0y0ShguHZU1dVyYlDLdg4m8pQhThR3dnn60mqHi9JtfVBNzDe7oU9qqyi8kplNiRm0g8= 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 1761908667727124.80441130956399; Fri, 31 Oct 2025 04:04:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmoL-0000hr-CN; Fri, 31 Oct 2025 06:56:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmV-0006IM-8j; Fri, 31 Oct 2025 06:54:56 -0400 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 1vEmmK-00032w-Ki; Fri, 31 Oct 2025 06:54:54 -0400 Received: from MN0PR03CA0011.namprd03.prod.outlook.com (2603:10b6:208:52f::13) by CY5PR12MB6347.namprd12.prod.outlook.com (2603:10b6:930:20::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:54:33 +0000 Received: from BL02EPF0001A0FD.namprd03.prod.outlook.com (2603:10b6:208:52f:cafe::7e) by MN0PR03CA0011.outlook.office365.com (2603:10b6:208:52f::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:31 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FD.mail.protection.outlook.com (10.167.242.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:33 +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.1544.14; Fri, 31 Oct 2025 03:54:24 -0700 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; Fri, 31 Oct 2025 03:54:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L4+giRZ5L4btU7OPXNeQ70Lei4Bdgf6UWv7sP3OEhjtgpRxDP95tg/AP0AC85m9opAfn+5toQH6hSJH0CLFODagZX+E6Juw5DWzHvDKNJkO9Lx29hedZQJiR33Oij3uo6tbxQbh5OAa8c+GoZu4hXP7TP7CkGqE9N4Pay2gKVdLt3ganSGAMeHBXOeZ3B3i1bRGc+QgOamLIKNurZKzmkdFgwarFHzHyyOVA6oCCVim862zlmMNKKXXKUj6CxjFSvI516KrxmXgj480e/dasurA4Kb3VGn2AC77WGWMoXxguEGN9ttpphMfKzDkOcV9jv5OmRAVz5XdYerlIEnGh0w== 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=qaScdJr3eH2L7EPTd/PvjT91oOc9w27F4/RJzlgAEcc=; b=cnMFrFJnq820dYOwCzf26PybwJsE26S+WidGdBtyZCvO/q1e/aJN5aHEIfHmQ9beQsPIu1C86wZEeEqJWwLswtWr6tbksXyRmQcyUokZ+jBqBOiAKSo83iEDanaNh4Qs6umxemToUMZPexJ8QJspk/65n4KS/023nQGcdxztq8L0zAWHAAXHAhbfqTFmFCyGU9U6LockCVhvKXipt4O1nLF5OcseTg4zBqZc5SRgZKxQMKphL4ZS1KILMaNhFrY3KzJm4k5XJDmPCfluuHb9eQYkL6zRsLRIoZAVmrgiFMLKGCTcwZVESZ4imPb9nVySGDYYpQUYT/geY8d1Jp3rBQ== 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=qaScdJr3eH2L7EPTd/PvjT91oOc9w27F4/RJzlgAEcc=; b=UueM2ePr0w99Av70EaCX6gmK3RfoZfmBdFuYeUFTp8p0E6nMyMiufvEsNsuUUPulZIQ4KPYdDZhQ0pipR23IYUJ6NvB/g3JOUSTe4DlkugmD2gwTu9DmmnCJAoGUI+hYL0NW+laoohCCezNooCYDS/5R1mDQpEr2N/rlehjHM6VTejpaKRsa960AbqLejdOsFtDALN/dKDsN3DUDci6vTUnd2N3iY9EDVoVdWe5xiKqWooavFU2c6wsoCo/NQVDgIUQxzp1x7M82sC4RHzwgVSNBhU+m2wWKKwL3FY0x2cDn7wtHqUg5kjW5PfduiiPwW7o4k47GUwvigdV6Wt84hQ== 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 v5 24/32] tests/qtest/bios-tables-test: Update IORT blobs after revision upgrade Date: Fri, 31 Oct 2025 10:49:57 +0000 Message-ID: <20251031105005.24618-25-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FD:EE_|CY5PR12MB6347:EE_ X-MS-Office365-Filtering-Correlation-Id: e93bc0a7-78c1-43a1-42fc-08de186be059 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|7416014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VVk1CuxutBHHzdKrrFI6xMm0rFw2qe3Pdkk5lmBZOm7qWwBG97+USRbQtpxk?= =?us-ascii?Q?vIdNICSSLwGxtWxpl3h1BVWizdkgixrblFT9hq9+Lu/DDLDqg25vbxvFvYcD?= =?us-ascii?Q?NieBYKxFvM1N5bdCdvMJu3VLUsSXYtCuUoCvT+H9eomDiLu46/BGmpPfmcTv?= =?us-ascii?Q?HyKibopbLXnKZWerxkdyV+uSwgbTBdm4uKpbbHFUO45cZARASp3HynvDbn8m?= =?us-ascii?Q?NUqkqKl3nS3wnwiB9ckksNjUJ5gM+0CPxKGGEb+ZVWPqvQXRhbBpW8xMZB4w?= =?us-ascii?Q?KTfpK5npIBrDo4yn+h223JVsKzsPiXEO5vBoldSWXwJfbDcgu+qzqgxU0VHi?= =?us-ascii?Q?z8H1CYNMtRaj7DE2eAiS5zpBp8Jm+c0TM6uVVWGxKvemWp4IdqWu5b2ocvRb?= =?us-ascii?Q?12cJunJpvab1VrECCY5cuCjwjcRLfVidZNddUBlcXxYui1uVBUjjsdsiMMJk?= =?us-ascii?Q?Y8BWwtUT7mo6L+JatNoYEDT7/45ku6rhe2qL2FcLQyIX5nGT/a8yxHP4LLLi?= =?us-ascii?Q?RMq8raqRuFE+feadbXa2G7+wuH2/DbRppDSmE56Jmu8KlnJVUIolS55LJvE/?= =?us-ascii?Q?Nh2Bz1glZcEgJApTZ2t+LAwnOpJz8pWb2IlsaMnJgcCI9KY7jjzG3kY/4q7T?= =?us-ascii?Q?m1AaL28GCCZJ1deDQkjQGv972DeTB+fQTkIDOhfYQHpgCyXvA27pumghhFyK?= =?us-ascii?Q?aEmnWyZ0zPiMhrxtHYxEkJA+j8gTu4pS/fpEnhjQWejR/Dmyb2qIc4+19c8C?= =?us-ascii?Q?maodp0e7Hrrnhfy+ThWr0LS2DF7kBTSGvupk1U8Ho1Ld50qrlGTSe9gVFe6p?= =?us-ascii?Q?2isnlHScSCEdx92opcvlQwybM/RB0QGrFYH+XUvHL7UNQmvPbf/rVGhDRc8V?= =?us-ascii?Q?kN1eNALt0+9SQYTAxV0oNI5o+gN3oMaJlqETOrj3ddOp5RV26X64Nx9WwXkv?= =?us-ascii?Q?Ub5kGu8VaQefEjAo/eLWYnTgOen0fRlS8KG6VjBcsyqk4Ws1JBg5FN/iUNFK?= =?us-ascii?Q?aYE3umw5mTPf6JooXTmOekT2321p8v7BEWQF2Y6P6Mlpu/Wror6S0RDIx3A/?= =?us-ascii?Q?JiLgeVRiMBlexWW65+dMe3fzf3lB6p7f4FG/MMBqaXCQ/bJCnGnhMb0a6u7v?= =?us-ascii?Q?dhpgXNmaMoOI1HDynvPvFrlziYE3hosppJDF3h4vaHHRpFyo5i4Tvoim4h+U?= =?us-ascii?Q?0pzg/3QtraljBc5cP9X1m/66AJiN74bkqmUOXr10Hw2NU3+AC4yxRXF2wBq0?= =?us-ascii?Q?urImxuZlidwZtQCeE3xRWPzOvefwIAT542dvsb9ijgqj/KOZQkSujUVl9c/0?= =?us-ascii?Q?oKXpscdpP2G1M0J7EuBlC/YnMHKjVJByH3lgNCmUjuhcsRe3FZDaOz0Exbzz?= =?us-ascii?Q?UE00JgYzefDxg9tq7UXi74p4WYDRj6VG+yHPrBg67EWUO0tHChodfALXXQXW?= =?us-ascii?Q?Q+edcGtkaLK/LysmxlsGpf1qlAYYkRwq38T3N8vsS2KThP46WKA44ZBYKfDn?= =?us-ascii?Q?GIw6+7g/g45ggVqaLj9JV65YEjkVpYdvtksgcQdv9HQrT7I5wUFHhh66H1PS?= =?us-ascii?Q?XZiP+aA3851knF+qtuw=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)(7416014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:33.5987 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e93bc0a7-78c1-43a1-42fc-08de186be059 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: BL02EPF0001A0FD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6347 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: 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: 1761908670756154100 Content-Type: text/plain; charset="utf-8" Update the reference IORT blobs after revision upgrade for RMR node support. This affects the aarch64 'virt' IORT tests. IORT diff is the same for all the tests: /* * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20230628 (64-bit version) * Copyright (c) 2000 - 2023 Intel Corporation * - * Disassembly of tests/data/acpi/aarch64/virt/IORT, Mon Oct 20 14:42:41 2= 025 + * Disassembly of /tmp/aml-B4ZRE3, Mon Oct 20 14:42:41 2025 * * ACPI Data Table [IORT] * * Format: [HexOffset DecimalOffset ByteLength] FieldName : FieldValue (i= n hex) */ [000h 0000 004h] Signature : "IORT" [IO Remapping Tab= le] [004h 0004 004h] Table Length : 00000080 -[008h 0008 001h] Revision : 03 -[009h 0009 001h] Checksum : B3 +[008h 0008 001h] Revision : 05 +[009h 0009 001h] Checksum : B1 [00Ah 0010 006h] Oem ID : "BOCHS " [010h 0016 008h] Oem Table ID : "BXPC " [018h 0024 004h] Oem Revision : 00000001 [01Ch 0028 004h] Asl Compiler ID : "BXPC" [020h 0032 004h] Asl Compiler Revision : 00000001 ... Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger Reviewed-by: Jonathan Cameron --- tests/data/acpi/aarch64/virt/IORT | Bin 128 -> 128 bytes tests/data/acpi/aarch64/virt/IORT.its_off | Bin 172 -> 172 bytes tests/data/acpi/aarch64/virt/IORT.smmuv3-dev | Bin 364 -> 364 bytes tests/data/acpi/aarch64/virt/IORT.smmuv3-legacy | Bin 276 -> 276 bytes tests/qtest/bios-tables-test-allowed-diff.h | 4 ---- 5 files changed, 4 deletions(-) diff --git a/tests/data/acpi/aarch64/virt/IORT b/tests/data/acpi/aarch64/vi= rt/IORT index 7efd0ce8a6b3928efa7e1373f688ab4c5f50543b..a234aae4c2d04668d34313836d3= 2ca20e19c0880 100644 GIT binary patch delta 18 ZcmZo*Y+&T_^bZPYU|?Wi-8hk}3;-#Q1d;#% delta 18 ZcmZo*Y+&T_^bZPYU|?Wi-aL`33;-#O1d;#% diff --git a/tests/data/acpi/aarch64/virt/IORT.its_off b/tests/data/acpi/aa= rch64/virt/IORT.its_off index c10da4e61dd00e7eb062558a2735d49ca0b20620..0cf52b52f671637bf4dbc9e0fc8= 0c3c73d0b01d3 100644 GIT binary patch delta 18 ZcmZ3(xQ3C-(?2L=3D4FdxM>(q%{ivTdM1ttIh delta 18 ZcmZ3(xQ3C-(?2L=3D4FdxM^Yn>aivTdK1ttIh diff --git a/tests/data/acpi/aarch64/virt/IORT.smmuv3-dev b/tests/data/acpi= /aarch64/virt/IORT.smmuv3-dev index 67be268f62afbf2d9459540984da5e9340afdaaa..43a15fe2bf6cc650ffcbceff869= 19ea892928c0e 100644 GIT binary patch delta 19 acmaFE^oEJc(?2LAhmnDS^~6T5Bt`%|fCYU3 delta 19 acmaFE^oEJc(?2LAhmnDS`P4?PBt`%|eg%C1 diff --git a/tests/data/acpi/aarch64/virt/IORT.smmuv3-legacy b/tests/data/a= cpi/aarch64/virt/IORT.smmuv3-legacy index 41981a449fc306b80cccd87ddec3c593a8d72c07..5779d0e225a62b9cd70bebbacb7= fd1e519c9e3c4 100644 GIT binary patch delta 19 acmbQjG=3D+)F(?2Lggpq-P)oUXc7b5^FiUXej delta 19 acmbQjG=3D+)F(?2Lggpq-P*=3DHjc7b5^Fhy$Mh diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 3279638ad0..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,5 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/aarch64/virt/IORT", -"tests/data/acpi/aarch64/virt/IORT.its_off", -"tests/data/acpi/aarch64/virt/IORT.smmuv3-legacy", -"tests/data/acpi/aarch64/virt/IORT.smmuv3-dev", --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908398; cv=pass; d=zohomail.com; s=zohoarc; b=KhR1QlhcJSy/VR4PjnaTQieTg5eeh74tbbmokVNqzuGEmjfPtEdwTYu+7Cdi0jIlcHmb2QJDZekJzfWgC/P83K/wYoDEmusJlsWxZznj++YCDrpnHNYBSBEdo/u9dSoYIWV02AnuBbIVQ9S+M7bHZYNcBYAsQraPR0PjTPdu+cA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908398; 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=Qb1Aq72Q2W7XboVlRPnewxnNumrDIjMDhpprbT6jj8A=; b=ATzUaBJ/vZbLY6QWbHvuzhZ+tYeWaWe3oukKL8JnQOufb00rTEMKy3SqB+XhVbbXIcMDRm2rrc5ZlRDrx3Vuq1/sanaxrNVC+sXRU+7BEfryu8C+oV4/y7uhy2fD3Uiqtr3/Vf43vp3+pwhPba2oggqbztnwcWI7BY9J2bIBfxw= 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 1761908398640975.5212520801135; Fri, 31 Oct 2025 03:59:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmne-0008WK-4o; Fri, 31 Oct 2025 06:56:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmV-0006Kh-Hn; Fri, 31 Oct 2025 06:54:55 -0400 Received: from mail-westus3azlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c107::1] helo=PH8PR06CU001.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 1vEmmM-00033H-Se; Fri, 31 Oct 2025 06:54:55 -0400 Received: from BLAPR03CA0010.namprd03.prod.outlook.com (2603:10b6:208:32b::15) by PH7PR12MB8056.namprd12.prod.outlook.com (2603:10b6:510:269::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.12; Fri, 31 Oct 2025 10:54:39 +0000 Received: from BL02EPF0001A101.namprd05.prod.outlook.com (2603:10b6:208:32b:cafe::f8) by BLAPR03CA0010.outlook.office365.com (2603:10b6:208:32b::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.14 via Frontend Transport; Fri, 31 Oct 2025 10:54:38 +0000 Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A101.mail.protection.outlook.com (10.167.241.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:38 +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, 31 Oct 2025 03:54:29 -0700 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; Fri, 31 Oct 2025 03:54:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ExRC0VFyYrJ1mnzwBADnOddI+gCWxlfX+py5f+R33Qkg1qLo2F9bTJCsWkm9fjdzpo+1uFUrgCitOdz6E+c9bFisbRJspTX0VHkhelSMFsR4H1th1xN6qIUFplvHOnhwBDD9kXZM0YrVlXys+iztpIIINaVSDiUI784+3mByf2yzzGRyW+akV7bE5uDxHcsuz6ybyK896zTg3ELIEA+Weu7rFvOSsza49OVCE9MuSZTrVMNVs5xYk7j5pGILSKYIXiu1aK+WmTR/s/gHu54FhceHVnG17l8sbV2r9BOVL2ctUE7UnDHHtplowi+Sxy3Qx3DVpJFmUYtk6oP5yRPe1w== 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=Qb1Aq72Q2W7XboVlRPnewxnNumrDIjMDhpprbT6jj8A=; b=NF9+RyNjPh/vkf6uj8DAjNvA/udcmzE22VYY/dVpL3FFIINYC265V5E9OxGSzRFu/iXw/rvt5jvBVeGKEamTEWtp7MxFhe2FP7ebAOmBcmbyXYO2WpZceUJlkN4krL4AI3oydzMbtmpPm0sThLDClmQefcB5c5zRCwpA0OVr99dXBEHdGPb4pQ3HJfwIVcA4M+BM7wqsXBPwcQN2LdvpWaRKU23lP9ZhSbFVmTT+XV3Pw/ZFXku/lmZAADXmRtqR2yM/5PL9XmZUrmV6riRt2ckEUyg0A/pGyKxHw4rg4N9wNuO9kUnlKIdBCH5lSSFyOF6e8UIzRtHYU9KpAmDvxQ== 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=Qb1Aq72Q2W7XboVlRPnewxnNumrDIjMDhpprbT6jj8A=; b=FEwuOHxDs5wkUlXa3rTnAM8G9VCjI5K4EJhkNo8lGrKnZ8H6jaOEvQpQ3L5tLfRLDGRPS8uL4UZZxOcr3d+lBHVaJU6CQNhjYTO3pbgoINgPAlN8fimIQSQuga7Fl+lakiRPofpCuM4Oe9Bs8vSHng484E/q+vjSISRm7HbDyNPxq0+LElDOjJfcxqFO6zOS347TF6Fn3weHwbUhNlua8WYdVPZfUnj/etviMxlVIjPA0oeCAsGL4WvinM8xmGZcy7I7dZFiED9G5YVgpj1uYs2LR3QtvVMdK80HHa7sKEPrrSxyZbPaAEcrIqb3Lc+zyJ/VqeVcc4GvmwHMS2lNxA== 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 v5 25/32] hw/arm/smmuv3: Add accel property for SMMUv3 device Date: Fri, 31 Oct 2025 10:49:58 +0000 Message-ID: <20251031105005.24618-26-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: BL02EPF0001A101:EE_|PH7PR12MB8056:EE_ X-MS-Office365-Filtering-Correlation-Id: 7831eac0-2486-4fef-a282-08de186be35b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|7416014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?0Kjc=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)(36860700013)(376014)(7416014)(1800799024)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:38.6444 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7831eac0-2486-4fef-a282-08de186be35b 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: BL02EPF0001A101.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8056 Received-SPF: permerror client-ip=2a01:111:f403:c107::1; envelope-from=skolothumtho@nvidia.com; helo=PH8PR06CU001.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, 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: 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: 1761908401633154100 Introduce an =E2=80=9Caccel=E2=80=9D property to enable accelerator mode. Live migration is currently unsupported when accelerator mode is enabled, so a migration blocker is added. Because this mode relies on IORT RMR for MSI support, accelerator mode is not supported for device tree boot. Also, in the accelerated SMMUv3 case, the host SMMUv3 is configured in nest= ed mode (S1 + S2), and the guest owns the Stage-1 page table. Therefore, we expose only Stage-1 to the guest to ensure it uses the correct page table format. Reviewed-by: Nicolin Chen Reviewed-by: Eric Auger Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron --- hw/arm/smmuv3.c | 28 ++++++++++++++++++++++++++++ hw/arm/virt-acpi-build.c | 4 +--- hw/arm/virt.c | 31 ++++++++++++++++++++++--------- include/hw/arm/smmuv3.h | 1 + 4 files changed, 52 insertions(+), 12 deletions(-) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index fae545f35c..f040e6b91e 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -20,6 +20,7 @@ #include "qemu/bitops.h" #include "hw/irq.h" #include "hw/sysbus.h" +#include "migration/blocker.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/qdev-core.h" @@ -1927,6 +1928,17 @@ static void smmu_reset_exit(Object *obj, ResetType t= ype) smmuv3_accel_reset(s); } =20 +static bool smmu_validate_property(SMMUv3State *s, Error **errp) +{ +#ifndef CONFIG_ARM_SMMUV3_ACCEL + if (s->accel) { + error_setg(errp, "accel=3Don support not compiled in"); + return false; + } +#endif + return true; +} + static void smmu_realize(DeviceState *d, Error **errp) { SMMUState *sys =3D ARM_SMMU(d); @@ -1935,8 +1947,17 @@ static void smmu_realize(DeviceState *d, Error **err= p) SysBusDevice *dev =3D SYS_BUS_DEVICE(d); Error *local_err =3D NULL; =20 + if (!smmu_validate_property(s, errp)) { + return; + } + if (s->accel) { smmuv3_accel_init(s); + error_setg(&s->migration_blocker, "Migration not supported with SM= MUv3 " + "accelerator mode enabled"); + if (migrate_add_blocker(&s->migration_blocker, errp) < 0) { + return; + } } =20 c->parent_realize(d, &local_err); @@ -2035,6 +2056,7 @@ static const Property smmuv3_properties[] =3D { * Defaults to stage 1 */ DEFINE_PROP_STRING("stage", SMMUv3State, stage), + DEFINE_PROP_BOOL("accel", SMMUv3State, accel, false), }; =20 static void smmuv3_instance_init(Object *obj) @@ -2056,6 +2078,12 @@ static void smmuv3_class_init(ObjectClass *klass, co= nst void *data) device_class_set_props(dc, smmuv3_properties); dc->hotpluggable =3D false; dc->user_creatable =3D true; + + object_class_property_set_description(klass, + "accel", + "Enable SMMUv3 accelerator suppo= rt." + "Allows host SMMUv3 to be config= ured " + "in nested mode for vfio-pci dev= assignment"); } =20 static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 097a48cc83..6106ad1b6e 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -399,9 +399,7 @@ static int iort_smmuv3_devices(Object *obj, void *opaqu= e) } =20 bus =3D PCI_BUS(object_property_get_link(obj, "primary-bus", &error_ab= ort)); - if (object_property_find(obj, "accel")) { - sdev.accel =3D object_property_get_bool(obj, "accel", &error_abort= ); - } + sdev.accel =3D object_property_get_bool(obj, "accel", &error_abort); pbus =3D PLATFORM_BUS_DEVICE(vms->platform_bus_dev); sbdev =3D SYS_BUS_DEVICE(obj); sdev.base =3D platform_bus_get_mmio_addr(pbus, sbdev, 0); diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 8a347a6e39..2498e3beff 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1488,8 +1488,8 @@ static void create_smmuv3_dt_bindings(const VirtMachi= neState *vms, hwaddr base, g_free(node); } =20 -static void create_smmuv3_dev_dtb(VirtMachineState *vms, - DeviceState *dev, PCIBus *bus) +static void create_smmuv3_dev_dtb(VirtMachineState *vms, DeviceState *dev, + PCIBus *bus, Error **errp) { PlatformBusDevice *pbus =3D PLATFORM_BUS_DEVICE(vms->platform_bus_dev); SysBusDevice *sbdev =3D SYS_BUS_DEVICE(dev); @@ -1497,10 +1497,15 @@ static void create_smmuv3_dev_dtb(VirtMachineState = *vms, hwaddr base =3D platform_bus_get_mmio_addr(pbus, sbdev, 0); MachineState *ms =3D MACHINE(vms); =20 - if (!(vms->bootinfo.firmware_loaded && virt_is_acpi_enabled(vms)) && - strcmp("pcie.0", bus->qbus.name)) { - warn_report("SMMUv3 device only supported with pcie.0 for DT"); - return; + if (!(vms->bootinfo.firmware_loaded && virt_is_acpi_enabled(vms))) { + if (object_property_get_bool(OBJECT(dev), "accel", &error_abort)) { + error_setg(errp, "SMMUv3 with accel=3Don not supported for DT"= ); + return; + } + if (strcmp("pcie.0", bus->qbus.name)) { + warn_report("SMMUv3 device only supported with pcie.0 for DT"); + return; + } } base +=3D vms->memmap[VIRT_PLATFORM_BUS].base; irq +=3D vms->irqmap[VIRT_PLATFORM_BUS]; @@ -3090,9 +3095,17 @@ static void virt_machine_device_plug_cb(HotplugHandl= er *hotplug_dev, return; } =20 - create_smmuv3_dev_dtb(vms, dev, bus); - if (object_property_find(OBJECT(dev), "accel") && - object_property_get_bool(OBJECT(dev), "accel", &error_abor= t)) { + create_smmuv3_dev_dtb(vms, dev, bus, errp); + if (object_property_get_bool(OBJECT(dev), "accel", &error_abor= t)) { + char *stage; + stage =3D object_property_get_str(OBJECT(dev), "stage", + &error_fatal); + /* If no stage specified, SMMUv3 will default to stage 1 */ + if (*stage && strcmp("1", stage)) { + error_setg(errp, "Only stage1 is supported for SMMUV3 = with " + "accel=3Don"); + return; + } vms->pci_preserve_config =3D true; } } diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index e54ece2d38..6b9c27a9c4 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -67,6 +67,7 @@ struct SMMUv3State { /* SMMU has HW accelerator support for nested S1 + s2 */ bool accel; struct SMMUv3AccelState *s_accel; + Error *migration_blocker; }; =20 typedef enum { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908712; cv=pass; d=zohomail.com; s=zohoarc; b=aBCsVOoSbrUvwVA4ZCRmNYwiX4bFSPj64dAh8NaF+JUhWa8ble25c8POJTcZc2+n31rPCnKoIXa9zRIB1lZTwOsx6+4Wd5FHax+tQFydeWEB6DLN0Eyg3xV10nXg/thTSxJTGM8wMAod7SEd95ELhU5PQCuqeRRQld73+EvisVA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908712; 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=lH9mjxg2kouO5o9J+if50959fgzIOxD5nTgCjCmcM7g=; b=lrTS+J8XUjmCKqL12n9oLDgFsApz6uN8dzENGgb5f8oXjKEkv8Ga8yUUNst+oMUyQfYUdsxwXibTK0KiRwlFO4CbrWadZ9esLdhKqC/9V6Shw1TCPJzEv0cn/ae/XqXPy2Q+92t6JANjsojIE4xptpDhRYrA9PhnMghDf5xHQzU= 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 1761908712375377.61595613055067; Fri, 31 Oct 2025 04:05:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmn5-0007Vi-Cx; Fri, 31 Oct 2025 06:55:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmi-000759-TY; Fri, 31 Oct 2025 06:55:10 -0400 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 1vEmmY-000348-Bb; Fri, 31 Oct 2025 06:55:08 -0400 Received: from MN2PR12CA0021.namprd12.prod.outlook.com (2603:10b6:208:a8::34) by BL3PR12MB6522.namprd12.prod.outlook.com (2603:10b6:208:3be::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:54:43 +0000 Received: from BL02EPF0001A0FB.namprd03.prod.outlook.com (2603:10b6:208:a8:cafe::cb) by MN2PR12CA0021.outlook.office365.com (2603:10b6:208:a8::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:43 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FB.mail.protection.outlook.com (10.167.242.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:42 +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.1544.14; Fri, 31 Oct 2025 03:54:34 -0700 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; Fri, 31 Oct 2025 03:54:30 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZG8UDQzwnoeWFmJleiyG82HrIsBq160zP+/AvkAx5FgNYpeWtfS/U36Imt+/UfMrKJ9hCqRNimc1GCLYJa4HCvWQXQ5M7Uk8VeGX6Hc9/WY8Bx4g3bSwL6oVlMsHFaoK502l8WigV1eQKiMJ9S0IQT1dgMDx+ISMbjV9QmAIAxgfRF30BPKssbMaRTzyENkY3XrYh4TJfBCAx0KyxhJoAH6+O5CeAwzF2iUUIQk0cVgkZ4z3KUhkFGVKDKsNcIxr4CBpkJBL0az2Q7V3wYCNnqsXP/86WP82f+uy6C+k+JR4E8Jq9lITl/BE5q24QjRgnVA8IVu9KFvx2OpaG1YwVg== 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=lH9mjxg2kouO5o9J+if50959fgzIOxD5nTgCjCmcM7g=; b=AZtKGXdS1cuEoQ+P0ygvFuIHHdmb7DWZgUXwtbWUajKNyA0/FD+3kUCG8A8wuJEfvr3j5FZ0j9l3XkZ+WIlXRfwdqyEOZp0erPCKYxzShgq4E3c3O1B4CLwb2NY1j8Sq0rgUEUvuGJiG1O16DOvcFPo9+Ay+AsZVQJTOAiyqIw1gQfhTlNZN7BufjfdbDDUGaIVU77Z8GkzYLhRXZFb1t+VlzEnItpmNKE2lUJ44vpadb68Ci0wkgoU5tf/eNIE0NgyAfnMPI/i2tR77gSwYEVEqnlm5r+UR/RRf1JRWhkZjYIENPUetYOWSoambT8JjkCf9wnf11cF8183g0UEUoQ== 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=lH9mjxg2kouO5o9J+if50959fgzIOxD5nTgCjCmcM7g=; b=h3jWilh2jWANBeMmrvkXVnysht2HIWiUIOHsf+PnsOayFho0shNIny6/enbr9nbxtaKu7x2YtxPXwG+H46WGHurhS5KvMBRYgTITNNv8lSQ/tnqgrZgLGYWno/sdsUdF5wFdvVQAJTURHaaF2Ug8YudVoqcOtsKoUQ5D4Lb2Ct7UkfwDaq9FbNPYXPBOxUuCmGY5wGSvMNVkbZCil2nQ5gzmTrZ5DInrt4mdfUFPFRw7MRT85sjsVoqUTdXUeK4rakorgoVEIwAJNUpnxbx4cmXqMH0Hg3JqxMbbiF2+AdNNOiyjRXAMd4gSsH3aeyS5iIx0x/hTgoT/KncDog028w== 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 v5 26/32] hw/arm/smmuv3-accel: Add a property to specify RIL support Date: Fri, 31 Oct 2025 10:49:59 +0000 Message-ID: <20251031105005.24618-27-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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: BL02EPF0001A0FB:EE_|BL3PR12MB6522:EE_ X-MS-Office365-Filtering-Correlation-Id: e1859523-4165-453e-618d-08de186be5de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: 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 =?utf-8?Q?Y+uQ=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)(1800799024)(82310400026)(36860700013)(7416014)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:42.8510 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e1859523-4165-453e-618d-08de186be5de 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: BL02EPF0001A0FB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6522 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, 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: 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: 1761908715347154100 Currently QEMU SMMUv3 has RIL support by default. But if accelerated mode is enabled, RIL has=C2=A0to be compatible with host SMMUv3 support. Add a property so that the user can specify this. Reviewed-by: Jonathan Cameron Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- hw/arm/smmuv3-accel.c | 15 +++++++++++++-- hw/arm/smmuv3-accel.h | 4 ++++ hw/arm/smmuv3.c | 12 ++++++++++++ include/hw/arm/smmuv3.h | 1 + 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 8b9f88dd8e..35298350cb 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -63,10 +63,10 @@ smmuv3_accel_check_hw_compatible(SMMUv3State *s, return false; } =20 - /* QEMU SMMUv3 supports Range Invalidation by default */ + /* User can disable QEMU SMMUv3 Range Invalidation support */ if (FIELD_EX32(info->idr[3], IDR3, RIL) !=3D FIELD_EX32(s->idr[3], IDR3, RIL)) { - error_setg(errp, "Host SMMUv3 doesn't support Range Invalidation"); + error_setg(errp, "Host SMMUv3 differs in Range Invalidation suppor= t"); return false; } =20 @@ -635,6 +635,17 @@ static const PCIIOMMUOps smmuv3_accel_ops =3D { .get_msi_address_space =3D smmuv3_accel_get_msi_as, }; =20 +void smmuv3_accel_idr_override(SMMUv3State *s) +{ + if (!s->accel) { + return; + } + + /* By default QEMU SMMUv3 has RIL. Update IDR3 if user has disabled it= */ + if (!s->ril) { + s->idr[3] =3D FIELD_DP32(s->idr[3], IDR3, RIL, 0); + } +} =20 /* Based on SMUUv3 GBPA configuration, attach a corresponding HWPT */ void smmuv3_accel_gbpa_update(SMMUv3State *s) diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index ee79548370..4f5b672712 100644 --- a/hw/arm/smmuv3-accel.h +++ b/hw/arm/smmuv3-accel.h @@ -55,6 +55,7 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *s, void *cmd= , SMMUDevice *sdev, Error **errp); void smmuv3_accel_gbpa_update(SMMUv3State *s); void smmuv3_accel_reset(SMMUv3State *s); +void smmuv3_accel_idr_override(SMMUv3State *s); #else static inline void smmuv3_accel_init(SMMUv3State *s) { @@ -83,6 +84,9 @@ static inline void smmuv3_accel_gbpa_update(SMMUv3State *= s) static inline void smmuv3_accel_reset(SMMUv3State *s) { } +static inline void smmuv3_accel_idr_override(SMMUv3State *s) +{ +} #endif =20 #endif /* HW_ARM_SMMUV3_ACCEL_H */ diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index f040e6b91e..b9d96f5762 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -305,6 +305,7 @@ static void smmuv3_init_id_regs(SMMUv3State *s) s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN16K, 1); s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN64K, 1); s->aidr =3D 0x1; + smmuv3_accel_idr_override(s); } =20 static void smmuv3_reset(SMMUv3State *s) @@ -1936,6 +1937,13 @@ static bool smmu_validate_property(SMMUv3State *s, E= rror **errp) return false; } #endif + if (!s->accel) { + if (!s->ril) { + error_setg(errp, "ril can only be disabled if accel=3Don"); + return false; + } + return false; + } return true; } =20 @@ -2057,6 +2065,8 @@ static const Property smmuv3_properties[] =3D { */ DEFINE_PROP_STRING("stage", SMMUv3State, stage), DEFINE_PROP_BOOL("accel", SMMUv3State, accel, false), + /* RIL can be turned off for accel cases */ + DEFINE_PROP_BOOL("ril", SMMUv3State, ril, true), }; =20 static void smmuv3_instance_init(Object *obj) @@ -2084,6 +2094,8 @@ static void smmuv3_class_init(ObjectClass *klass, con= st void *data) "Enable SMMUv3 accelerator suppo= rt." "Allows host SMMUv3 to be config= ured " "in nested mode for vfio-pci dev= assignment"); + object_class_property_set_description(klass, "ril", + "Disable range invalidation support (for accel=3Don)"); } =20 static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index 6b9c27a9c4..95202c2757 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -68,6 +68,7 @@ struct SMMUv3State { bool accel; struct SMMUv3AccelState *s_accel; Error *migration_blocker; + bool ril; }; =20 typedef enum { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908457; cv=pass; d=zohomail.com; s=zohoarc; b=b7YnkAQtlV04f6b3J/42zoHQ4Fm11oQTIUHkKDkyJqtgyWGvSgoUalD64hUBAS+U/bXQ2wdd6n4A8nu9R0lTD9pRxY9s1+JHGdIYNMm3+qGlHbwRkP1r+e0HTD2wJcU+fgaEKAxbkPq778XtC8fBMCHxj1CmlQP1wSXKhwDv8X8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908457; 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=EJbYO1QWxZ6zOVqfOhWuQaMdT3xdK+Ib9smb9Zv+QBM=; b=EQb+mk1dcmWtqmG39m45Aenjk9Fm9e/NWeBrLP1xsqgLNP715lkzakjhlft5k8UnTTGWqd/BiYbNVoAZuveIo/5hbFStapHN1h7I48c8/y2X1rSeZwOEEke1RTQNf70kp47IGOsGVwDOXP69fKfi1I8QtnnWNPoNzP5UBCK1FmI= 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 1761908457584557.224563292326; Fri, 31 Oct 2025 04:00:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmn6-0007PG-48; Fri, 31 Oct 2025 06:55:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmf-0006u8-5B; Fri, 31 Oct 2025 06:55:05 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] helo=PH7PR06CU001.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 1vEmma-00034N-Uy; Fri, 31 Oct 2025 06:55:03 -0400 Received: from MN2PR12CA0008.namprd12.prod.outlook.com (2603:10b6:208:a8::21) by LV5PR12MB9778.namprd12.prod.outlook.com (2603:10b6:408:300::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:54:48 +0000 Received: from BL02EPF0001A0FB.namprd03.prod.outlook.com (2603:10b6:208:a8:cafe::c9) by MN2PR12CA0008.outlook.office365.com (2603:10b6:208:a8::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:46 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FB.mail.protection.outlook.com (10.167.242.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:48 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Fri, 31 Oct 2025 03:54:39 -0700 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; Fri, 31 Oct 2025 03:54:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tk2C/rXECeycSM5Cn9Ns1BFjNPW61XjFWFpaH9TZdrom+FQWxeeQ+ov2EYuuZce7muNZrCy6FzcgzAkVhAj9ON0bBe+K1QXYx6S23Uc769UC2GKulWWzFF2dhhMFxb9J0aCEx3lELo1moHgcF/AQnfvwbEwSR9DPVYOit5KS13ZUkT9vTifSqJlHMzH1fDu/Q61znNaO9MG1ncD+5JsSmXtolPawz/XsoSsSrCVtVnhppwt8MzpEraG/Dz+FAwI5G5R5W6VlAlFVGdn1hEr9LBAk19uQBZjEXSeIapctdz8krQDFG+t1tvUPa01iVJ200AiNUAfnfVJjt9vQsFaBHw== 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=EJbYO1QWxZ6zOVqfOhWuQaMdT3xdK+Ib9smb9Zv+QBM=; b=XlrCqz8bsP8TUWysCkJTDksiF0gOr2QI1wlUaNB17NMtg3jhT/7Vu1hjdhzhjmraIKtLO1uSFVqviVHBhFLTgXaN+Tv5iThNi1cov1SoVr+aqPSOgZmk+gUMm2VJzeKND0ECWrCSQMHrXvlQbIm0u7WYdm7JPuS6Cfgbj3WGThWZUIXFt0fhBVG1d8t0eyfpQeUSOepWJXtn1fRG1obO9ryQI3Gfb2yYGoxi8M1adUpmqBF0qpG9dpSpg/Q2PobNVWTyybCLdu93JMRhpdMJSdZAU53p+VoNmgBZ5BbOgnDfwGxiqJfVaBQJ36z/s0n2wSElCaqapE17/e+KuKZvow== 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=EJbYO1QWxZ6zOVqfOhWuQaMdT3xdK+Ib9smb9Zv+QBM=; b=bz+QV9uBtwfvI8xg4uwCE7l9TpHt1F6pZKGGaDTaLMpFDXiDvlBthpFJN6JIFtDY8JaYKoiLaxTVYS6TJvlluTS3uN0yO1pcJVuuICGTGGbHt4IepptAHKJcylP1CVAY5WUNqpXmiHESg5+tF6Qe4/4OrT1jiviRhgZiRo9yQU3xYmvs414s1UCDPzwgi8giWo9TLfu1Rqsxp3j7JOAbtSoDmBeK5fboetSU9Hk5VzuOtufUBESLkm+BqXgQ6rx/kD/LjfVK2SNABiNt6WDp4XKRJShHigJ52yxZSLjcBVwnCmC9yqvn/fkJ06xJRRlxdHmpYNvQ4G9E8nzXHITrgw== 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 v5 27/32] hw/arm/smmuv3-accel: Add support for ATS Date: Fri, 31 Oct 2025 10:50:00 +0000 Message-ID: <20251031105005.24618-28-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FB:EE_|LV5PR12MB9778:EE_ X-MS-Office365-Filtering-Correlation-Id: 061cd689-fd2a-4ede-54b3-08de186be8fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700013|7416014|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?KAzNTYO8LbozbFrnaQh7/oFqz0luOVV0trS3XS64XYuy2oImCxmBjShCrFlU?= =?us-ascii?Q?HqJJg5Eo1ZlfWZlgSnz113o+w+hup0f0O0zlbFjvheZlbNA1pMYOejVp0jVf?= =?us-ascii?Q?5v9kYL6s15te6sQRKekYJxGp5bBkRUd8aWJUglpom10mqJiwdAigd7T3GrDA?= =?us-ascii?Q?7cXU1VBtx3vYAMObtAu/gKCNh4Q6YJ6sam/uWceecjl7nSWGJ/Ede59CZE8k?= =?us-ascii?Q?uDqIqDeVKe9gkeo3Ty8R1QX9kM07MjUT1V1aBsV8UdH97LVDbswG/xnesNeq?= =?us-ascii?Q?8yLAyiA5+yyeRo5kJI0ar3TNtMW66Ts+x68J+envwtFw1Awjq5HfC72dcT3p?= =?us-ascii?Q?/V/twQcEeogqpiEEHwwokBkhCOtLxXCc071sf1g28YeD2G0JXhXCOp/y5xeJ?= =?us-ascii?Q?6HDHdxyWSgsVMAkEqkaXXbULzN4AUGOVIb6pzPbbV2ZofzqFFBFN8r1HBnTr?= =?us-ascii?Q?5JI1sH9RRLA5SWq9CKAPv9j/sex/ypxf+weV4b7yeikFeMEPgfObQAK7Jq36?= =?us-ascii?Q?ETuyeu6pOWwZ5iOqTCmcCpqbgWHUO8TaDx9g1Igo0mlQuKXI9ZaONoIh8gF5?= =?us-ascii?Q?1LoNDXdxqRDl+hE04McVWvUuAv/fb/ipTHdTwS73s//pQgRNv70wzuBE7JnD?= =?us-ascii?Q?/5GNmv6Daa633Q4y/6+AQMR+6g89dIZXrvB1DlPGsmaPRuRbvY4KDJJtvpBV?= =?us-ascii?Q?WdeMZO9icZiwp9h+NGqSXv8NorO4nAb4hzfy2CqEu++6+z63+Y1uy8GJqO1F?= =?us-ascii?Q?z9YOvON79lxI0/CUcarLa/Z+/KdOmfjzdBAr6SNA5L79ScwGAxrMGu4YESJw?= =?us-ascii?Q?SwFoblXZVBMkTpVgI1lMY9+cOaWZDKNOmgdo2GGvlQLeKdr9SRDs6Gu6s2N0?= =?us-ascii?Q?e3+aLnCXrTa30+v/pclkxLjSdZgSnAVPrRGZBH88imfXUjiqXTa2bbrUoGHL?= =?us-ascii?Q?gJRI992h/vQDaG0e61ubfzKoRbhXIL424m+jH7ujWJwelP1gYpC7n5Whs98o?= =?us-ascii?Q?9EFCr4eGYSPVupqvGQAlP1Y2JmREA3nvuJCocmLnyVeJ3oJlauWRWZkJ9u3i?= =?us-ascii?Q?f1BA46rEHJ4g1duqny6F5y/NZ+/FVS2zr3dtnqtBlTFsQikMcGm9mzWmGoJi?= =?us-ascii?Q?VhQvxpxyHtDhlsaFVTCO338RfFJ9bk6ZcR0wDzV4BOprR/3ZiMG8aLKoPVs3?= =?us-ascii?Q?HzUi2tE8X8BlBKdOr5ReuI3ZAWiprASBKdgcLBplRxH2gCAb8lFEQ3H9qCyG?= =?us-ascii?Q?ESn/q/zF0KWCQuzIQ/OWc8kAckvFwY5XiET8BGXjtDzqH/OThyW07ui9CuQY?= =?us-ascii?Q?xGdp5z0O/CPTQxgxCB+4GvwRpgyZTawV7AqoXzoDLd0jvknRV9me9K3siJq7?= =?us-ascii?Q?ZXs21tutM2kZrM0RX1llSuhphkiYwH9ODENZMnp2sB3u59BHY8Ygd7nqP8zA?= =?us-ascii?Q?6HafWt4yllDRgRG4T1iHZP6HCKSlS0AXYQHRpbXyalragRJWDZWA3/BgZaCH?= =?us-ascii?Q?NyZyJ7llDfGZzHAu5IIFbfpSi+40dyRepPquVDIupbGCy9GRdjL8byK3euw/?= =?us-ascii?Q?RUsrkBNzOqJHjZ2XsQA=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)(1800799024)(36860700013)(7416014)(376014)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:48.0850 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 061cd689-fd2a-4ede-54b3-08de186be8fc 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: BL02EPF0001A0FB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV5PR12MB9778 Received-SPF: permerror client-ip=2a01:111:f403:c107::9; envelope-from=skolothumtho@nvidia.com; helo=PH7PR06CU001.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, 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: 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: 1761908465287154100 Content-Type: text/plain; charset="utf-8" QEMU SMMUv3 does not enable ATS (Address Translation Services) by default. When accelerated mode is enabled and the host SMMUv3 supports ATS, it can be useful to report ATS capability to the guest so it can take advantage of it if the device also supports ATS. Note: ATS support cannot be reliably detected from the host SMMUv3 IDR registers alone, as firmware ACPI IORT tables may override them. The user must therefore ensure the support before enabling it. Reviewed-by: Jonathan Cameron Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3-accel.c | 4 ++++ hw/arm/smmuv3.c | 25 ++++++++++++++++++++++++- hw/arm/virt-acpi-build.c | 10 ++++++++-- include/hw/arm/smmuv3.h | 1 + 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 35298350cb..5b0ef3804a 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -645,6 +645,10 @@ void smmuv3_accel_idr_override(SMMUv3State *s) if (!s->ril) { s->idr[3] =3D FIELD_DP32(s->idr[3], IDR3, RIL, 0); } + /* QEMU SMMUv3 has no ATS. Update IDR0 if user has enabled it */ + if (s->ats) { + s->idr[0] =3D FIELD_DP32(s->idr[0], IDR0, ATS, 1); /* ATS */ + } } =20 /* Based on SMUUv3 GBPA configuration, attach a corresponding HWPT */ diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index b9d96f5762..d95279a733 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1517,13 +1517,28 @@ static int smmuv3_cmdq_consume(SMMUv3State *s) */ smmuv3_range_inval(bs, &cmd, SMMU_STAGE_2); break; + case SMMU_CMD_ATC_INV: + { + SMMUDevice *sdev =3D smmu_find_sdev(bs, CMD_SID(&cmd)); + Error *local_err =3D NULL; + + if (!sdev) { + break; + } + + if (!smmuv3_accel_issue_inv_cmd(s, &cmd, sdev, &local_err)) { + error_report_err(local_err); + cmd_error =3D SMMU_CERROR_ILL; + break; + } + break; + } case SMMU_CMD_TLBI_EL3_ALL: case SMMU_CMD_TLBI_EL3_VA: case SMMU_CMD_TLBI_EL2_ALL: case SMMU_CMD_TLBI_EL2_ASID: case SMMU_CMD_TLBI_EL2_VA: case SMMU_CMD_TLBI_EL2_VAA: - case SMMU_CMD_ATC_INV: case SMMU_CMD_PRI_RESP: case SMMU_CMD_RESUME: case SMMU_CMD_STALL_TERM: @@ -1942,6 +1957,10 @@ static bool smmu_validate_property(SMMUv3State *s, E= rror **errp) error_setg(errp, "ril can only be disabled if accel=3Don"); return false; } + if (s->ats) { + error_setg(errp, "ats can only be enabled if accel=3Don"); + return false; + } return false; } return true; @@ -2067,6 +2086,7 @@ static const Property smmuv3_properties[] =3D { DEFINE_PROP_BOOL("accel", SMMUv3State, accel, false), /* RIL can be turned off for accel cases */ DEFINE_PROP_BOOL("ril", SMMUv3State, ril, true), + DEFINE_PROP_BOOL("ats", SMMUv3State, ats, false), }; =20 static void smmuv3_instance_init(Object *obj) @@ -2096,6 +2116,9 @@ static void smmuv3_class_init(ObjectClass *klass, con= st void *data) "in nested mode for vfio-pci dev= assignment"); object_class_property_set_description(klass, "ril", "Disable range invalidation support (for accel=3Don)"); + object_class_property_set_description(klass, "ats", + "Enable/disable ATS support (for accel=3Don). Please ensure host " + "platform has ATS support before enabling this"); } =20 static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 6106ad1b6e..1b0d0a2029 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -345,6 +345,7 @@ typedef struct AcpiIortSMMUv3Dev { /* Offset of the SMMUv3 IORT Node relative to the start of the IORT */ size_t offset; bool accel; + bool ats; } AcpiIortSMMUv3Dev; =20 /* @@ -400,6 +401,7 @@ static int iort_smmuv3_devices(Object *obj, void *opaqu= e) =20 bus =3D PCI_BUS(object_property_get_link(obj, "primary-bus", &error_ab= ort)); sdev.accel =3D object_property_get_bool(obj, "accel", &error_abort); + sdev.ats =3D object_property_get_bool(obj, "ats", &error_abort); pbus =3D PLATFORM_BUS_DEVICE(vms->platform_bus_dev); sbdev =3D SYS_BUS_DEVICE(obj); sdev.base =3D platform_bus_get_mmio_addr(pbus, sbdev, 0); @@ -544,6 +546,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) int i, nb_nodes, rc_mapping_count; AcpiIortSMMUv3Dev *sdev; size_t node_size; + bool ats_needed =3D false; int num_smmus =3D 0; uint32_t id =3D 0; int rc_smmu_idmaps_len =3D 0; @@ -579,6 +582,9 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) /* Calculate RMR nodes required. One per SMMUv3 with accelerated m= ode */ for (i =3D 0; i < num_smmus; i++) { sdev =3D &g_array_index(smmuv3_devs, AcpiIortSMMUv3Dev, i); + if (sdev->ats) { + ats_needed =3D true; + } if (sdev->accel) { nb_nodes++; } @@ -678,8 +684,8 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) build_append_int_noprefix(table_data, 0, 2); /* Reserved */ /* Table 15 Memory Access Flags */ build_append_int_noprefix(table_data, 0x3 /* CCA =3D CPM =3D DACS =3D = 1 */, 1); - - build_append_int_noprefix(table_data, 0, 4); /* ATS Attribute */ + /* ATS Attribute */ + build_append_int_noprefix(table_data, (ats_needed ? 1 : 0), 4); /* MCFG pci_segment */ build_append_int_noprefix(table_data, 0, 4); /* PCI Segment number */ =20 diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index 95202c2757..5fd5ec7b49 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -69,6 +69,7 @@ struct SMMUv3State { struct SMMUv3AccelState *s_accel; Error *migration_blocker; bool ril; + bool ats; }; =20 typedef enum { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908625; cv=pass; d=zohomail.com; s=zohoarc; b=T6Hnj5TIgOqTc1apNwuIjwuBQQm9E3jDQh0yin0APWUFMrsqGywQvpsh3naBp6z53q/Mcve7BjfSVJA/xRiV2DAVMMl0mrlsmyq79hof5nlaLkp9AdFhC7ysH2osUAOMK1uqf8ITEiU3hoL7ZqXbufjx1ll2jXwHg+egSGOj9MM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908625; 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=MBazrr0JimmmpntV4QYv7Hnj6RiDU9fJDnZUh01DEsA=; b=HQd4hoYfWDGRAJruzuK086H+QOa/cwKpBQZ8SOpFNBL5vRtBSfUIdJyabho46N5jOKlc/AjvqNpqreVpnTnJ6exjjunPH7tbirzaBcqhNISLW09WbOn+bsAx3bajjBaHevVYL/ljmbxmzCW5Yw4Sd7xwTvy1kSB+v7TLPAhdQAs= 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 1761908624926325.0939272716006; Fri, 31 Oct 2025 04:03:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmnF-00086A-QV; Fri, 31 Oct 2025 06:55:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmx-0007Jr-2E; Fri, 31 Oct 2025 06:55:23 -0400 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 1vEmmo-00035s-88; Fri, 31 Oct 2025 06:55:22 -0400 Received: from BL0PR0102CA0031.prod.exchangelabs.com (2603:10b6:207:18::44) by MN6PR12MB8565.namprd12.prod.outlook.com (2603:10b6:208:47d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:54:54 +0000 Received: from BL02EPF0001A0FF.namprd03.prod.outlook.com (2603:10b6:207:18:cafe::fe) by BL0PR0102CA0031.outlook.office365.com (2603:10b6:207:18::44) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:59 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FF.mail.protection.outlook.com (10.167.242.106) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54: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.1544.14; Fri, 31 Oct 2025 03:54:44 -0700 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; Fri, 31 Oct 2025 03:54:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=R7l7M18YdkHjRzN7qKPQkbJRF9w0zquMGLN4Ncb1VAQYo4msKfvTCFGJoPegwBxXluijWFp9srzzOEP+9uIL2dYVjMbp+LRfnWQxXmqz5SuqOe8J/HFsaASXK3jQPZQLLd1QzNA2f253+0sWvk9zTS09iL7Iuce28XlbCZqKNVi+rjhmqbPTnLpc87J7KSGN0YXYHK5AeUttrhecK9jlUuxxdcF1zopFX1EbgWO8oQhgEP4GETLT8q1/pzcn161VCbTLB2L+FSyi+HfAhO6aG9xFzbErhgTxklGM0Y4EwAuzmmiOnCvtqgVUjBRE99sEenpjE5vxcV13blTNMvJlNg== 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=MBazrr0JimmmpntV4QYv7Hnj6RiDU9fJDnZUh01DEsA=; b=iKHulP2PotUAesfFVFJjdIolLje7BN+EGPH8W1JUQvFYHLbOxGllAtHERUqeQ7LQxJhhTSaBhyFOCpwn24PNm9lgIsN5szk02FIfmFAIFbGqM9cIyFg0Hm884TYWJvUMYvlSTVqW1qGjOVEEpVKc5YJWGAJGivcTStwh+219rBFCRW6ePhFncFXf1PPrsgGAkLQG2Tm0JpZSY20SJOSqN3AJgpjLxyeVhPvwiIuQJT1+4DL2QHEkje8c2Ahse7FSE/m+nMOwQR+qBDTmJ+1KIoTDEKqj1e1GyohLkj89fRT9YEJEYhSthzSxD1UUeY6LZHwbx+Qam4CeYSjlHAZ86Q== 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=MBazrr0JimmmpntV4QYv7Hnj6RiDU9fJDnZUh01DEsA=; b=KpH8/3Sa0qRdkWf7jBA3LEIozCqn3xGQl+26LWcRyXp9/pJGgERHpGWmNJXT4tarAb1s7+4grXDyH+nLnGcB6bn//2K11wFd36J3ar28zRs1rIkR+Kw3+0yqvVPES/1OMKdoMGSRsA4QoMu0B/fNdq1CpXNp0gmFWYMIKo4pm4wbQ5rLe+OdDmY5i/EADOC3fWztToowAMux3Qu5f6Gz0PLhjlQcb0Fb5BW2Hjetu0y8kHQNQA1QuAUgduk9KCVc8JCNjkEObcEfEoLMIBDLFbbEZEjwDuKWoSjXHWKvoVY7TdO/UaJhPEbj8WOBpb3vWYk/urGmTlJHIUwgGwCtlg== 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 v5 28/32] hw/arm/smmuv3-accel: Add property to specify OAS bits Date: Fri, 31 Oct 2025 10:50:01 +0000 Message-ID: <20251031105005.24618-29-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FF:EE_|MN6PR12MB8565:EE_ X-MS-Office365-Filtering-Correlation-Id: 2410e5cb-efe8-4637-9a52-08de186beca8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|7416014|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ouoAgBzl+RCFCeEXW/jRwCUw/KWQW5x79+TeQXqW3F26swdhjG70z7OrUVTg?= =?us-ascii?Q?cqIulWjELVFrxilA40+nkwhstpVJYXUdSF2LsroNN2ZDTrtP7F9aTpDeeCgO?= =?us-ascii?Q?DbHVaVrJdh6+rTT0F6Mob6XrcxPZgCn6IHdsApM+a5fEmCdUWypKKCDqbe4E?= =?us-ascii?Q?EDPLXX4IGnQFawdZ/TkYBdiAJel7sDUm2PGHJjilTJB3La2rRPMistN6nm2e?= =?us-ascii?Q?AWsf+iNl5pMPN/Lzow2OyB0pKrJBl/hh3KOTHj/L079GucES0/NjY5RmPeJo?= =?us-ascii?Q?Q14MLp8cflv9q/wDleCVKT4grrNl7Ia0yqSMasmcCte1sOLmvwRZOYcTNt1N?= =?us-ascii?Q?GqgiQmcG/lUaLkrPRHEdE4xTRVtArx4X4qdTik/VpnnZa5SRCPlxaiBgY6R3?= =?us-ascii?Q?ny2W/V/Z7/0Ol4fe89/ck2qFRAmRAAUKuMZhk5mRUT3rxTTCv8HVx0HbdtYm?= =?us-ascii?Q?tDFyr2EJOLr/09/ugTkOe5AQ6Mpk2vuRtrKN2945VyD6uzlySQ9Wjaf8XwIS?= =?us-ascii?Q?q7wNatxlFeDr8uW4BjmSw/fAL/7dIsDca2/VuHr/IJoGWZjmj0BUSdbowwY4?= =?us-ascii?Q?MHfVJxZ7q1QTL9lLnR726A6e4ZQ9CqbxfWUzED5hp5FyoKb4n/mksJyMpjSu?= =?us-ascii?Q?HTHCuzi5VuIA5K5yKm5atk2yrIuZlGFzoFjYx/d2uCt9GqP3XwwPp3wKehLk?= =?us-ascii?Q?OQpNXk+ehqax1IkuVjTneneja1Y/3dcssDuImrgEQfwJJ/aP1b+WaPF/Cg9M?= =?us-ascii?Q?746t1+MCXH9p0ZL+j4logKx3G8338JsxXW6uHBVgbiu4krW5YIcEdzHDjQEp?= =?us-ascii?Q?ngfV8ShR8RCOZifTwXk9cAp59AucmUiE4kTcEZUugJCplfPICDNDSGaNUb9N?= =?us-ascii?Q?MVTbVSr5e3rfuM0yzaCBw70OX6cLz8V0svaO1+jMs3hLCy0pU3NgceL8/pzd?= =?us-ascii?Q?drNj5iQRE6yP35MMW+k0GWX+nkMVWUp9HhOev+0mOvfsZI7xjYUdHSKh9Q/h?= =?us-ascii?Q?udChq9Uoa87dzFoWbsPKco2IV/S10gFY/4oBfPmipDkUj/sFPbukES+Mp1RD?= =?us-ascii?Q?/x/YXJ5Z2m9GrB8W98qoGdOZtcLd/Uwok+NslYGUxRZKEht+YAGj07h3D1J0?= =?us-ascii?Q?fVFe/5XY9s9ix8LtZBvNGPrCEVZReyU9TERw7eZNOB42TEeOB1VUTdUmwUwg?= =?us-ascii?Q?DODAQ8uSqjpj3ClwqY9fkEELcAxUxKNgNPtA6a8vQbJPwM7XGxhOmQD7iirU?= =?us-ascii?Q?ouqTlvB4wcb+wjuCf+Zng7MR54xltO96G+RiQAXIJm/8ChcE6ny1L2eIHr2I?= =?us-ascii?Q?455o+A3UzRtAWBKD7qOpOg6RqcWkfcGn57ukKZtA+1jKOYYVspTYiI/3E80D?= =?us-ascii?Q?vbPo6Z6QAbvsBZ9rrFV36GwZmrQ5kmabH8A7BFjW+5YsDxWi+ClUCd7xV+4w?= =?us-ascii?Q?RT1yn5VloHJMQg+jDzplN+Rag+nAHle1pcvvu81/dNuE28NYtnc1NZGcCRI6?= =?us-ascii?Q?q/XhWuRNKKPEStJPnD/lQtLz+dS9yy+Jed0h7+rPdQdtoYM1IXqn+NVRhze8?= =?us-ascii?Q?kMxAYw3wUut92aS/KTw=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(7416014)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:54.2506 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2410e5cb-efe8-4637-9a52-08de186beca8 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: BL02EPF0001A0FF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN6PR12MB8565 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: 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: 1761908627442158500 Content-Type: text/plain; charset="utf-8" QEMU SMMUv3 currently sets the output address size (OAS) to 44 bits. With accelerator mode enabled, a guest device may use SVA where CPU page tables are shared with SMMUv3, requiring OAS at least equal to the CPU OAS. Add a user option to set this. Note: Linux kernel docs currently state the OAS field in the IDR register is not meaningful for users. But looks like we need this information. Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3-accel.c | 22 ++++++++++++++++++++++ hw/arm/smmuv3-internal.h | 3 ++- hw/arm/smmuv3.c | 16 +++++++++++++++- include/hw/arm/smmuv3.h | 1 + 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 5b0ef3804a..c46510150e 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -28,6 +28,12 @@ MemoryRegion root; MemoryRegion sysmem; static AddressSpace *shared_as_sysmem; =20 +static int smmuv3_oas_bits(uint32_t oas) +{ + static const int map[] =3D { 32, 36, 40, 42, 44, 48, 52, 56 }; + return (oas < ARRAY_SIZE(map)) ? map[oas] : -EINVAL; +} + static bool smmuv3_accel_check_hw_compatible(SMMUv3State *s, struct iommu_hw_info_arm_smmuv3 *info, @@ -70,6 +76,18 @@ smmuv3_accel_check_hw_compatible(SMMUv3State *s, return false; } =20 + /* + * TODO: OAS is not something Linux kernel doc says meaningful for use= r. + * But looks like OAS needs to be compatible for accelerator support. = Please + * check. + */ + if (FIELD_EX32(info->idr[5], IDR5, OAS) < + FIELD_EX32(s->idr[5], IDR5, OAS)) { + error_setg(errp, "Host SMMUv3 OAS(%d) bits not compatible", + smmuv3_oas_bits(FIELD_EX32(info->idr[5], IDR5, OAS))); + return false; + } + /* QEMU SMMUv3 supports GRAN4K/GRAN16K/GRAN64K translation granules */ if (FIELD_EX32(info->idr[5], IDR5, GRAN4K) !=3D FIELD_EX32(s->idr[5], IDR5, GRAN4K)) { @@ -649,6 +667,10 @@ void smmuv3_accel_idr_override(SMMUv3State *s) if (s->ats) { s->idr[0] =3D FIELD_DP32(s->idr[0], IDR0, ATS, 1); /* ATS */ } + /* QEMU SMMUv3 has OAS set 44. Update IDR5 if user has it set to 48 bi= ts*/ + if (s->oas =3D=3D 48) { + s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS_48); + } } =20 /* Based on SMUUv3 GBPA configuration, attach a corresponding HWPT */ diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index 5fd88b4257..cfc5897569 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -111,7 +111,8 @@ REG32(IDR5, 0x14) FIELD(IDR5, VAX, 10, 2); FIELD(IDR5, STALL_MAX, 16, 16); =20 -#define SMMU_IDR5_OAS 4 +#define SMMU_IDR5_OAS_44 4 +#define SMMU_IDR5_OAS_48 5 =20 REG32(IIDR, 0x18) REG32(AIDR, 0x1c) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index d95279a733..c4d28a3786 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -299,7 +299,8 @@ static void smmuv3_init_id_regs(SMMUv3State *s) s->idr[3] =3D FIELD_DP32(s->idr[3], IDR3, RIL, 1); s->idr[3] =3D FIELD_DP32(s->idr[3], IDR3, BBML, 2); =20 - s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS); /* 44 b= its */ + /* OAS: 44 bits */ + s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS_44); /* 4K, 16K and 64K granule support */ s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN4K, 1); s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, GRAN16K, 1); @@ -1961,6 +1962,15 @@ static bool smmu_validate_property(SMMUv3State *s, E= rror **errp) error_setg(errp, "ats can only be enabled if accel=3Don"); return false; } + if (s->oas !=3D 44) { + error_setg(errp, "OAS can only be set to 44 bits if accel=3Dof= f"); + return false; + } + return false; + } + + if (s->oas !=3D 44 && s->oas !=3D 48) { + error_setg(errp, "OAS can only be set to 44 or 48 bits"); return false; } return true; @@ -2087,6 +2097,7 @@ static const Property smmuv3_properties[] =3D { /* RIL can be turned off for accel cases */ DEFINE_PROP_BOOL("ril", SMMUv3State, ril, true), DEFINE_PROP_BOOL("ats", SMMUv3State, ats, false), + DEFINE_PROP_UINT8("oas", SMMUv3State, oas, 44), }; =20 static void smmuv3_instance_init(Object *obj) @@ -2119,6 +2130,9 @@ static void smmuv3_class_init(ObjectClass *klass, con= st void *data) object_class_property_set_description(klass, "ats", "Enable/disable ATS support (for accel=3Don). Please ensure host " "platform has ATS support before enabling this"); + object_class_property_set_description(klass, "oas", + "Specify Output Address Size (for accel =3Don). Supported values " + "are 44 or 48 bits. Defaults to 44 bits"); } =20 static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index 5fd5ec7b49..e4226b66f3 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -70,6 +70,7 @@ struct SMMUv3State { Error *migration_blocker; bool ril; bool ats; + uint8_t oas; }; =20 typedef enum { --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908408; cv=pass; d=zohomail.com; s=zohoarc; b=l3i9wuzdguIBaucoBLb1ZuLFTrTQK0Frb5c8zgpOfKTUMQyQybkKL64XVGIGwgPBAHvK10Hn1+G3v7WKHDp2L8yP/WVCkuqDd58tbYXd7ueI8SohPzlLfw3m/FY8gH20viNy2rRGgew8m6Ta30BlCZkskwk1+cwX6mfdBQzjVHk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908408; 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=fcKJJZZzQ0hHx6VpRnYqYW6s+NGDULxYcYK5kb+ZzlE=; b=XrZY0tdnVMA53gsvwPWgN/ptM03P9kbRXCD1ptOPRN1NYHJW1uHgyEf/0zudQfQYWcgfmY7wu8odyc2DQrWBz/d0QdVGMDfjxZKwczNm9WX1FAZTXCg+VObIZn9tZ71bXVINaJdIfMwwhZg0S9R4kZ2olSK0LYreplQNUMDZrVQ= 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 17619084087061020.706721174249; Fri, 31 Oct 2025 04:00:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmo8-0000Ts-EJ; Fri, 31 Oct 2025 06:56:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmn2-0007PK-AA; Fri, 31 Oct 2025 06:55:30 -0400 Received: from mail-northcentralusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c105::1] helo=CH1PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmw-0003IP-BI; Fri, 31 Oct 2025 06:55:28 -0400 Received: from BLAPR03CA0068.namprd03.prod.outlook.com (2603:10b6:208:329::13) by SJ1PR12MB6361.namprd12.prod.outlook.com (2603:10b6:a03:455::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.15; Fri, 31 Oct 2025 10:54:58 +0000 Received: from BL02EPF0001A0FC.namprd03.prod.outlook.com (2603:10b6:208:329:cafe::66) by BLAPR03CA0068.outlook.office365.com (2603:10b6:208:329::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9253.19 via Frontend Transport; Fri, 31 Oct 2025 10:54:58 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FC.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:54:58 +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.1544.14; Fri, 31 Oct 2025 03:54:49 -0700 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; Fri, 31 Oct 2025 03:54:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=an3S8a8fsrucd4OeQZ8L/u3jbM1FvQX+j3bFbZHeoEW9m8Inbz8nmFQAbxLjYe68EjZ2cIe3HMCumr6P7jRsq94xpHC7ZB0Si4OgN+UbHz02dyf+mhWF2VMog44yt7J0YQyF54vu4H+SCYSmiEw7cFoBFhDIL2QSVlKNSFJDCn0/klQVZQ1Tath1MCeTAjFhLtIXFQJQ6nN5x8QoUcPwfbVCHX5/PaAZRnw1b+Rc3ytPt6K4CmR9K/UWD3ZOCLGfNHLw1kpHgUXISrndtdEgiwp0uUv/Jy4lWqx05spsTHvLCiCa3bhN5OBl4z2Nelde1utAubQz62jmkIPSL7XB4A== 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=fcKJJZZzQ0hHx6VpRnYqYW6s+NGDULxYcYK5kb+ZzlE=; b=nXYdRPgzuQYLBLgZ3FKwhuf9t8zZgXQV7/of4KJLXEfq/ouxEtccGoSt81trvuUNme28NFqGS3tEzHYwF26LQ84Z+eSh3cPVPRTS4elZWyPduya6++tcQ2lxZjHNVa8Yv71AtrirNdh7i+Q45Bi06GWhBCeN/tlWgIi/K7APy68jC21mdfsjK7sOFjVwpfW7HDRf9lw+lD4sp3W0WCpSkP1eL1GuxThtjueLLBNvs22SWJPbyIaLq+froQSHnIhAeCzAjxuRi7342X7s+wQcpSVuBJiN2+dS7v7k4VQ1VtGbVpVn+c7516HcwCVZVBLQGrAmUmInUD97fTDYJrkgEQ== 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=fcKJJZZzQ0hHx6VpRnYqYW6s+NGDULxYcYK5kb+ZzlE=; b=CUDz5+qsw5t/snf54ViwVEvk2X8xfvIQTooyVTaNqpdjO/1udhLRdoUUH54cpvfeN1cVITxw4RV28f4Ihp221si1LAxdJ1iUwKL2R7pTxuoMi2SPFpRnduhJp/eIQDPgggSMRuMLJPSf5PSi+FfAJoZNvlYNrcWSbLdzFF0skKfHEtDgx2XPOQCHvy01RmK7/dP7On/xf5qLhVwdBIQfWqMPp9ewZrtHap0Ua+yyFNvkeMlVWWrfKXOkYwbAC/vLtvxm7TOe4rrxzOf3E2Z+OYudWC8kh5CIULfU9mxhJ8PToKD7OH+gWIPf+vUt8qRWNXzGLonQWwZpL2GBpR60Lg== 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 v5 29/32] backends/iommufd: Retrieve PASID width from iommufd_backend_get_device_info() Date: Fri, 31 Oct 2025 10:50:02 +0000 Message-ID: <20251031105005.24618-30-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FC:EE_|SJ1PR12MB6361:EE_ X-MS-Office365-Filtering-Correlation-Id: 7df561c4-6246-49c5-a134-08de186bef18 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|36860700013|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2nZJ7BZE8UfhI+1O2trU8GewhKM2Y0WQz6FyeMKHQPp+3mKY+5atRpNJVWWz?= =?us-ascii?Q?SA50kiip6bnImmS8ksFUf1OezfMXAtnBM0XHLgWauYwy5xuRmdHSQVd9W4Tw?= =?us-ascii?Q?jgDtpKdyLi8gdKYjG1w4VQZJLAk347/Chv/e8MugxDB+MzTQ3vqvXEOIA88Q?= =?us-ascii?Q?C4LdWx5ToY3ZeA37yBwgQ5EtUq/ufwuppHFFGctdows4LqEW+suwf10VTbEJ?= =?us-ascii?Q?zhnpb5y6dFPKqDY1e278gzn0qffC+NWy5WyPF8xI7iU5V5Z0FM3C5Pc1oPDx?= =?us-ascii?Q?GVA6nh0exqosUiavQZ0xaxRfx6zek9wdrQV8xvm9qUrRK5MMl8NLvIw+rkCO?= =?us-ascii?Q?++zSq5gGnBeXqJnSQlXnzdopj1LUIewIIC3rVZBVF3DjuSCnapHPsbrcDiBJ?= =?us-ascii?Q?aoocVUcsuUeoRtd030yyQtt5Ssb9LDLpuwWH4gKukjOXGcwWjJ/79tNQRCL5?= =?us-ascii?Q?Crzv0QSHJTC0QO+C+opZKNLCZaBVcv+PDezv0HgEf2IBqVcxpUW/gejOLo+4?= =?us-ascii?Q?XMSqcG6K85cR60c74nU4hbr0ukDwU4JDeIgjvgUPsbHNIL4Z2VlEjtMsb0us?= =?us-ascii?Q?Tw0dUX1Sy49TpeVwDUb9kXtS7EH7glpBDk/MbGc5lRZ1AxKyn/S4O77PpjDG?= =?us-ascii?Q?5v87AkEhLEwhL/YBKmFh/+HcAeD/7LeuCxEPcN6Vq+MEdYgdtdGxiuqPPY2F?= =?us-ascii?Q?hFSDB1Q8kQ1z/exYBj+BZGQoHh/v4IeU4srX5UrmQxlCKxEE9raLG8tufWGt?= =?us-ascii?Q?4Kyzmv6fQ9L7tu13A/pfUiCfeOtB5Nct+UOyHscZ60/L0l25zpwcRlbhZosq?= =?us-ascii?Q?oEg2aPzIRi5VVpUjRT1JWYzNpqmiSiKrCu/1IbPEUK+uY/Up0c+CvEYL1gdS?= =?us-ascii?Q?U+uxm7VVcCMqCSQZfn1OFkio2NOGMIUufbaLgfPHrKH589a7joeioZ3uN3E3?= =?us-ascii?Q?8aepKxdp5HfOdERhQKGAjJxJ0c0WxJolmWyV8l+b5XaR2os2wtTgvphlo0c2?= =?us-ascii?Q?dJhe9AR/Flp+um0k4KYB9U1rbD3tF0NlZ/YENJDXnAkm+skTjdD8s3pLDdkr?= =?us-ascii?Q?/IVuDt2Trqn9m1ue2XPqwU9pJa0sKGNVxII/FhkUIlelZwwoV/bSIj1ySr+i?= =?us-ascii?Q?VacCb4EM702VTTBohEAA69X1W9yYXQWAw6f58l2RO1grePRAoWKTYAclxMzp?= =?us-ascii?Q?8kTF0bRhj6yDL+/71Ebn158yYVrPPLSq5g5dIOvFflPKiw4u78GWADctB+vB?= =?us-ascii?Q?AzT/w0PXhdwRNHEajjCDMHQhtOKte8TLNs32iFaGYvLCvautOakh0wfRR9oo?= =?us-ascii?Q?q3OStWkznfGxHzSIhQzRe47Ri3JKauTBLPpzRAR5T2GbtXnERhYoa2+dwT9X?= =?us-ascii?Q?G39Cl7qg9ihYhn4rAoKQzyHSsT3eFdLU+nC+fV10k+d1lc1WWZpNSy533dUM?= =?us-ascii?Q?dXf08P2I3oY4Xj4wk1q12dagQ/XAzw3rtsSQ8jBXLr2Kzmr7ouHsFg4Bgv7/?= =?us-ascii?Q?0CQeb9Y+mHJaKR/u/pcyaWAPX97oVqnc6tq85CXsTGzhRmo0W0E5SvDp12Mp?= =?us-ascii?Q?I3FlDuHbTuUE8xP8HaA=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)(1800799024)(82310400026)(36860700013)(7416014)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:54:58.3426 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7df561c4-6246-49c5-a134-08de186bef18 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: BL02EPF0001A0FC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6361 Received-SPF: permerror client-ip=2a01:111:f403:c105::1; envelope-from=skolothumtho@nvidia.com; helo=CH1PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -6 X-Spam_score: -0.7 X-Spam_bar: / X-Spam_report: (-0.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=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: 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: 1761908411695154100 Content-Type: text/plain; charset="utf-8" Retrieve PASID width from iommufd_backend_get_device_info() and store it in HostIOMMUDeviceCaps for later use. Reviewed-by: Jonathan Cameron Reviewed-by: Eric Auger Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum --- backends/iommufd.c | 6 +++++- hw/arm/smmuv3-accel.c | 3 ++- hw/vfio/iommufd.c | 7 +++++-- include/system/host_iommu_device.h | 3 +++ include/system/iommufd.h | 3 ++- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/backends/iommufd.c b/backends/iommufd.c index e68a2c934f..6381f9664b 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -388,7 +388,8 @@ bool iommufd_backend_get_dirty_bitmap(IOMMUFDBackend *b= e, =20 bool iommufd_backend_get_device_info(IOMMUFDBackend *be, uint32_t devid, uint32_t *type, void *data, uint32_t = len, - uint64_t *caps, Error **errp) + uint64_t *caps, uint8_t *max_pasid_lo= g2, + Error **errp) { struct iommu_hw_info info =3D { .size =3D sizeof(info), @@ -407,6 +408,9 @@ bool iommufd_backend_get_device_info(IOMMUFDBackend *be= , uint32_t devid, g_assert(caps); *caps =3D info.out_capabilities; =20 + if (max_pasid_log2) { + *max_pasid_log2 =3D info.out_max_pasid_log2; + } return true; } =20 diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index c46510150e..caa4a1d82d 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -122,7 +122,8 @@ smmuv3_accel_hw_compatible(SMMUv3State *s, HostIOMMUDev= iceIOMMUFD *idev, uint64_t caps; =20 if (!iommufd_backend_get_device_info(idev->iommufd, idev->devid, &data= _type, - &info, sizeof(info), &caps, errp)= ) { + &info, sizeof(info), &caps, NULL, + errp)) { return false; } =20 diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 2ab52723c6..212970e2e2 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -366,7 +366,8 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *vb= asedev, * instead. */ if (!iommufd_backend_get_device_info(vbasedev->iommufd, vbasedev->devi= d, - &type, NULL, 0, &hw_caps, errp)) { + &type, NULL, 0, &hw_caps, NULL, + errp)) { return false; } =20 @@ -901,19 +902,21 @@ static bool hiod_iommufd_vfio_realize(HostIOMMUDevice= *hiod, void *opaque, HostIOMMUDeviceCaps *caps =3D &hiod->caps; VendorCaps *vendor_caps =3D &caps->vendor_caps; enum iommu_hw_info_type type; + uint8_t max_pasid_log2; uint64_t hw_caps; =20 hiod->agent =3D opaque; =20 if (!iommufd_backend_get_device_info(vdev->iommufd, vdev->devid, &type, vendor_caps, sizeof(*vendor_caps), - &hw_caps, errp)) { + &hw_caps, &max_pasid_log2, errp))= { return false; } =20 hiod->name =3D g_strdup(vdev->name); caps->type =3D type; caps->hw_caps =3D hw_caps; + caps->max_pasid_log2 =3D max_pasid_log2; =20 idev =3D HOST_IOMMU_DEVICE_IOMMUFD(hiod); idev->iommufd =3D vdev->iommufd; diff --git a/include/system/host_iommu_device.h b/include/system/host_iommu= _device.h index ab849a4a82..bfb2b60478 100644 --- a/include/system/host_iommu_device.h +++ b/include/system/host_iommu_device.h @@ -30,6 +30,8 @@ typedef union VendorCaps { * @hw_caps: host platform IOMMU capabilities (e.g. on IOMMUFD this repres= ents * the @out_capabilities value returned from IOMMU_GET_HW_INFO i= octl) * + * @max_pasid_log2: width of PASIDs supported by host IOMMU device + * * @vendor_caps: host platform IOMMU vendor specific capabilities (e.g. on * IOMMUFD this represents a user-space buffer filled by ker= nel * with host IOMMU @type specific hardware information data) @@ -37,6 +39,7 @@ typedef union VendorCaps { typedef struct HostIOMMUDeviceCaps { uint32_t type; uint64_t hw_caps; + uint8_t max_pasid_log2; VendorCaps vendor_caps; } HostIOMMUDeviceCaps; #endif diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 41e216c677..aa78bf1e1d 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -71,7 +71,8 @@ int iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_= t ioas_id, hwaddr iova, uint64_t size); bool iommufd_backend_get_device_info(IOMMUFDBackend *be, uint32_t devid, uint32_t *type, void *data, uint32_t = len, - uint64_t *caps, Error **errp); + uint64_t *caps, uint8_t *max_pasid_lo= g2, + Error **errp); bool iommufd_backend_alloc_hwpt(IOMMUFDBackend *be, uint32_t dev_id, uint32_t pt_id, uint32_t flags, uint32_t data_type, uint32_t data_len, --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908700; cv=pass; d=zohomail.com; s=zohoarc; b=YSd2Y6M9KalFZeKnJriDjlKkWGiduzSpRKHsWP/UczX+fy567TC8KhH2Qn82cel+74pgR/cRgHM8RoUaEdtywp6Nhficu97JXCieAr0DJdFK1250/oUuqditMDY+OX7P0HgX0JsdzMSpgGdrzo5XGRUaiXkyrmzDcqDczZh4JmA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908700; 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=vPkwmOpSJ/jJal9pgRM03GLjZ/b2EIdJlShVtjbOviA=; b=FAWEF3CIL0sZHjRimoZ8djyky0kP5bj57fsfiDjQMwUF/9fqzyr5q05gMYnHg09OPSBM19402Aa9aXwwQJUJuu2BmbKxLRmpRNal3n2qdmN8d7s6pbhA+0PG1rJZpTBuiyfhy2HAUNtI6jPt2yND3uJ57hcml/G/olqJvgKqFog= 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 1761908700283945.6745253147893; Fri, 31 Oct 2025 04:05:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmnO-0008Hv-VO; Fri, 31 Oct 2025 06:55:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmz-0007LY-6q; Fri, 31 Oct 2025 06:55:25 -0400 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 1vEmmr-0003Hk-1e; Fri, 31 Oct 2025 06:55:23 -0400 Received: from MN2PR02CA0029.namprd02.prod.outlook.com (2603:10b6:208:fc::42) by SN7PR12MB7180.namprd12.prod.outlook.com (2603:10b6:806:2a8::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.13; Fri, 31 Oct 2025 10:55:07 +0000 Received: from BL02EPF0001A0FE.namprd03.prod.outlook.com (2603:10b6:208:fc:cafe::5c) by MN2PR02CA0029.outlook.office365.com (2603:10b6:208:fc::42) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.14 via Frontend Transport; Fri, 31 Oct 2025 10:55:05 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FE.mail.protection.outlook.com (10.167.242.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:55: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.1544.14; Fri, 31 Oct 2025 03:54:55 -0700 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; Fri, 31 Oct 2025 03:54:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dddIeKjFeOI753LczdbWijP9zTz/5l9oAffVWbuib5qoauV/S3ShxKwtqEQsUnQXIpSlKtpvgzx+MpMQ+tweRg7nuBWfCMQrnlFfCb+h8IctaKFGzrPytNivdIfqxub4ouGlgYbrjpQCaL1nZVHgeulver0SghthVzeHPXRi8LyzDQtjQTYXzw5YMlquM/cb6lRca+fMJ0drGoHd4ouixmDGpL1XMBNKmdjiYOEFcR38V1QcbG9jF93ZuqeY9ZKTRTM3wUlzlLP76DLXD/VXJakZWWopxL+GO83R1gfFR/wmVT6+d0kqYhz0UDHr7WUSLUtSZ7T5/SvX0Smp/z5tRg== 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=vPkwmOpSJ/jJal9pgRM03GLjZ/b2EIdJlShVtjbOviA=; b=StOzhr1wjVH2Cv8rn6QuRSQUBjfCHjxJlH72MhXgoYCxJ+ayaIK9riGaDZPIoMlqUPXe4aoPhd5CcrpeQBZCFTgMx12ndEQ1rqxRVXCLbMuT4XVFcielgYguRajW7nHHSLJsDZMX6mJBYnrBZOGB8P7A/cyI2rYXHd3ikWGDtiEMU7APBiuUxhEb1cwoj/sD2iOlVP7DVsxjU6YO11yARt9ugQi3jEI7tW5nt/KdGH2+S2NCVuMZDEuiRl6ujBbu9WA/RHlIpJuYdNqYdb4gakTfIUmRpHv4+65NZr4OponxtlEeJpiPW1DaBxURURtERZ7GB2lHFWCNBLtOb+p/JA== 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=vPkwmOpSJ/jJal9pgRM03GLjZ/b2EIdJlShVtjbOviA=; b=LGBEn0kciK9aNbMgQ9xobIQHBB70kmQ3/Gh6WM7AWqc5fcpFzOhDWfyCWLsBpz0VDDmUsHiiOwYLYgWXRsXyZPbvyhhQPYMRZAfHvNWmY8h9ROKcNpId6BgkeZzEVC65zS2ALNfS1p4z+2hjHVzfoi5kHvF5kKG+fC0nv/708eKaH1tZk0UJjTavG1xQCd5tZzb94xSBYhWXdrxovh692MNLo0tmzWHtX5yNz4L5AS17ewdkLImFBtZG8e0Mbr75FkXqa+kts48GmPGR/6KFLkEXz9cnPbYRf/8KmoqfluWIB7DQfS4beLV6C276CGYLEXS44GJwJhX6GlW8FjKfvQ== 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 v5 30/32] Extend get_cap() callback to support PASID Date: Fri, 31 Oct 2025 10:50:03 +0000 Message-ID: <20251031105005.24618-31-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FE:EE_|SN7PR12MB7180:EE_ X-MS-Office365-Filtering-Correlation-Id: 74ab937f-bac9-4c4c-ae2a-08de186bf43b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|7416014|82310400026|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aQQRI9yI0ZlVPr1eMpeX4JgfgNULoIXAnMVGb/Or5LYD5s3fVLUQGR/NvgVE?= =?us-ascii?Q?8/cwncapNXJMX62yXE0o7FpVfxqYDPRJ0RRoHhJd3tM8yPpp5IsltG36gq2A?= =?us-ascii?Q?FNRqs2+Zj3Ip8K0UpATFRlCKrC4swmGvwToajjBOsLdQCWqC9/IRqcq1m9Kd?= =?us-ascii?Q?pO4cf8UIcTbTxGoAJ5UHy4h+klUV+w4Mo6XW8sfC0twmV3XJOnARSzZMxaCg?= =?us-ascii?Q?mdCJjiGhHRazz1jPwSjldBUKFIBYNeqCIr6+up2D1Cm8xNNnotd8YmmL3r+0?= =?us-ascii?Q?ruW6j/jIv1ZVo/RsPfT7V5TZ6n70hiwIybSKQLvSR26Bb67vCp04ZLYQqT5f?= =?us-ascii?Q?6tKQ8sUSbbbjEVkH4i+ESFbVn4kKn69MWQX2zJL5/E5OsYUI5vBQfyema5zI?= =?us-ascii?Q?Bdg9j30ZedS4w8iJF/AMKZcejhTaPSAg3W9EY/CO8rW3P93WzkM0dhE4bnh8?= =?us-ascii?Q?BNapd0nfqj0zuG+ixe7Vbm9Ws+53CYgbkgDDTTBIscf/DEzq4kGrkbsxGq2h?= =?us-ascii?Q?FchorynBdRgdOYguRtPkMhrq3WOYRWWcdvZS5F58E4kDEnouOBf0OL9+uTws?= =?us-ascii?Q?G97qP4MIjbIYMaSuavm1yPNiY0ZGUmZOM3bvcxjnUYs6FdO8M2TFObF9Pupp?= =?us-ascii?Q?wjwtsVfXuiNSEeABZaCTRy2eU9vTC3i+6omGYfMK7w5OUYlNoq+fKQaZxoUU?= =?us-ascii?Q?sp6svO6jZdn52bDq7sEch3Ti08X4lf4VEkJ0Tvv74FclArYkV4UgtYWpbCOS?= =?us-ascii?Q?vCtXkp3GRrlSfz9G3UcGVLvNDG2HEGHisG1yvT1tAvZpJ6oSHijxpn3QVEJI?= =?us-ascii?Q?oXwRBq2VZv1IiIi6XnBftfqyt0nnSLHE6u3y2Oyxq8mbEyWZiycyq5LAmDG5?= =?us-ascii?Q?/o07qSvfC+DCkd3tmoXrsoSV4uy5XNcY10ttzD+SaRZlMioLKcvbiu1AaodW?= =?us-ascii?Q?2xIlWiKjmS0BuFKwUoeLHXD5rGFd3dbOZNzapWJOx7C6yqKUbdxws4lqP7aR?= =?us-ascii?Q?HYBbWwA51nIPIK6PpXmRpH7Pkl13YiSHLvVPHqvK1znZmus0yPRmCqa6SK4Q?= =?us-ascii?Q?1AwTEf29MPuqqYPXRcveaz6a9852wqusrhvbe3JyQxen+GnIht2/MeLqWYJu?= =?us-ascii?Q?ENNRcR54l0gBbv00tRYM4e0FJdd9OgAfMzFk8dMg/Zv2/ZehoxFDVRXTTrUN?= =?us-ascii?Q?MTrXI/stC/rEeubfOnKGFucpBFxa6Zie/0YUmx2jaI7lJYBTvsebawRLav6r?= =?us-ascii?Q?sT1uAlCmp/qczNh69NdhmImmrKdTH4sMV4zDYqyHT4fiK/ZpV6qk2C1lGF+i?= =?us-ascii?Q?tFemF0uTsQHEoDebE7IcxwjafHCIjzot4urx12nYWGiOjI4sX9WbADLpxRGA?= =?us-ascii?Q?QNkWc3BBE0+sDjTsLnHvP6fd8BHCg8oo3hNlSHfvnMDwaGAju5I0uGNEPkO9?= =?us-ascii?Q?IQWhhX0uXKgdTkpFyiS5iLynNIiCvxefkwwsgtrAM4jTaCi9jXJUey7aQuZJ?= =?us-ascii?Q?8QX4XaSSe9/8cMt4uXHJCUaLl4LFxCpx7HO1Kd9uzXR/N8IjNst9BWxMDu8t?= =?us-ascii?Q?ZQcCruWIDBfuK6rCdOs=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)(1800799024)(376014)(7416014)(82310400026)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:55:06.9530 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 74ab937f-bac9-4c4c-ae2a-08de186bf43b 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: BL02EPF0001A0FE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7180 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: 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: 1761908703211154100 Content-Type: text/plain; charset="utf-8" Modify get_cap() callback so that it can return cap via an output uint64_t param. And add support for generic iommu hw capability info and max_pasid_log2(pasid width). Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron --- backends/iommufd.c | 18 +++++++++++++++--- hw/i386/intel_iommu.c | 5 +++-- hw/vfio/container-legacy.c | 8 ++++++-- include/system/host_iommu_device.h | 14 ++++++++++---- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/backends/iommufd.c b/backends/iommufd.c index 6381f9664b..392f9cf2a8 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -523,19 +523,31 @@ bool host_iommu_device_iommufd_detach_hwpt(HostIOMMUD= eviceIOMMUFD *idev, return idevc->detach_hwpt(idev, errp); } =20 -static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod, int cap, Error **er= rp) +static int hiod_iommufd_get_cap(HostIOMMUDevice *hiod, int cap, + uint64_t *out_cap, Error **errp) { HostIOMMUDeviceCaps *caps =3D &hiod->caps; =20 + g_assert(out_cap); + switch (cap) { case HOST_IOMMU_DEVICE_CAP_IOMMU_TYPE: - return caps->type; + *out_cap =3D caps->type; + break; case HOST_IOMMU_DEVICE_CAP_AW_BITS: - return vfio_device_get_aw_bits(hiod->agent); + *out_cap =3D vfio_device_get_aw_bits(hiod->agent); + break; + case HOST_IOMMU_DEVICE_CAP_GENERIC_HW: + *out_cap =3D caps->hw_caps; + break; + case HOST_IOMMU_DEVICE_CAP_MAX_PASID_LOG2: + *out_cap =3D caps->max_pasid_log2; + break; default: error_setg(errp, "%s: unsupported capability %x", hiod->name, cap); return -EINVAL; } + return 0; } =20 static void hiod_iommufd_class_init(ObjectClass *oc, const void *data) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 6a168d5107..91d0d643ea 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -4444,6 +4444,7 @@ static bool vtd_check_hiod(IntelIOMMUState *s, HostIO= MMUDevice *hiod, Error **errp) { HostIOMMUDeviceClass *hiodc =3D HOST_IOMMU_DEVICE_GET_CLASS(hiod); + uint64_t out_cap; int ret; =20 if (!hiodc->get_cap) { @@ -4452,11 +4453,11 @@ static bool vtd_check_hiod(IntelIOMMUState *s, Host= IOMMUDevice *hiod, } =20 /* Common checks */ - ret =3D hiodc->get_cap(hiod, HOST_IOMMU_DEVICE_CAP_AW_BITS, errp); + ret =3D hiodc->get_cap(hiod, HOST_IOMMU_DEVICE_CAP_AW_BITS, &out_cap, = errp); if (ret < 0) { return false; } - if (s->aw_bits > ret) { + if (s->aw_bits > out_cap) { error_setg(errp, "aw-bits %d > host aw-bits %d", s->aw_bits, ret); return false; } diff --git a/hw/vfio/container-legacy.c b/hw/vfio/container-legacy.c index a3615d7b5d..ac8370bd4b 100644 --- a/hw/vfio/container-legacy.c +++ b/hw/vfio/container-legacy.c @@ -1197,15 +1197,19 @@ static bool hiod_legacy_vfio_realize(HostIOMMUDevic= e *hiod, void *opaque, } =20 static int hiod_legacy_vfio_get_cap(HostIOMMUDevice *hiod, int cap, - Error **errp) + uint64_t *out_cap, Error **errp) { + g_assert(out_cap); + switch (cap) { case HOST_IOMMU_DEVICE_CAP_AW_BITS: - return vfio_device_get_aw_bits(hiod->agent); + *out_cap =3D vfio_device_get_aw_bits(hiod->agent); + break; default: error_setg(errp, "%s: unsupported capability %x", hiod->name, cap); return -EINVAL; } + return 0; } =20 static GList * diff --git a/include/system/host_iommu_device.h b/include/system/host_iommu= _device.h index bfb2b60478..f89dbafd9e 100644 --- a/include/system/host_iommu_device.h +++ b/include/system/host_iommu_device.h @@ -94,13 +94,15 @@ struct HostIOMMUDeviceClass { * * @cap: capability to check. * + * @out_cap: 0 if a @cap is unsupported or else 1 or some positive + * value for some special @cap, i.e., HOST_IOMMU_DEVICE_CAP_AW_BITS. + * * @errp: pass an Error out when fails to query capability. * - * Returns: <0 on failure, 0 if a @cap is unsupported, or else - * 1 or some positive value for some special @cap, - * i.e., HOST_IOMMU_DEVICE_CAP_AW_BITS. + * Returns: <0 on failure, 0 on success. */ - int (*get_cap)(HostIOMMUDevice *hiod, int cap, Error **errp); + int (*get_cap)(HostIOMMUDevice *hiod, int cap, uint64_t *out_cap, + Error **errp); /** * @get_iova_ranges: Return the list of usable iova_ranges along with * @hiod Host IOMMU device @@ -123,6 +125,10 @@ struct HostIOMMUDeviceClass { */ #define HOST_IOMMU_DEVICE_CAP_IOMMU_TYPE 0 #define HOST_IOMMU_DEVICE_CAP_AW_BITS 1 +/* Generic IOMMU HW capability info */ +#define HOST_IOMMU_DEVICE_CAP_GENERIC_HW 2 +/* PASID width */ +#define HOST_IOMMU_DEVICE_CAP_MAX_PASID_LOG2 3 =20 #define HOST_IOMMU_DEVICE_CAP_AW_BITS_MAX 64 #endif --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908498; cv=pass; d=zohomail.com; s=zohoarc; b=Z/5Plf2BekUY498JIDEQZjggsA/U9KUtb4r26tlUy/7EGGaevum9YtkjwBmU65/OTXHdC5nuEoosopzL33/cdT5AD1212bVBiT8wGoZzlNZCQ6R8Zuw8jcvs7Gzy81uEVUMyvFt2VGb9OxEHoGjvATphkY+/qyyD1sNRBIIBvW8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908498; 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=QaBk8K+ZbBqyjqaseyc5ZDYR8L1YEkBF5/x+YRxd97Q=; b=ArJi4/nZIf+jfMTQXuOCM6qMPJS3XcsnBUeqCrC1vWRANb2bS/d6BijUbNk1jDxWwGT5RDGA0VmcDqt5oclT9T5qUgjBW8I813T1d7RiRUZDfVFj1RWtwob0tLG1yUBxUWXdqtJuT/5E0misz9NOKxYDT4nv0YDYD2wMCSAavds= 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 1761908498273272.902437514476; Fri, 31 Oct 2025 04:01:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmoe-0001fY-7l; Fri, 31 Oct 2025 06:57:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmnC-0007rj-BO; Fri, 31 Oct 2025 06:55:39 -0400 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 1vEmmw-0003IN-Hc; Fri, 31 Oct 2025 06:55:32 -0400 Received: from MN0PR03CA0030.namprd03.prod.outlook.com (2603:10b6:208:52f::19) by PH7PR12MB5806.namprd12.prod.outlook.com (2603:10b6:510:1d2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.14; Fri, 31 Oct 2025 10:55:11 +0000 Received: from BL02EPF0001A0FD.namprd03.prod.outlook.com (2603:10b6:208:52f:cafe::8f) by MN0PR03CA0030.outlook.office365.com (2603:10b6:208:52f::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:55:05 +0000 Received: from mail.nvidia.com (216.228.117.161) by BL02EPF0001A0FD.mail.protection.outlook.com (10.167.242.104) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:55:10 +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.1544.14; Fri, 31 Oct 2025 03:55:00 -0700 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; Fri, 31 Oct 2025 03:54:56 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=q7bM18t+RXwhUu7sLTz8N32/fOV3keVFN6WZKTfLBP27Qmb6kKjUNIciI7aNURghpwX29IBm6TzcuDsCDWi9Kz2i69RxqXQ4iRfSFkHxT2f89hFgkxAaDenPfqI/hdxJ9gIOCQiy8fLvD7cvtNnX27vc8vTFwMqJXkKxzAQ95raRmWrxPxCqASWHiLByBILMkymUFPOnhp+8QFbHdWY7F1tKZSJi75OPLk2KeTYUmKBAJb9WkTtQYsn8G0hx8ouiOZoP5G0aU49KC1Yoa5FgBWxEuHbVawRrbkeeLriEMy3D8lYgWsPyUch4LLw9JDVC3nN2eHtB923UgNqlWmj9Zg== 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=QaBk8K+ZbBqyjqaseyc5ZDYR8L1YEkBF5/x+YRxd97Q=; b=lYdzCidAU3YJSGgvyDBHJJWrbS74P198zXJ3G1oA5uBKD425nYpYY0fla78xuqnEN1JpkU+2IMvFWaxYHJKZtU/wllsE8qfhP7e9wMyNPgwVtb1NUohqkb7feh2G9BMHqS6lcQVpthyrzT+DVxvSQQzndB+zlq5UgespI3azvxV6y3LtTjQ3htOGUU2GrT75bo2ApIVze8zFEIGZsRqN2jJo5XaImJT+JIkRerKVSRs4pMnWbQMsxYP8cEKUYLQWA1545dJrWCJ19zHqFb6t6Q2a526TlU3bv1CW+97UaaVPuJ1ergxhy70SmszKZ6wJWn02aRkAh/ERwb3TphnjEw== 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=QaBk8K+ZbBqyjqaseyc5ZDYR8L1YEkBF5/x+YRxd97Q=; b=A8QUKMMjSOfpr6NmVmEteiUFMkJuIyuFlgHp6wLZDbuDCrXLOLQBuytqQGq48AbXbZnpjplBqTdEjq3Y8xwIN3o193aaO/Pr4biQVS1nT9pPr2xMZf4DVrIrfy+QhK8BJkq854vB3BC+RPIDxwZsdXEPmKBPkj6qNmiYIIrJn6HlIg3NHHnILPXuNJ8D6CPNHXu99nUw2vjFO55EjcM+ZBfiSfehq+A/6Yr2S27Op7v4gq1X5XY3rv/Q6Os6pp+c4TklqRLpDWJ07zlYX9W6ZudmOOcyeRpJZ8BxtByPK/C5rBYvv6HaVZwfU4SR0n2RdDl3QFpYRKYsbp82Ex2h8g== 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 v5 31/32] vfio: Synthesize vPASID capability to VM Date: Fri, 31 Oct 2025 10:50:04 +0000 Message-ID: <20251031105005.24618-32-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A0FD:EE_|PH7PR12MB5806:EE_ X-MS-Office365-Filtering-Correlation-Id: 15dd7500-2a5b-4f82-11b1-08de186bf67a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|7416014|82310400026|376014|36860700013|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?58xLwGrrpTE9EZOznh0qEGwx8ZGcbb6K03OG4UQSmH1TdjMVpYe4FLBKuhir?= =?us-ascii?Q?Zl57wWruBzWsuOAmLdDBupBoQxY7gy0zJfOmNAK1Fw0BzljmAmwJwqxzOdQE?= =?us-ascii?Q?hMq5DcfvXHsfZOtLFHbTTEdWc/a5Z41KRpgmjhepIeiU3IEdF6l1XalYKd3v?= =?us-ascii?Q?NSSa3nKrzAkcUlmqRYRAlqOaGTjeVLGrBXgOvhoeiGqzaWSxN+egIM5/6aiB?= =?us-ascii?Q?470VgVcKVNoh64HO1ePg/muMCaAF+XQlaPL1QSwqSNeHaf1wMzkJsS5xrFjH?= =?us-ascii?Q?5ezhmoNNaTHsXWOkOSQFuuP0UGhWs71Pxhe5F1W5pdvAJPeeVqBpCPgvR6aW?= =?us-ascii?Q?641bpqcOaNIlLyyHk5Cw21+1Jyh8fYCppWslX7xzbXhGdgiL9PoqzB9HzBrv?= =?us-ascii?Q?1f023YLIv8GF91fK6QWabUZNRytiR9Ygp36TvcB4+FwWHspBlNjq8Ecbgd63?= =?us-ascii?Q?Np/owbrx30aSwTCD2b7CkaZ29aIJoAWMtXo5Xgmbd/Ywq9DeNYnPfCU+pCWV?= =?us-ascii?Q?ccgZYdvAlZoE6haUcCExrMr+oCwuWWRcVI046kJOk0wF3sxZxq88JVJrRIp6?= =?us-ascii?Q?b3l8OkQM+yx/PQxbDApnRwusRj7GHrDHsdGyDzZPoARRBlrfffVvEKGKLho8?= =?us-ascii?Q?ZHJoBDituuplE9z0yB/bDmdqvI1ckhiX1bFjRCndNlT/9YKpbAVjFEP0DeLw?= =?us-ascii?Q?uPto2WuwK7LwQUwwDakB3eoPMU8mBzbSgV4Iv8KX8lFgGMGOmwIH9+JQAdql?= =?us-ascii?Q?3AB35doddZAUzp07ZL1aqDOgOqNRbtrvaBNQOzqo+mRCoEoewDVfgsI9KFXO?= =?us-ascii?Q?F1M6Qt2d4vBWFRTmubyEfY3FsoQScDlU8qNMYnZnMsplnVjiv7hlxtpJNrSj?= =?us-ascii?Q?e6Wdn1oy2u+J2vM7zqT21gBwo7KULxHkkhTDQcE7zsUWwtTnOPLjzym2wRkG?= =?us-ascii?Q?EdVjfs6T+Y9M0LnMP683l0kzthEgYv04W1iUQHUAcnlScOhd5r4Wedp7K9zZ?= =?us-ascii?Q?P0dH9otxT6bu1MZeyGY0nGcoI7miSJ6M8Lfx7HhzDcrk0mN/4dS0NlKvrE43?= =?us-ascii?Q?7OgFe51SlE8ibkdXJAE0DKDuagWiVioLrlDUJkm5DH0OHik//1z80+K+uzYR?= =?us-ascii?Q?Umtdz2lCd7Xj8h6YYrKlW9/gYf0tiuBHtatwXlJieYmVAwJWA0uEaufwoku3?= =?us-ascii?Q?/d9G2GQnj1Liy+++OxK7KpoReknX+BsuW590ilnev4CodyesE1XF+Y80Qnhe?= =?us-ascii?Q?oIaX1DzNIsa5TpBoTLtmofgDaZe5zaE3Nr08UFS0j4sz1qGOuCfoXpvGJ/Vk?= =?us-ascii?Q?9Cwhk3KpW4ukVqogFsc/0NzcDD73L3QZJag6fF0Inu1B7PrOD7Zp9ch1sCB9?= =?us-ascii?Q?cLONtaoUSejmM01Ms6TpTKomDtV8Iz63jPrktnahywxUw8J5TwXq0dL4HhLD?= =?us-ascii?Q?2b2jX3M5afaALnL3i1NOolGqfiHn0zGdAKIJraK+V64E3AhuhPuLxJY+JSci?= =?us-ascii?Q?sO8koGA2/okr/Pwd1Fkk1gm0Uos2ItzJVUSh0Yf0BpFdRyOcRGGJl0o8zmxx?= =?us-ascii?Q?tAS+P950Ba/lnW27yZ4=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)(7416014)(82310400026)(376014)(36860700013)(1800799024)(13003099007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:55:10.7183 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 15dd7500-2a5b-4f82-11b1-08de186bf67a 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: BL02EPF0001A0FD.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5806 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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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: 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: 1761908501898158500 Content-Type: text/plain; charset="utf-8" From: Yi Liu If user wants to expose PASID capability in vIOMMU, then VFIO would also report the PASID cap for this device if the underlying hardware supports it as well. As a start, this chooses to put the vPASID cap in the last 8 bytes of the vconfig space. This is a choice in the good hope of no conflict with any existing cap or hidden registers. For the devices that has hidden registers, user should figure out a proper offset for the vPASID cap. This may require an option for user to config it. Here we leave it as a future extension. There are more discussions on the mechanism of finding the proper offset. https://lore.kernel.org/kvm/BN9PR11MB5276318969A212AD0649C7BE8CBE2@BN9PR11M= B5276.namprd11.prod.outlook.com/ Since we add a check to ensure the vIOMMU supports PASID, only devices under those vIOMMUs can synthesize the vPASID capability. This gives users control over which devices expose vPASID. Signed-off-by: Yi Liu Tested-by: Zhangfei Gao Signed-off-by: Shameer Kolothum Reviewed-by: Jonathan Cameron --- hw/vfio/pci.c | 37 +++++++++++++++++++++++++++++++++++++ include/hw/iommu.h | 1 + 2 files changed, 38 insertions(+) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 06b06afc2b..2054eac897 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -24,6 +24,7 @@ #include =20 #include "hw/hw.h" +#include "hw/iommu.h" #include "hw/pci/msi.h" #include "hw/pci/msix.h" #include "hw/pci/pci_bridge.h" @@ -2500,7 +2501,12 @@ static int vfio_setup_rebar_ecap(VFIOPCIDevice *vdev= , uint16_t pos) =20 static void vfio_add_ext_cap(VFIOPCIDevice *vdev) { + HostIOMMUDevice *hiod =3D vdev->vbasedev.hiod; + HostIOMMUDeviceClass *hiodc =3D HOST_IOMMU_DEVICE_GET_CLASS(hiod); PCIDevice *pdev =3D PCI_DEVICE(vdev); + uint64_t max_pasid_log2 =3D 0; + bool pasid_cap_added =3D false; + uint64_t hw_caps; uint32_t header; uint16_t cap_id, next, size; uint8_t cap_ver; @@ -2578,12 +2584,43 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev) pcie_add_capability(pdev, cap_id, cap_ver, next, size); } break; + case PCI_EXT_CAP_ID_PASID: + pasid_cap_added =3D true; + /* fallthrough */ default: pcie_add_capability(pdev, cap_id, cap_ver, next, size); } =20 } =20 +#ifdef CONFIG_IOMMUFD + /* + * Although we check for PCI_EXT_CAP_ID_PASID above, the Linux VFIO + * framework currently hides this capability. Try to retrieve it + * through alternative kernel interfaces (e.g. IOMMUFD APIs). + */ + if (!pasid_cap_added && hiodc->get_cap) { + hiodc->get_cap(hiod, HOST_IOMMU_DEVICE_CAP_GENERIC_HW, &hw_caps, N= ULL); + hiodc->get_cap(hiod, HOST_IOMMU_DEVICE_CAP_MAX_PASID_LOG2, + &max_pasid_log2, NULL); + } + + /* + * If supported, adds the PASID capability in the end of the PCIe conf= ig + * space. TODO: Add option for enabling pasid at a safe offset. + */ + if (max_pasid_log2 && (pci_device_get_viommu_flags(pdev) & + VIOMMU_FLAG_PASID_SUPPORTED)) { + bool exec_perm =3D (hw_caps & IOMMU_HW_CAP_PCI_PASID_EXEC) ? true = : false; + bool priv_mod =3D (hw_caps & IOMMU_HW_CAP_PCI_PASID_PRIV) ? true := false; + + pcie_pasid_init(pdev, PCIE_CONFIG_SPACE_SIZE - PCI_EXT_CAP_PASID_S= IZEOF, + max_pasid_log2, exec_perm, priv_mod); + /* PASID capability is fully emulated by QEMU */ + memset(vdev->emulated_config_bits + pdev->exp.pasid_cap, 0xff, 8); + } +#endif + /* Cleanup chain head ID if necessary */ if (pci_get_word(pdev->config + PCI_CONFIG_SPACE_SIZE) =3D=3D 0xFFFF) { pci_set_word(pdev->config + PCI_CONFIG_SPACE_SIZE, 0); diff --git a/include/hw/iommu.h b/include/hw/iommu.h index 9b8bb94fc2..9635770bee 100644 --- a/include/hw/iommu.h +++ b/include/hw/iommu.h @@ -20,6 +20,7 @@ enum viommu_flags { /* vIOMMU needs nesting parent HWPT to create nested HWPT */ VIOMMU_FLAG_WANT_NESTING_PARENT =3D BIT_ULL(0), + VIOMMU_FLAG_PASID_SUPPORTED =3D BIT_ULL(1), }; =20 #endif /* HW_IOMMU_H */ --=20 2.43.0 From nobody Fri Nov 14 07:52:28 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1761908667; cv=pass; d=zohomail.com; s=zohoarc; b=VA8kC62HcWHDgpzIOkhMk1gtcnY07qAm+bj+PFwog/YBgX3w0qdz5oZu5tj3BSTU8iZIoAfdPI2FXD+TjO+nh9IW6D4N79OEjFxif33O0fsIxPUOsiJXtmDsb6OHdn19zE1FYS6HzjHtgxuTzbmgpoRCBkF8hEV4zltSBd1dhRM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1761908667; 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=uoFFUcBnsusOQozE4jOwG+fxO0EhQtt8w+1c8oJ8dsQ=; b=C1lz/OacUEkNvykVmhcDTpbDnDeeLdrxDrRmu7w9brsQFR3RELhbUfP6eBlU5gBSMwT+6/+06SDHr7+bjgDmL/t4hWM2rlHl6utG/AzRKE/4XFSD1vzCq6Qs3Rf9/rDLfIFColTKnzMvO3vlGrwpu1LC1mNV3aZKe9J55LDZ13c= 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 176190866711051.01654226723713; Fri, 31 Oct 2025 04:04:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vEmod-0001b2-9x; Fri, 31 Oct 2025 06:57:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmn3-0007R0-JO; Fri, 31 Oct 2025 06:55:30 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vEmmy-0003Id-LY; Fri, 31 Oct 2025 06:55:29 -0400 Received: from BLAPR03CA0151.namprd03.prod.outlook.com (2603:10b6:208:32f::15) by PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.13; Fri, 31 Oct 2025 10:55:14 +0000 Received: from BL02EPF0001A103.namprd05.prod.outlook.com (2603:10b6:208:32f:cafe::6d) by BLAPR03CA0151.outlook.office365.com (2603:10b6:208:32f::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9275.15 via Frontend Transport; Fri, 31 Oct 2025 10:54:59 +0000 Received: from mail.nvidia.com (216.228.117.160) by BL02EPF0001A103.mail.protection.outlook.com (10.167.241.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.10 via Frontend Transport; Fri, 31 Oct 2025 10:55:13 +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, 31 Oct 2025 03:55:04 -0700 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; Fri, 31 Oct 2025 03:55:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=a07cwg8ZRZwq0vmH6nG7ifUY/CQUYHpHAlJ8rfh5iqTjzUMeOyB4rjOgs9gyq1u4VLb/VLEJio/HHLkeuKAh9O6MW09WDIJyq7po4OneCOIebcPwWUrwPXJE/EAWuZh1nIGfmFruLrEYpPM75wRChvLPIdjlVj+KZrnfa/wBfH+xsMTUnvuSI947xdDTkRZuTwoeAoxcWgMllw7mP3S4cBuIQGRx5Yjgl8HCgZaLQfazQ2cW+pukn9+WZ6o14gdivsXlwCc45TCU7UfScUgygdd/h2si+D5WchinNxOYFG8Os/CIiDFsZ0S1b6PYbrX7/vCyYbgVD4/AU0cpBAvd2w== 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=uoFFUcBnsusOQozE4jOwG+fxO0EhQtt8w+1c8oJ8dsQ=; b=NWiDTkIHq3QaKqXL9ov1f0pr7dWQfID7a9wCPSZGaMNRr/pSmKkvyrE1f1dfqYLonV22DWCa2q3ROX/2GdbGoEaKBjRXvI9ViHKB08l+Yc5eAKtO4dHgs/HmBBCpveWyE+NMxvTiiw3Q1kcBRgPbGoMZA57YildaAavdkn/GZi0Fes2iVLEjw5BPkOqKOL9FdqIOZxqSa/pCUWW5nNFR/2OmeuOY9GelFrMwDmc+3ALkVO4qMxmGAgO/3PKy5IHO0K6ZxLmEMI5vQ6G20OE0FlKo1JxbSqGQpVX6MSwWcdrXwFT6AwYatSsuSTypxdGP+UcmykO0BA+Gmt/+C1C3AA== 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=uoFFUcBnsusOQozE4jOwG+fxO0EhQtt8w+1c8oJ8dsQ=; b=DlNbvM1lYpaa51WrKv7Xd4vXPa8dZmgUBG+Rodevr8t28RjnsKx+pK5pnmk2J4sRXBuIn3JNcakgu2UxMsbc4M7ETunmovhp74bNTQ+kOXY4ZvcowRa3UT0qh3zU/CvGt0aZ4RE9w6ftwr/Nw8SWb7tPAll8tTJQy2Bd3JrgYSCMQ6fVqHa5v1Ht6qw0X8JpIG/piKkyMSApmvrSaadoa3XESqZPQuhjeYEVOb+vaMKkUFtMMCRSJpQAHynJGfYdzL/h39kRj7nZmjCDut7+YxibuI88GINqNLGm4DBeRstwoTYLFBhZENKHKiaVPeVPhsgoEux+axTxqzR6boiKVQ== 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 v5 32/32] hw/arm/smmuv3-accel: Add support for PASID enable Date: Fri, 31 Oct 2025 10:50:05 +0000 Message-ID: <20251031105005.24618-33-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251031105005.24618-1-skolothumtho@nvidia.com> References: <20251031105005.24618-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: BL02EPF0001A103:EE_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ced06d5-feba-413c-ed4d-08de186bf840 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|7416014|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?y4E+Y/opumKTrm4f1nKJMOorGEOfbQNi7zVgfXLgxMWwBMxQFjJQw/kLpchT?= =?us-ascii?Q?ca6OLUKhecLLDQxwzkQW2peSyBCGPBFz2uIlVTIelK22/l+9SJxQV6HX3OPY?= =?us-ascii?Q?Y3Tfj24iJhmp76O+vlGQFCH3puL37TpaHoBDRYE2gAvyTXlGOqQMP8+XCkCv?= =?us-ascii?Q?3u+ioOYLxKqhadtTjeM01ESND2u6iRMwcDJ5vO7M7V48epISs7/oOPWCz0ti?= =?us-ascii?Q?khrNts9aC4B6cDBX6C3j2+06LsylBLt3XDL1r7U+t4Lh/nvo4sEe/y2gqgUL?= =?us-ascii?Q?cSVPPaC0/DMpCOzVGgCE8nnrLOcMlls+JeXzKYDsOhyanR/xJGZSP8AhaAVm?= =?us-ascii?Q?gJ+0knagz2a2+EH9enLuSCjuLvfMU0hbV2fDHsLMSDp4+ZO1VyuRiAMj5nmt?= =?us-ascii?Q?Tkd5I008pj9tzGtVivI5NziNkaKxZOpyRDm+cDb+/pyHu2VPgI0GEPwHIM4O?= =?us-ascii?Q?p0pKHngfouL9K/8sVOSw+4TyvesBvpyjyq8ZTfFOnNfxJbi/KUcqDPW4M4NK?= =?us-ascii?Q?mdtpMyLVV/3Lr89CzNgttTm3+QdYfXdtR45JgWEGXPIxfeavOjyoNi9zD/C7?= =?us-ascii?Q?B1iWDfyvVuNyhijE6k0Cp5NO4+3BDwstTYghmuPO8dlDxG80QHhU5dSsJtDw?= =?us-ascii?Q?yfnu2IQ0fAYjxDsqgoxxvwrCiz2acvcKOpjG7jldOYd3o63wUE30OxvkdtjU?= =?us-ascii?Q?jlam4d0qSsYGpNzh9LJyKg7zLn1xyp1ydU6aFaNHw9KzOmi5yr3BEtn9Otx1?= =?us-ascii?Q?tMVY7lyJA7QBP1Pa8FF5YbtJ3gat6cNxKaXMHDp2y6rfasx54kEPbNDQcmzP?= =?us-ascii?Q?W7iirxqq3vLa5F9WQGkf6LZ4Ai5rJ6lKb1jBYkz0yAUtl/JW+9cCnTqCUYOX?= =?us-ascii?Q?UiwAzhgS94K9J8Rwoc35ZTK/sPbyWLxRHSaFM2AmfZ2dqVAkX0g0TgHm2ehB?= =?us-ascii?Q?xMp9Mzx2o4IV5vsGBa3JOj6iEyBxe1LanWJ6VIp0QSwkpAuy3F/IKgCWJ4ZZ?= =?us-ascii?Q?Yh43ZdiCeyv1rcTVGs9yVDR7+2GGf//XeyVZUNOulwTs2/5hkF7zxCdODbkT?= =?us-ascii?Q?r5kBxnAoWo4eXB89ZbFStMw9wpg0/NdjSTREGCWU6s8mrl3Z6aDbbQ9sfiE1?= =?us-ascii?Q?QEPMoKv+YxOw+FCKNLvsOYn2ECCQsv+jUDuJjaZ8zXzMUVY63lSr3GyLpzXD?= =?us-ascii?Q?GknvC3Pv9IKzkNVsl+qCI8fAbGWyBqO89vrnQ2+YD3W5qcyNWyrwNAsIDC+h?= =?us-ascii?Q?llJq83NLO5KzfKRQPNW+/XphywPICWdGsFGEULViggN5zqEBke02Y5jp0M9t?= =?us-ascii?Q?sOO7Ko9xrCgpEb9V+mlXKu6iY5Uctf474AXsOaluWwVQahhzDDMeidd1bZRr?= =?us-ascii?Q?QsSsp2H4mYwWMtGzURvfz/76eXVN5/vCGWfol2PvQjXQ5n0EvD6ft3W39UPx?= =?us-ascii?Q?AJ7TiSuORw93FwKNtm1pCoXX9SvP5OqJFelSEeNkL5c011AOdDBFIBgKyfrr?= =?us-ascii?Q?ta7iPblMaTh6MgkzqXtCtkO3gveR5HnM0ihPHQzLcCa0nAv3VzltZBbs9IZh?= =?us-ascii?Q?J/4I8y165hLaoImQj38=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)(36860700013)(1800799024)(7416014)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2025 10:55:13.7017 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ced06d5-feba-413c-ed4d-08de186bf840 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: BL02EPF0001A103.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 Received-SPF: permerror client-ip=2a01:111:f403:c005::5; envelope-from=skolothumtho@nvidia.com; helo=CO1PR03CU002.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 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: 1761908669760158500 Content-Type: text/plain; charset="utf-8" QEMU SMMUv3 currently forces SSID (Substream ID) to zero. One key use case for accelerated mode is Shared Virtual Addressing (SVA), which requires SSID support so the guest can maintain multiple context descriptors per substream ID. Provide an option for user to enable PASID support. A SSIDSIZE of 16 is currently used as default. Reviewed-by: Jonathan Cameron Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- hw/arm/smmuv3-accel.c | 23 ++++++++++++++++++++++- hw/arm/smmuv3-internal.h | 1 + hw/arm/smmuv3.c | 10 +++++++++- include/hw/arm/smmuv3.h | 1 + 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index caa4a1d82d..1f206be8e4 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -68,6 +68,12 @@ smmuv3_accel_check_hw_compatible(SMMUv3State *s, error_setg(errp, "Host SMMUv3 SIDSIZE not compatible"); return false; } + /* If user enables PASID support(pasid=3Don), QEMU sets SSIDSIZE to 16= */ + if (FIELD_EX32(info->idr[1], IDR1, SSIDSIZE) < + FIELD_EX32(s->idr[1], IDR1, SSIDSIZE)) { + error_setg(errp, "Host SMMUv3 SSIDSIZE not compatible"); + return false; + } =20 /* User can disable QEMU SMMUv3 Range Invalidation support */ if (FIELD_EX32(info->idr[3], IDR3, RIL) !=3D @@ -642,7 +648,14 @@ static uint64_t smmuv3_accel_get_viommu_flags(void *op= aque) * The real HW nested support should be reported from host SMMUv3 and = if * it doesn't, the nesting parent allocation will fail anyway in VFIO = core. */ - return VIOMMU_FLAG_WANT_NESTING_PARENT; + uint64_t flags =3D VIOMMU_FLAG_WANT_NESTING_PARENT; + SMMUState *bs =3D opaque; + SMMUv3State *s =3D ARM_SMMUV3(bs); + + if (s->pasid) { + flags |=3D VIOMMU_FLAG_PASID_SUPPORTED; + } + return flags; } =20 static const PCIIOMMUOps smmuv3_accel_ops =3D { @@ -672,6 +685,14 @@ void smmuv3_accel_idr_override(SMMUv3State *s) if (s->oas =3D=3D 48) { s->idr[5] =3D FIELD_DP32(s->idr[5], IDR5, OAS, SMMU_IDR5_OAS_48); } + + /* + * By default QEMU SMMUv3 has no PASID(SSID) support. Update IDR1 if u= ser + * has enabled it. + */ + if (s->pasid) { + s->idr[1] =3D FIELD_DP32(s->idr[1], IDR1, SSIDSIZE, SMMU_IDR1_SSID= SIZE); + } } =20 /* Based on SMUUv3 GBPA configuration, attach a corresponding HWPT */ diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index cfc5897569..2e0d8d538b 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -81,6 +81,7 @@ REG32(IDR1, 0x4) FIELD(IDR1, ECMDQ, 31, 1) =20 #define SMMU_IDR1_SIDSIZE 16 +#define SMMU_IDR1_SSIDSIZE 16 #define SMMU_CMDQS 19 #define SMMU_EVENTQS 19 =20 diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index c4d28a3786..e1140fe087 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -611,7 +611,8 @@ static int decode_ste(SMMUv3State *s, SMMUTransCfg *cfg, } } =20 - if (STE_S1CDMAX(ste) !=3D 0) { + /* If pasid enabled, we report SSIDSIZE =3D 16 */ + if (!FIELD_EX32(s->idr[1], IDR1, SSIDSIZE) && STE_S1CDMAX(ste) !=3D 0)= { qemu_log_mask(LOG_UNIMP, "SMMUv3 does not support multiple context descriptor= s yet\n"); goto bad_ste; @@ -1966,6 +1967,10 @@ static bool smmu_validate_property(SMMUv3State *s, E= rror **errp) error_setg(errp, "OAS can only be set to 44 bits if accel=3Dof= f"); return false; } + if (s->pasid) { + error_setg(errp, "pasid can only be enabled if accel=3Don"); + return false; + } return false; } =20 @@ -2098,6 +2103,7 @@ static const Property smmuv3_properties[] =3D { DEFINE_PROP_BOOL("ril", SMMUv3State, ril, true), DEFINE_PROP_BOOL("ats", SMMUv3State, ats, false), DEFINE_PROP_UINT8("oas", SMMUv3State, oas, 44), + DEFINE_PROP_BOOL("pasid", SMMUv3State, pasid, false), }; =20 static void smmuv3_instance_init(Object *obj) @@ -2133,6 +2139,8 @@ static void smmuv3_class_init(ObjectClass *klass, con= st void *data) object_class_property_set_description(klass, "oas", "Specify Output Address Size (for accel =3Don). Supported values " "are 44 or 48 bits. Defaults to 44 bits"); + object_class_property_set_description(klass, "pasid", + "Enable/disable PASID support (for accel=3Don)"); } =20 static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index e4226b66f3..ee0b5ed74f 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -71,6 +71,7 @@ struct SMMUv3State { bool ril; bool ats; uint8_t oas; + bool pasid; }; =20 typedef enum { --=20 2.43.0