From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374030; cv=pass; d=zohomail.com; s=zohoarc; b=Dk/NnBSVZId8mkpEjN/Rn6sfpJDTyazcR9NUc1DRkJiWQi0sTWW1RYl+ABTmjVw4hePwjIRn37Pms3TpWQPeAAtHmstJUeGe/9NE5AD/lIvx1jHx9J1LzkDMGyNzx11nbh4pohD+T2e7KtW2o4Xo4DcXZmsumMVp0pS1OWCZRwI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374030; 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=xdJHdHh59k+xUrBiaqwwxqoLqUTmSXpZWR25Wr3elyk=; b=W8Pv4ABGtvpY5hNv4RPY+IEdj1TRy6kGImJKVVd1o751aYefkruELpTERe7DRIcUecPs0xlBrFMzt11vIVvjnKojyuPAOvQzW7ziw6bUGcuPuCg69ySJ2vEwENPPUFrpNURsmSeckZ4fVvmr+oQyHTRXDoIg/5ylVcblfONJCZA= 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 1765374030640954.1210722768792; Wed, 10 Dec 2025 05:40:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPD-0007KV-BE; Wed, 10 Dec 2025 08:39:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKP0-0007IU-4I; Wed, 10 Dec 2025 08:38:47 -0500 Received: from mail-westusazlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c001::2] helo=SJ2PR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKOy-0001HS-Hs; Wed, 10 Dec 2025 08:38:45 -0500 Received: from BY5PR03CA0001.namprd03.prod.outlook.com (2603:10b6:a03:1e0::11) by PH7PR12MB8779.namprd12.prod.outlook.com (2603:10b6:510:26b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.6; Wed, 10 Dec 2025 13:38:37 +0000 Received: from MWH0EPF000A6731.namprd04.prod.outlook.com (2603:10b6:a03:1e0:cafe::cc) 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.9388.15 via Frontend Transport; Wed, 10 Dec 2025 13:38:39 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000A6731.mail.protection.outlook.com (10.167.249.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Wed, 10 Dec 2025 13:38: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.2562.20; Wed, 10 Dec 2025 05:38:18 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:15 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uNaSLXxClNdq+ZGHkXDL8+KhQ600EADcCVE3I3nHgRJ+ec/ze4biWSkvslybzlSabeHDKQ73o4kqF3eWdb17/cbG3+d+uuf2ts0SQv2FScdQ35NFJlQinwOtNV4L3AzoAJ1erpqjJcvlWy323+TyUxVmKNbZhWY/RwxdU3MCCysbC60K0uxuTFAT6rcBFWB3MWwq4HqSw89ebV4EKs+wL2iZkkPuteBVV6m2dAYyhRzjONXru4PGxEnxGvJU3mcnQXlX4Wz12vY47o3MPhG7+Gtkt+wu7r+9hap5EVGmY1lbCYQHjNazs2DQKXhnvINsCGa31uHDqoRu7MA6sDEO3Q== 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=xdJHdHh59k+xUrBiaqwwxqoLqUTmSXpZWR25Wr3elyk=; b=JIIGQYIb2OHOehtce8PuVtylct70iugb6loODzXPDPq2DEGaS/0lj8TCP12wMmlGj+AcUV+YGyxC05Ukpk9L7Th+2BrQ7rD1OTYCsjru0mvvCdjx82wc3a3qb7NzQofgIlEnorz6Gpf9KS+WdJam0xOyX52LPV/pa+eNfYxgPfxkOfZpUbPIt7NzBtXzCsxrAa1hjaOE/qq79UEuZwdBGePvziyTktAgVEDJjMsApNKA1p0PFGctcfR1CUrhawKEO5JgiY/zWG1qsntQdwDRsTkRPynv2M/UFqNB+J4zSC0P3tlSDu1XRDFsIW3pJRV+Rij1guduKW48JU+YMCPqFQ== 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=xdJHdHh59k+xUrBiaqwwxqoLqUTmSXpZWR25Wr3elyk=; b=pU8td1yj+GPyGOGOrDF6/sq5YKzJFB3zi+fH6xejaZ4jrOAcxWXFcM3ZPy0/g9SYElqpQ4oZqHxkcZP0FDf1SbXXXzm5ktpvRSOb3/9VO3VJ2tSIET8h32PCfP7Gdp9skqj/0tUjax8ZrEvlYh71FNtOnbA1x1wOT5uCOTyVA/eNUC4hm9KbnbjlaELpbTCBkcEWbYZqmsju6xjEUZDKbPfvp+ZgHxHzA46/CBI4PVB6NiRp9M40r+UqB5mE41Fi4fHKuUd6amfq+qi800WpD9o6a3VyN39X4UFN1jeJPEbeJGY32qBMcVmXa3q8nfiv8ZF3ozdMkV7mkItZy243ow== 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: [RFC PATCH 01/16] backends/iommufd: Update iommufd_backend_get_device_info Date: Wed, 10 Dec 2025 13:37:22 +0000 Message-ID: <20251210133737.78257-2-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: MWH0EPF000A6731:EE_|PH7PR12MB8779:EE_ X-MS-Office365-Filtering-Correlation-Id: 38807e02-18cf-4493-431f-08de37f16bf3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?sSOesRfflBmTdzI9Z3mQfQNECyzWYEsOkDtXFO30UzhSR0NIWMOGJc4rR8Si?= =?us-ascii?Q?0lu2w01opPNwg/yI+lLKHZBDEtr99Jlx9Xqb/uVg81EZtmKiKpmf+/X9F9No?= =?us-ascii?Q?V1UXzLkXwdZl9IFKrvb8QjD3whT4P8PW7UqJ4YFhKl+WXdeuYMzlki2mceFt?= =?us-ascii?Q?2Lv4hzoycdh0PWA6FYzHFeKxo/v1pFZYPh5iLI+05iGE5EUZTm6fREkMRDXn?= =?us-ascii?Q?kZOPfSINEMkaoIvX09lQFB2YSiB9krmoImx0TNSJUrq4OVKwTWm0Q1vjnziI?= =?us-ascii?Q?K+bJri4jQerA+zoq8dh2s7L95d4IRFF64jKJ7+XLAlale6OPBxPRmIAXKe3d?= =?us-ascii?Q?IWm3BjdNPb6ycVvpA+poO/w90Nf1LKRph/F1FDiRpD3cTRdekzjttR8Di/aJ?= =?us-ascii?Q?USP1laFoIPD9pLIL1zJDkYlD9B+EYUWzWqkwB5A/yknijCd1weD1//WcuCHa?= =?us-ascii?Q?b2QnhkY3RYvgZaydZzfkKCmt9ijN7lXaJ99GHs7pm0fQnEWCvjvzOIy2JI0E?= =?us-ascii?Q?Zd6Z+G/PdOCbxPY/+fUe3NchKzKMJZAG2mgzLPhCGRj4l/61obuMZvaSswzY?= =?us-ascii?Q?li4PyKfcefhDKdL8Uz7vzO+hfSLWjW4M4Vkt3odjWTu340SuLgvmCTH0dAMY?= =?us-ascii?Q?vPQQP/SpwUVPdEwvrXVeMS0YLwp2p73HXit1Y22zSqpj5vMfW2+PR0TGRLgE?= =?us-ascii?Q?ls9ROfVNucMQ8FdODnp9k2ErcX2aAGq2zI5tJ7h8WxUXhKdj43mwcXhcCtzW?= =?us-ascii?Q?31sVf8F1U2ELdepzHElhF7gj3aq4uAbVoKgVLa5jsExVNKBBtFaidoxICx+t?= =?us-ascii?Q?Y50WmC9YL1RadrHYKvJBGM66CRk5k7Jld8vgdROWctOwQwxDucQ22O5YFOrk?= =?us-ascii?Q?RPB3fQ10+DXDxjvi6Jp3bo3OFv+OtWUq2r513cUupegJ1eXM9dpKGVFecVzW?= =?us-ascii?Q?iV+DHVFKpd98/Ts3exPOAoS0F6WFiXIRxT2v3Jw0qJWHaKDUg6PFHvc0NTDs?= =?us-ascii?Q?LeiSDpRSlnI6Cv46uhRG4n9jmAG989qMxuwQPxQleiMKVClGoZ9S0kuYL182?= =?us-ascii?Q?r+T4nIxTCpOOyoE8D4Y57+/ccKaTjjcMh/WA9oL5MUGTkdJaHWgC0nHBPiae?= =?us-ascii?Q?W+T+Cyg5FCF5KCjUfZf2BoN+IOeX0FJaBeZVPRhsf8RFhW6YIXTmmEyksmmk?= =?us-ascii?Q?5OqB2YyG+reQaMVl6osARyD43WFTS6vOr4pcOtPhese0YCTPuKCRmYoZBhrV?= =?us-ascii?Q?hbM4mwCs6bw9d12JdAvLgJEpChbIDDfUi35VfmKKJOf8W91P2rZYIeD+mtqd?= =?us-ascii?Q?VxnC7x6EQx3o/zIGmqeRegO+pJvrab1zFQ7BHgY2BdtDGD+1G5CM3hsC6Xgx?= =?us-ascii?Q?I0ko3pT2QeyteabCgCsAhZTjLPj0iphLBxp+wfLiwbRq+O7cE4qlPMhwPX5s?= =?us-ascii?Q?Kp8F27jLtVBcjhvKilloYBm5GxTyYIYnRC664PI89MPS+7Uzr67og4tHmyky?= =?us-ascii?Q?fPq9GOqCbU9ZP+xVwamK4c/Pm8rcR2IymrBOGh5PzjQUVc2iex1ESWuXdiut?= =?us-ascii?Q?5+lJM+A08sqECW051rU=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:38:36.9476 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 38807e02-18cf-4493-431f-08de37f16bf3 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: MWH0EPF000A6731.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8779 Received-SPF: softfail 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: 1765374032583158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen The updated IOMMUFD uAPI introduces the ability for userspace to request a specific hardware info data type via IOMMU_GET_HW_INFO. Update iommufd_backend_get_device_info() to set IOMMU_HW_INFO_FLAG_INPUT_TYPE when a non-zero type is supplied, and adjust all callers to pass an explicitly initialised type value. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- backends/iommufd.c | 7 +++++++ hw/arm/smmuv3-accel.c | 2 +- hw/vfio/iommufd.c | 6 ++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/backends/iommufd.c b/backends/iommufd.c index 633aecd525..938c8fe669 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -386,16 +386,23 @@ bool iommufd_backend_get_dirty_bitmap(IOMMUFDBackend = *be, return true; } =20 +/* + * @type can carry a desired HW info type defined in the uapi headers. If = caller + * doesn't have one, indicating it wants the default type, then @type shou= ld be + * zeroed (i.e. IOMMU_HW_INFO_TYPE_DEFAULT). + */ bool iommufd_backend_get_device_info(IOMMUFDBackend *be, uint32_t devid, uint32_t *type, void *data, uint32_t = len, uint64_t *caps, uint8_t *max_pasid_lo= g2, Error **errp) { struct iommu_hw_info info =3D { + .flags =3D (*type) ? IOMMU_HW_INFO_FLAG_INPUT_TYPE : 0, .size =3D sizeof(info), .dev_id =3D devid, .data_len =3D len, .data_uptr =3D (uintptr_t)data, + .in_data_type =3D *type, }; =20 if (ioctl(be->fd, IOMMU_GET_HW_INFO, &info)) { diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index d320c62b04..300c35ccb5 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -115,7 +115,7 @@ smmuv3_accel_hw_compatible(SMMUv3State *s, HostIOMMUDev= iceIOMMUFD *idev, Error **errp) { struct iommu_hw_info_arm_smmuv3 info; - uint32_t data_type; + uint32_t data_type =3D 0; uint64_t caps; =20 if (!iommufd_backend_get_device_info(idev->iommufd, idev->devid, &data= _type, diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index bbe944d7cc..670bdfc53b 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -306,7 +306,7 @@ static bool iommufd_cdev_autodomains_get(VFIODevice *vb= asedev, ERRP_GUARD(); IOMMUFDBackend *iommufd =3D vbasedev->iommufd; VFIOContainer *bcontainer =3D VFIO_IOMMU(container); - uint32_t type, flags =3D 0; + uint32_t type =3D 0, flags =3D 0; uint64_t hw_caps; VFIOIOASHwpt *hwpt; uint32_t hwpt_id; @@ -631,8 +631,6 @@ skip_ioas_alloc: bcontainer->initialized =3D true; =20 found_container: - vbasedev->cpr.ioas_id =3D container->ioas_id; - ret =3D ioctl(devfd, VFIO_DEVICE_GET_INFO, &dev_info); if (ret) { error_setg_errno(errp, errno, "error getting device info"); @@ -889,7 +887,7 @@ static bool hiod_iommufd_vfio_realize(HostIOMMUDevice *= hiod, void *opaque, HostIOMMUDeviceIOMMUFD *idev; HostIOMMUDeviceCaps *caps =3D &hiod->caps; VendorCaps *vendor_caps =3D &caps->vendor_caps; - enum iommu_hw_info_type type; + enum iommu_hw_info_type type =3D 0; uint8_t max_pasid_log2; uint64_t hw_caps; =20 --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374102; cv=pass; d=zohomail.com; s=zohoarc; b=l0YeFS3Egva4VokKsFAA+mZcewugunaayX0C7T6v8wHEix1oKJTE9WJ4IKpBEBqe6FBWCb1d9feP6Wrb7KeERQNv0dGRTPxdTdoTp6tKd7hwBELjW/V1WKW8v8doJvhduphAkamlGLAkmIlHfVh5KqvCgMPANKgZGEaNlnpQb34= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374102; 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=JNlquPfg1vtcgY49X/usDJucuWLdwkwpa5DjRpe//r0=; b=SfFvvChesls8qdChTnt3jtkmp1xvlg89y+T9rVyI5gIwpzzsQd67zU2uoFtd7rLJh4uL3uak+HiPkctPplDTIKmZWsHBpKDgY5pekcURuJiLVTRyyQmLBHz4jpPVikA2rdWLrZeGRNZZXMq/QWs3GyC5y83WRG8VlJrhzxVN/9U= 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 1765374102027447.1246641966593; Wed, 10 Dec 2025 05:41:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPG-0007N9-UP; Wed, 10 Dec 2025 08:39:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKP1-0007Ih-P9; Wed, 10 Dec 2025 08:38:49 -0500 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 1vTKOz-0001HU-JG; Wed, 10 Dec 2025 08:38:46 -0500 Received: from BYAPR01CA0040.prod.exchangelabs.com (2603:10b6:a03:94::17) by SN7PR12MB6669.namprd12.prod.outlook.com (2603:10b6:806:26f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.8; Wed, 10 Dec 2025 13:38:37 +0000 Received: from CO1PEPF000075EF.namprd03.prod.outlook.com (2603:10b6:a03:94:cafe::d2) by BYAPR01CA0040.outlook.office365.com (2603:10b6:a03:94::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:28 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075EF.mail.protection.outlook.com (10.167.249.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:36 +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; Wed, 10 Dec 2025 05:38:22 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hSos+WyK1hrVjfvx5+u/aH6OMRlmyHj4m3uiCv2cR8kBWF3sJ8W2gf18gka40SUKoEhZi7gPfAUb39NZ+4rtIaHggheOJrRAN+RscDMEirYmH4ZfrODmgMjJdr89GzhSd50viDI/TBEtYgHyCl1Ny29RQRkvP3CsMSxeKF/vN4yB7bD6Lwd6FHurRlIcDKxypaiNwwYBdXqetkg/BP+E60JkXqtW7Dsz6vdTFH/Ty399hMir8roBqMaceOEUyuwYuQofVnobP9EJ2XxYP5gOxMuPAhgTF44Ba7s73ybucNWEtr5nUyEmY8vWqDkb7yrfaGzGL8WaIo75WAC+LgQ9Tg== 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=JNlquPfg1vtcgY49X/usDJucuWLdwkwpa5DjRpe//r0=; b=gqIou4ZvzzXY0d+MUHlo5kCdmj9UZaFVGR6qcVggkSLuvlBOJxsd7usv1vNBzaoYM0BKMvpnvoHWWRpwgszmFYGe0YjVpfPS3VcDLbTQ8nTCvKWK7zVdaKtwSqmzIzguHoDNycP1TejLxJu390DVGLy+8Ug9BSDWAbcft5uAo2Fb5lgxHd+zx1h6XwFqFrggci7NujFrtmaVH/2z1oL2DutWSEPN2tUsFmVJ3QhG4Bea91CiRDPYlFLMY0QgMzGMHX5FYP72BQ2NooYuyEmhyHoj3Of/BefDhu3TbLwO1T4YY2cesG31T8+7uVHPFOR4XngBxf/QQE9zegdj8vB/wg== 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=JNlquPfg1vtcgY49X/usDJucuWLdwkwpa5DjRpe//r0=; b=ZgMMzAyZPeh6/sOJen6OuW2L5X2tOKbNt76Cc7sc4lvHHdchfxZLiTaY6LWFXG+FJSILXvbouEa/YTU7liVKzMNrKja0EVJQJOEcp93hKQFFOnqCveIkn32iBiMlqfbaQe1ktFU1QF7hiSUGti0VPVXv8AhbemM6K2jOBaNdy+7xedYHoZEjnjhFkA+m+zUywEkZTmSozL141Stg0T4ir/0QpL80H+hOFxDQazBNoJaVGg1Ssw3s/6lDg6Rax2r6k/ZZ+Jytp1CUT1P/iFt049RSbAPhv4vEvsBYXQJi/UVo5lrSBRZAi0kVq3qow9NRKYrHff0ZvJCFL6B69yg8EA== 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: [RFC PATCH 02/16] backends/iommufd: Update iommufd_backend_alloc_viommu to allow user ptr Date: Wed, 10 Dec 2025 13:37:23 +0000 Message-ID: <20251210133737.78257-3-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075EF:EE_|SN7PR12MB6669:EE_ X-MS-Office365-Filtering-Correlation-Id: a572f815-3101-454f-5b71-08de37f16bc0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?EHf01C0nDByj7P4wxQ91mwd3OeiB2DSuVwIpVR+Eq/V5UcX+yr1xpa+slWC5?= =?us-ascii?Q?FB08+FCtL/kzbQ/HHQtMG7lLVkggC3tz5wvyLirVpES/UXDRZNboYatTsBxf?= =?us-ascii?Q?X5Zv3ENQi1Lig1xeWU0Z81w4K58ITPVwuaQ4lTaNqtIJX98t7WocTAcuW/av?= =?us-ascii?Q?1l7/lYituVxWRdpwfqF7i0jK3Q9bVqQPFwRBUGMWnlvapAF9iq2ICZNcmxUZ?= =?us-ascii?Q?l0rjLZwGdfIGSmwYRttoiZLXBVR5LtK3m1OqnlAKXs3SVCaRoNF6q8uYHzoT?= =?us-ascii?Q?nIEIBAUHHJO50pftaoCxRvWUO0KCUKMR4LOdrJ2E4ZODSZPaLj0kikHHJUzd?= =?us-ascii?Q?ztVI9bvDqzja08P5WLh0ZojVeWtx66m7pho5ERkHSbvHNHLctPEPxnCgOK41?= =?us-ascii?Q?EXpKXVVGHLEbcwM4525M+j3qA8pUsST6zb5nHghGP3yk4o/070vUoxD2Wz5o?= =?us-ascii?Q?lOE6Z16iUPTZTFWQy1MhA0y3JQSmvlHIwyLceh63CsoHeJ88ca5y7J8F+mYv?= =?us-ascii?Q?Yqxk45YcCDw1dLCjSa7RKphIAqDNh+nT3xYvHPENsssp2iZSMbZbeq+NtN/1?= =?us-ascii?Q?SCzl820VcUFRSWBZGcerK27VbfPrHoux54c/9scI52eFzoJGq7QmTWFArIRN?= =?us-ascii?Q?oO9aS0Ryz3jyhHBdqXq6G7qQE6TSk3Ir/OPSo9Sda4Y0xn8GneKkpG85QcIn?= =?us-ascii?Q?nrIo4XZRC8paAc8FFC2IfWycJUB6drhW0BkPskWqxEjuCOen9Yl8NBtfLqO/?= =?us-ascii?Q?tnPXxpFKF5QHLZ1xT1Tb87SIoWDkeW/WXIX8oQlRRJ6cYW/da1JextXoL6ZI?= =?us-ascii?Q?iyld4NEDW78+P3xR57IcQTUBiEKkmivOdASjhTzcsXayyNCqbEy+V5HHrn24?= =?us-ascii?Q?lnkzU/RYvmLjG+tuV7HQ5BhtefezPPJJQvBAREbZ/ncm7U/Zt5vhuiCbBExs?= =?us-ascii?Q?qJv6kgB6BPcxTYhBpZPCAkqYif1vRLmTMDlu0rd6Iv49Wj50/i5cWSmLFwwS?= =?us-ascii?Q?jiDVSdL+wFf8GEbREVyfa7w0P9wd3jX8GovaakvMxwPszHl9lYxsDkZQYSME?= =?us-ascii?Q?VK5qIAjdipHflBZHGYGDT2Tr9rBVTBKkVL0H2hG4WfEF5kbz87Ny/K30PexH?= =?us-ascii?Q?28GJ6xSr7cmxur3QDV6ei4uRVNjZdbQvZKRzzn5MetTrAVHioQZS1IyXgdrn?= =?us-ascii?Q?VCSw+qnFfnzgtl1g6TzmBk8v+r6y4u88qbCqHgxTjg8pR0ygKvrwFeXvLL0j?= =?us-ascii?Q?zG9jjUrCLJ8zQq7KH2TOMJM7Xz9AzoNHfiSEEhOTogixl+zMP6N3/HX3c+Lp?= =?us-ascii?Q?YmwGOeNMjH3cdWNVglqOZxqsIpyUSZv54hvp3otRQggIr+LvdaX8U13nTOSf?= =?us-ascii?Q?3RMnnluL3ZSmNnV4VG4xnHYYpWO4Kzsfpy2z7m8ZtWl1nkbcOBMgibjpnuBA?= =?us-ascii?Q?aL9bC49Zzh60Pb7U6h8eGhnnCKnJUdChGswYPh3DoprqxmWCXsXc+n7mytt7?= =?us-ascii?Q?06GoJGVhUeB9rO+x+Sidaw9dEMnuhaeVdHYOwaq6AC6g7kazT/7FYE77V0fR?= =?us-ascii?Q?3mnuROcWdQiltPvIe8g=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:38:36.7188 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a572f815-3101-454f-5b71-08de37f16bc0 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: CO1PEPF000075EF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6669 Received-SPF: softfail 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: 1765374102757158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen The updated IOMMUFD VIOMMU_ALLOC uAPI allows userspace to provide a data buffer when creating a vIOMMU (e.g. for Tegra241 CMDQV). Extend iommufd_backend_alloc_viommu() to pass a user pointer and size to the kernel. Update the caller accordingly. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- backends/iommufd.c | 3 +++ hw/arm/smmuv3-accel.c | 4 ++-- include/system/iommufd.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/backends/iommufd.c b/backends/iommufd.c index 938c8fe669..2f6fa832a7 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -459,6 +459,7 @@ bool iommufd_backend_invalidate_cache(IOMMUFDBackend *b= e, uint32_t id, =20 bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, uint32_t dev_id, uint32_t viommu_type, uint32_t hwpt_id, + void *data_ptr, uint32_t len, uint32_t *out_viommu_id, Error **errp) { int ret; @@ -467,6 +468,8 @@ bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, u= int32_t dev_id, .type =3D viommu_type, .dev_id =3D dev_id, .hwpt_id =3D hwpt_id, + .data_len =3D len, + .data_uptr =3D (uintptr_t)data_ptr, }; =20 ret =3D ioctl(be->fd, IOMMU_VIOMMU_ALLOC, &alloc_viommu); diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 300c35ccb5..939898c9b0 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -503,8 +503,8 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDevi= ceIOMMUFD *idev, SMMUv3AccelState *accel; =20 if (!iommufd_backend_alloc_viommu(idev->iommufd, idev->devid, - IOMMU_VIOMMU_TYPE_ARM_SMMUV3, - s2_hwpt_id, &viommu_id, errp)) { + IOMMU_VIOMMU_TYPE_ARM_SMMUV3, s2_hwp= t_id, + NULL, 0, &viommu_id, errp)) { return false; } =20 diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 9770ff1484..a3e8087b3a 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -87,6 +87,7 @@ bool iommufd_backend_alloc_hwpt(IOMMUFDBackend *be, uint3= 2_t dev_id, Error **errp); bool iommufd_backend_alloc_viommu(IOMMUFDBackend *be, uint32_t dev_id, uint32_t viommu_type, uint32_t hwpt_id, + void *data_ptr, uint32_t len, uint32_t *out_hwpt, Error **errp); =20 bool iommufd_backend_alloc_vdev(IOMMUFDBackend *be, uint32_t dev_id, --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374102; cv=pass; d=zohomail.com; s=zohoarc; b=dR5hNjTCwQ3NlqgrWcqLgH1EqvBY3wJoo6VoPk//XeQMDvOt4vTb/NhIvwmflZhJUogYx/jxFx+NVpLO1PYYYdCnpsMtjmqwcyvwQGswNDu/vXR0V5tcNUw1MlGiIgG5PnMMtk7+05FEYyMoGuAFONjYojArVY0WbBvAZnwWdzo= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374102; 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=xLw76l+8THQnJ5HCR1g6MCnJ8Q0z1dqt5VowTxqo23E=; b=GGWp6VC6JEGhWy+83lCnJZblcehxdIganVO1G1GMeApnBnJTv6HKfPApdtPotAgcfKvHB5ffMCRbY85jDH/SLxnFt4J5ZGcBQwP/7CFSQfPl8jiUs9yx12xttGwPDZeX1dQHP4qXmdlbrWMBinFqsRmWAfL/CwOXTCizGfjfU+U= 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 1765374102238258.0007387294247; Wed, 10 Dec 2025 05:41:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPG-0007MI-9z; Wed, 10 Dec 2025 08:39:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKP6-0007JY-G4; Wed, 10 Dec 2025 08:38:53 -0500 Received: from mail-northcentralusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c105::1] helo=CH1PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKP4-0001Io-PA; Wed, 10 Dec 2025 08:38:52 -0500 Received: from BYAPR01CA0070.prod.exchangelabs.com (2603:10b6:a03:94::47) by MW6PR12MB8952.namprd12.prod.outlook.com (2603:10b6:303:246::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.6; Wed, 10 Dec 2025 13:38:42 +0000 Received: from CO1PEPF000075EF.namprd03.prod.outlook.com (2603:10b6:a03:94:cafe::1a) by BYAPR01CA0070.outlook.office365.com (2603:10b6:a03:94::47) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:27 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075EF.mail.protection.outlook.com (10.167.249.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:42 +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; Wed, 10 Dec 2025 05:38:25 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:22 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=snHqSyJSmXYKzGnty1XBEtidtmwsSxIwyKzzzT8/7fJzkYmb5ZKcm9TTz8VYAu7scuq+I/aHEQWsXE0m++GsCOHHy4DcfPGLd22/vWYV17DhBGUUEt8gYJsPlrU9AW1gUcdDKLwsGpbG5/0sn7svgDMr9k2TLl5yvRVpxRYa7aVEZl2TdpeyyCU3cWrLdUCVIlfrIF4CBhXyQpgTMCbBpnnkbCDNmJzqr9FhTb/2ECSd/ZeZXYazYbgg8xvhZl/VaC2kyh2MXfzCVvd1rlz7EHjhas9jdLz+MUikHuA+mGXp91g9gnSB7eKTOpftZ6kY3AfXb1On3qlcD6ldRQO8Zw== 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=xLw76l+8THQnJ5HCR1g6MCnJ8Q0z1dqt5VowTxqo23E=; b=kBpg6O3R8eijkh/NYP/piwRjg4cmBxa/J9N0smrsLgmULjbpqwJSO/dZ1vNwrZ6LPwmAzlx4EOnJQ3enagmoXO5BdRsCpBVQ4d44ZY4FkDWgylt8t+LrdmD0l3B24KhHcgpwhNXAEmOiJDKg9a/LJpJk3wbinH8sDsYQaen59JJ7KIvjHBdGDMpmBLWCX1dquAFVVmeyaAZ2LFCQi6/sLqzNVAU+uDRGu6lIZnpvpGq3e5VHvnfgKvaKVsHRUZqWxlOHEQ/CdyiDSJlU50axbWNqt2q3qpIAWybeuEnkTJTAHUAi60BkbOchlE/G2Jup4N7Q/LTJbaFZ2vb1uU2O7Q== 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=xLw76l+8THQnJ5HCR1g6MCnJ8Q0z1dqt5VowTxqo23E=; b=dwmD8UdBvnOVwtYwtRr7HQvPnBZA/kRlgvr8xCXWK9LJ6Jf1d2oky9pMsTuPKnYwLMpPBAL/hDRW857WDmgH86RY7D4wdDJrVxhnMYQ/8iL79qjYSWgGYTI7esiIOFbM8QAMDuH1iQCMxb/G+EgezTPsVkJHjwmZOuF6QzsUu9Ylan/OZzFcdwJKFETY4+mEn/f33RxqmbROkZL8U8k+ZwgnMGk6eDAWC2x75I+Ffyggkpxr+hZDuowMUihk2dpAcleaEE3oiv6MrZI0O8tS4E4wHByQipI/DwR/UgDlwTwcXCDQpUumnHcGk0rnojSjzB6N3CBvYa1ppHY9L55PEg== 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: [RFC PATCH 03/16] backends/iommufd: Introduce iommufd_backend_alloc_hw_queue Date: Wed, 10 Dec 2025 13:37:24 +0000 Message-ID: <20251210133737.78257-4-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075EF:EE_|MW6PR12MB8952:EE_ X-MS-Office365-Filtering-Correlation-Id: d8ae4fb0-8d12-482a-52c4-08de37f16f23 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?dLYfQX3qfKwQcYyJh0oHH1AgygNuiMlRbuXvEfu8imEIFyYajs9h2VRJbFGl?= =?us-ascii?Q?nO1rr5R6823DVe08+yYUCxGOVouA76rAAqCxf+u8CCLexW8sJDE80voxby2g?= =?us-ascii?Q?ACdZZYBg2zEh7scf4KNbhHstScOrzj3cR/GgckQ29H3ZKl1hUxGZbGNrHZS0?= =?us-ascii?Q?Nk6vVBpvfpJJfvItWxMp6XXIkDuSiYXk8wKhJZMpWb8NHZNaNcLKBpbZQvRc?= =?us-ascii?Q?x2fGwX5LpVWU0ptqzytuswdRuboN17aQiw5D3jj4cWxbZsfP6xCcAenCTFbZ?= =?us-ascii?Q?APsPKpAA8YvvaXnTjs+9tCx59hQM/YilFt15n6SiKzhRnn2/CtE+Apr/dK6H?= =?us-ascii?Q?b3UXHvfoA85spzYa15wVVbQLsrmPTFGHFD6yoEsdVqYFPN0Yu+ks8MH4LNvv?= =?us-ascii?Q?M81SMDIDMwNRwBCIS7jiG6sue6FGG8fU4jg2QoNqxruvymMmCluNzt+aUp6g?= =?us-ascii?Q?hvaQGMJ5hwDlb5wJWyD6HIDqXNdv6Bai97nblMsKCwB36SdcU0wzfDC57LMD?= =?us-ascii?Q?x4+OJaUmiAgfLkBDfRHk31IzG1aV8R0q+7mHRRkjJial86Oz2VZ+33RVqRYn?= =?us-ascii?Q?kIzLFZ0pKY2Cw2GB/uJ7uj8Q7VknK+/TlR6oHlrgBaoCaxgtJfw/jaSJi7DH?= =?us-ascii?Q?OBnR+D6Qx+HxH1+3W5p53KAdoBXvAgIKLnJOuv1+Wj6qJk6DZ8bzBJIaaZME?= =?us-ascii?Q?6YvCpnwQ+CYAV/VeOjbrrvdogSJ7wtfaMz/CLjBKhbT1MEM0Yt1DgmyaKdqL?= =?us-ascii?Q?eVI3Tw6P87Zg6z0WEWaip9yGv872diFYYmG2n/sB4R+gZWR70kqxUkk4GFiB?= =?us-ascii?Q?KURfH+Eac40w21zJGczOAuAWpw92biGv1Txxf6DrE4bdlgGMLIpOAs6de1nK?= =?us-ascii?Q?pFxFK/hoRb2p6t6fO+uZhnTj45Jkc41iUS8kLhynamovCzEVfW72Km9Up8WM?= =?us-ascii?Q?NnM7p3haCepnr3PJgyr4uLbFOsGJECuvy0nwT3exHBd2gfHa3GLxgK6Ya526?= =?us-ascii?Q?KKyJyVYIhYsvpppLRw6v6NlkyyWzAzgbWAtrDXUgsDueTcJdhrTuQfCFR4ay?= =?us-ascii?Q?5X9nzLgwuSI6khm9yvgan38h6JYwd5BU+kO2dFsRKQE1JcmfrOf3gY3CXqXK?= =?us-ascii?Q?eqzKDmZbKQcTSk+lUaAp+T7ATUhqEpyj+nRHYo36XOzr8EytzgjuhBg7mZTH?= =?us-ascii?Q?d3XCv3R7FNpa0AJWCCIVAmhk+HkZxxDFRL43sF+d0WADFKPZWFUf6BGuMuOJ?= =?us-ascii?Q?k2EJRcIcwhgshdqUYKeItR2JblnEmgqgqbf220RFW349EpKpLKxteRdgbz4s?= =?us-ascii?Q?LDD7iWGxuNf7bjjTGTVQa6X0IBUhLH9S4czrCVPJixeetipEIXkXOwfa1xIo?= =?us-ascii?Q?Jg9gLBmT8KiAWHXcIIbS7tu21b0uVdJA2kmfvSLngIgqM37jIxeo6/d/Ya8o?= =?us-ascii?Q?jLAMJ0p2V6+7EIHzts5eTLBoOHXR/zTjQBuDqFmLDo/mu9XeAregDrBGqaes?= =?us-ascii?Q?2yjWSIAV3p18x3Dj2Mb3aJLZkPyX8Gp36jMxITrhcxbMeRABu1lNjbpy3X22?= =?us-ascii?Q?gbndu8E9qro0n9+GSbA=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)(82310400026)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:38:42.3406 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d8ae4fb0-8d12-482a-52c4-08de37f16f23 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: CO1PEPF000075EF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8952 Received-SPF: softfail client-ip=2a01:111:f403:c105::1; envelope-from=skolothumtho@nvidia.com; helo=CH1PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 1765374104715158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add a helper to allocate an iommufd backed HW queue for a vIOMMU. While at it, define a struct IOMMUFDHWqueue for use by vendor implementations. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- backends/iommufd.c | 31 +++++++++++++++++++++++++++++++ backends/trace-events | 1 + include/system/iommufd.h | 11 +++++++++++ 3 files changed, 43 insertions(+) diff --git a/backends/iommufd.c b/backends/iommufd.c index 2f6fa832a7..a644763239 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -544,6 +544,37 @@ bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be,= uint32_t viommu_id, return true; } =20 +bool iommufd_backend_alloc_hw_queue(IOMMUFDBackend *be, uint32_t viommu_id, + uint32_t data_type, uint32_t index, + uint64_t addr, uint64_t length, + uint32_t *out_hw_queue_id, Error **err= p) +{ + int ret; + struct iommu_hw_queue_alloc alloc_hw_queue =3D { + .size =3D sizeof(alloc_hw_queue), + .flags =3D 0, + .viommu_id =3D viommu_id, + .type =3D data_type, + .index =3D index, + .nesting_parent_iova =3D addr, + .length =3D length, + }; + + ret =3D ioctl(be->fd, IOMMU_HW_QUEUE_ALLOC, &alloc_hw_queue); + + trace_iommufd_backend_alloc_hw_queue(be->fd, viommu_id, data_type, + index, addr, length, + alloc_hw_queue.out_hw_queue_id, r= et); + if (ret) { + error_setg_errno(errp, errno, "IOMMU_HW_QUEUE_ALLOC failed"); + return false; + } + + g_assert(out_hw_queue_id); + *out_hw_queue_id =3D alloc_hw_queue.out_hw_queue_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 5afa7a40be..a22ad30e55 100644 --- a/backends/trace-events +++ b/backends/trace-events @@ -24,3 +24,4 @@ iommufd_backend_invalidate_cache(int iommufd, uint32_t id= , uint32_t data_type, u iommufd_backend_alloc_viommu(int iommufd, uint32_t dev_id, uint32_t type, = uint32_t hwpt_id, uint32_t viommu_id, int ret) " iommufd=3D%d type=3D%u dev= _id=3D%u hwpt_id=3D%u viommu_id=3D%u (%d)" iommufd_backend_alloc_vdev(int iommufd, uint32_t dev_id, uint32_t viommu_i= d, uint64_t virt_id, uint32_t vdev_id, int ret) " iommufd=3D%d dev_id=3D%u = viommu_id=3D%u virt_id=3D0x%"PRIx64" vdev_id=3D%u (%d)" iommufd_viommu_alloc_eventq(int iommufd, uint32_t viommu_id, uint32_t type= , uint32_t veventq_id, uint32_t veventq_fd, int ret) " iommufd=3D%d viommu_= id=3D%u type=3D%u veventq_id=3D%u veventq_fd=3D%u (%d)" +iommufd_backend_alloc_hw_queue(int iommufd, uint32_t viommu_id, uint32_t v= queue_type, uint32_t index, uint64_t addr, uint64_t size, uint32_t vqueue_i= d, int ret) " iommufd=3D%d viommu_id=3D%u vqueue_type=3D%u index=3D%u addr= =3D0x%"PRIx64" size=3D0x%"PRIx64" vqueue_id=3D%u (%d)" diff --git a/include/system/iommufd.h b/include/system/iommufd.h index a3e8087b3a..9b8602a558 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -63,6 +63,12 @@ typedef struct IOMMUFDVeventq { uint32_t veventq_fd; } IOMMUFDVeventq; =20 +/* HW queue object for a vIOMMU-specific HW-accelerated queue */ +typedef struct IOMMUFDHWqueue { + IOMMUFDViommu *viommu; + uint32_t hw_queue_id; +} IOMMUFDHWqueue; + bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp); void iommufd_backend_disconnect(IOMMUFDBackend *be); =20 @@ -99,6 +105,11 @@ bool iommufd_backend_alloc_veventq(IOMMUFDBackend *be, = uint32_t viommu_id, uint32_t *out_veventq_id, uint32_t *out_veventq_fd, Error **errp); =20 +bool iommufd_backend_alloc_hw_queue(IOMMUFDBackend *be, uint32_t viommu_id, + uint32_t data_type, uint32_t index, + uint64_t addr, uint64_t length, + uint32_t *out_hw_queue_id, Error **err= p); + 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 Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374133; cv=pass; d=zohomail.com; s=zohoarc; b=DjuZm/O+YnaCHxjGNwX1fHF3GGVPdlnHrQCZLZ+DRySxOr9R4BIM8i2PoyFG+OKQFVKIpI4C7cFIqRYjVDh4dvhfG4pro+m0gEhRsBxz/MlRHvvKdpxx4LPyIjU0lSBsyfU3OCFAso4ZBSeXb9ZVIsB6mhjoVnYwn4s9W0b4KDw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374133; 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=sP6KVyOG7h2wN1mKaMAfFP2+zxNFMJRI9I3onlmNOYg=; b=Xda1ov2qY0SBk8lI5Wnv2Y/QYVplBfwTqNe5e1/nFdB0lBU11oMYetn2TjQIS67aZlyrdFYKmczjKsF9cylRXOZniA9aM6odoY1lM/7I2OgLlOs+IVlBVnGUaYsMHHsVcO6kJqih08VF7P411oFVQQ9f7L8GHlMgmlPYXZK6s0Y= 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 1765374133338787.5341276840406; Wed, 10 Dec 2025 05:42:13 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPH-0007Nq-Jm; Wed, 10 Dec 2025 08:39:03 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPB-0007Km-G3; Wed, 10 Dec 2025 08:38:59 -0500 Received: from mail-westcentralusazlp170130007.outbound.protection.outlook.com ([2a01:111:f403:c112::7] helo=CY3PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKP9-0001Js-RG; Wed, 10 Dec 2025 08:38:57 -0500 Received: from SJ2PR07CA0021.namprd07.prod.outlook.com (2603:10b6:a03:505::23) by DM4PR12MB6472.namprd12.prod.outlook.com (2603:10b6:8:bc::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.6; Wed, 10 Dec 2025 13:38:47 +0000 Received: from CO1PEPF000075F0.namprd03.prod.outlook.com (2603:10b6:a03:505:cafe::23) by SJ2PR07CA0021.outlook.office365.com (2603:10b6:a03:505::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:44 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075F0.mail.protection.outlook.com (10.167.249.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:46 +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; Wed, 10 Dec 2025 05:38:29 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oJy/6t8QrkWgvSoMYWEHVsfkv3noZKp6XUio8kc5+rNz4VsLxXVpSFE23q72UwBRF5A5ac7RDOfHvE1g3S2nDBjwPvNrIxX8tptfAWzRyJMaueYbPvpRqD7OnDhZ+onUopAxNAbCi9I3A+6iu2Rjb8mMqFW1SY4/vrmvgqBX1xvK7M6AH6FuHmbMBFe94nxBb6b4A+MaWNyO88NiUPQVrj9POkNg87BZmapsp1n+ikCMeJieeaO9JBuwvTCK4FOLm0tfRLjXGqoBeIme2uyWoHb+/qPe0MS7DRMPrkYPr5xZQK0W/rovVQ/elrLnaL0B/wdOoi6/c2ne16RUnILJwA== 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=sP6KVyOG7h2wN1mKaMAfFP2+zxNFMJRI9I3onlmNOYg=; b=w2Vj2qSgpzKNljHEMXSk/8exMO8vgyRCEM4dF6V5e2gBMZt6+lTh1zUoi1bvjZxj3m6isdd0n2TxpWOdpvQpBMUMwQwLk4o7ghJITGJo3g1ZPOYSE2DOTxxRU/5/Zgv0dveBedtIL9UgB6Ly6Bz/3RtkcF6Eaz8V5vfZu4kF/L+NntlyNCokLw42ElP208yVRpstZVyRA7wWK4dpX4GDRCrdRMwwD8ICYYVTYo/xsmaVE5NIF+IhnkOAWF65yLCilwkv100peehpLh6cbGmF5VEtQAA0L7Tka0Ch5yZ0bqLpc+PNu1Jl0J+wJXsWAPSKq/9gNy8UkR88iZxOJCQ79A== 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=sP6KVyOG7h2wN1mKaMAfFP2+zxNFMJRI9I3onlmNOYg=; b=kUYlbRmBKQ+nXpqi/iWetNmKTjg71ELV5rKgHWXPe5ijRluYozq2Ce75EDFRPONygLYeXaUx9NiUYPN7dthcmHATTZSNN01oGYNfSGrkrJnQgWLycvU03Xi8BYl1Fn1e9gdG44UgyvxqA8Ad6wXzlG7h3gG0y6DO0Oh2sYI5E+g/h/6Mu3dozDX0Arc4EPgn9z370pAoZ3jI6sc6iqIGsz+mAZQcX/NGcc9wp4IFOhrElz75iBvwYLd1ylUOvd3UmpQCfwdJ+1aAiIM15W/68i7tk9rxMDIGTV8QDMvEzkX+MWcb6DG6JNKnmxCctxUz/bN7/eGoZ5S+Fovp7aofQA== 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: [RFC PATCH 04/16] backends/iommufd: Introduce iommufd_backend_viommu_mmap Date: Wed, 10 Dec 2025 13:37:25 +0000 Message-ID: <20251210133737.78257-5-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075F0:EE_|DM4PR12MB6472:EE_ X-MS-Office365-Filtering-Correlation-Id: 626baca0-9ece-4d61-720d-08de37f17193 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rwFCHtTLw6tJcohI56vKASR6Ylx65TuE1Og9m1wI858LZ/Gnfi7QP7oAHUfF?= =?us-ascii?Q?66YJV7N9TyB5u66MR8V/mRAxLrt7Lclogacw2JQqKfn6Hbexa9hgG2B16+IS?= =?us-ascii?Q?K/ZbdqGwhsUNdj5r0/TgTano982/L/CTB3AuVHnt9+K2oh9Ug66kTnmYvUTM?= =?us-ascii?Q?slRqBsnSzS0OFnr3wF6A0hndz1ekEvbdp3RA4T7vzu6l/kL+SgkdthafkwCN?= =?us-ascii?Q?gTmCHVqH0VIBjHNXywFtugJADx73hfHw+XqRd12aOaeUUbaBHcaRVPtv8E8M?= =?us-ascii?Q?Z64YbhH+KmyGcI5MEtW6BXavxC330MoLwtAJNkOG1ZdtbK2YN7mRutq2TQV6?= =?us-ascii?Q?jaDxDoQejRi1kvHV1+SeboUFir2EZ3rsq9wb92sZFoZcdFsGXswBt2O/zbQN?= =?us-ascii?Q?QefstzNbWEh95O+KnFvhb7mvUr4UHEGmr1voYCi82uuS8wQU6oiZ0LGxyZVW?= =?us-ascii?Q?HYAUsjl+s3Mh7NyPDjHa+W8r/TVVum7mpbqzNkK7oPrqmLdQ4u0B5OEfMfC1?= =?us-ascii?Q?6YlRjOns3SA/ZZ0IFbGd6AsRxncHmzirH3bdHI1yRL41WHyrybP8XggPQGyF?= =?us-ascii?Q?L0iHOwxxIIts1rOb6WlERA+495FkJBfdLten7po48LCc9OqWmO5m/1e/sMlC?= =?us-ascii?Q?CEor+/EPIK74smRC90/uG5qJfIEtWUAft5oTtp9N2vhbcY0oEY6dEJBDEZqC?= =?us-ascii?Q?G6Nnh7o0WCEbTrrMSS85gvqKffEHZpntB59pCS0bYeH6kQ5D7+jMMncPMGD5?= =?us-ascii?Q?hVNG1McD7MJFKG8Q+vH0ctc9XXH/PKwEVvAUL6Jl0GD61Vgzce25zJKuZAH/?= =?us-ascii?Q?frqZCmX73zhIHHrWEnyXCFM4lbgsDfRod4UEIX5q3qU9V5NtcbaBrzYLuAiv?= =?us-ascii?Q?Gs38Hgsn2GUCFuA/Z+FH1cyqcsGcdZYVrgvGutBaY+3hQtlr+DTEDF+F/YGJ?= =?us-ascii?Q?1QxBUz1G3eNVbgDW0jp6Xjlp/lkO2gKrjrNWK2LM6HxClJtZOB9cY6Qkn6jT?= =?us-ascii?Q?MtFb7ciAb8nxkRI+vJdJs6St94Y/1B3ER0WRDFp10vNfETTvutlbg8UNwdUf?= =?us-ascii?Q?ghSqiXtQZqB9aYauf/QgMVeUSPzBa5iN3ypgn+mZjkknGvax8djbDJQGOx8p?= =?us-ascii?Q?eNlDphjlcLF2D06uxbcpC749UtM4CyvsdsfQf0mqKxoMgrHS9Ka/9wO6n+nX?= =?us-ascii?Q?OmZIgassMvr7D856lhPgdOL+HfRtcWFdJELW7M27GjpKMn8jE2cV6Vd88yem?= =?us-ascii?Q?tQtvqlXjcdddzRbmCIa/al3wxw2G+UNcPQA6jkaX0f/ofrZe3xUjRk0pCT02?= =?us-ascii?Q?l5EUFmexGKvEBVQt/6e4tgSQ1VLF+u/87KK0Rd7wYbpwmuCuXzOgY1z5+lMe?= =?us-ascii?Q?bsG9ZhL3Y5Z32acAaEMLxolGdNO9elzHGIsdK0fLuKsOjn/6Yuxsd9QTvKQy?= =?us-ascii?Q?G9dS35jaLck+a0GtHZNkQrn/DML0xuXJJdFiCb3jTR0WpqCx9GFs2MHAi6ul?= =?us-ascii?Q?eC7AjmMjzoxLCpON/3qVjI/y/cEsTMRoSRXOwf1BfDlULEq5oiQXpa3x/g?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:38:46.4390 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 626baca0-9ece-4d61-720d-08de37f17193 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: CO1PEPF000075F0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6472 Received-SPF: softfail client-ip=2a01:111:f403:c112::7; envelope-from=skolothumtho@nvidia.com; helo=CY3PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1765374134811158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add a backend helper to mmap hardware MMIO regions exposed via iommufd for a vIOMMU instance. This allows user space to access HW-accelerated MMIO pages provided by the vIOMMU. The caller is responsible for unmapping the returned region. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum Reviewed-by: Eric Auger --- backends/iommufd.c | 24 ++++++++++++++++++++++++ backends/trace-events | 1 + include/system/iommufd.h | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/backends/iommufd.c b/backends/iommufd.c index a644763239..015e5249d6 100644 --- a/backends/iommufd.c +++ b/backends/iommufd.c @@ -575,6 +575,30 @@ bool iommufd_backend_alloc_hw_queue(IOMMUFDBackend *be= , uint32_t viommu_id, return true; } =20 +/* + * Helper to mmap HW MMIO regions exposed via iommufd for a vIOMMU instanc= e. + * The caller is responsible for unmapping the mapped region. + */ +bool iommufd_backend_viommu_mmap(IOMMUFDBackend *be, uint32_t viommu_id, + uint64_t size, off_t offset, void **out_p= tr, + Error **errp) +{ + g_assert(viommu_id); + g_assert(out_ptr); + + *out_ptr =3D mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, be->= fd, + offset); + if (*out_ptr =3D=3D MAP_FAILED) { + error_setg_errno(errp, errno, "failed to mmap (size=3D0x%" PRIx64 + " offset=3D0x%" PRIx64 ") for viommu (id=3D%d)", + size, offset, viommu_id); + return false; + } + + trace_iommufd_backend_viommu_mmap(be->fd, viommu_id, size, offset); + 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 a22ad30e55..046f453caa 100644 --- a/backends/trace-events +++ b/backends/trace-events @@ -25,3 +25,4 @@ iommufd_backend_alloc_viommu(int iommufd, uint32_t dev_id= , uint32_t type, uint32 iommufd_backend_alloc_vdev(int iommufd, uint32_t dev_id, uint32_t viommu_i= d, uint64_t virt_id, uint32_t vdev_id, int ret) " iommufd=3D%d dev_id=3D%u = viommu_id=3D%u virt_id=3D0x%"PRIx64" vdev_id=3D%u (%d)" iommufd_viommu_alloc_eventq(int iommufd, uint32_t viommu_id, uint32_t type= , uint32_t veventq_id, uint32_t veventq_fd, int ret) " iommufd=3D%d viommu_= id=3D%u type=3D%u veventq_id=3D%u veventq_fd=3D%u (%d)" iommufd_backend_alloc_hw_queue(int iommufd, uint32_t viommu_id, uint32_t v= queue_type, uint32_t index, uint64_t addr, uint64_t size, uint32_t vqueue_i= d, int ret) " iommufd=3D%d viommu_id=3D%u vqueue_type=3D%u index=3D%u addr= =3D0x%"PRIx64" size=3D0x%"PRIx64" vqueue_id=3D%u (%d)" +iommufd_backend_viommu_mmap(int iommufd, uint32_t viommu_id, uint64_t size= , uint64_t offset) " iommufd=3D%d viommu_id=3D%u size=3D0x%"PRIx64" offset= =3D0x%"PRIx64 diff --git a/include/system/iommufd.h b/include/system/iommufd.h index 9b8602a558..e3905c9a40 100644 --- a/include/system/iommufd.h +++ b/include/system/iommufd.h @@ -110,6 +110,10 @@ bool iommufd_backend_alloc_hw_queue(IOMMUFDBackend *be= , uint32_t viommu_id, uint64_t addr, uint64_t length, uint32_t *out_hw_queue_id, Error **err= p); =20 +bool iommufd_backend_viommu_mmap(IOMMUFDBackend *be, uint32_t viommu_id, + uint64_t size, off_t offset, void **out_p= tr, + 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 Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374051; cv=pass; d=zohomail.com; s=zohoarc; b=MraLp8Q/3bL2sNe03u8ZOvopMLghq4wN6U0ULmHxY63zXrC1IwTkVu+x4twQtH4HW2FCBKjCSlvQGi2SUpDEhJ7tPoupuRlnn++pAtqsSrYjmEd9WvpuDQA1AtZq9Hy8bKwwfOp4u4a2e50MHumgKo76bpAKLJ48PmMzN/tIp4I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374051; 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=Ogp6UdifGZ/nZozlF67/R916bAarQJSj4jnYZb0M8zI=; b=BZFXKCkjtQre/iEo1WrUeP6fr+UzUmdxw8cBz3IvA3T1CnUvsUSiyJP+4DCb8CJimnNPsJhpNmlkXDfcitlyY6yGXdJlKmdZDM2YdrNcfm384O8KUKVwTii4/ybDaVwswEdicP34f9nGPYeiMxoCcQd+kzeWwFwmZYaNNmoT5II= 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 1765374051611189.85094416166214; Wed, 10 Dec 2025 05:40:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPO-0007RI-HP; Wed, 10 Dec 2025 08:39:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPL-0007Pi-Sk; Wed, 10 Dec 2025 08:39:07 -0500 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 1vTKPJ-0001Ma-QU; Wed, 10 Dec 2025 08:39:07 -0500 Received: from BY3PR04CA0007.namprd04.prod.outlook.com (2603:10b6:a03:217::12) by SA3PR12MB7998.namprd12.prod.outlook.com (2603:10b6:806:320::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.8; Wed, 10 Dec 2025 13:38:56 +0000 Received: from MWH0EPF000A6734.namprd04.prod.outlook.com (2603:10b6:a03:217:cafe::82) by BY3PR04CA0007.outlook.office365.com (2603:10b6:a03:217::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.6 via Frontend Transport; Wed, 10 Dec 2025 13:38:53 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000A6734.mail.protection.outlook.com (10.167.249.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Wed, 10 Dec 2025 13:38:55 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:35 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:30 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=k8wP6/Zw8RtMZcvt8vy7Q1W4s93UqWhkVoHloY7aYLw3OPVlWc9piSm9tbvzR6IVH5GGxv0XbaOh7SMnlSw30RADrUWBqf9tvYukWmUxOtfw0tnpHnxmE4P8MTbE6gORdsH9t1bDg92qeWy6CGYMd462ANBLjtP/6h/gcp74ItdhRx6NLyO7EQUE9CikAzdbyGyhW8Job2gfgEJh0qbwf9o2XLiTkbLEvmUfemWRAsaL2k7wLxtoZXV5POI/Sp+8xjoiKahJKxNy6bG1vDc95qSjBSFLGPZ7LUhVTVx12+MmJA5U2QdXIeM1/HqK5KlKeQuM2KI8/aycP83VWXFOWQ== 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=Ogp6UdifGZ/nZozlF67/R916bAarQJSj4jnYZb0M8zI=; b=xhw6QwQUGqTHo1wFQPax9bIT3N3TLmGbGbCLBWmhYtS6Do4J5fBlVCC/MYr78h0hqlADXKDcHpBc9ZiyOA7tfucNRCldhOECrbx78zA0O+NeiWJ5GaEm/a913GKlsKT9FBtMqd2IiOy1C8MK7a8LyEfbv+oXLW2DmFHaV+KCu1UsIbFXlwhLD4PbPZJwUjJyspnkAeUKQIc4NHP+mgjhlt6zHl1YRrjXCG3GPKjd9CoZWrFdFyyFZUr59FfxGXZZC60Z3NAK8UOPI1oxAG+ndHC7BHlKnUnzhIai5mQF1BkuSTgTsIwI9yOgmwApopYtwpf4nUG9m5epY7nvMDGLhw== 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=Ogp6UdifGZ/nZozlF67/R916bAarQJSj4jnYZb0M8zI=; b=RQ4Rj6UpDBaSOWkqN+KzziIxypIb7yFso34cGIzjLdnQ8aJ14d3AQoXKxuqtPZIcq4POtj6roPtKHgkpUhxzSGv3AWxjpa8a7BUIKk2whtpNmisXc0lhFqrVH3kBk90sbSnmzKB0JPs3IjGEKxhdGmyuiAbWwkqsl8sNtRHrDD1DEfI4Q0Qjp7iNOaWsS9Jslss3EkRAkBPGC2SRVl/o93lEFLnoVqi8xC1atVTNxED2eP50s338E8iH9T4fNNR6oiJ5SSWHz6jOqkAmgfuP1zc521S4vf6iG/GAVblrpOCv7U+ZUJ3j5mgRJelzEpWRaiYkol41vlQS9fgH3+WKQw== 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: [RFC PATCH 05/16] hw/arm/tegra241-cmdqv: Add initial Tegra241 CMDQ-Virtualisation support Date: Wed, 10 Dec 2025 13:37:26 +0000 Message-ID: <20251210133737.78257-6-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: MWH0EPF000A6734:EE_|SA3PR12MB7998:EE_ X-MS-Office365-Filtering-Correlation-Id: 82aa4bb1-a861-4208-c961-08de37f176f8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HOUHqmk3nmn/upAdIml42i7hVKXUbnW+C/xWZitsvptWHus78mJCiDf7oegd?= =?us-ascii?Q?hOUxFEJKE73tRnS1c9a7Pr4Xc2SU5uGUXYkRH0lqBKAxzjV7+EFvBWgtUOGH?= =?us-ascii?Q?njogyA/t4ShIiJxVFbqPqlewnVj4yobBYZM035eHaa8/X06zekNq+kta6Zz9?= =?us-ascii?Q?ROh/IkzNB5ejTPDHmnsGhLrG9IEhiebKZfvTS4KpUBEVZFNL/EhnOirhIYTc?= =?us-ascii?Q?1YKmG2mhsg1wS20FtKGQ6qzdpoCygFCeQUpNlQ9zjShrhAuHj5Bk4xxseS5d?= =?us-ascii?Q?2Bhnp2R8JiBCEBK5xHQHvxrTVfLNPcvWGeCsCBFfIM+UguJuLYRvgKy0/0T6?= =?us-ascii?Q?soMj2P9OPMZbSrgANVoZ3r58yY1x6HjR1ifWdixJoh8hiF9c+rPphSp4AV2+?= =?us-ascii?Q?WpCgEyW/fX1m3FslZ2X51iYK+Jg1DKSQaptlLCSgijKsgvlXWFSoBfDET/Za?= =?us-ascii?Q?C66t9q+IL4wk5iy7eGjGssPDVDGlei6Ha3B7Y3DUK/uWqIqNMZOYeqA3fdQn?= =?us-ascii?Q?C5O31Y1QZLMKnQr50ArI3PSvAh6mKHVCjbzoqQIW35K7Le/tQdp1EYnYe7J1?= =?us-ascii?Q?dfmHsAhOtSmG8SXOgSjt1Yc7ib3dGojoNRmZOTn2Ia+nzlFailUixoNFJufD?= =?us-ascii?Q?RNMZOWDfmYSUmPb0uurOe8+qSH0vQAlYUPZgXU2MRgFs543J0D4XOE46reyD?= =?us-ascii?Q?LyfbSAGQNpkXVfjshHb4zqLUOt7joo0JPoLFsj7RAk7D/GTG476LPCk6Z/Qu?= =?us-ascii?Q?kpTecBWB38xv20OOvR7MGDjoEjVROPfzhixvouzZW2j2YS8PVGTkHyFru8T8?= =?us-ascii?Q?jEITk+frPYoB7awF9aTHFnEfwDRkA8CJWKEyfRgRS1PhyGkud4bzyxMUmil8?= =?us-ascii?Q?PF1DMhigdqCy9Qpq3CpdapS6nfQuuA8YdXrAASyxZ/KjULhSVi2NG8JqtTZz?= =?us-ascii?Q?6XQJzigesBDFE+Jt+DT01JTO+VSsq/KzfrIPfM/4YdBXnBkxwPwFYbriz4Ru?= =?us-ascii?Q?9uB8UgeBfz9G9x1ShPHaixYUrSPdAUU/HmaFAXFd7uDX9DbHvaPoxCwkOIvP?= =?us-ascii?Q?QwKYL4NNXfF35SSXYsOCcidJPMQqxhruJomGt2GM3PKLaYntn4NICcwOVFrr?= =?us-ascii?Q?S6fD4tm2ySWcE2f74vTlD3tqBJMRvRn9Hen85X3COP50yNDKzmvzhWb+zYb3?= =?us-ascii?Q?9yCzBD1sxG5p9opkQEAKTieC4Qsaafmf+Xj9VRsVI6F4NkUbI5ApTxBoNz2y?= =?us-ascii?Q?EiFgLgRbHF5OrWG6GfNksy971okkpPEDe0j62GnREqszH820JRkhQdFaLT7f?= =?us-ascii?Q?BhOdka2GuLy6P4E/jfy8ilO7ew2IjLu7NITTQkzHvzuzvvjmkCAk5egc02rl?= =?us-ascii?Q?e9GauA+Dr0LgZbHsxP4FNRfFG3ihXr8pVLvs8rrVbyAH6FG1kOK5hdGwUSph?= =?us-ascii?Q?IC107oSscFYFvqGqNGbnKLW01cG2rSLyrrUk8Mv0aJ5ewN21fwJHmmAxtrzz?= =?us-ascii?Q?QZfsPWfdokDg7PrPS3DSmCffdJW4xx1vpbKsL4W0+XJSVPQ7ykKODPFvsekv?= =?us-ascii?Q?qR+NbMMMquUDRDqVS90=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)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:38:55.4394 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 82aa4bb1-a861-4208-c961-08de37f176f8 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: MWH0EPF000A6734.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7998 Received-SPF: softfail 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: 1765374052587158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Introduce initial support for NVIDIA Tegra241 CMDQ-Virtualisation (CMDQV), an extension to SMMUv3 providing virtualizable hardware command queues. This adds the basic MMIO handling, and integration hooks in the SMMUv3 accelerated path. When enabled, the SMMUv3 backend allocates a Tegra241 specific vIOMMU object via IOMMUFD and exposes a CMDQV MMIO region and IRQ to the guest. The "tegra241-cmdqv" property isn't user visible yet and it will be introduced in a later patch once all the supporting pieces are ready. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/Kconfig | 5 ++++ hw/arm/meson.build | 1 + hw/arm/smmuv3-accel.c | 10 +++++-- hw/arm/smmuv3.c | 4 +++ hw/arm/tegra241-cmdqv.c | 65 +++++++++++++++++++++++++++++++++++++++++ hw/arm/tegra241-cmdqv.h | 40 +++++++++++++++++++++++++ include/hw/arm/smmuv3.h | 3 ++ 7 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 hw/arm/tegra241-cmdqv.c create mode 100644 hw/arm/tegra241-cmdqv.h diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 702b79a02b..42b6b95285 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -37,6 +37,7 @@ config ARM_VIRT select VIRTIO_MEM_SUPPORTED select ACPI_CXL select ACPI_HMAT + select TEGRA241_CMDQV =20 config CUBIEBOARD bool @@ -634,6 +635,10 @@ config ARM_SMMUV3_ACCEL bool depends on ARM_SMMUV3 && IOMMUFD =20 +config TEGRA241_CMDQV + bool + depends on ARM_SMMUV3_ACCEL + config FSL_IMX6UL bool default y diff --git a/hw/arm/meson.build b/hw/arm/meson.build index c250487e64..4ec91db50a 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -86,6 +86,7 @@ arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP', if_true: fil= es('fsl-imx8mp.c')) arm_common_ss.add(when: 'CONFIG_FSL_IMX8MP_EVK', if_true: files('imx8mp-ev= k.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_ss.add(when: 'CONFIG_TEGRA241_CMDQV', if_true: files('tegra241-cmdqv.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_common_ss.add(when: 'CONFIG_XEN', if_true: files( diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index 939898c9b0..e50c4b3bb7 100644 --- a/hw/arm/smmuv3-accel.c +++ b/hw/arm/smmuv3-accel.c @@ -18,6 +18,7 @@ =20 #include "smmuv3-internal.h" #include "smmuv3-accel.h" +#include "tegra241-cmdqv.h" =20 /* * The root region aliases the global system memory, and shared_as_sysmem @@ -499,10 +500,15 @@ smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDe= viceIOMMUFD *idev, .ste =3D { SMMU_STE_VALID, 0x0ULL }, }; uint32_t s2_hwpt_id =3D idev->hwpt_id; - uint32_t viommu_id, hwpt_id; + uint32_t viommu_id =3D 0, hwpt_id; SMMUv3AccelState *accel; =20 - if (!iommufd_backend_alloc_viommu(idev->iommufd, idev->devid, + if (s->tegra241_cmdqv && !tegra241_cmdqv_alloc_viommu(s, idev, &viommu= _id, + errp)) { + return false; + } + + if (!viommu_id && !iommufd_backend_alloc_viommu(idev->iommufd, idev->d= evid, IOMMU_VIOMMU_TYPE_ARM_SMMUV3, s2_hwp= t_id, NULL, 0, &viommu_id, errp)) { return false; diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 9b7b85fb49..02e1a925a4 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -36,6 +36,7 @@ #include "smmuv3-accel.h" #include "smmuv3-internal.h" #include "smmu-internal.h" +#include "tegra241-cmdqv.h" =20 #define PTW_RECORD_FAULT(ptw_info, cfg) (((ptw_info).stage =3D=3D SMMU_STA= GE_1 && \ (cfg)->record_faults) || \ @@ -2017,6 +2018,9 @@ static void smmu_realize(DeviceState *d, Error **errp) =20 smmu_init_irq(s, dev); smmuv3_init_id_regs(s); + if (s->tegra241_cmdqv) { + tegra241_cmdqv_init(s); + } } =20 static const VMStateDescription vmstate_smmuv3_queue =3D { diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c new file mode 100644 index 0000000000..899325877e --- /dev/null +++ b/hw/arm/tegra241-cmdqv.c @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2025, NVIDIA CORPORATION + * NVIDIA Tegra241 CMDQ-Virtualization extension for SMMUv3 + * + * 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" +#include "tegra241-cmdqv.h" + +static uint64_t tegra241_cmdqv_read(void *opaque, hwaddr offset, unsigned = size) +{ + return 0; +} + +static void tegra241_cmdqv_write(void *opaque, hwaddr offset, uint64_t val= ue, + unsigned size) +{ +} + +static const MemoryRegionOps mmio_cmdqv_ops =3D { + .read =3D tegra241_cmdqv_read, + .write =3D tegra241_cmdqv_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, +}; + +bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *i= dev, + uint32_t *out_viommu_id, Error **errp) +{ + Tegra241CMDQV *cmdqv =3D s->cmdqv; + + if (!iommufd_backend_alloc_viommu(idev->iommufd, idev->devid, + IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV, + idev->hwpt_id, &cmdqv->cmdqv_data, + sizeof(cmdqv->cmdqv_data), out_viomm= u_id, + errp)) { + error_append_hint(errp, "NVIDIA Tegra241 CMDQV is unsupported"); + s->tegra241_cmdqv =3D false; + return false; + } + return true; +} + +void tegra241_cmdqv_init(SMMUv3State *s) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(OBJECT(s)); + Tegra241CMDQV *cmdqv; + + if (!s->tegra241_cmdqv) { + return; + } + + cmdqv =3D g_new0(Tegra241CMDQV, 1); + memory_region_init_io(&cmdqv->mmio_cmdqv, OBJECT(s), &mmio_cmdqv_ops, = cmdqv, + "tegra241-cmdqv", TEGRA241_CMDQV_IO_LEN); + sysbus_init_mmio(sbd, &cmdqv->mmio_cmdqv); + sysbus_init_irq(sbd, &cmdqv->irq); + cmdqv->smmu =3D s; + s->cmdqv =3D cmdqv; +} diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h new file mode 100644 index 0000000000..9bc72b24d9 --- /dev/null +++ b/hw/arm/tegra241-cmdqv.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2025, NVIDIA CORPORATION + * NVIDIA Tegra241 CMDQ-Virtualiisation extension for SMMUv3 + * + * Written by Nicolin Chen, Shameer Kolothum + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_TEGRA241_CMDQV_H +#define HW_TEGRA241_CMDQV_H + +#include CONFIG_DEVICES + +#define TEGRA241_CMDQV_IO_LEN 0x50000 + +typedef struct Tegra241CMDQV { + struct iommu_viommu_tegra241_cmdqv cmdqv_data; + SMMUv3State *smmu; + MemoryRegion mmio_cmdqv; + qemu_irq irq; +} Tegra241CMDQV; + +#ifdef CONFIG_TEGRA241_CMDQV +bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *i= dev, + uint32_t *out_viommu_id, Error **errp); +void tegra241_cmdqv_init(SMMUv3State *s); +#else +static inline void tegra241_cmdqv_init(SMMUv3State *s) +{ +} +static inline bool +tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, + uint32_t *out_viommu_id, Error **errp) +{ + return true; +} +#endif + +#endif /* HW_TEGRA241_CMDQV_H */ diff --git a/include/hw/arm/smmuv3.h b/include/hw/arm/smmuv3.h index 2d4970fe19..8e56e480a0 100644 --- a/include/hw/arm/smmuv3.h +++ b/include/hw/arm/smmuv3.h @@ -73,6 +73,9 @@ struct SMMUv3State { bool ats; uint8_t oas; bool pasid; + /* Support for NVIDIA Tegra241 SMMU CMDQV extension */ + struct Tegra241CMDQV *cmdqv; + bool tegra241_cmdqv; }; =20 typedef enum { --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374145; cv=pass; d=zohomail.com; s=zohoarc; b=b8usRjEwF2qk/2MnQWeagl/VznRHJqSxEYD7R0OYJ+dbxB+sq19g34OaifvL6NI7sle5AP9kcs2eJy0d2E8hEIJXFtEKBHvWm/8yKjdF5vEqtjZpa7HxnILAcTnWOd7vulMtGXuHC/tIY59M7spg9qTLnLFWszk4mVK0gwksNwQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374145; 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=/GiwW0LpgU506wgMYkhrGtomFcAqr5ErZ8h9iEmgWVs=; b=Zx0cwlCvAOF5sKvcO4XSn7BIFDhIVRRqEguweOe3jc5w7QdgYrfZG3q5dZEiVVPsDMYfAz+0BFnmUHQZzSQPfL2mjOp8DQXt/n71IsFFKOj3kjcBk9KT3t7weFSI24vWnod2L+CCT1fyrLgvAebKjpLVeE+Lp3v5oJYadNdlMJI= 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 1765374145125769.4623479272622; Wed, 10 Dec 2025 05:42:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPI-0007OO-7a; Wed, 10 Dec 2025 08:39:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPF-0007LY-An; Wed, 10 Dec 2025 08:39:01 -0500 Received: from mail-northcentralusazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c105::5] helo=CH5PR02CU005.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 1vTKPD-0001LB-RN; Wed, 10 Dec 2025 08:39:01 -0500 Received: from BYAPR01CA0069.prod.exchangelabs.com (2603:10b6:a03:94::46) by IA1PR12MB8288.namprd12.prod.outlook.com (2603:10b6:208:3fe::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.9; Wed, 10 Dec 2025 13:38:53 +0000 Received: from CO1PEPF000075EF.namprd03.prod.outlook.com (2603:10b6:a03:94:cafe::95) by BYAPR01CA0069.outlook.office365.com (2603:10b6:a03:94::46) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.7 via Frontend Transport; Wed, 10 Dec 2025 13:39:27 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075EF.mail.protection.outlook.com (10.167.249.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:53 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:39 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:36 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WCRntCI50UpLRQt4EAFDMhKrnF+TMBbSu3xw1SQv0GRl43hCg4obXu2mUjj47fKjVwaC1jqUKfSkzSpq70wHGEdAmG3gydxkWvPpOSorwgn5CbbWFeGGuzJm3ti7TbmCFJJOcI3F2W5Pj8sNcYHtXCRgrUBgrHVpW+WqHOSXFSoiMdt14lLLxsBs+nZkAhxJNTZtQc1OeRf2pneS/Etq46XS22jSxZ+EJ0HDkuAjTntx9tyOuuxj8bnV7KrZWCJOsU4TR7hkzyF92gS8zTJJRtAgZB2S112sBbTG+x/MthrRTfFQAHbXqMFpPCwotmVVUqd2uy0CK8dn1pJNAa9e7Q== 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=/GiwW0LpgU506wgMYkhrGtomFcAqr5ErZ8h9iEmgWVs=; b=FuZGtB0TmA6D0Sqn4h2nFtBp8m2YRMYoMiPPFDwurjgJcNanSOo5ghQ9R8M/WAtDwZcZCEKbfsFCyHYlifJQsALvx5T3eMBhu0Wdo+GdNSSZr0bPeaJ/J5spfj4B3gHYeqi+Pr4kUr5TX444/yTQm59+D8ScMqOn/K2n+tpar2HTfn9OBz5F7sL6abR3LaBkuy4StNhgN8y0PNlaSly76Omv+aQbeBPby5quFzzfogq9GE/YDtdGKw+YQS8oTqtex8ZsVbBV0SmIwmprW/iIBp0Kwte1a3cV8CEiQMEwEkoNGh/qxbBvcEVtJSFmlQ+naf/Jy17qMQ++vAFi3V4pMA== 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=/GiwW0LpgU506wgMYkhrGtomFcAqr5ErZ8h9iEmgWVs=; b=Uw5UneG4z+ilN4Dre2oIXWR7SPUpgwVMuvZh8WXFtJBBnGp5Yf/CEDRYk8MGBeH8l1+Vpj1A1AqxfEWgOLNZo2AquFz1fOB0Hm/BXVXdDMn2c1gQMY88SMSu66c3cQ7uTN0cyIwwUw9Y3POdMYY/bL58mX04TfjUwOuWfU39X8mdekDXMkq99G5qPvCTUnlhE/CYdDDd5ZmDPpjI6yBdvR7runD4l83z87x4k0myfXdqYhTvsqVhzt//lyWrGyyGFP9Z1rq90CVvsNzd/Xtw9XvBCzvDLYaJ8z3kx31zxPUggc8PBkOMD/0Lw3ApldybZGiH2CXDekmp5L03J/nhvQ== 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: [RFC PATCH 06/16] hw/arm/tegra241-cmdqv: Map VINTF Page0 into guest Date: Wed, 10 Dec 2025 13:37:27 +0000 Message-ID: <20251210133737.78257-7-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075EF:EE_|IA1PR12MB8288:EE_ X-MS-Office365-Filtering-Correlation-Id: d0b7e91a-b28f-4dfc-3dcb-08de37f17596 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+CbNV2x5ksbsAQWAyPvwfKuw/CVfbHWO2+q/mWlwlNb0GELOVO8V6FcSHDad?= =?us-ascii?Q?l+my73sz3yzO/PaCX2OqTpnCsZZLHgxhvoWKVvOgBL7VBil5uq/Le6MHMqCQ?= =?us-ascii?Q?01WAmhgO6dScMbp4ucMxKcTmX/c42zQ6Dfqbnwz3mdlU83VM2nfuAzKX/fId?= =?us-ascii?Q?e6VLyIq9FZyKw3+GCUkIUoYTicFnBGa76HYhR9j7MtMOySq1ltwz6I4qkdPQ?= =?us-ascii?Q?s/YpysAF7wgf8vKsthxZNV8U3w2tHnNaG30T+aL0OvJeEIfc0/mRtmK4eBwK?= =?us-ascii?Q?GWnfC+qvbyLE1/1WbQGE98RGPfIUxXYFPIT3jdkZqxs1U3fDzgTOrnFH33/C?= =?us-ascii?Q?Q5tfMO2xufjDJRe+uOs/gFI1NA1Glv04nitqorTRnNdfqwNm3Bv4bz/sDmrG?= =?us-ascii?Q?3NPMjjBM8HHE5+bhcItE1ffOUdOG+vam1gzrSlNhi9CUAz4+L/ERffMWb2P4?= =?us-ascii?Q?GFYkl+a5OxCefPHB3zzWa6xYm0s3SBoWU2s4g4241RM9Sk86vYKDxC7BTkLy?= =?us-ascii?Q?7IUwvoNuXggdqQ+D4kxDwArXWhZeNNVpd9lCH5xzbeV3keA7ILuLBM+pa5Bt?= =?us-ascii?Q?LAg5ASukfTBnseHoiz7Jm8J6LB8YH4QpZvbZcBSdGEWdMRTKR9eh1bb6X7bV?= =?us-ascii?Q?d6RJEILNc1w69mTdCfz8BlAqF8++9X1Z0Wr/jvr6JeiX9gk8PiGd2aaXOxRX?= =?us-ascii?Q?QumUt6jC/cUjwMC2mXagqAG3pjme3zwqGPGFqbgW3NlV0nur78rv8hb+sQXu?= =?us-ascii?Q?BS3Ob1XkFR6sDnWX+ILKmnqZMwINC9F1glEZFfNVxqCVbOVS7a5EV5/E2Jan?= =?us-ascii?Q?cazT9z9k2F1awqGFwMbjYKbOqP9owVmLL9j3tCcO0T37YDjuET28o1OCK71b?= =?us-ascii?Q?RKqaCnWg/18Nr6POctAaVTC00Pz8Pgk4MAt4pyDhkd3lCRinTTBw9CsAmpJG?= =?us-ascii?Q?SG8OjUMYjAlSxcv8PVS1NXqYW7+jtVFtcou+HtIBx/FX1bRy7jci4jinHOFg?= =?us-ascii?Q?p2tvJi7dvrM612kkou0oe+J0igxAQV57e48fP7ZLDL5/B3eE66EUJhB87agu?= =?us-ascii?Q?Nrmq+jYh4fOVtfuF8L8Q3lzLh1YONtxoRL3paCDP8+5lnDiL+TSeVpBtIr6o?= =?us-ascii?Q?EiWTZvF+H9NAgwHJiHbPTMt9nA5UtVpfjY/4PCBXbbEWkFW0vd8ZK2QXRnqy?= =?us-ascii?Q?oKyD5Wi8ngAeTUjsapIhiHdzQY8Ift4MKHTCKIro768b41frwWbWiFcU4//Q?= =?us-ascii?Q?G0lO3IDuRfnrHLjajjm/APMJDfQlKw4fAVq4vspDDILFo4dxM8K3FvYlKc6b?= =?us-ascii?Q?z4oaYokR/+BFwHoFqWBQoafk945rewpwM7lEneKviJ1lLPN/uyA16XCoO5y0?= =?us-ascii?Q?/AY5/5ze6u6eULwjdxrORjabu9ynCS95iMbaxJIWyukfRWpvTMH1t+bm3QXc?= =?us-ascii?Q?CAgiVwPf7IvqKickLGoIUfMqqRstHNuJo0ewLFc9cFdOzzhpDTAVm3F9Tv3y?= =?us-ascii?Q?B+eWBPLuSSHnJ8RUaV05ZMH3B4zoeSGwOnrGDpOsoAob/9Kqiir1+6sxm3Ty?= =?us-ascii?Q?1fip6iIsbZorMeZCgyg=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)(82310400026)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:38:53.1629 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d0b7e91a-b28f-4dfc-3dcb-08de37f17596 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: CO1PEPF000075EF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8288 Received-SPF: softfail client-ip=2a01:111:f403:c105::5; envelope-from=skolothumtho@nvidia.com; helo=CH5PR02CU005.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: 1765374146896158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Tegra241 CMDQV assigns each VINTF a 128KB MMIO region split into two 64 KB pages: - Page0: guest accessible control/status registers for all VCMDQs - Page1: configuration registers (queue GPA/size) that must be trapped by the VMM and translated before programming the HW queue. This patch implements the Page0 handling in QEMU. Using the vintf offset returned by IOMMUFD during VIOMMU allocation, QEMU maps Page0 into guest physical address space and exposes it via two guest MMIO windows: - 0x10000 :VCMDQ register - 0x30000 :VINTF register The mapping is lazily initialized on first read/write. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/tegra241-cmdqv.c | 60 +++++++++++++++++++++++++++++++++++++++++ hw/arm/tegra241-cmdqv.h | 5 ++++ 2 files changed, 65 insertions(+) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 899325877e..d8858322dc 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -13,14 +13,74 @@ #include "smmuv3-accel.h" #include "tegra241-cmdqv.h" =20 +static bool tegra241_cmdqv_init_vcmdq_page0(Tegra241CMDQV *cmdqv, Error **= errp) +{ + SMMUv3State *smmu =3D cmdqv->smmu; + SMMUv3AccelState *s_accel =3D smmu->s_accel; + IOMMUFDViommu *viommu; + char *name; + + if (!s_accel) { + return true; + } + + viommu =3D &s_accel->viommu; + if (!iommufd_backend_viommu_mmap(viommu->iommufd, viommu->viommu_id, + VCMDQ_REG_PAGE_SIZE, + cmdqv->cmdqv_data.out_vintf_mmap_offs= et, + &cmdqv->vcmdq_page0, errp)) { + cmdqv->vcmdq_page0 =3D NULL; + return false; + } + + name =3D g_strdup_printf("%s vcmdq", memory_region_name(&cmdqv->mmio_c= mdqv)); + memory_region_init_ram_device_ptr(&cmdqv->mmio_vcmdq_page, + memory_region_owner(&cmdqv->mmio_cmd= qv), + name, 0x10000, cmdqv->vcmdq_page0); + memory_region_add_subregion_overlap(&cmdqv->mmio_cmdqv, 0x10000, + &cmdqv->mmio_vcmdq_page, 1); + g_free(name); + + name =3D g_strdup_printf("%s vintf", memory_region_name(&cmdqv->mmio_c= mdqv)); + memory_region_init_ram_device_ptr(&cmdqv->mmio_vintf_page, + memory_region_owner(&cmdqv->mmio_cmd= qv), + name, 0x10000, cmdqv->vcmdq_page0); + memory_region_add_subregion_overlap(&cmdqv->mmio_cmdqv, 0x30000, + &cmdqv->mmio_vintf_page, 1); + g_free(name); + + return true; +} + static uint64_t tegra241_cmdqv_read(void *opaque, hwaddr offset, unsigned = size) { + Tegra241CMDQV *cmdqv =3D (Tegra241CMDQV *)opaque; + Error *local_err =3D NULL; + + if (!cmdqv->vcmdq_page0) { + tegra241_cmdqv_init_vcmdq_page0(cmdqv, &local_err); + if (local_err) { + error_report_err(local_err); + local_err =3D NULL; + } + } + return 0; } =20 static void tegra241_cmdqv_write(void *opaque, hwaddr offset, uint64_t val= ue, unsigned size) { + Tegra241CMDQV *cmdqv =3D (Tegra241CMDQV *)opaque; + Error *local_err =3D NULL; + + if (!cmdqv->vcmdq_page0) { + tegra241_cmdqv_init_vcmdq_page0(cmdqv, &local_err); + if (local_err) { + error_report_err(local_err); + local_err =3D NULL; + } + } } =20 static const MemoryRegionOps mmio_cmdqv_ops =3D { diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h index 9bc72b24d9..ccdf0651be 100644 --- a/hw/arm/tegra241-cmdqv.h +++ b/hw/arm/tegra241-cmdqv.h @@ -19,8 +19,13 @@ typedef struct Tegra241CMDQV { SMMUv3State *smmu; MemoryRegion mmio_cmdqv; qemu_irq irq; + MemoryRegion mmio_vcmdq_page; + MemoryRegion mmio_vintf_page; + void *vcmdq_page0; } Tegra241CMDQV; =20 +#define VCMDQ_REG_PAGE_SIZE 0x10000 + #ifdef CONFIG_TEGRA241_CMDQV bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *i= dev, uint32_t *out_viommu_id, Error **errp); --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374094; cv=pass; d=zohomail.com; s=zohoarc; b=kBhdBfz3n0a+sgsHDubM9xMiEl3ii4RxvkC+cfpXfifFtxRmoHDG1dHrKT3gYDVS88osocH6WgxDo64sGImoa7u5Aj6NgJjkGuq1kKhw3DtbCTpfFxzEoT6Xxi9D/MFzGA18kYldcg/3IgoFsMrrtN+ba4iPyVD60eU/5xrNx3Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374094; 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=Z7KZS2To6kx0ux/yeXWW7tzj+BWBQnClDBLh6RHFfQQ=; b=K4ITspJCy7hJD9ibERRRx4WnRoGthynQ/4SQw1J5p3ZcJTVuR7ZtKY5tBrIJJZOSKgh8id1wE0xVo8QF+EFLC11HoLaIWBnuPIZvDxD94QeCxi++qmyqRgCSv78icvom2DpflHh32+0gMunX0eUoCeRR6m5+eQsPAYrnvzVfl+U= 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 1765374094765716.6941816695793; Wed, 10 Dec 2025 05:41:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPn-0007Z3-Qv; Wed, 10 Dec 2025 08:39:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPc-0007TU-4L; Wed, 10 Dec 2025 08:39:24 -0500 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 1vTKPY-0001Oe-VH; Wed, 10 Dec 2025 08:39:23 -0500 Received: from BY3PR04CA0029.namprd04.prod.outlook.com (2603:10b6:a03:217::34) by DS7PR12MB8372.namprd12.prod.outlook.com (2603:10b6:8:eb::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.9; Wed, 10 Dec 2025 13:39:08 +0000 Received: from MWH0EPF000A6734.namprd04.prod.outlook.com (2603:10b6:a03:217:cafe::e1) by BY3PR04CA0029.outlook.office365.com (2603:10b6:a03:217::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.7 via Frontend Transport; Wed, 10 Dec 2025 13:39:06 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000A6734.mail.protection.outlook.com (10.167.249.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Wed, 10 Dec 2025 13:39:06 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:42 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:39 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HgaG01yfjWuqd/UjTBm4pf9oE0ZE+MiUmiDQjc4gw7HFbyEpWGX92aDAScwk5X4pbR2IkHmTUZ0bM4Z1dayHWBWmxU2U865IWOnxvQrHR+uHLppIhucdtYGSemg7mnGcPIulMtlLoY2c0WHKr85I/boJXtleSKr4rrklyG1zi9XykC2Ta9JGjTOa2rxIn1IG68GE+28u0n70Rmi9R6NKuAmP4mWJ1rjEJVG/x5ZIHuq9NWVjYezv5l6Z/L7PdlFE8bhiodzFy6PnVldlrie248t8wmsgAsuofm6nD9AxvtfSnndiTsmERn7YFSaKt8NpurheQru29GPR4XfGKfE31Q== 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=Z7KZS2To6kx0ux/yeXWW7tzj+BWBQnClDBLh6RHFfQQ=; b=LkdztXU4WJ/0PuMPHjv+6SF3b7McqjgH27PVVpmCSRiarzNygFd25ZnTzE++MDd31rAoYZlm7FPoLqTU5UcGSr3x27pibtA1yeH47d3ZY1oTZLy8dLpQQCC0uyCXu2MwsXpuU9GslTnrItxw5Y8QlFOF3YbHXlysjyHddRRBovGC4gKL95VEojWc8oLKFhr5QUWFvzyKrLMYf158BOdNSpdaVUnYFXdkP8CpGvWhN2XlHrmsUo9iVBm4Rdd1h5ElQOSO6DkpHBVR2v5vVEOsUOCAVCZKTvE4MnhtYZ9lCJXB3ymp6yqZh25OMd7d4gKm7ONPUIyV0OljMLF4fcYhUA== 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=Z7KZS2To6kx0ux/yeXWW7tzj+BWBQnClDBLh6RHFfQQ=; b=pw3aGquswpOn2DwrCvdovW8aYBPzu2qFufKkzbsCx4qnWKz5A302ep5K2a2mvj5rT3A8SYiq49WgGYFx8AhoL6ltLiBaWWUt57+D3CtQuRanTQaRocsBZU11oBY03lOyetWGF5da6pHblvM5F0sp/lN0lxsfHPodstCl+yV1sT7304ZznjnaWxpXmhXFtpNf/1FsQP+KQIFTsv4z4gW6oM/9AuBGbaFuuN+q3goMvzgv1AV+C3n+uVdndSZr4ZmE+iUkir75JjRvKYVYqWImc2XvMRBXd7Dfbu8azSUL2Lr0i023szS6hOLRn6aSpbZEwD/eXirLpVwe5LAWWV/McA== 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: [RFC PATCH 07/16] hw/arm/tegra241-cmdqv: Add read emulation support for registers Date: Wed, 10 Dec 2025 13:37:28 +0000 Message-ID: <20251210133737.78257-8-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: MWH0EPF000A6734:EE_|DS7PR12MB8372:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d53fef3-9663-4e10-09cb-08de37f17dc5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?oGqPY7zXWbx5uZlfZkVYBYi6O+w5Iw49q1V3bydK5MKaChfro7MmKM+fKTJy?= =?us-ascii?Q?1t05OsJOyRqH6m5exjLDAamM4PBhlFx3jpcLQ30zH8SGulk7r/rY7NCkQeML?= =?us-ascii?Q?bAgBoj3YH3AFJxywb7VVnRG3j7/c3iupdyhQOjij7OTgoTg1dpAxzDZPtdCZ?= =?us-ascii?Q?CxBOxZtwrSgIQ7g3JH31LnQvXKUnv3JDdAtkY+3qA1Q+6es+AsGTUyht89xK?= =?us-ascii?Q?DygtMLzaniEmxyGwse+4HM/ALI1uuJ3szP/bZ+djk3Vc0fkyeI+Yt0KcJPfN?= =?us-ascii?Q?sxzIvJDni1gQUhpNd7tApCmpbWbQzSBuyvuk4vcEhyMAh1NXEgTSYENWHvi/?= =?us-ascii?Q?X0fh+70KLui2spmKmZmM7IynDxbIetLmXGMGRyexmrL5OkYiuKMZcvRfxrni?= =?us-ascii?Q?SsdqaSrUTVY4ZRMrm12ijDA5afiVk4LMJ+nv3AxlY//Fvj/1vcFUu3t8IBhs?= =?us-ascii?Q?Ke1jOjYL8d7u5YglBxU0yAWtAlKubS2oOJFTSiQgllgwogeWnz/XaQbFZbKA?= =?us-ascii?Q?BoBF3Z2BNyq3usaxLMk4t4LEydocUzw6TjdHeHtaKV9+LOv7zoRz9R8s7RwD?= =?us-ascii?Q?aNfcMZ4AqaEKellSzRxSr60yQrrM92waiPhQuDuf3Mr5ayWU7JvJOZWWrRlH?= =?us-ascii?Q?V0W4OIq5OZ20tYp/Cru6cBgD+aMzIgyoCxEBGrf7+MgrMOCwdOA6ygEqgqU7?= =?us-ascii?Q?Pm/qUDQDR1/Yl4Axr1Vth1H+EM92fx5yqYJly3CK1agsThoxHaQdbQTT0zXk?= =?us-ascii?Q?10wtnTs7rneOIXt4NBzBw0AQRMOo92k93T6r7BgWaEN8K2Pg2ERYgbJoVb/O?= =?us-ascii?Q?b3YRhR/UEe+krDVOHawQmpGlbAsZieoNMNbGFnEfe7uytVbVjHYe5lVpyqBN?= =?us-ascii?Q?q9D+1GCR7L31VCNRcYj+joVpVY1lX3rexxzZdDwQ+3pYfDa0naW4UGcu8+xM?= =?us-ascii?Q?E/6nnjyHTBQ3HqzAYSwi/NF6tQgDK85jNdc2UaC8r0OrIeVrs1Ih3/8gNUiN?= =?us-ascii?Q?GEaS4lxFR8GuB/XPwd6817LiUBhmTd1yx3KABFJ71hwdzRl8ZH7ELfTP39GG?= =?us-ascii?Q?Ck4aAZjVrM6LE8vjkLPd6DlpN/atyE6KwjMWHY8E8CdDnI7u5YCWluHk8UOu?= =?us-ascii?Q?R4pcMh3h7aW+jPwxY5QYI4UpHmQi+Sx3bco3KtLtLIvsp4RCCfTLaCAZWtdi?= =?us-ascii?Q?0Q/A+MStf78BmtQhjRV8kU5IiuEpdeBRZ8M3mWvD+oqQ+VSer22MwGu3Z1NM?= =?us-ascii?Q?4qXxk0ZfobCReUIUNmc2/TZ/kKQZO0H+IlVqsqaN2zMXSO3S/gGziIE/QMdV?= =?us-ascii?Q?vvLI33Y++SBL9vDeEEEvgVEFNpVulg0eH2CbfGso9pbwxT6cRMCgO5hykFIy?= =?us-ascii?Q?PJYitdPJm8XqrcYdQDjvqlQAayd077YRzoD6GImtgzQimuIFvML/q+eCoDQP?= =?us-ascii?Q?iQ6GPe8XAf33tWV8SMNFcGeh7VfKW4Gd+ze9rBYaD9lyMd8jS5hetbii0wmU?= =?us-ascii?Q?y6Q57gFAEXQxlnW8BHSKJ2Lxhh37bYMBIVARcP8jnNlDE24xT0+8pQkEw7GF?= =?us-ascii?Q?E8qMtES9PjAy3wVASx4=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:06.8519 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d53fef3-9663-4e10-09cb-08de37f17dc5 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: MWH0EPF000A6734.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8372 Received-SPF: softfail 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: 1765374096721158501 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Implement read support for Tegra241 CMDQV register blocks, including VINTF and per VCMDQ register regions. The patch decodes offsets, extracts queue indices, and returns the corresponding cached register state. Subsequent patch will add write support. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/tegra241-cmdqv.c | 144 +++++++++++++++++++- hw/arm/tegra241-cmdqv.h | 282 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 425 insertions(+), 1 deletion(-) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index d8858322dc..185ef957bc 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -8,6 +8,7 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/log.h" =20 #include "hw/arm/smmuv3.h" #include "smmuv3-accel.h" @@ -52,10 +53,94 @@ static bool tegra241_cmdqv_init_vcmdq_page0(Tegra241CMD= QV *cmdqv, Error **errp) return true; } =20 +/* Note that offset aligns down to 0x1000 */ +static uint64_t tegra241_cmdqv_read_vintf(Tegra241CMDQV *cmdqv, hwaddr off= set) +{ + int i; + + switch (offset) { + case A_VINTF0_CONFIG: + return cmdqv->vintf_config; + case A_VINTF0_STATUS: + return cmdqv->vintf_status; + case A_VINTF0_LVCMDQ_ERR_MAP_0 ... A_VINTF0_LVCMDQ_ERR_MAP_3: + i =3D (offset - A_VINTF0_LVCMDQ_ERR_MAP_0) / 4; + return cmdqv->vintf_cmdq_err_map[i]; + default: + qemu_log_mask(LOG_UNIMP, "%s unhandled read access at 0x%" PRIx64 = "\n", + __func__, offset); + return 0; + } +} + +/* Note that offset aligns down to 0x10000 */ +static uint64_t tegra241_cmdqv_read_vcmdq(Tegra241CMDQV *cmdqv, hwaddr off= set, + int index) +{ + uint32_t *ptr =3D NULL; + uint64_t off; + + /* + * Each VCMDQ instance occupies a 128 byte region (0x80). + * The hardware layout is: + * vcmdq_page0 + (index * 0x80) + (offset - 0x10000) + */ + if (cmdqv->vcmdq_page0) { + off =3D (0x80 * index) + (offset - 0x10000); + ptr =3D (uint32_t *)(cmdqv->vcmdq_page0 + off); + } + + switch (offset) { + case A_VCMDQ0_CONS_INDX: + if (ptr) { + cmdqv->vcmdq_cons_indx[index] =3D *ptr; + } + return cmdqv->vcmdq_cons_indx[index]; + case A_VCMDQ0_PROD_INDX: + if (ptr) { + cmdqv->vcmdq_prod_indx[index] =3D *ptr; + } + return cmdqv->vcmdq_prod_indx[index]; + case A_VCMDQ0_CONFIG: + if (ptr) { + cmdqv->vcmdq_config[index] =3D *ptr; + } + return cmdqv->vcmdq_config[index]; + case A_VCMDQ0_STATUS: + if (ptr) { + cmdqv->vcmdq_status[index] =3D *ptr; + } + return cmdqv->vcmdq_status[index]; + case A_VCMDQ0_GERROR: + if (ptr) { + cmdqv->vcmdq_gerror[index] =3D *ptr; + } + return cmdqv->vcmdq_gerror[index]; + case A_VCMDQ0_GERRORN: + if (ptr) { + cmdqv->vcmdq_gerrorn[index] =3D *ptr; + } + return cmdqv->vcmdq_gerrorn[index]; + case A_VCMDQ0_BASE_L: + return cmdqv->vcmdq_base[index]; + case A_VCMDQ0_BASE_H: + return cmdqv->vcmdq_base[index] >> 32; + case A_VCMDQ0_CONS_INDX_BASE_DRAM_L: + return cmdqv->vcmdq_cons_indx_base[index]; + case A_VCMDQ0_CONS_INDX_BASE_DRAM_H: + return cmdqv->vcmdq_cons_indx_base[index] >> 32; + default: + qemu_log_mask(LOG_UNIMP, + "%s unhandled read access at 0x%" PRIx64 "\n", + __func__, offset); + return 0; + } +} static uint64_t tegra241_cmdqv_read(void *opaque, hwaddr offset, unsigned = size) { Tegra241CMDQV *cmdqv =3D (Tegra241CMDQV *)opaque; Error *local_err =3D NULL; + int index; =20 if (!cmdqv->vcmdq_page0) { tegra241_cmdqv_init_vcmdq_page0(cmdqv, &local_err); @@ -65,7 +150,64 @@ static uint64_t tegra241_cmdqv_read(void *opaque, hwadd= r offset, unsigned size) } } =20 - return 0; + if (offset > TEGRA241_CMDQV_IO_LEN) { + qemu_log_mask(LOG_UNIMP, + "%s offset 0x%" PRIx64 " off limit (0x50000)\n", __f= unc__, + offset); + return 0; + } + + /* Fallback to cached register values */ + switch (offset) { + case A_CONFIG: + return cmdqv->config; + case A_PARAM: + return cmdqv->param; + case A_STATUS: + return cmdqv->status; + case A_VI_ERR_MAP ... A_VI_ERR_MAP_1: + return cmdqv->vi_err_map[(offset - A_VI_ERR_MAP) / 4]; + case A_VI_INT_MASK ... A_VI_INT_MASK_1: + return cmdqv->vi_int_mask[(offset - A_VI_INT_MASK) / 4]; + case A_CMDQ_ERR_MAP ... A_CMDQ_ERR_MAP_3: + return cmdqv->cmdq_err_map[(offset - A_CMDQ_ERR_MAP) / 4]; + case A_CMDQ_ALLOC_MAP_0 ... A_CMDQ_ALLOC_MAP_127: + return cmdqv->cmdq_alloc_map[(offset - A_CMDQ_ALLOC_MAP_0) / 4]; + case A_VINTF0_CONFIG ... A_VINTF0_LVCMDQ_ERR_MAP_3: + return tegra241_cmdqv_read_vintf(cmdqv, offset); + case A_VI_VCMDQ0_CONS_INDX ... A_VI_VCMDQ127_GERRORN: + offset -=3D 0x20000; + QEMU_FALLTHROUGH; + case A_VCMDQ0_CONS_INDX ... A_VCMDQ127_GERRORN: + /* + * Align offset down to 0x10000 while extracting the index: + * VCMDQ0_CONS_INDX (0x10000) =3D> 0x10000, 0 + * VCMDQ1_CONS_INDX (0x10080) =3D> 0x10000, 1 + * VCMDQ2_CONS_INDX (0x10100) =3D> 0x10000, 2 + * ... + * VCMDQ127_CONS_INDX (0x13f80) =3D> 0x10000, 127 + */ + index =3D (offset - 0x10000) / 0x80; + return tegra241_cmdqv_read_vcmdq(cmdqv, offset - 0x80 * index, ind= ex); + case A_VI_VCMDQ0_BASE_L ... A_VI_VCMDQ127_CONS_INDX_BASE_DRAM_H: + offset -=3D 0x20000; + QEMU_FALLTHROUGH; + case A_VCMDQ0_BASE_L ... A_VCMDQ127_CONS_INDX_BASE_DRAM_H: + /* + * Align offset down to 0x20000 while extracting the index: + * VCMDQ0_BASE_L (0x20000) =3D> 0x20000, 0 + * VCMDQ1_BASE_L (0x20080) =3D> 0x20000, 1 + * VCMDQ2_BASE_L (0x20100) =3D> 0x20000, 2 + * ... + * VCMDQ127_BASE_L (0x23f80) =3D> 0x20000, 127 + */ + index =3D (offset - 0x20000) / 0x80; + return tegra241_cmdqv_read_vcmdq(cmdqv, offset - 0x80 * index, ind= ex); + default: + qemu_log_mask(LOG_UNIMP, "%s unhandled read access at 0x%" PRIx64 = "\n", + __func__, offset); + return 0; + } } =20 static void tegra241_cmdqv_write(void *opaque, hwaddr offset, uint64_t val= ue, diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h index ccdf0651be..4972e367f6 100644 --- a/hw/arm/tegra241-cmdqv.h +++ b/hw/arm/tegra241-cmdqv.h @@ -10,6 +10,7 @@ #ifndef HW_TEGRA241_CMDQV_H #define HW_TEGRA241_CMDQV_H =20 +#include "hw/registerfields.h" #include CONFIG_DEVICES =20 #define TEGRA241_CMDQV_IO_LEN 0x50000 @@ -22,10 +23,291 @@ typedef struct Tegra241CMDQV { MemoryRegion mmio_vcmdq_page; MemoryRegion mmio_vintf_page; void *vcmdq_page0; + IOMMUFDHWqueue *vcmdq[128]; + + /* Register Cache */ + uint32_t config; + uint32_t param; + uint32_t status; + uint32_t vi_err_map[2]; + uint32_t vi_int_mask[2]; + uint32_t cmdq_err_map[4]; + uint32_t cmdq_alloc_map[128]; + uint32_t vintf_config; + uint32_t vintf_status; + uint32_t vintf_cmdq_err_map[4]; + uint32_t vcmdq_cons_indx[128]; + uint32_t vcmdq_prod_indx[128]; + uint32_t vcmdq_config[128]; + uint32_t vcmdq_status[128]; + uint32_t vcmdq_gerror[128]; + uint32_t vcmdq_gerrorn[128]; + uint64_t vcmdq_base[128]; + uint64_t vcmdq_cons_indx_base[128]; } Tegra241CMDQV; =20 +/* MMIO Registers */ +REG32(CONFIG, 0x0) +FIELD(CONFIG, CMDQV_EN, 0, 1) +FIELD(CONFIG, CMDQV_PER_CMD_OFFSET, 1, 3) +FIELD(CONFIG, CMDQ_MAX_CLK_BATCH, 4, 8) +FIELD(CONFIG, CMDQ_MAX_CMD_BATCH, 12, 8) +FIELD(CONFIG, CONS_DRAM_EN, 20, 1) + +#define V_CONFIG_RESET 0x00020403 + +REG32(PARAM, 0x4) +FIELD(PARAM, CMDQV_VER, 0, 4) +FIELD(PARAM, CMDQV_NUM_CMDQ_LOG2, 4, 4) +FIELD(PARAM, CMDQV_NUM_VM_LOG2, 8, 4) +FIELD(PARAM, CMDQV_NUM_SID_PER_VM_LOG2, 12, 4) + +#define V_PARAM_RESET 0x00004011 + +REG32(STATUS, 0x8) +FIELD(STATUS, CMDQV_ENABLED, 0, 1) + +#define A_VI_ERR_MAP 0x14 +#define A_VI_ERR_MAP_1 0x18 +#define V_VI_ERR_MAP_NO_ERROR (0) +#define V_VI_ERR_MAP_ERROR (1) + +#define A_VI_INT_MASK 0x1c +#define A_VI_INT_MASK_1 0x20 +#define V_VI_INT_MASK_NOT_MASKED (0) +#define V_VI_INT_MASK_MASKED (1) + +#define A_CMDQ_ERR_MAP 0x24 +#define A_CMDQ_ERR_MAP_1 0x28 +#define A_CMDQ_ERR_MAP_2 0x2c +#define A_CMDQ_ERR_MAP_3 0x30 + +/* i =3D [0, 127] */ +#define A_CMDQ_ALLOC_MAP_(i) \ + REG32(CMDQ_ALLOC_MAP_##i, 0x200 + i * 4) \ + FIELD(CMDQ_ALLOC_MAP_##i, ALLOC, 0, 1) \ + FIELD(CMDQ_ALLOC_MAP_##i, LVCMDQ, 1, 7) \ + FIELD(CMDQ_ALLOC_MAP_##i, VIRT_INTF_INDX, 15, 6) + +A_CMDQ_ALLOC_MAP_(0) +/* Omitting 1~126 as not being directly called */ +A_CMDQ_ALLOC_MAP_(127) + +/* i =3D [0, 0] */ +#define A_VINTFi_CONFIG(i) \ + REG32(VINTF##i##_CONFIG, 0x1000 + i * 0x100) \ + FIELD(VINTF##i##_CONFIG, ENABLE, 0, 1) \ + FIELD(VINTF##i##_CONFIG, VMID, 1, 16) \ + FIELD(VINTF##i##_CONFIG, HYP_OWN, 17, 1) + +A_VINTFi_CONFIG(0) + +#define A_VINTFi_STATUS(i) \ + REG32(VINTF##i##_STATUS, 0x1004 + i * 0x100) \ + FIELD(VINTF##i##_STATUS, ENABLE_OK, 0, 1) \ + FIELD(VINTF##i##_STATUS, STATUS, 1, 3) \ + FIELD(VINTF##i##_STATUS, VI_NUM_LVCMDQ, 16, 8) + + A_VINTFi_STATUS(0) + +#define V_VINTF_STATUS_NO_ERROR (0 << 1) +#define V_VINTF_STATUS_VCMDQ_EROR (1 << 1) + +/* i =3D [0, 0], j =3D [0, 3] */ +#define A_VINTFi_LVCMDQ_ERR_MAP_(i, j) \ + REG32(VINTF##i##_LVCMDQ_ERR_MAP_##j, 0x10c0 + j * 4 + i * 0x100) \ + FIELD(VINTF##i##_LVCMDQ_ERR_MAP_##j, LVCMDQ_ERR_MAP, 0, 32) + + A_VINTFi_LVCMDQ_ERR_MAP_(0, 0) + /* Omitting [0][1~2] as not being directly called */ + A_VINTFi_LVCMDQ_ERR_MAP_(0, 3) + +/* VCMDQ registers -- starting from 0x10000 with size 64KB * 2 (0x20000) */ +#define VCMDQ_REG_OFFSET 0x10000 #define VCMDQ_REG_PAGE_SIZE 0x10000 =20 +#define A_VCMDQi_CONS_INDX(i) \ + REG32(VCMDQ##i##_CONS_INDX, 0x10000 + i * 0x80) \ + FIELD(VCMDQ##i##_CONS_INDX, RD, 0, 20) \ + FIELD(VCMDQ##i##_CONS_INDX, ERR, 24, 7) + + A_VCMDQi_CONS_INDX(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_CONS_INDX(127) + +#define V_VCMDQ_CONS_INDX_ERR_CERROR_NONE 0 +#define V_VCMDQ_CONS_INDX_ERR_CERROR_ILL_OPCODE 1 +#define V_VCMDQ_CONS_INDX_ERR_CERROR_ABT 2 +#define V_VCMDQ_CONS_INDX_ERR_CERROR_ATC_INV_SYNC 3 +#define V_VCMDQ_CONS_INDX_ERR_CERROR_ILL_ACCESS 4 + +#define A_VCMDQi_PROD_INDX(i) \ + REG32(VCMDQ##i##_PROD_INDX, 0x10000 + 0x4 + i * 0x80) \ + FIELD(VCMDQ##i##_PROD_INDX, WR, 0, 20) + + A_VCMDQi_PROD_INDX(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_PROD_INDX(127) + +#define A_VCMDQi_CONFIG(i) \ + REG32(VCMDQ##i##_CONFIG, 0x10000 + 0x8 + i * 0x80) \ + FIELD(VCMDQ##i##_CONFIG, CMDQ_EN, 0, 1) + + A_VCMDQi_CONFIG(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_CONFIG(127) + +#define A_VCMDQi_STATUS(i) \ + REG32(VCMDQ##i##_STATUS, 0x10000 + 0xc + i * 0x80) \ + FIELD(VCMDQ##i##_STATUS, CMDQ_EN_OK, 0, 1) + + A_VCMDQi_STATUS(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_STATUS(127) + +#define A_VCMDQi_GERROR(i) \ + REG32(VCMDQ##i##_GERROR, 0x10000 + 0x10 + i * 0x80) \ + FIELD(VCMDQ##i##_GERROR, CMDQ_ERR, 0, 1) \ + FIELD(VCMDQ##i##_GERROR, CONS_DRAM_WR_ABT_ERR, 1, 1) \ + FIELD(VCMDQ##i##_GERROR, CMDQ_INIT_ERR, 2, 1) + + A_VCMDQi_GERROR(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_GERROR(127) + +#define A_VCMDQi_GERRORN(i) \ + REG32(VCMDQ##i##_GERRORN, 0x10000 + 0x14 + i * 0x80) \ + FIELD(VCMDQ##i##_GERRORN, CMDQ_ERR, 0, 1) \ + FIELD(VCMDQ##i##_GERRORN, CONS_DRAM_WR_ABT_ERR, 1, 1) \ + FIELD(VCMDQ##i##_GERRORN, CMDQ_INIT_ERR, 2, 1) + + A_VCMDQi_GERRORN(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_GERRORN(127) + +#define A_VCMDQi_BASE_L(i) \ + REG32(VCMDQ##i##_BASE_L, 0x20000 + i * 0x80) \ + FIELD(VCMDQ##i##_BASE_L, LOG2SIZE, 0, 5) \ + FIELD(VCMDQ##i##_BASE_L, ADDR, 5, 27) + + A_VCMDQi_BASE_L(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_BASE_L(127) + +#define A_VCMDQi_BASE_H(i) \ + REG32(VCMDQ##i##_BASE_H, 0x20000 + 0x4 + i * 0x80) \ + FIELD(VCMDQ##i##_BASE_H, ADDR, 0, 16) + + A_VCMDQi_BASE_H(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_BASE_H(127) + +#define A_VCMDQi_CONS_INDX_BASE_DRAM_L(i) \ + REG32(VCMDQ##i##_CONS_INDX_BASE_DRAM_L, 0x20000 + 0x8 + i * 0x80) \ + FIELD(VCMDQ##i##_CONS_INDX_BASE_DRAM_L, ADDR, 0, 32) + + A_VCMDQi_CONS_INDX_BASE_DRAM_L(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_CONS_INDX_BASE_DRAM_L(127) + +#define A_VCMDQi_CONS_INDX_BASE_DRAM_H(i) \ + REG32(VCMDQ##i##_CONS_INDX_BASE_DRAM_H, 0x20000 + 0xc + i * 0x80) \ + FIELD(VCMDQ##i##_CONS_INDX_BASE_DRAM_H, ADDR, 0, 16) + + A_VCMDQi_CONS_INDX_BASE_DRAM_H(0) + /* Omitting [1~126] as not being directly called */ + A_VCMDQi_CONS_INDX_BASE_DRAM_H(127) + +/* + * VINTF VI_VCMDQ registers -- starting from 0x30000 with size 64KB * 2 + * (0x20000) + */ +#define A_VI_VCMDQi_CONS_INDX(i) \ + REG32(VI_VCMDQ##i##_CONS_INDX, 0x30000 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_CONS_INDX, RD, 0, 20) \ + FIELD(VI_VCMDQ##i##_CONS_INDX, ERR, 24, 7) + + A_VI_VCMDQi_CONS_INDX(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_CONS_INDX(127) + +#define A_VI_VCMDQi_PROD_INDX(i) \ + REG32(VI_VCMDQ##i##_PROD_INDX, 0x30000 + 0x4 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_PROD_INDX, WR, 0, 20) + + A_VI_VCMDQi_PROD_INDX(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_PROD_INDX(127) + +#define A_VI_VCMDQi_CONFIG(i) \ + REG32(VI_VCMDQ##i##_CONFIG, 0x30000 + 0x8 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_CONFIG, CMDQ_EN, 0, 1) + + A_VI_VCMDQi_CONFIG(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_CONFIG(127) + +#define A_VI_VCMDQi_STATUS(i) \ + REG32(VI_VCMDQ##i##_STATUS, 0x30000 + 0xc + i * 0x80) \ + FIELD(VI_VCMDQ##i##_STATUS, CMDQ_EN_OK, 0, 1) + + A_VI_VCMDQi_STATUS(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_STATUS(127) + +#define A_VI_VCMDQi_GERROR(i) \ + REG32(VI_VCMDQ##i##_GERROR, 0x30000 + 0x10 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_GERROR, CMDQ_ERR, 0, 1) \ + FIELD(VI_VCMDQ##i##_GERROR, CONS_DRAM_WR_ABT_ERR, 1, 1) \ + FIELD(VI_VCMDQ##i##_GERROR, CMDQ_INIT_ERR, 2, 1) + + A_VI_VCMDQi_GERROR(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_GERROR(127) + +#define A_VI_VCMDQi_GERRORN(i) \ + REG32(VI_VCMDQ##i##_GERRORN, 0x30000 + 0x14 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_GERRORN, CMDQ_ERR, 0, 1) \ + FIELD(VI_VCMDQ##i##_GERRORN, CONS_DRAM_WR_ABT_ERR, 1, 1) \ + FIELD(VI_VCMDQ##i##_GERRORN, CMDQ_INIT_ERR, 2, 1) + + A_VI_VCMDQi_GERRORN(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_GERRORN(127) + +#define A_VI_VCMDQi_BASE_L(i) \ + REG32(VI_VCMDQ##i##_BASE_L, 0x40000 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_BASE_L, LOG2SIZE, 0, 5) \ + FIELD(VI_VCMDQ##i##_BASE_L, ADDR, 5, 27) + + A_VI_VCMDQi_BASE_L(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_BASE_L(127) + +#define A_VI_VCMDQi_BASE_H(i) \ + REG32(VI_VCMDQ##i##_BASE_H, 0x40000 + 0x4 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_BASE_H, ADDR, 0, 16) + + A_VI_VCMDQi_BASE_H(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_BASE_H(127) + +#define A_VI_VCMDQi_CONS_INDX_BASE_DRAM_L(i) \ + REG32(VI_VCMDQ##i##_CONS_INDX_BASE_DRAM_L, 0x40000 + 0x8 + i * 0x80) \ + FIELD(VI_VCMDQ##i##_CONS_INDX_BASE_DRAM_L, ADDR, 0, 32) + + A_VI_VCMDQi_CONS_INDX_BASE_DRAM_L(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_CONS_INDX_BASE_DRAM_L(127) + +#define A_VI_VCMDQi_CONS_INDX_BASE_DRAM_H(i) \ + REG32(VI_VCMDQ##i##_CONS_INDX_BASE_DRAM_H, 0x40000 + 0xc + i * 0x80) \ + FIELD(VI_VCMDQ##i##_CONS_INDX_BASE_DRAM_H, ADDR, 0, 16) + + A_VI_VCMDQi_CONS_INDX_BASE_DRAM_H(0) + /* Omitting [1~126] as not being directly called */ + A_VI_VCMDQi_CONS_INDX_BASE_DRAM_H(127) + #ifdef CONFIG_TEGRA241_CMDQV bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *i= dev, uint32_t *out_viommu_id, Error **errp); --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374075; cv=pass; d=zohomail.com; s=zohoarc; b=nTr9DqHXUM11mxzmtKPj6stAn8sPoyxWZ4AjgXg3VCygsX5UDOdgu7CZutYi2EZQe1Nm/I6hspvf2jh+KPy0DNUaPdV5Nnq1qBXV1j7epkMGNhl2sfu54OKBFs8am/YZ4gpvgo6FpZ70L8iZ8b9GnocWIUyfu63Vo7l+cqjZCQA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374075; 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=NFXZ5rWw85DynK9GclXZqTxM5rpvhGYOKAP6oOxZzAI=; b=kaT6gOjSR0pcUTpZWb057MGOHtW2G6SHansQUoab5eSgleg8rQHTepKvoQIFFw/H6T96TmZb+T6OVCzysJbtIsrdJR21xfJ62QooHBPtINRXwzWA7no2o7FWJg25c+dPIo1ii5x83uL1ERG9TloIfrZSuf7Ayqjpl/3fMh/yNS0= 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 1765374075757186.81794096871624; Wed, 10 Dec 2025 05:41:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPh-0007Wv-S3; Wed, 10 Dec 2025 08:39:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPe-0007Tq-AJ; Wed, 10 Dec 2025 08:39:26 -0500 Received: from mail-northcentralusazon11012025.outbound.protection.outlook.com ([40.107.200.25] helo=CH5PR02CU005.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 1vTKPc-0001PT-5K; Wed, 10 Dec 2025 08:39:25 -0500 Received: from SJ2PR07CA0014.namprd07.prod.outlook.com (2603:10b6:a03:505::7) by IA1PR12MB8468.namprd12.prod.outlook.com (2603:10b6:208:445::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.7; Wed, 10 Dec 2025 13:39:04 +0000 Received: from CO1PEPF000075F0.namprd03.prod.outlook.com (2603:10b6:a03:505:cafe::24) by SJ2PR07CA0014.outlook.office365.com (2603:10b6:a03:505::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:02 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075F0.mail.protection.outlook.com (10.167.249.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:03 +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; Wed, 10 Dec 2025 05:38:46 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:43 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PFdRUrxUT0iQsCRjIF4V6hJQshsZWbas0S2rEmwKIrmx0W1I2fimmu4fH/SlDxLeBppN+l2fMAZUCByQ+DyqQbMU0n6NNjsGOEfGi7VUXSrFaNMaS7SkgZ0u6vPKSCcd+C6h4qAZn2OnlD4x6jJG4RrFs7XQT9Pk4c/+t3bAS1ZxZUHkcaPnGQmrKdjbj/20IhYTIPvGgrifDX14jdVcTZk7r8iI6UXjscybmVWo9BxyvljG50Z6q4NNc5Sb3Gv3Am0ENJNkfl9SJFj88HIs6lVR36Xj6iQ7btw4ktu2C2DhYxExne3x4VOfuGM8RdrprjzArmekWB2DyMiPjVtRsw== 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=NFXZ5rWw85DynK9GclXZqTxM5rpvhGYOKAP6oOxZzAI=; b=Aod/Z4IWkW+480ON2jBmNmeNS6mvvuNLsVvmou3JIVla9318JnT7r/VhBwBz0mrq/BwIgcKOHNDPXIJA6ipuI8Bm50/b3hDTY92xJZzCOXP0P3ZaZZrNpL1kcM+O9075CApr2X3yX90N/qNj30PGgXE7chxMNOPE1Ts5WJ9pEr4Qy2zbX0v0O1SgVuIbqYIHYFmO5ZajZNpV3ECzbzwJHShlaWZDhwO5OfOelH1I9ZXAAXpIetWzf64tM9TLktYtsXpoguucui//mS3HrfvjOqSJaItqqKMNRoiBgSuiLOGDKmoSYq6b3YWyfFB0t77YKkVod5TzOdrlBcF7kkQBIA== 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=NFXZ5rWw85DynK9GclXZqTxM5rpvhGYOKAP6oOxZzAI=; b=jhDg4WYt+Q5Fqh7w9LB2kc3hwWH72DpC6hmcAMCAR4B8YuBVSSGtX9ui7CXOuzy28ir+FOmuglQ9pbmeVJKUzZgB96uanPO6tA276paVdfBvx20SrZi5pi8PwQRN8MBn6uRls7ANhRrMQuPzoX/K+xYFxWkinP84lN2bPTTH/f9a37y+T5qre1o6V4cweea7s9qXcRPCKMRzsdF3qVUitRWlyZ+I0GHR4Rx8fdkLftzPUJ+M3Rk0cdlJCW4pE6k9AtHaVZ2uRcc4v8bhueVrCcrZK3mUvbClLNA1pZV01st2Kj3Nbwccd68Ejk4LiSMl13Ukp4h6ySB9a027IDaAOA== 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: [RFC PATCH 08/16] system/physmem: Add helper to check whether a guest PA maps to RAM Date: Wed, 10 Dec 2025 13:37:29 +0000 Message-ID: <20251210133737.78257-9-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075F0:EE_|IA1PR12MB8468:EE_ X-MS-Office365-Filtering-Correlation-Id: ba937d05-31d3-49e4-db8b-08de37f17bef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?AiVx6Kgknttyc4nGOQbEqUcSlvynbnu4kZ7HUlj+5knNY1aLtLPWPYJ4zXy2?= =?us-ascii?Q?1oZV0hNL0gHsKqsCzazzrsoLntK/8GVN1HyTalJ08TK4Jo8IM38GUUHhQpbp?= =?us-ascii?Q?ujh9nF7vCctY97lZyGbrWbryf8kjTSb4amAln7aon+RlByVulql6az0hqzOA?= =?us-ascii?Q?Z1k5MPkL0Xnl7Is6mzU/vca3hEi1a/Ar7+ifoXrODUaXt/EfWLA0ruaVoqAQ?= =?us-ascii?Q?F7hs3/WQC+QYPsuHHqXsV9HTLpUGg2BEYCJvVEvskVIHK345TBl/E/5Ip8V9?= =?us-ascii?Q?0pY7WmAMg1tRUKNZkOdxFSR+oxnzydTFKUG+rXJasQxDUC6MmXwRW6dUJT9q?= =?us-ascii?Q?DU80ZxOUICWxwB0ULf97w72buKPdyuIqmKaUz+4ZtBi7OD0nG0QURokPI6Tr?= =?us-ascii?Q?Mp5uviqSNu40l/rD2En7qqEi3KjN6AJHdItFOAfVYRKt7OjoNnHwZNE5KPp9?= =?us-ascii?Q?UqEEtMIldwXRMdvQV6advRhxkdFp0QqTFM21fTcthgbXEqLvzOyWLcAQnQDN?= =?us-ascii?Q?Y5GYxCxXFC4GqF1VWqm3IDgtUkjc9UqMkqOtOpY9JvA/+0KCLaGk/SUF+jxz?= =?us-ascii?Q?srUMOVUfzoxVB/actWsLXf0rFs9ugcBuWBf88PKkH4dttp8qSnLXmpYn+90F?= =?us-ascii?Q?ZxS4fSdXR8NtvjU/N4B9btMBuZ5C7ghvNBAn973Z2S9BWHOD7Msl5Bsuds3r?= =?us-ascii?Q?1wzMZOyyj6smuP9dboNVFGrC3OTe6HmCjRvD0V7qTdDfttFXCca9BRH7EV0U?= =?us-ascii?Q?nL0sHfiuURit3+t4JUQSCAuKSU8ai1rrHc3+43WYrNLk7oYWRd0Z2PGrgqtu?= =?us-ascii?Q?pTDjo4PWsZfyDfVJ6f20TMnLafurV2SBYIZnzyjc1/wUQOaRMhGQRkEAuoIt?= =?us-ascii?Q?Fb9KEi1RPIY1mqh+H7IZ+3pKMZPbyIqYEtUYUHMgrOJMEuIaGUHJFGNOXxOY?= =?us-ascii?Q?pH4QJFx6RCitJ6Qb8j/JioqZF3S+hnf0P09NC4TOgua8c24Voy9b83YDio/i?= =?us-ascii?Q?Hx5xSwNjtj6N9U3lrzWoFL76BIW4V5gbJWEegQ2UvIak1GU2sTI9GjE6JxEC?= =?us-ascii?Q?5KeGW9e4UA7ZvOVkKH5k4l+rpPYGVJHdoJqMCp9W4ooMAtNj+CtqoS+rBdnU?= =?us-ascii?Q?W9+H15nkm37UQ5WBDB9tbDYKy4u1kH6wkKeYEy6CQAkJFv845y6PmJ74Ceiw?= =?us-ascii?Q?oxtNERr4myVrSiCLn+BAc6q413wqRFgsBBMAuaTXh4oOKoi1TxFTsdQorzgi?= =?us-ascii?Q?s8oMWzTL4+tN+Fpg/J/WRCKgf6Eaij0mv9tZPZHPcviMxXSkOxndBJEIuNwM?= =?us-ascii?Q?liubtHzSrhYyGwfBnntQjjGThjCs7m/MoSfsmDZ606R0lAMYj5/YMJrzKPvz?= =?us-ascii?Q?jNLXlquu98bol7Sahl4HBTTDIDveKKM6+ZkffYRJ7oTaoLlpscd8GIEcPR/v?= =?us-ascii?Q?ubrRgzbL9PmZtrzSmetx3zQ2aXFitx43XLPI8pXDYBANe8EiFpIBEjgfRMcd?= =?us-ascii?Q?ryNqYLe4+jDUZkYvQllMuq8Zg4GeYL4RNdaJWN3O+aAOK8PAKoyOKALJruEw?= =?us-ascii?Q?alXsXA2hYqQyTW0lW5Y=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)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:03.8179 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ba937d05-31d3-49e4-db8b-08de37f17bef 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: CO1PEPF000075F0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8468 Received-SPF: softfail client-ip=40.107.200.25; envelope-from=skolothumtho@nvidia.com; helo=CH5PR02CU005.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, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, 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: 1765374076609158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Introduce cpu_physical_memory_is_ram(), a helper that performs an address_space translation and returns whether the resolved MemoryRegion is backed by RAM. This will be used by the upcoming Tegra241 CMDQV support to validate guest provided VCMDQ buffer addresses. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- include/exec/cpu-common.h | 2 ++ system/physmem.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index e0be4ee2b8..76b91d1b9b 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -148,6 +148,8 @@ void qemu_flush_coalesced_mmio_buffer(void); =20 typedef int (RAMBlockIterFunc)(RAMBlock *rb, void *opaque); =20 +bool cpu_physical_memory_is_ram(hwaddr phys_addr); + int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque); =20 /* vl.c */ diff --git a/system/physmem.c b/system/physmem.c index c9869e4049..1f6c821a0e 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -4068,6 +4068,18 @@ int cpu_memory_rw_debug(CPUState *cpu, vaddr addr, return 0; } =20 +bool cpu_physical_memory_is_ram(hwaddr phys_addr) +{ + MemoryRegion *mr; + hwaddr l =3D 1; + + RCU_READ_LOCK_GUARD(); + mr =3D address_space_translate(&address_space_memory, phys_addr, &phys= _addr, + &l, false, MEMTXATTRS_UNSPECIFIED); + + return memory_region_is_ram(mr); +} + int qemu_ram_foreach_block(RAMBlockIterFunc func, void *opaque) { RAMBlock *block; --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374092; cv=pass; d=zohomail.com; s=zohoarc; b=gkuT918lBsq8BccRhJWBDGCL9gIEevIY774FxhmHDlPVu8cMVuG1rzjM3XOHWazA89UT8wukcL3r1RiDaK4B6fb69A7UOCKr95ek+N/I7oWf7jKPTZnF8C4xLGpiHUzZpVLpZ5+bWw3A+qVDQzUGRUUuyCUlnxJJW8RGKPmm9Q8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374092; 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=GHAk0NQhLCmkGfyoaeK7SjDhL4xAdfRtiRabscri2Wk=; b=ECLtpJycamhCuq+MvRLATFdv3lS7VtWld8mSO0uWc8Njhe4BeIKhJkWeAkSiVPQXf/6x+pytDbDqUEe/beSQSW47R8GvDK1saIm1/4iGMpw62ql5UED2GyLct+pG4HaxTysDjrkiqFax85m++Ec6gft7UlaVrw4Y98YibnHYTxI= 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 1765374092033781.7134756114655; Wed, 10 Dec 2025 05:41:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPU-0007Sf-S2; Wed, 10 Dec 2025 08:39:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPS-0007Ry-Uw; Wed, 10 Dec 2025 08:39:14 -0500 Received: from mail-centralusazlp170110009.outbound.protection.outlook.com ([2a01:111:f403:c111::9] helo=DM5PR21CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPQ-0001NY-Vp; Wed, 10 Dec 2025 08:39:14 -0500 Received: from BYAPR01CA0051.prod.exchangelabs.com (2603:10b6:a03:94::28) by IA1PR12MB6651.namprd12.prod.outlook.com (2603:10b6:208:3a0::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.9; Wed, 10 Dec 2025 13:39:06 +0000 Received: from CO1PEPF000075EF.namprd03.prod.outlook.com (2603:10b6:a03:94:cafe::4c) by BYAPR01CA0051.outlook.office365.com (2603:10b6:a03:94::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:40:38 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075EF.mail.protection.outlook.com (10.167.249.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:06 +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; Wed, 10 Dec 2025 05:38:49 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:47 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vSV0v19x8zw5oTxTcXsx/lWXh/Mdb/qbyD5pMoAtKHrrUKKIkfV0vQVwP0F6lbaC0Ztj3Dl1JDL4mP2prrWp3S7WDnY1dCm5A4EuQxk2uxvWa6dD6+IwAu99FFPxwA1NL2NYeN1Aebhr3W73na/HH5BsaUPtadn86wsSYKchZSugNwLlYzPPvy7MOyWY+ybV9d1QAok/ChhX8hKpFXFKzH+q/MWO9m70mOS6TzSJme5QWal4DQ4XjkkkPbKs6/fIpntPWjJzOlJbwhUsdB0PMxTknw9wPnxD9rTwOIE3LT/zmJ0bBKClokRZtOUJRJq6b4rsPIlAKc0eiHQhrkfn6w== 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=GHAk0NQhLCmkGfyoaeK7SjDhL4xAdfRtiRabscri2Wk=; b=Ax6ojah3JrmVmJ1NtdV9lkU1+Yfhn2AsNPDK7CZhzIqW+MaMhHKGJkCL/I78RjigyJnocO1bPDxye9JH4IMqxhHeUGv2adHA1KJEy7wg2zxeLNj0qBgwInYm4TbYZAK8WQgxUk/cdhu38TH5n1piQe7YwoIiPPVJOsC5QVIoE8EFw7I9Dbu9Hy3dEes+TOrLTXpvdW2eD/6M3A8bUiKMTzohUy3RdvmBwuf/MdMAJG26JX14UnjePHAC/7df7cUlRpOJKu8syngotahzOWceIGlzTOquFiPmuBJHdghmmSwWG3Th1vZxfRNE9ocWsLWL9VuUtomHSuwpXLy9lrY+uw== 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=GHAk0NQhLCmkGfyoaeK7SjDhL4xAdfRtiRabscri2Wk=; b=Mg+BRmc4Eq6C5k6ZiIg+lN5dMvpOIIY749wx772af5t+a0g/+hRCjFSqJRMMB8tYcuMrOyPMtMNJghT5AqwoAO2raoLf5arz19NkX7Ox9DHzJN7nA6Wp9DG5zyPbBR80BGRX0pdqxjPdFvo4V3mXGNBqNA7zmKKtIMRDe9Jv4u2ZWo1RxchmaDSai1F3XH7sx9d9BXHNH0Zv+XrwGhUPpxH+LqM1TysgCA2DJlDF1Q6p1eCByIAkJaMcwOmphEtCP3HwPtAskeUHzJ5uGJ6dErCQzzEo81JMpcrVewV6cqpPH4qG17yk0mKNzrXkcjGQR8wZe8kT8hscPpSiFKPYbA== 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: [RFC PATCH 09/16] hw/arm/tegra241-cmdqv:: Add write emulation for registers Date: Wed, 10 Dec 2025 13:37:30 +0000 Message-ID: <20251210133737.78257-10-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075EF:EE_|IA1PR12MB6651:EE_ X-MS-Office365-Filtering-Correlation-Id: c901ccce-9809-48fd-4fe4-08de37f17d3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?2n4UUhTGUxFasIDlp8p5kPsm/S+VRLJSY4nxnT5Mjmi1PavXhSbV3s1ALMka?= =?us-ascii?Q?tGFnHD5jmUV1eN2Tqx7BsRYIPwkBsS9VDi77aXE7EJHKAyooK8bOodj4iQap?= =?us-ascii?Q?9gWL0EKXompsHzfSLepQTpKQLKeYQQHsXohb3APhCTMxnDN6HqmxRRETrO9N?= =?us-ascii?Q?bXCzf5+D9bYpeo9AfSMXgBUUFmUsblMDCRMd9YjrHSVO5AI0abF73Jpsvi8/?= =?us-ascii?Q?iV7EyNw/YiYMs0hTSmzsfGjb/ozGAVqmocF5Hcy/0ct7+v3niLOYa9xe2UIe?= =?us-ascii?Q?cqhUNfPtSE9bwDObHytFNdV1mLfu/YSlpm7aM9/SmzFSm8TOR1PfZIscf1Be?= =?us-ascii?Q?mTLrD59kckaAp//QiGXG47lU80kLN6X4rG7FtL5Y/kDLPpIonzYXebEsWyNf?= =?us-ascii?Q?xDRa0bYbu0i8WiXP8eDOuZARXya8p2E1BjWCixIbJzGtkgENbtkSWch/2A3u?= =?us-ascii?Q?ZS+MprsS/OctZRIVRRTEIUS0ROC72lE5pL7qygPcIeVY/wxmKa/LQ2qkMHNm?= =?us-ascii?Q?99EE0RyhJtham2z3ZxZOr1zubUyKss9+K+cuEs10hEinL29/A71uNQXDGcVA?= =?us-ascii?Q?EJqkTFu7tMzobzxQJi5vxnEguXogaY/95I5P+cb1OWRBlij/vU0jnJCJeD0O?= =?us-ascii?Q?Exige7TNzQvDDs30ZIRp5QYwrKPx1w43BOux2BolXI9r6KPQ9YoZdnxUmzf+?= =?us-ascii?Q?MXO2B02zG8+P3XbcbMU72hPSMacNyRwp0BDs51yosCqzx+r8Mk4eMt28gmoc?= =?us-ascii?Q?7/ZpzuGBehlKR6C3kzubizfNDwGdiH3H19ZUhyERPklZr/fuzA19AUHnBHXO?= =?us-ascii?Q?gbjLQx5BdWc1tliXsGoj9n/TndIZUDx1V3rtpCy4XPYLLozlaQK6lxZ6MxLm?= =?us-ascii?Q?17FwiBvHDbPo1dUDoYr/2PXES8FHVoP5rclM8MquSw6YvG0p2Hhgst/tJzuA?= =?us-ascii?Q?F6nVmUiGTR/ZTZvK6CPoMIP9K4eq9mjCauX7C2yNRYgrdXVKZCV9UZoaZ5LL?= =?us-ascii?Q?nkqQh4TEsWKwBDFDNJaDf6nfP1mqsXjBqk9jBHOgDmvuboPDSTNVhHhId+Bv?= =?us-ascii?Q?ko5hLWM+l732C0ge+gB8s55DKpNTke3pU8azFfC+x9RFthWfvwDZm+9pXfP/?= =?us-ascii?Q?DV+dXY3IXelfUTbiujWcCdl5oGYpWRrRbqYVkbh56CsxhWc9sx2ba74NdqF/?= =?us-ascii?Q?dHejxTzk4tJ3YXX+N2zznoxNvRbMKeeaB77MHVt2bjXmV6xpdK4PzE8S1e6j?= =?us-ascii?Q?3Qyn9W3XOrS51SJfSKhSiSS6hXux4x/j8d5dUMrqnjgiQPssclqe/YW9RKVM?= =?us-ascii?Q?UHsKBKem5hHH8V3Fot9mVuLQosT81L0nQsbXGk/0ElNGhsNnK5CA4DrK11YZ?= =?us-ascii?Q?GC5ST2g87M1O4AxMMqQFVsNEHDQjYa1+HC/Qzke4oiob6R+o1fXRfLxQkIDD?= =?us-ascii?Q?yKt7doTQwDlNc+5Z3x4KrfM3yPh4e88N3lqAfM0MrMLCj4aFHBldE+CKYeIL?= =?us-ascii?Q?qPOLMXtV355/GjJ+fA39dZeBkyqoL77ruxzf5ypH1TS2R0sPUKWciXrm9bs5?= =?us-ascii?Q?tJNP5gfLxFYJHY5O2Z4=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:06.0347 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c901ccce-9809-48fd-4fe4-08de37f17d3a 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: CO1PEPF000075EF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6651 Received-SPF: softfail client-ip=2a01:111:f403:c111::9; envelope-from=skolothumtho@nvidia.com; helo=DM5PR21CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FORGED_SPF_HELO=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_PASS=-0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1765374112055158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Introduces write handling for VINTF and VCMDQ MMIO regions, including status/config updates, queue index tracking, and BASE_L/BASE_H processing. Writes to VCMDQ BASE_L/BASE_H trigger allocation or teardown of an IOMMUFD HW queue. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/tegra241-cmdqv.c | 213 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 185ef957bc..5e9a980d27 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -210,11 +210,158 @@ static uint64_t tegra241_cmdqv_read(void *opaque, hw= addr offset, unsigned size) } } =20 +/* Note that offset aligns down to 0x1000 */ +static void tegra241_cmdqv_write_vintf(Tegra241CMDQV *cmdqv, hwaddr offset, + uint64_t value, unsigned size) +{ + switch (offset) { + case A_VINTF0_CONFIG: + /* Strip off HYP_OWN setting from guest kernel */ + value &=3D ~R_VINTF0_CONFIG_HYP_OWN_MASK; + + cmdqv->vintf_config =3D value; + if (value & R_VINTF0_CONFIG_ENABLE_MASK) { + cmdqv->vintf_status |=3D R_VINTF0_STATUS_ENABLE_OK_MASK; + } else { + cmdqv->vintf_status &=3D ~R_VINTF0_STATUS_ENABLE_OK_MASK; + } + break; + default: + qemu_log_mask(LOG_UNIMP, "%s unhandled write access at 0x%" PRIx64= "\n", + __func__, offset); + return; + } +} + +static bool tegra241_cmdqv_setup_vcmdq(Tegra241CMDQV *cmdqv, int index, + Error **errp) +{ + SMMUv3State *smmu =3D cmdqv->smmu; + SMMUv3AccelState *s_accel =3D smmu->s_accel; + uint64_t base_mask =3D (uint64_t)R_VCMDQ0_BASE_L_ADDR_MASK | + (uint64_t)R_VCMDQ0_BASE_H_ADDR_MASK << 32; + uint64_t addr =3D cmdqv->vcmdq_base[index] & base_mask; + uint64_t log2 =3D cmdqv->vcmdq_base[index] & R_VCMDQ0_BASE_L_LOG2SIZE_= MASK; + uint64_t size =3D 1ULL << (log2 + 4); + IOMMUFDHWqueue *vcmdq =3D cmdqv->vcmdq[index]; + IOMMUFDViommu *viommu; + IOMMUFDHWqueue *hw_queue; + uint32_t hw_queue_id; + + /* Ignore any invalid address. This may come as part of reset etc */ + if (!cpu_physical_memory_is_ram(addr)) { + return true; + } + + if (vcmdq) { + iommufd_backend_free_id(s_accel->viommu.iommufd, vcmdq->hw_queue_i= d); + cmdqv->vcmdq[index] =3D NULL; + g_free(vcmdq); + } + + viommu =3D &s_accel->viommu; + if (!iommufd_backend_alloc_hw_queue(viommu->iommufd, viommu->viommu_id, + IOMMU_HW_QUEUE_TYPE_TEGRA241_CMDQV, + index, addr, size, &hw_queue_id, + errp)) { + return false; + } + hw_queue =3D g_new(IOMMUFDHWqueue, 1); + hw_queue->hw_queue_id =3D hw_queue_id; + hw_queue->viommu =3D viommu; + + cmdqv->vcmdq[index] =3D hw_queue; + return true; +} + +/* Note that offset aligns down to 0x10000 */ +static void +tegra241_cmdqv_write_vcmdq(Tegra241CMDQV *cmdqv, hwaddr offset, int index, + uint64_t value, unsigned size, Error **errp) +{ + uint32_t *ptr =3D NULL; + uint64_t off; + + if (cmdqv->vcmdq_page0) { + off =3D (0x80 * index) + (offset - 0x10000); + ptr =3D (uint32_t *)(cmdqv->vcmdq_page0 + off); + } + + switch (offset) { + case A_VCMDQ0_CONS_INDX: + if (ptr) { + *ptr =3D value; + } + cmdqv->vcmdq_cons_indx[index] =3D value; + return; + case A_VCMDQ0_PROD_INDX: + if (ptr) { + *ptr =3D value; + } + cmdqv->vcmdq_prod_indx[index] =3D (uint32_t)value; + return; + case A_VCMDQ0_CONFIG: + if (ptr) { + *ptr =3D (uint32_t)value; + } else { + if (value & R_VCMDQ0_CONFIG_CMDQ_EN_MASK) { + cmdqv->vcmdq_status[index] |=3D R_VCMDQ0_STATUS_CMDQ_EN_OK= _MASK; + } else { + cmdqv->vcmdq_status[index] &=3D ~R_VCMDQ0_STATUS_CMDQ_EN_O= K_MASK; + } + } + cmdqv->vcmdq_config[index] =3D (uint32_t)value; + return; + case A_VCMDQ0_GERRORN: + if (ptr) { + *ptr =3D (uint32_t)value; + } + cmdqv->vcmdq_gerrorn[index] =3D (uint32_t)value; + return; + case A_VCMDQ0_BASE_L: + if (size =3D=3D 8) { + cmdqv->vcmdq_base[index] =3D value; + } else if (size =3D=3D 4) { + cmdqv->vcmdq_base[index] =3D + (cmdqv->vcmdq_base[index] & 0xffffffff00000000ULL) | + (value & 0xffffffffULL); + } + tegra241_cmdqv_setup_vcmdq(cmdqv, index, errp); + return; + case A_VCMDQ0_BASE_H: + cmdqv->vcmdq_base[index] =3D + (cmdqv->vcmdq_base[index] & 0xffffffffULL) | + ((uint64_t)value << 32); + tegra241_cmdqv_setup_vcmdq(cmdqv, index, errp); + return; + case A_VCMDQ0_CONS_INDX_BASE_DRAM_L: + if (size =3D=3D 8) { + cmdqv->vcmdq_cons_indx_base[index] =3D value; + } else if (size =3D=3D 4) { + cmdqv->vcmdq_cons_indx_base[index] =3D + (cmdqv->vcmdq_cons_indx_base[index] & 0xffffffff00000000UL= L) | + (value & 0xffffffffULL); + } + return; + case A_VCMDQ0_CONS_INDX_BASE_DRAM_H: + cmdqv->vcmdq_cons_indx_base[index] =3D + (cmdqv->vcmdq_cons_indx_base[index] & 0xffffffffULL) | + ((uint64_t)value << 32); + return; + default: + qemu_log_mask(LOG_UNIMP, + "%s unhandled write access at 0x%" PRIx64 "\n", + __func__, offset); + return; + } +} + static void tegra241_cmdqv_write(void *opaque, hwaddr offset, uint64_t val= ue, unsigned size) { Tegra241CMDQV *cmdqv =3D (Tegra241CMDQV *)opaque; Error *local_err =3D NULL; + int index; =20 if (!cmdqv->vcmdq_page0) { tegra241_cmdqv_init_vcmdq_page0(cmdqv, &local_err); @@ -223,6 +370,72 @@ static void tegra241_cmdqv_write(void *opaque, hwaddr = offset, uint64_t value, local_err =3D NULL; } } + + if (offset > TEGRA241_CMDQV_IO_LEN) { + qemu_log_mask(LOG_UNIMP, + "%s offset 0x%" PRIx64 " off limit (0x50000)\n", __f= unc__, + offset); + return; + } + + switch (offset) { + case A_CONFIG: + cmdqv->config =3D value; + if (value & R_CONFIG_CMDQV_EN_MASK) { + cmdqv->status |=3D R_STATUS_CMDQV_ENABLED_MASK; + } else { + cmdqv->status &=3D ~R_STATUS_CMDQV_ENABLED_MASK; + } + break; + case A_VI_INT_MASK ... A_VI_INT_MASK_1: + cmdqv->vi_int_mask[(offset - A_VI_INT_MASK) / 4] =3D value; + break; + case A_CMDQ_ALLOC_MAP_0 ... A_CMDQ_ALLOC_MAP_127: + cmdqv->cmdq_alloc_map[(offset - A_CMDQ_ALLOC_MAP_0) / 4] =3D value; + break; + case A_VINTF0_CONFIG ... A_VINTF0_LVCMDQ_ERR_MAP_3: + tegra241_cmdqv_write_vintf(cmdqv, offset, value, size); + break; + case A_VI_VCMDQ0_CONS_INDX ... A_VI_VCMDQ127_GERRORN: + offset -=3D 0x20000; + QEMU_FALLTHROUGH; + case A_VCMDQ0_CONS_INDX ... A_VCMDQ127_GERRORN: + /* + * Align offset down to 0x10000 while extracting the index: + * VCMDQ0_CONS_INDX (0x10000) =3D> 0x10000, 0 + * VCMDQ1_CONS_INDX (0x10080) =3D> 0x10000, 1 + * VCMDQ2_CONS_INDX (0x10100) =3D> 0x10000, 2 + * ... + * VCMDQ127_CONS_INDX (0x13f80) =3D> 0x10000, 127 + */ + index =3D (offset - 0x10000) / 0x80; + tegra241_cmdqv_write_vcmdq(cmdqv, offset - 0x80 * index, index, va= lue, + size, &local_err); + break; + case A_VI_VCMDQ0_BASE_L ... A_VI_VCMDQ127_CONS_INDX_BASE_DRAM_H: + offset -=3D 0x20000; + QEMU_FALLTHROUGH; + case A_VCMDQ0_BASE_L ... A_VCMDQ127_CONS_INDX_BASE_DRAM_H: + /* + * Align offset down to 0x20000 while extracting the index: + * VCMDQ0_BASE_L (0x20000) =3D> 0x20000, 0 + * VCMDQ1_BASE_L (0x20080) =3D> 0x20000, 1 + * VCMDQ2_BASE_L (0x20100) =3D> 0x20000, 2 + * ... + * VCMDQ127_BASE_L (0x23f80) =3D> 0x20000, 127 + */ + index =3D (offset - 0x20000) / 0x80; + tegra241_cmdqv_write_vcmdq(cmdqv, offset - 0x80 * index, index, va= lue, + size, &local_err); + break; + default: + qemu_log_mask(LOG_UNIMP, "%s unhandled write access at 0x%" PRIx64= "\n", + __func__, offset); + } + + if (local_err) { + error_report_err(local_err); + } } =20 static const MemoryRegionOps mmio_cmdqv_ops =3D { --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374074; cv=pass; d=zohomail.com; s=zohoarc; b=cYuVlHlz7C6FqzLSM96lpMcy8Q15zz2y3nIoEvN+KS5lEz8jSkPJlC7NjupfGeaE5zWYW50zzrlfXJ2OGCfOkuPzBhTXFx62n+DKtBvX96kRYnsh+D41zjWamY3YocAGgfMBPh/qXY70+MjXR/10lViDu6lkW3HIg6yznsr5UvY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374074; 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=SRP8/FzCTgOGUZmD5lYPAwmEtSuvTVE4Oo/CuLwoFuI=; b=KnrKoM74mN3ZtFBF8rS2OFV0EjuXVqUoWJOAKTUuPEmnhBx/ZuCabAVowobsS2Jj+7yUKO3odIrDKGEN+c9lGkKnds3BXtb1YFGBfW0qQ+6WQKs02vgDlPI6VLYZtkDXuVkWUNcWgN/erivyR7oDWAkD9uSkOK1XJ7yjV/ZtShU= 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 1765374074121456.1733598533266; Wed, 10 Dec 2025 05:41:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPg-0007W4-Dq; Wed, 10 Dec 2025 08:39:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPZ-0007TE-UU; Wed, 10 Dec 2025 08:39:21 -0500 Received: from mail-westusazlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c001::2] helo=SJ2PR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPX-0001OR-Hg; Wed, 10 Dec 2025 08:39:20 -0500 Received: from BYAPR01CA0046.prod.exchangelabs.com (2603:10b6:a03:94::23) by PH7PR12MB6666.namprd12.prod.outlook.com (2603:10b6:510:1a8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.14; Wed, 10 Dec 2025 13:39:11 +0000 Received: from CO1PEPF000075EF.namprd03.prod.outlook.com (2603:10b6:a03:94:cafe::ea) by BYAPR01CA0046.outlook.office365.com (2603:10b6:a03:94::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:38:40 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075EF.mail.protection.outlook.com (10.167.249.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:11 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:53 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:50 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h6QdyqVazp2ly9Sx1wIqyLaztVXVS25RdQUHWBLc66Owq4IgSYyOkcE2sYAlBLyojXoI6yeO8g9b9FtLW4sJGtq9DXylxz4uSUQYR8OWPnMWFLe5Id3gzo6LKlGrAKj1Iy0RfX6MDOAisB56NJtS3qfiAazjBDGeaMMSsgXAJsdGFZyGMjX5h0iq/6kiWntuTbD2JQVhXNqD31/VfugEmovkouxiStcQ9gKzcpK+EvghPai60OTIwXzsCowybYzlBfsYPcDz6ABQCviHi/prKqaVdO89sTCnOx3prY+IsRTevrcywN4IheMYUcj7Mahp+vCC20kmTPNo1gZE5iTRFw== 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=SRP8/FzCTgOGUZmD5lYPAwmEtSuvTVE4Oo/CuLwoFuI=; b=G5XO0rnr9UvW8dZD3r+Tyv2dOwspPqxjCUTo9pI5+KpDFxAfJ8buuIFWNypBq+y+SPh1QRwF+Bt3bYVuCQx2bWAUYnCiu/BqKkowQv8wQaUonYqGLPWW6Fr5Jtgn/UAtkGrzjTeJCgK4RtRa2zBCqKQxtv6m5V2W6CJAQpNWCnP+Sm3wfdTm8+alRdJd5eWtJcrfZUoM4O9AkKYIGNkOX5WswjzQDXHkEGqTkIlyphKW53BX2Ldy743TDhbHNhKYbN1SDZro8OaP2iQ4fWc+mf1n0jysvqAvbuvRAdBo4+jhdpszJ3n4HLWmUvP+Y3pB7FwU36macoV2wEfriuzsDA== 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=SRP8/FzCTgOGUZmD5lYPAwmEtSuvTVE4Oo/CuLwoFuI=; b=G8qJSLEKrCPyFzswImuHcXDc37rC48N9EIz3pmR19o9WamKF35pzTlQbqBoBw1VUB/gl6SwubiICpZmygrojFVFEtEdetvjRRWu9zpwgXx4xzphl5zK2zRe0HJjVt9zznrkTJ9MejeXTr1BI/HcCj7goAj/aq8fEiNdouiq1TlhKKpMyISR//zJBPxJL4BZw4urZ1ccBLAUPkMiry/dLqlDxTwJrTpF0jUErSfJsyi3ZaSmmXmCZ8a0cAnvIhumfSf+/J7dUbqgt/Dbd/TNAzwH/iMHHGvo6jhisw3OMioEDedO4zXsinjLgR+lkzJUIqg7YFJlBnWrtQfRxdUuq6g== 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: [RFC PATCH 10/16] hw/arm/tegra241-cmdqv: Allocate vEVENTQ object Date: Wed, 10 Dec 2025 13:37:31 +0000 Message-ID: <20251210133737.78257-11-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075EF:EE_|PH7PR12MB6666:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ee0b03c-486e-49c1-2e28-08de37f1803c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700013|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?f0ZbUWHz0gJsUYR+pHSHgaDaiShGHp7L+XZsfW54hiqANGcqB61wJKXMYlQc?= =?us-ascii?Q?wQv+xRxxthw6SOPqoQcDllSkV5TJ3jHzJ4bh/PD+ch9qtkct+d1Lk9BdXJqn?= =?us-ascii?Q?Bd7oiywiu2z285F1f9DvLXbJKpIZjnRsLaRNiaM1RnfaJq8dcq7PEoYxaog0?= =?us-ascii?Q?TdKIsIMmcjypYDrdYoKxO72fGZGo/ArUWaYPKStWCDlg1J31G9C7MKoheSWB?= =?us-ascii?Q?IAZvwCU1sexAMtuJpZykVvyeNymX+IrhoQw7V6mjdWWFzXaaBawwK7rJBe7d?= =?us-ascii?Q?BaC9pZ1QiTt0t7GVdU8v0puf510cU7lGfLLdV1VeByV4VwEjHU/BtHQFK6Zi?= =?us-ascii?Q?meDTXpO4Wi4AFEMnve+oICPWRo+PoICqXxVS99xHZXAy5kxkI8V2Po1trFvJ?= =?us-ascii?Q?cabFdqmXM4pfXSqSuPNtNaMFwqtsimiOY7S8BMrd6xnmo1lGt30YvrvagilP?= =?us-ascii?Q?Y7ZyGhpWSvDceRjdENzfvmkJvNOgNEDDRNnU6NqVa7zInA6Q+tput3fGkdPr?= =?us-ascii?Q?ksab49Qf7WpLXVH3O9hKAgiLPPIwBCOAdNKPUMHgeVaxXt5E58adU6ZGH7nj?= =?us-ascii?Q?kkPEqLVzYGlOipKO4CnMNnn94W51662uRc88YVo6JTFJXRNjzGeNz/CE26HT?= =?us-ascii?Q?mh5JbGuNVFclXrxnA78O5TPHoaCZyZJwhnwhr0HiRyV8Ln8Q/N/CoQJoYImT?= =?us-ascii?Q?23G4I8Ll/6WNXTtIpjNOZq7ljWjyneXF67yUpOGw/Ulxnm0uc0zMlYxvLttW?= =?us-ascii?Q?dqAFzYV17WEXSP+ce1n5Eovg2+3RkkwfMPmNuGqs7vm7wKy9b+VNDphOB/gP?= =?us-ascii?Q?t0JrW0Y7UM7uKpF899bl/Rhkh08IoMLqPZUxQKRkh+8fMY/rQ+qiklUV0sBB?= =?us-ascii?Q?3knIFbUNO77sUEFyhUwNSBhG36bGaPc2pFeeQq0Tp480983H8P3bAjtQh+rD?= =?us-ascii?Q?9n/V6y8aMsUe6lQMkIrnSjh6JgqIeBzdtfpVfxr04Tm93fWNjtR92PacFhSG?= =?us-ascii?Q?XwgPOlxnx1IEUPOZrL5qG/M61q7I2+3ii9QhuBWj2zzKnImY/qa32Kf4ia9H?= =?us-ascii?Q?x1ru9UL2yyJ8dlkLeT6K63xDz7YM1BzsAS3ZkfeMMPfXrDvmHsKtzXqm0+9i?= =?us-ascii?Q?0Uz1A6lETApPEC+n7zY52nVH+++pazqhrd75AUkeAbnqqEpsnhvDuhT3pLTu?= =?us-ascii?Q?0/RKp+sLJgLMPTsN6ihggX3iJWQHUc5DSYmS1NCVXN9hYjc9CSj0OlJby4Wr?= =?us-ascii?Q?NG/csTTTJfyC2pabumdZMuXo/q1rE1/sP86GAuQTB3b9AzeI5TzGmCcUUUEK?= =?us-ascii?Q?Urd+8ez4R8aj8uGMWFVQdGstGLlwedTGfPUhU5xkj4HtOPg87AP3jAmW9NPA?= =?us-ascii?Q?A1ygIVo+TR/Vmr8nViEzuxgjfJ8NycwoMF644OJ4abD4u6sFr/VaDEIS09I9?= =?us-ascii?Q?0ARo6NcadISEP4L9yfaLuvRrQl3R3S4Wh3OUyTO6CxNvqJkPNzWU0buGrceK?= =?us-ascii?Q?ZNtmROscKOIhoSz/700ORBYUWu0bwHcFLmSial8XNYxe4lVcE8NVfARB3xzy?= =?us-ascii?Q?9xaZj9C5WGu0zpMrohE=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(36860700013)(82310400026)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:11.0308 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5ee0b03c-486e-49c1-2e28-08de37f1803c 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: CO1PEPF000075EF.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6666 Received-SPF: softfail 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: 1765374074583158500 Content-Type: text/plain; charset="utf-8" Allocate a Tegra241 CMDQV type vEVENTQ object so that any host side errors related to the CMDQV can be received and propagated back to the guest. Event read and propagation will be added in a later patch. Signed-off-by: Shameer Kolothum --- hw/arm/tegra241-cmdqv.c | 51 +++++++++++++++++++++++++++++++++++++++++ hw/arm/tegra241-cmdqv.h | 1 + 2 files changed, 52 insertions(+) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 5e9a980d27..812b027923 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -136,6 +136,52 @@ static uint64_t tegra241_cmdqv_read_vcmdq(Tegra241CMDQ= V *cmdqv, hwaddr offset, return 0; } } + +static void tegra241_cmdqv_free_veventq(Tegra241CMDQV *cmdqv) +{ + SMMUv3State *smmu =3D cmdqv->smmu; + SMMUv3AccelState *s_accel =3D smmu->s_accel; + IOMMUFDViommu *viommu =3D &s_accel->viommu; + IOMMUFDVeventq *veventq =3D cmdqv->veventq; + + if (!veventq) { + return; + } + + iommufd_backend_free_id(viommu->iommufd, veventq->veventq_id); + g_free(veventq); + cmdqv->veventq =3D NULL; +} + +static bool tegra241_cmdqv_alloc_veventq(Tegra241CMDQV *cmdqv, Error **err= p) +{ + SMMUv3State *smmu =3D cmdqv->smmu; + SMMUv3AccelState *s_accel =3D smmu->s_accel; + IOMMUFDViommu *viommu =3D &s_accel->viommu; + IOMMUFDVeventq *veventq; + uint32_t veventq_id; + uint32_t veventq_fd; + + if (cmdqv->veventq) { + return true; + } + + if (!iommufd_backend_alloc_veventq(viommu->iommufd, viommu->viommu_id, + IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV, + 1 << 16, &veventq_id, &veventq_fd, + errp)) { + error_append_hint(errp, "Tegra241 CMDQV: failed to alloc veventq"); + return false; + } + + veventq =3D g_new(IOMMUFDVeventq, 1); + veventq->veventq_id =3D veventq_id; + veventq->veventq_fd =3D veventq_fd; + veventq->viommu =3D viommu; + cmdqv->veventq =3D veventq; + return true; +} + static uint64_t tegra241_cmdqv_read(void *opaque, hwaddr offset, unsigned = size) { Tegra241CMDQV *cmdqv =3D (Tegra241CMDQV *)opaque; @@ -259,11 +305,16 @@ static bool tegra241_cmdqv_setup_vcmdq(Tegra241CMDQV = *cmdqv, int index, g_free(vcmdq); } =20 + if (!tegra241_cmdqv_alloc_veventq(cmdqv, errp)) { + return false; + } + viommu =3D &s_accel->viommu; if (!iommufd_backend_alloc_hw_queue(viommu->iommufd, viommu->viommu_id, IOMMU_HW_QUEUE_TYPE_TEGRA241_CMDQV, index, addr, size, &hw_queue_id, errp)) { + tegra241_cmdqv_free_veventq(cmdqv); return false; } hw_queue =3D g_new(IOMMUFDHWqueue, 1); diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h index 4972e367f6..ba7f2a0b1b 100644 --- a/hw/arm/tegra241-cmdqv.h +++ b/hw/arm/tegra241-cmdqv.h @@ -24,6 +24,7 @@ typedef struct Tegra241CMDQV { MemoryRegion mmio_vintf_page; void *vcmdq_page0; IOMMUFDHWqueue *vcmdq[128]; + IOMMUFDVeventq *veventq; =20 /* Register Cache */ uint32_t config; --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374076; cv=pass; d=zohomail.com; s=zohoarc; b=nTbUCsfUNhfuD3804oCcpFXUhYbdgX/qriQMBr8Un/wUthoT2bOY7lZQWZffK6tCIqqENjl6rMUk5xk2fC/GNfNW7md4GpZjID7g5yb5ozkkhbblKi6yZN3l5M4M7erRSPTfFfep+4O5qGMWCh++KP/YU2oEIQpY3vtl7MOXBqY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374076; 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=vMhuuK7H2KpyhKdJsweY18PYcZYtqzvCmwSwRwBAWvo=; b=FCiMqyDyBlYfKRNzWsD53eWPROcx19WlNcwN4B1GNNI6KGQl72P895CJoVyBF0qzNiU3jN939u15lFPjhpCtCLwZ5epZ9b3U60xrzr0qwy8rckP2kGGbNHqe3GfDTqZ52sXLUfkcES4Ip/OIcdaDP5ASaPBgSYpk7+jK3G9fheo= 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 1765374076856350.71372791250667; Wed, 10 Dec 2025 05:41:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPu-0007dl-2K; Wed, 10 Dec 2025 08:39:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPj-0007Y7-R6; Wed, 10 Dec 2025 08:39:33 -0500 Received: from mail-northcentralusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c105::1] helo=CH1PR05CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPg-0001QQ-G1; Wed, 10 Dec 2025 08:39:30 -0500 Received: from BY5PR03CA0011.namprd03.prod.outlook.com (2603:10b6:a03:1e0::21) by DS7PR12MB6021.namprd12.prod.outlook.com (2603:10b6:8:87::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.7; Wed, 10 Dec 2025 13:39:18 +0000 Received: from MWH0EPF000A672E.namprd04.prod.outlook.com (2603:10b6:a03:1e0:cafe::2a) 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.9388.15 via Frontend Transport; Wed, 10 Dec 2025 13:39:16 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000A672E.mail.protection.outlook.com (10.167.249.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Wed, 10 Dec 2025 13:39:17 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:57 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YA0IxmwYyhfiHac6DSoXVrgS6PomhPI75IXkD9BQoJDxULyPfDcmzj+gUN60v+LonhDAWosvw6o7gALQVA0kVI704ytIj0zbOIgACdVom4bnZnwjd6SR9/NJn9UejhaUQ4gysEdgU30dULKX4rD7RU0i5NBKFUVI9zEBRmm2YFt503sJxiPm4WgfGbTlCB++Ukd6tRKtfulpsUqk1vTI9LmjzOy/8ZV9yyQVH3KOxdK/WH6rcZKTuhqk2jjPGiOrd3sZI8JxndGF3WXaYlwItOTnIhU4x1OXy+jtHEkgfV7Qb2zXYhJUgIs+6K7S1gVXkB5tX99co2VYFiKTpvUWSg== 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=vMhuuK7H2KpyhKdJsweY18PYcZYtqzvCmwSwRwBAWvo=; b=NotJZr7PXB2/ZJIN1I+1sd7UAZ+qQpCVUjFh+0m8U07x6T3cw9/egAMYVJxP/8MrG64FkdnSmfxHS5BaSrQh5eiWHoEkGZV0VI/lYT0XrplGZXMJis4twRu3oa/oMIdnySHPZFj4te7KsbSSqO7jnGRTbho7JrQeKHxB9YrszaCXVNjpzF0jZn2XB9+mhKlxV6WLI2emHvXW7E8JINBvdP9cl02zG04zJZNu8hw6+ppcqCmET3DejlVzvlTLQhG1OZBlPXRc0xmNds3MNyhjdVY/0bCLhU96F0ol2mgzGad0F3+BzE1r8wpxwmgxcg9c+A9+QIVr1jVrVRY7LZzbxQ== 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=vMhuuK7H2KpyhKdJsweY18PYcZYtqzvCmwSwRwBAWvo=; b=E9wwFjFWW1HGm190K1P3jRP5MyECFhK22csekPBgiHpCz4e22n6rrImzva4yMlxF38pZJtRTOyrH5+bWbYqGV0EIgLi+KpRVjthhHHrVHYFFdCOcEehISSAfoc4v7XF14YjeSWUe23kqBFmz77n+lcAjtnfMJwtopIgmRird8MwfbPOu5/O0aBcx3voiXolZMfXLfMqgKJoN3hWfbPnuppoIIQKje4cMIBoH5cf6N2IwivdDJ7m3HarReAWve7oCLkjMy6uk7VTYfcH9V8Ek8+jTDiFtVgQiirraQA714ZFL/fLi/u1KKkzwcff7q7szacVpMT+cMd7SLJQ8S6oAvw== 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: [RFC PATCH 11/16] hw/arm/tegra241-cmdqv: Read and propagate Tegra241 CMDQV errors Date: Wed, 10 Dec 2025 13:37:32 +0000 Message-ID: <20251210133737.78257-12-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-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.230.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: MWH0EPF000A672E:EE_|DS7PR12MB6021:EE_ X-MS-Office365-Filtering-Correlation-Id: f9550a51-8e53-4d69-9217-08de37f18416 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?cldhMEdzVnFWYzhiMGtKYys5ZWc3ekRYQjRGaUJCaW5IaW5zUW00dXpSQS9U?= =?utf-8?B?R2pGZGlhazVvUjF2eG0zMlBocTNDdnU3MDFxTEg0MGlldDIrdjB3Zi9XdjlH?= =?utf-8?B?T1h0amtSU0JPSnlqT0x5dUw1ZmFXSGdPcVFhSHYrcTVXcVJ2eTFEZlh1K3Zx?= =?utf-8?B?NDhxaFNsMHc2MXpabDA0SXBGRWMvMEE5UHI3L1RrR3lESzFOMHZDMXQwMnZN?= =?utf-8?B?ck9ucXo5ZE52RHRFNXJ6ZnRGekZHMTV2OFlZM2NmRi96MzFZcnlSN1I2a2kv?= =?utf-8?B?K0JsVjd4Rmo2N1Q4NE9Gbm50ZWZyNEtSRzg2V1dia0d1cTV1TVdNSnVmKzNI?= =?utf-8?B?VXU4K0hkV1FwT0ZVMEVwL0dNSVVXTnNUQkVDSWlySXh2TmxRSXJ6Tk5HT2dh?= =?utf-8?B?enh0OW1qNDVPRi9DblpSc0hHT2JEaFpQWHRQSnFiUkZIT1h4Zy9WbVJIQjlX?= =?utf-8?B?bk5mVjNuRHRjSWIxWEFRVXU5WGZDcmJJZzhlZWpWS3N5WFF2clFNejdrcmhO?= =?utf-8?B?c2xmYUovRExBT056UkF4ZEVrR0VNVXZWQlBhMDFFRXlJUTc3SkhHdVU4bzF2?= =?utf-8?B?Zmd5Qnd6VlcvVFRyOUhiQXBBTWZDdEtmWVVIdmV3ZEtsaEF5bXBlK3BPTmxu?= =?utf-8?B?RGxvZDBzOEtkOU9uZDdyL0dqd2s5NEVKRnk4NGNLWmJ3TE8zNnNwZm56bEdm?= =?utf-8?B?VXdJQ0RLTTMyMlZkWkhjOUdQVlZrRG9ZMmNBS0hmSkljLzVaYmVyd0wwWnhq?= =?utf-8?B?bXJMS2xKM2wxcFZHMXBVdzVzcnZpcGRVUHlWWStJSFNHWCtVQWszSHZtajFZ?= =?utf-8?B?WkhlL01LNllpSHE2WjFXZmNRejFUMVJJQmNGdzdXT2I2VVA2L0ZWVi90TWtl?= =?utf-8?B?SktMN1NuMHZ1VkhxZWhNWHU1dkRlbE10YjBHaTJiMGRsL2F0UGhKTE85NDhR?= =?utf-8?B?cG5SZXFFV1RjbzNjTHZBWCtFc2RDalpwWGZWazBNenVORk9xUlhCWkhDQTd1?= =?utf-8?B?ODdSamxoekg0UzI3T0oxd3dpOVMwbzBDb0d6ZSs3VDZTQW1jMUl6cGRWNzBI?= =?utf-8?B?eEd2a3ZuRUdIdEdaZC9VSnBYS3hUM3J3ZU1vVnNmWlNQWW9zQ0tNMmpDUHI3?= =?utf-8?B?eWkzZktYMkt4bnRuK2lMM3lLVlNtYkQvUytFUVVnWkp5dHRGWE42Z052a3FW?= =?utf-8?B?TGQ4b2Y0cHBwb3dJNjFKVzZwU01PanRNRzNqUjFPR28yeXhWV3lQOGVwNm1m?= =?utf-8?B?Vnh2aXBXNFlQSHd5dG5GUE50Qmd2NzZESFlDdUxKWSswY1drYURxUHB0ejV0?= =?utf-8?B?SDUvYnZRVXVXSW51K2hRMGliYjQra0VVeCtCYUxqWVQ3SHQzaVltSWU5NHF3?= =?utf-8?B?NWJpOWxkeTFtMzBGN043akQvbDhXNjhWT05WSGkzZHgxOC9JendmaGN0S01a?= =?utf-8?B?OWpaK2hPWEJyVWJmdFFWdGlHQ2NrYTR4anVFTUxaRTdJVmV6MlBGYXF5MkFL?= =?utf-8?B?bm5rdlc3cmdRQXhGbjVUT0ZKbEhmR0NTZ0NTdklZUnFHYWMySVpvRTRsTU5E?= =?utf-8?B?R1U1R1BvWGxmV0VkdzJ6Y1l3aWFuejEyblZIYWR3a3NEQjBUa2pWWklYNE02?= =?utf-8?B?azNzTEZvaTlEeU1YbjAvRzJrL1lOY0ZkcEtRYUgveVc5RFpnaHpqenRZbk52?= =?utf-8?B?d0t0VWVyME5yenErZElhZEpQZkhrYnhGR2hRQmcyWkRGYzZFa0dlamZFMEVq?= =?utf-8?B?aVZ2ZmRqeDBoaDhLSEZ2WnVFN05TSjZ2alltV1FrQWpCU3FjUklrR1BLRWNH?= =?utf-8?B?S3NneUM0NklTQlhSWnExdVFMS0xGRkh5dVNnZ1Vtc3NPZHU2Ym5lRytFU0lZ?= =?utf-8?B?ZnhxemkwZzFhcWdyampXTVlhL2MrVHlFb0pQUHBvdkduQktZK01neVpIVFFs?= =?utf-8?B?L1NMNDdyejMzVzFZRWM1ZlE5TmwycFRnNit2U1hoWkxjRjJiWkp3bHorbjIy?= =?utf-8?B?WGtybGFMVFBFYlRLb1ExeDU0ZGRtcGRacEwzVjZhcHo0ODlVb3QybGhlOXZY?= =?utf-8?B?N2NLMDFobmhXd3VIWnFYWGt1ZWsxVEVoUzdidXNVLzVPRzRkZlREeG92eXBF?= =?utf-8?Q?UCEw=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:17.4976 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f9550a51-8e53-4d69-9217-08de37f18416 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: MWH0EPF000A672E.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6021 Received-SPF: softfail client-ip=2a01:111:f403:c105::1; envelope-from=skolothumtho@nvidia.com; helo=CH1PR05CU001.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 1765374078602158500 Install an event handler on the CMDQV vEVENTQ fd to read and propagate host received CMDQV errors to the guest. The handler runs in QEMU=E2=80=99s main loop, using a non-blocking fd regis= tered via qemu_set_fd_handler(). Signed-off-by: Shameer Kolothum --- hw/arm/tegra241-cmdqv.c | 80 +++++++++++++++++++++++++++++++++++++++++ hw/arm/tegra241-cmdqv.h | 2 ++ hw/arm/trace-events | 3 ++ 3 files changed, 85 insertions(+) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 812b027923..5b8a7bdff2 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -8,9 +8,12 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/error-report.h" #include "qemu/log.h" +#include "trace.h" =20 #include "hw/arm/smmuv3.h" +#include "hw/irq.h" #include "smmuv3-accel.h" #include "tegra241-cmdqv.h" =20 @@ -137,6 +140,79 @@ static uint64_t tegra241_cmdqv_read_vcmdq(Tegra241CMDQ= V *cmdqv, hwaddr offset, } } =20 +static void tegra241_cmdqv_event_read(void *opaque) +{ + Tegra241CMDQV *cmdqv =3D opaque; + struct { + struct iommufd_vevent_header hdr; + struct iommu_vevent_tegra241_cmdqv vevent; + } buf; + ssize_t readsz =3D sizeof(buf); + uint32_t last_seq =3D cmdqv->last_event_seq; + ssize_t bytes; + + bytes =3D read(cmdqv->veventq->veventq_fd, &buf, readsz); + if (bytes <=3D 0) { + if (errno =3D=3D EAGAIN || errno =3D=3D EINTR) { + return; + } + error_report("Tegra241 CMDQV: vEVENTQ: read failed (%s)", + strerror(errno)); + return; + } + + if (bytes < readsz) { + error_report("Tegra241 CMDQV: vEVENTQ: incomplete read (%zd/%zd by= tes)", + bytes, readsz); + return; + } + + if (buf.hdr.flags & IOMMU_VEVENTQ_FLAG_LOST_EVENTS) { + error_report("Tegra241 CMDQV: vEVENTQ has lost events"); + return; + } + + /* Check sequence in hdr for lost events if any */ + if (cmdqv->event_start) { + uint32_t expected =3D (last_seq =3D=3D INT_MAX) ? 0 : last_seq + 1; + + if (buf.hdr.sequence !=3D expected) { + uint32_t delta; + + if (buf.hdr.sequence >=3D last_seq) { + delta =3D buf.hdr.sequence - last_seq; + } else { + /* Handle wraparound from INT_MAX */ + delta =3D (INT_MAX - last_seq) + buf.hdr.sequence + 1; + } + error_report("Tegra241 CMDQV: vEVENTQ: detected lost %u event(= s)", + delta - 1); + } + } + + if (buf.vevent.lvcmdq_err_map[0] || buf.vevent.lvcmdq_err_map[1]) { + cmdqv->vintf_cmdq_err_map[0] =3D + buf.vevent.lvcmdq_err_map[0] & 0xffffffff; + cmdqv->vintf_cmdq_err_map[1] =3D + (buf.vevent.lvcmdq_err_map[0] >> 32) & 0xffffffff; + cmdqv->vintf_cmdq_err_map[2] =3D + buf.vevent.lvcmdq_err_map[1] & 0xffffffff; + cmdqv->vintf_cmdq_err_map[3] =3D + (buf.vevent.lvcmdq_err_map[1] >> 32) & 0xffffffff; + for (int i =3D 0; i < 4; i++) { + cmdqv->cmdq_err_map[i] =3D cmdqv->vintf_cmdq_err_map[i]; + } + cmdqv->vi_err_map[0] |=3D 0x1; + qemu_irq_pulse(cmdqv->irq); + trace_tegra241_cmdqv_err_map( + cmdqv->vintf_cmdq_err_map[3], cmdqv->vintf_cmdq_err_map[2], + cmdqv->vintf_cmdq_err_map[1], cmdqv->vintf_cmdq_err_map[0]); + } + + cmdqv->last_event_seq =3D buf.hdr.sequence; + cmdqv->event_start =3D true; +} + static void tegra241_cmdqv_free_veventq(Tegra241CMDQV *cmdqv) { SMMUv3State *smmu =3D cmdqv->smmu; @@ -179,6 +255,10 @@ static bool tegra241_cmdqv_alloc_veventq(Tegra241CMDQV= *cmdqv, Error **errp) veventq->veventq_fd =3D veventq_fd; veventq->viommu =3D viommu; cmdqv->veventq =3D veventq; + + /* Set up event handler for veventq fd */ + fcntl(veventq_fd, F_SETFL, O_NONBLOCK); + qemu_set_fd_handler(veventq_fd, tegra241_cmdqv_event_read, NULL, cmdqv= ); return true; } =20 diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h index ba7f2a0b1b..97eaef8a72 100644 --- a/hw/arm/tegra241-cmdqv.h +++ b/hw/arm/tegra241-cmdqv.h @@ -25,6 +25,8 @@ typedef struct Tegra241CMDQV { void *vcmdq_page0; IOMMUFDHWqueue *vcmdq[128]; IOMMUFDVeventq *veventq; + uint32_t last_event_seq; + bool event_start; =20 /* Register Cache */ uint32_t config; diff --git a/hw/arm/trace-events b/hw/arm/trace-events index 3457536fb0..76bda0efef 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -72,6 +72,9 @@ smmuv3_accel_unset_iommu_device(int devfn, uint32_t devid= ) "devfn=3D0x%x (idev dev smmuv3_accel_translate_ste(uint32_t vsid, uint32_t hwpt_id, uint64_t ste_1= , uint64_t ste_0) "vSID=3D0x%x hwpt_id=3D0x%x ste=3D%"PRIx64":%"PRIx64 smmuv3_accel_install_ste(uint32_t vsid, const char * type, uint32_t hwpt_i= d) "vSID=3D0x%x ste type=3D%s hwpt_id=3D0x%x" =20 +# tegra241-cmdqv +tegra241_cmdqv_err_map(uint32_t map3, uint32_t map2, uint32_t map1, uint32= _t map0) "hw irq received. error (hex) maps: %04X:%04X:%04X:%04X" + # 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" --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374033; cv=pass; d=zohomail.com; s=zohoarc; b=IqICdey/Qpv7VVRm0mWWyEKggGDaVPX2ZWID9tObI2+FeMtggPXNYiWq6KFyYUfa0pMO34DUk3rPAisXCMt/NmQvdLeLzQUcEB609wTqIbUoMDGvvKpD1G1Rx6u3yv3uDDRt9bd96uYKb3h8pYfWUsTSmOM98XAIIBxiN7Ano/c= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374033; 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=GQWQ0qn1WY8pahQUPzCzZCaJ0GsTBV9miUpC51umYRg=; b=K55svx2W4Q0kgJ1EcrvBCyCdSyD3jikiMLcm3w4YzNf5DsTHH3HhtKfzDb4M37kRs3azTyyZuDl8ZdhfUIm02GK8lnjnA+7XE4nkPL7KvagBhzDapax7EpIXN2mws5236JzeKGf9OT/pZTJXBfR7c/FY14u3QBE6E2r0rMGdLK4= 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 1765374032994612.6241873405658; Wed, 10 Dec 2025 05:40:32 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKPu-0007dv-1v; Wed, 10 Dec 2025 08:39:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPj-0007Y9-Rc; Wed, 10 Dec 2025 08:39:33 -0500 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 1vTKPg-0001QX-FO; Wed, 10 Dec 2025 08:39:30 -0500 Received: from SJ2PR07CA0017.namprd07.prod.outlook.com (2603:10b6:a03:505::17) by BN7PPF62A0C9A68.namprd12.prod.outlook.com (2603:10b6:40f:fc02::6d2) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.9; Wed, 10 Dec 2025 13:39:18 +0000 Received: from CO1PEPF000075F0.namprd03.prod.outlook.com (2603:10b6:a03:505:cafe::ff) by SJ2PR07CA0017.outlook.office365.com (2603:10b6:a03:505::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.7 via Frontend Transport; Wed, 10 Dec 2025 13:39:16 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075F0.mail.protection.outlook.com (10.167.249.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:18 +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; Wed, 10 Dec 2025 05:39:01 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:38:58 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wAQ19rowxGSHKfvhz2vsdmoXlCRkbH/Di8KijR4XDaL8lEzcp5LMzJ83W1c4IoKcT+G63XSDwsZL5NiNuO8V6zQ0waLO9gLZshKtaIrP4Mt5hSfvqwFCDj0zuuOnt86iD6Gf9ysZPSgFMCIxtpMVcIy1ZaQLwjOqVg91Olue+3b9bZ+9IqO3fQdUtJWa2UZgumaYU2sDPEOLP6oohPIjjb0titEQlLNaViSaQQFj9WmBiS0wz3QHuZoNhyBI58xns3zEUNzmn0FrrmkbFs3FMLc0SAQ6/uw8PA1PtH4yTNPujYAMZoU0+cYqrujsavR0nm4DZVD6Z4N5rRmR+1U0Gg== 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=GQWQ0qn1WY8pahQUPzCzZCaJ0GsTBV9miUpC51umYRg=; b=qFdcSWOBx3eeT31g0NzkRO5Y8y4ifk8LPkpXIXQsgFsc1t6+TPHG8SiZ0ZK92sArRMqNEc1Q0gTfPyCSpEcBlgcG4B5XIX11fnf3grNzzLobIjENkPUTH1dMSj+UGP+cBwBvzbAIDGLVwe6cq6fbKPWFUGMoypfOly10ds1VjWweOYfx/4e7EiXmTRjNmK/Kh6ABUkY884hlallBI04MW/TlOQ1RUkz60H4Ly3yfPfTqwtD+hxBYVRNo/+4PzQ02WxocGKojs1yDDaXCOE3BX374VG5h2wpQD/h9yJhtKPja/DOcZDWqQB+1bEKcPBfVgGWmE31DQttD+/hB0yKBUg== 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=GQWQ0qn1WY8pahQUPzCzZCaJ0GsTBV9miUpC51umYRg=; b=Y8jdvBrMtYq8OD0zeo32z5N+VNowrUW5baBS3HA47EVO3+8ecP7ISOAI7RAQ0c9iBIcGmHtpaV3CPr7tQ7MUWfHRsouZ8tXoniSkQsMdsYHh+4g81tNq8FWqY87MRS5bJECA55L0TDnHR0depBNfd/P1LdupoAqh6AGbKVWKA+zB9yKJnWxY/8N1mOC/powf91bg5pYzpePb4H/Ky1RK6sQ1846jwTcP21eMm1YGcF8q+IGNpX0W+5VeiOIAmUpIWjesOnCw/X9dPNkx+NaMNOYVrmqoEAGvYGjl9ThC8vEspFVB9x4w7G54VS93h50ryOxoX3SzomN+PIMpmLkktQ== 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: [RFC PATCH 12/16] hw/arm/tegra241-cmdqv: Add reset handler Date: Wed, 10 Dec 2025 13:37:33 +0000 Message-ID: <20251210133737.78257-13-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075F0:EE_|BN7PPF62A0C9A68:EE_ X-MS-Office365-Filtering-Correlation-Id: eda6874f-66a8-4c43-83a7-08de37f1846f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8b54iP95uHS5SlxqNpIGPPoGc4kz9653ZOCLQ6qr6HkPxD/C5X6/u00IKg3m?= =?us-ascii?Q?lK2KmmFpX/RO6MGGrNsBzN68zo9TsyQEwoR31q4tH5wYzPDH54R4xLJqijkG?= =?us-ascii?Q?pb/+ZlkcV1nxYNzLF0CUpbyWPk+fdutOKa8CTJxzp80p+vHKs1mE4eS/jMKy?= =?us-ascii?Q?KYiL9J4lMpklaFS3oypIaX44kjSbWPL3JTmZepXJiH3u5LajPq3XOBDCsAag?= =?us-ascii?Q?8aQNJaXtUgqvD0vbBd+l951venBe/iXMrSwDFmtd3g9Af0MuPPMe6otIhh+8?= =?us-ascii?Q?vvqgTax5DjBJyQFJSmkzYstZfhwuERN+FXF9sIhcBLoMrn0atXq8NnkkgsZF?= =?us-ascii?Q?ycHSco5+o83xQnePHcDRkEp2ElukyP5RNPEZtdwTdyH5+y+DVi5QMdwchUP1?= =?us-ascii?Q?kGNQfL05Tl0YbEN/qooUG1MtUj4qscjHr6NG7rBohKt1a2SIYc4UPD4t+PBj?= =?us-ascii?Q?S1MSyncRgoWiU9cBIP8lAxUmXzyqYm0FpUv3GJcIydrhCcxS4aU8wQ7iHsNH?= =?us-ascii?Q?FbIHiY81u8z04h1SvQP/xLc+XlZ9pHtFQzY+z/NcU+4fFOhKfWtJbxYprqqx?= =?us-ascii?Q?uClBNyXZf0eo2h8dwq+q2MOh876nq2dIzVxgOl9J/Q41sFF++uWhCjAsCicy?= =?us-ascii?Q?f2M5uoCUXNuCodby0yqbbZnmDOccEoWUnp3BMTyRWwiGOXzkOZKsZCmHkhh1?= =?us-ascii?Q?+DmR2xVe3IJeg5gn7oz2XbSwEWtvemh9YbHLi8l7YPp1I6dE+m8bYNEi2zTN?= =?us-ascii?Q?BMnr8ihSMnEtYaJe+hILeRN8Qm0wWgcSmgn38/8E73Etff7G/hnJqwn9QZzN?= =?us-ascii?Q?JIvDU2K+epHhd1P0Tp0P5VvcfQ9ZBnjJojZ9mZ/sWo57LMgsd7n2WqZNCwzW?= =?us-ascii?Q?oHANLW0YCJvNO8yqw8TuHfPhM7Xy1P9GcCG0JQt9jbaItx9ZxEoOSw3RGLXx?= =?us-ascii?Q?U3n7RTLPpccvh5A8VkZQFvE6+ed1WoTDkxrktWGqWDZH03H3DMJvNzGist8p?= =?us-ascii?Q?jxGh6XO6st4hN+kqfXQgHpzVTldQIVFGlqW+2arOvI477HwHYAJpLUIWvFlv?= =?us-ascii?Q?GmDB4aoty+QHiTd5AWQ0jpXfSy1fwsh5hdIg6jtlJwM0hxmQIb2Zodooh8+9?= =?us-ascii?Q?0KrKhxKRmyWwfqyyPOxj/vCL0qs8ZX/z3qZrufyaRBtSqtYwG+OXj/c9Aw+S?= =?us-ascii?Q?b2dCodwE2RABSZeg93gL9C5Q0Dtk0LCFcCBZcRym4COYyoL/VThCJyH7o3U5?= =?us-ascii?Q?HEsAyzN9XRkKPFARKaCo31QsF8xCRbn4sins9VUGPyXlsIaI+5D0avVecDh0?= =?us-ascii?Q?/pxpXvLzqEMO0h/gHPt/5m4Zt3E+vm27K+g1UV0R49lI9FhRInXINEOE+JOq?= =?us-ascii?Q?W7cW5+/KwqC4sLO1xRQO2P5XCXR2F+UJudci63ofr67bDHULkGjEW0poL8Ca?= =?us-ascii?Q?/dUHIjZlhDao4Mo2wgspP8WE2caJZF+xH4GXrca5DSoF/ubz4FhwnN+r6SZP?= =?us-ascii?Q?NAJFx5TE5zmb3z50EURzrGGeB8rvsxilNHatJLe4h9vSQCarFNiSDFkj+C5u?= =?us-ascii?Q?J83c9hWzqnLBDh/ZSqQ=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:18.0717 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eda6874f-66a8-4c43-83a7-08de37f1846f 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: CO1PEPF000075F0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PPF62A0C9A68 Received-SPF: softfail client-ip=2a01:111:f403:c007::2; envelope-from=skolothumtho@nvidia.com; helo=MW6PR02CU001.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: 1765374034501158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Introduce a reset handler for the Tegra241 CMDQV and initialize its register state. CMDQV gets initialized early during guest boot, hence the handler verifies that at least one cold-plugged device is attached to the associated vIOMMU before proceeding. This is required to retrieve host CMDQV info and to validate it against the QEMU implementation support. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/smmuv3.c | 1 + hw/arm/tegra241-cmdqv.c | 105 ++++++++++++++++++++++++++++++++++++++++ hw/arm/tegra241-cmdqv.h | 7 +++ hw/arm/trace-events | 1 + 4 files changed, 114 insertions(+) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 02e1a925a4..ec8687d39a 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1943,6 +1943,7 @@ static void smmu_reset_exit(Object *obj, ResetType ty= pe) =20 smmuv3_reset(s); smmuv3_accel_reset(s); + tegra241_cmdqv_reset(s); } =20 static bool smmu_validate_property(SMMUv3State *s, Error **errp) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 5b8a7bdff2..1f62b7627a 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -592,6 +592,111 @@ bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, Host= IOMMUDeviceIOMMUFD *idev, return true; } =20 +static void tegra241_cmdqv_init_regs(SMMUv3State *s, Tegra241CMDQV *cmdqv) +{ + SMMUv3AccelState *s_accel =3D s->s_accel; + uint32_t data_type =3D IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV; + struct iommu_hw_info_tegra241_cmdqv cmdqv_info; + SMMUv3AccelDevice *accel_dev; + Error *local_err =3D NULL; + uint64_t caps; + int i; + + if (QLIST_EMPTY(&s_accel->device_list)) { + error_report("tegra241-cmdqv=3Don: requires at least one cold-plug= ged " + "vfio-pci device"); + goto out_err; + } + + accel_dev =3D QLIST_FIRST(&s_accel->device_list); + if (!iommufd_backend_get_device_info(accel_dev->idev->iommufd, + accel_dev->idev->devid, + &data_type, &cmdqv_info, + sizeof(cmdqv_info), &caps, + NULL, &local_err)) { + error_append_hint(&local_err, "Failed to get Host CMDQV device inf= o"); + error_report_err(local_err); + goto out_err; + } + + if (data_type !=3D IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV) { + error_report("Wrong data type (%d) from Host CMDQV device info", + data_type); + goto out_err; + } + if (cmdqv_info.version !=3D TEGRA241_CMDQV_VERSION) { + error_report("Wrong version (%d) from Host CMDQV device info", + cmdqv_info.version); + goto out_err; + } + if (cmdqv_info.log2vcmdqs !=3D TEGRA241_CMDQV_NUM_CMDQ_LOG2) { + error_report("Wrong num of cmdqs (%d) from Host CMDQV device info", + cmdqv_info.version); + goto out_err; + } + if (cmdqv_info.log2vsids !=3D TEGRA241_CMDQV_NUM_SID_PER_VM_LOG2) { + error_report("Wrong num of SID per VM (%d) from Host CMDQV device = info", + cmdqv_info.version); + goto out_err; + } + + cmdqv->config =3D V_CONFIG_RESET; + cmdqv->param =3D + FIELD_DP32(cmdqv->param, PARAM, CMDQV_VER, TEGRA241_CMDQV_VERSION); + cmdqv->param =3D FIELD_DP32(cmdqv->param, PARAM, CMDQV_NUM_CMDQ_LOG2, + TEGRA241_CMDQV_NUM_CMDQ_LOG2); + cmdqv->param =3D FIELD_DP32(cmdqv->param, PARAM, CMDQV_NUM_SID_PER_VM_= LOG2, + TEGRA241_CMDQV_NUM_SID_PER_VM_LOG2); + trace_tegra241_cmdqv_init_regs(cmdqv->param); + cmdqv->status =3D R_STATUS_CMDQV_ENABLED_MASK; + for (i =3D 0; i < 2; i++) { + cmdqv->vi_err_map[i] =3D 0; + cmdqv->vi_int_mask[i] =3D 0; + cmdqv->cmdq_err_map[i] =3D 0; + } + cmdqv->vintf_config =3D 0; + cmdqv->vintf_status =3D 0; + for (i =3D 0; i < 4; i++) { + cmdqv->vintf_cmdq_err_map[i] =3D 0; + } + for (i =3D 0; i < 128; i++) { + cmdqv->cmdq_alloc_map[i] =3D 0; + cmdqv->vcmdq_cons_indx[i] =3D 0; + cmdqv->vcmdq_prod_indx[i] =3D 0; + cmdqv->vcmdq_config[i] =3D 0; + cmdqv->vcmdq_status[i] =3D 0; + cmdqv->vcmdq_gerror[i] =3D 0; + cmdqv->vcmdq_gerrorn[i] =3D 0; + cmdqv->vcmdq_base[i] =3D 0; + cmdqv->vcmdq_cons_indx_base[i] =3D 0; + } + return; + +out_err: + exit(1); +} + +void tegra241_cmdqv_reset(SMMUv3State *s) +{ + SMMUv3AccelState *s_accel =3D s->s_accel; + Tegra241CMDQV *cmdqv =3D s->cmdqv; + int i; + + if (!s_accel || !cmdqv) { + return; + } + + for (i =3D 127; i >=3D 0; i--) { + if (cmdqv->vcmdq[i]) { + iommufd_backend_free_id(s_accel->viommu.iommufd, + cmdqv->vcmdq[i]->hw_queue_id); + g_free(cmdqv->vcmdq[i]); + cmdqv->vcmdq[i] =3D NULL; + } + } + tegra241_cmdqv_init_regs(s, cmdqv); +} + void tegra241_cmdqv_init(SMMUv3State *s) { SysBusDevice *sbd =3D SYS_BUS_DEVICE(OBJECT(s)); diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h index 97eaef8a72..0e8729c0b0 100644 --- a/hw/arm/tegra241-cmdqv.h +++ b/hw/arm/tegra241-cmdqv.h @@ -13,6 +13,9 @@ #include "hw/registerfields.h" #include CONFIG_DEVICES =20 +#define TEGRA241_CMDQV_VERSION 0x1 +#define TEGRA241_CMDQV_NUM_CMDQ_LOG2 0x1 +#define TEGRA241_CMDQV_NUM_SID_PER_VM_LOG2 0x4 #define TEGRA241_CMDQV_IO_LEN 0x50000 =20 typedef struct Tegra241CMDQV { @@ -314,11 +317,15 @@ A_VINTFi_CONFIG(0) #ifdef CONFIG_TEGRA241_CMDQV bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *i= dev, uint32_t *out_viommu_id, Error **errp); +void tegra241_cmdqv_reset(SMMUv3State *s); void tegra241_cmdqv_init(SMMUv3State *s); #else static inline void tegra241_cmdqv_init(SMMUv3State *s) { } +static inline void tegra241_cmdqv_reset(SMMUv3State *s) +{ +} static inline bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev, uint32_t *out_viommu_id, Error **errp) diff --git a/hw/arm/trace-events b/hw/arm/trace-events index 76bda0efef..ef495c040c 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -74,6 +74,7 @@ smmuv3_accel_install_ste(uint32_t vsid, const char * type= , uint32_t hwpt_id) "vS =20 # tegra241-cmdqv tegra241_cmdqv_err_map(uint32_t map3, uint32_t map2, uint32_t map1, uint32= _t map0) "hw irq received. error (hex) maps: %04X:%04X:%04X:%04X" +tegra241_cmdqv_init_regs(uint32_t param) "hw info received. param: 0x%04X" =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 Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374020; cv=pass; d=zohomail.com; s=zohoarc; b=GaoSW1S5DqBONEoAV7MzUGh2Xg/mXhhLGa2+TKFy0zMhQVaFJfu56YyCMFJoKaEG18zM5py8xAjYWpqN+IvS5Ks71VDhsGMrCkVyzRyf7ctyx+tNLu9R46dELpNi9LbKtTvisi2a+lIfQMRv893wMWgzS1hx4TQDZ+XGtydU4iI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374020; 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=TybDKc9IbYuymdCdNUTbM4eSP4dUqUf/vNRspvui12Y=; b=gvvDVzA9NY548XHx+scCzNpDSjKAOcv74SoFGKWEn3piOBKyJfGA9Rd01nXGFDgC+KtLLLpIrjSZkTJXc01sbOOSgHiIZPgwZSZn/0nrggXCWYy0A3QTYnMA206YtFzz9MxN6ZV+mmZZV5lhYBoaSzHPXRGMq7yUk8LfjBembrA= 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 1765374020373136.74742558056778; Wed, 10 Dec 2025 05:40:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKQB-0007oz-HJ; Wed, 10 Dec 2025 08:40:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPq-0007cX-3d; Wed, 10 Dec 2025 08:39:38 -0500 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 1vTKPn-0001SI-Vb; Wed, 10 Dec 2025 08:39:37 -0500 Received: from BY5PR20CA0009.namprd20.prod.outlook.com (2603:10b6:a03:1f4::22) by DM4PR12MB5820.namprd12.prod.outlook.com (2603:10b6:8:64::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.6; Wed, 10 Dec 2025 13:39:28 +0000 Received: from MWH0EPF000A6735.namprd04.prod.outlook.com (2603:10b6:a03:1f4:cafe::5a) by BY5PR20CA0009.outlook.office365.com (2603:10b6:a03:1f4::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.6 via Frontend Transport; Wed, 10 Dec 2025 13:39:27 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000A6735.mail.protection.outlook.com (10.167.249.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Wed, 10 Dec 2025 13:39: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.2562.20; Wed, 10 Dec 2025 05:39:06 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:39:03 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F43+jdAue1rn6jtiKImhxL8L35qWriDdz9a+X1JOFZulrg5lMgS3VrrXmhdVVjuGie485Lvzf/tcYPZpjf9i6/e374NbWkqZLIqarci+z0wUnUMngR5S4b4PSJ809oNtY7IKDEeSKjnB1JZXPHuC+RlpBEZG5AhxgKImiU27rRbcahrZS8Hw39EWrqdG8oK7v08ffxoqTkmt6nke1fJBCNXfLiz/yt1w9a34Wk6/5z6FPehz6JnZRKd5D85QMtg2ySWHrRMHOQVR/wXhT9PUyo6v9hZGe3HY8BA6XZSqD31orL0MnR0AQcej3+r/OHjRaPR0w9enbEGrk4GrnCtnVg== 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=TybDKc9IbYuymdCdNUTbM4eSP4dUqUf/vNRspvui12Y=; b=IEg0/X8jbCqxodGw0L4UwNXXvG69IAhCiXArFBvBiS1ByLV1MDgbtsXcjNmS2FSRrg3H4P4ooGgLWsvCUIlZUMwXzAsGrdbLuEcJBTHwSBrUxWh0SMaR3LWIgVLnV1qP9edJDPbW4cl2x0SJM3ajdhql/bp7Etj0NBVdLR1lPKDTKDwk1V/FX+si4f9L6FxdzkaK9afzY5uzlp81CLx2zcA8EzUpnZyCBJcAIyFk8MbAP9BMFZV+/ztDg5zJpjl0OjaCO3XvSyXAO1IJqn/J9Q0/y2Jio3CH6djAOwVKXrE/QUu0LFnF5t3vKGeKM+mehvvNjvBasWNtGfvBkBNFhA== 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=TybDKc9IbYuymdCdNUTbM4eSP4dUqUf/vNRspvui12Y=; b=gUt4D+xAFeT1RRCDwtuxhD1py/fuSZ3z79NWu72UPJ/Z+0ByEcgowyTcPieifn27J0tW9GiQP8GrIiW89Fj8Slo3tQxzbk6RrQlTyRI3uezMgpMaF6u+36ZcSOidugZJr3SKW06bHLvz8y0kyC2+ebzNT0oPAldt/2zzcOoMQxDeMt9fjzokKkhPJvryIKiFeysT4xvyDE9+HdIGiKTpN1xPFX1bK7185tcPFGbC4N/fT1WR90RsQ9WQFL+wPtGnTecpF/SNvmhBMDjONQ5oo+VsCbavu49sng0+h3iIBbI3lEn2WulZWxjcUrFcTXBgu+HgCWKP9OtEzNQo628ezw== 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: [RFC PATCH 13/16] hw/arm/tegra241-cmdqv: Limit queue size based on backend page size Date: Wed, 10 Dec 2025 13:37:34 +0000 Message-ID: <20251210133737.78257-14-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-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.230.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: MWH0EPF000A6735:EE_|DM4PR12MB5820:EE_ X-MS-Office365-Filtering-Correlation-Id: 1aff3870-bb35-402b-bc43-08de37f18a05 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QW5MK2NaeGN2RmRGSTM1bTkxZGRtTkhYQUxJSmZpcEtKYUdjb3I5VEc5ZC9D?= =?utf-8?B?MGhBOWtxTFlxcURHQ2ZRTHlUdytqQUt2ZkQrRWFta1I3SmZYWWRoS0JpZVFq?= =?utf-8?B?eHdBSW5HTjA3TXpsNU5yQytMb2tmUDhhS0xVK0YxVS9rUzVTaHpQeGM0Yy9O?= =?utf-8?B?WkFrSytyK3JOUUU5NitjeGEvcjB1SE1pTmhJRzVnV1NOVlg5NGhTUEVSa2dY?= =?utf-8?B?MmhmbzB3YVlhK01VVUxjTGtFZ0czUy81QngvdU9OK3Vuby80T1dOR09PTHAr?= =?utf-8?B?Uk9lSHh3SndRY2ZHNm5raGRXTk1rMGV2bnk5QlkrV0lwQVB1SzBDdXBxakFs?= =?utf-8?B?TnFmUi9DT0JVYjlzWnBHZjg4M0VuMHBhNGtEZWsyMm1UaVJ3bkwxMmhaQUtF?= =?utf-8?B?SmczRUFkOVpXU1BERnZuZDBVY29kNjR5WjdnU1pRL2pCclNycVcxSXg5djlM?= =?utf-8?B?dE4xZExqVG5vZ0dlT20ycmZ5QlMvTmRtK0pKN3pHeXovMkViQjE2NG1HSTBY?= =?utf-8?B?aTZyVmVneWJnMi90dkJXb1JXbjVuYUNvOVV0bWF4RzAvS0NJY2p2OUFsdmFq?= =?utf-8?B?TVNBNUFMYmUySW51MFIzN2N4d1hXd3JRM2ZKbnkvZi9YWE5XdmxIOWNqWFhl?= =?utf-8?B?SVgvK3VtRVdNTzR2T0dqSnpqTTNXb0ErZldhdHVlNjZZZUtxWklZMEI3Wm9n?= =?utf-8?B?OGRtN3ZjKzlLQ1plaE15amFwSm1IdnNKdHNJZUx3SW51VU1sT1RrMnF0bFJX?= =?utf-8?B?dE1IWmVFMVZzK05oQTh0UEUrK2pTY2ZHTytSOWdIN1cvbmRZSW1vbEp4M3RK?= =?utf-8?B?QjFsQ1JzaytIcGlHbFBhUmZuTTBGek54RU1STzdWYmZJZDJQQ2gxYnZTdldI?= =?utf-8?B?SUNHeU1JR3E4MjZ5WmgxTStZSlpRaEZmYVI2ZG83b0lNb2dvZVI1anA4V3FL?= =?utf-8?B?STlmQ3FzaTBOL0NYbTBLWldUOEE4eFhzR3lZL0VjaXdzODNaTEhZc0dJR2tC?= =?utf-8?B?UnlYaGY1aXJjVnRNbnZPUVg2cVp6VDV4UHBvdjE0b1BZME1xZDJDN3NxZnls?= =?utf-8?B?YW1nZGpJL0JWRjVWQWpCTjgrR2ZraThHUEZCeEhlR3BxQmRHbmdaWW1ITVZh?= =?utf-8?B?b1B6dkluMzZJWW56NDhtcm92cDc5QmtNRmhkQk9vNnlUVkpmV0VCWE5hTEVq?= =?utf-8?B?Z1JZZE00UVlWSXYvUlJBejRVRTZCaDUxdExRVWRjbUFnWnc0WDgzTUlZVGVV?= =?utf-8?B?eGFVMW0rRHl6cFN0OHhLZFVVcENhNFM2NjNIS1VTT205bGhZWGZRRm1vanl5?= =?utf-8?B?ekc0U2hidjV6L2sxeTFXV1U0R254aUhQRnFLcUp6d3FpQkxOcURHWVoxV0pk?= =?utf-8?B?cU16VC90SkZJSTZ6amhha2xDeHlFaEpFekRSN2dmNUtzczhwalVWMmJoQStQ?= =?utf-8?B?LzBnL0crbW9PV1BtSTlLY3g1eVFaNm5aVDRWS3RhN0RjRWJjRHh1ZFhVbkJo?= =?utf-8?B?N2t2NkNiYVVCYXpOQUhNNWVuOVMzVTVheGJvb0ZWeFJXVk5lRHpnejJ4Z08v?= =?utf-8?B?K3ZFVGd5TXZXS1RBenRiZzkxRUdSVTlyRzk0TjBnYmh5S2FGSmhTdzV1MW9x?= =?utf-8?B?cm9OaXJhUnAza254SkJ4NzNENXRENlA5dlJ1TWFDMjF3a3NMa3Jiek5wUGkr?= =?utf-8?B?elJ0TnA4TS9lR2h4R2QySlQvSkVPWERnaXNTSlBNWkpYMG9rdEpBRTUxNitL?= =?utf-8?B?UGNNbXNLc3NESE1zNW5xaG1YdUI4TXpJY0NCSXdIMDdsOE1EMEZoTEx2UUwy?= =?utf-8?B?OXYrcWhyV1ZSZ0g5Rk8xYWhlR3BzT1ZITmpmNDNSNnEzQlp0bzI5OSt0dTh2?= =?utf-8?B?SGRYb3FNUW5SbkJGd0laRlhGTlp1aDlSeUo1Q1RMM05tc0tlSURJMVFYeXY4?= =?utf-8?B?YUVXbjRJendpT25PZkYvditBRHdxcGtPNjgrNy9mdUdocVRpRmhEYnZpTGpJ?= =?utf-8?B?LzF3VGhuSG5VQktCM1dreHk2bWNDL3hPVVhJb0FLWk5rQThzWFRpMVh0QjEw?= =?utf-8?B?a215UHlMYUM5Yk5xRU92dk4rcjQrcGVMSk1ad1l0dkNVY3Z6YWo5Tm55bjEr?= =?utf-8?Q?PUjU=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:27.3912 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1aff3870-bb35-402b-bc43-08de37f18a05 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: MWH0EPF000A6735.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5820 Received-SPF: softfail 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: 1765374022542158500 From: Nicolin Chen CMDQV HW reads guest queue memory in its host physical address setup via IOMUUFD. This requires the guest queue memory isn't only contiguous in guest PA space but also in host PA space. With Tegra241 CMDQV enabled, we must only advertise a CMDQV size that the host can safely back with physically contiguous memory. Allowing a CMDQV larger than the host page size could cause the hardware to DMA across page boundaries leading to faults. Limit IDR1.CMDQS so the guest cannot configure a CMDQV that exceeds the host=E2=80=99s contiguous backing. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/tegra241-cmdqv.c | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/hw/arm/tegra241-cmdqv.c b/hw/arm/tegra241-cmdqv.c index 1f62b7627a..1996d899a1 100644 --- a/hw/arm/tegra241-cmdqv.c +++ b/hw/arm/tegra241-cmdqv.c @@ -11,10 +11,14 @@ #include "qemu/error-report.h" #include "qemu/log.h" #include "trace.h" +#include =20 #include "hw/arm/smmuv3.h" #include "hw/irq.h" #include "smmuv3-accel.h" +#include "smmuv3-internal.h" +#include "system/ramblock.h" +#include "exec/ramlist.h" #include "tegra241-cmdqv.h" =20 static bool tegra241_cmdqv_init_vcmdq_page0(Tegra241CMDQV *cmdqv, Error **= errp) @@ -592,6 +596,33 @@ bool tegra241_cmdqv_alloc_viommu(SMMUv3State *s, HostI= OMMUDeviceIOMMUFD *idev, return true; } =20 +static size_t tegra241_cmdqv_min_ram_pagesize(void) +{ + RAMBlock *rb; + size_t pg, min_pg =3D SIZE_MAX; + + RAMBLOCK_FOREACH(rb) { + MemoryRegion *mr =3D rb->mr; + + /* Only consider real RAM regions */ + if (!mr || !memory_region_is_ram(mr)) { + continue; + } + + /* Skip RAM regions that are not backed by a memory-backend */ + if (!object_dynamic_cast(mr->owner, TYPE_MEMORY_BACKEND)) { + continue; + } + + pg =3D qemu_ram_pagesize(rb); + if (pg && pg < min_pg) { + min_pg =3D pg; + } + } + + return (min_pg =3D=3D SIZE_MAX) ? qemu_real_host_page_size() : min_pg; +} + static void tegra241_cmdqv_init_regs(SMMUv3State *s, Tegra241CMDQV *cmdqv) { SMMUv3AccelState *s_accel =3D s->s_accel; @@ -599,7 +630,9 @@ static void tegra241_cmdqv_init_regs(SMMUv3State *s, Te= gra241CMDQV *cmdqv) struct iommu_hw_info_tegra241_cmdqv cmdqv_info; SMMUv3AccelDevice *accel_dev; Error *local_err =3D NULL; + size_t pgsize; uint64_t caps; + uint32_t val; int i; =20 if (QLIST_EMPTY(&s_accel->device_list)) { @@ -670,6 +703,16 @@ static void tegra241_cmdqv_init_regs(SMMUv3State *s, T= egra241CMDQV *cmdqv) cmdqv->vcmdq_base[i] =3D 0; cmdqv->vcmdq_cons_indx_base[i] =3D 0; } + + /* + * CMDQ must not cross a physical RAM backend page. Adjust CMDQS so the + * queue fits entirely within the smallest backend page size. + * FIXME: Migration support requires this to be taken care. + */ + pgsize =3D tegra241_cmdqv_min_ram_pagesize(); + val =3D FIELD_EX32(s->idr[1], IDR1, CMDQS); + s->idr[1] =3D FIELD_DP32(s->idr[1], IDR1, CMDQS, MIN(log2(pgsize) - 4,= val)); + return; =20 out_err: --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374072; cv=pass; d=zohomail.com; s=zohoarc; b=CsnHcGsgIKInYUzMGdSKJWNYZta6nVSxJf6paKAVPRAf9Z5oMjt+AsYrWTOXWGz+rYyO+oi5jmj9DyKMlZBwazNNABeeD6FZuHnyDRIICgUclDSAksGmB9TgC8Imre5KBqYyRfww7DhZYNojq7utbpOFi3KmGlcFKvwCYaYtNx0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374072; 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=RqUItNDWOFOhFJ7ZMdOdYilYD+yhQNOXV0sw/8agsSQ=; b=ClLHC0aaFAwsyRVcDd1EEKBTkjcK3mS8vjBgnpoJxEfeuq4IWEYXh5zL1fwU/cp6zqwtirc0b3t0ZM9+rkqBaPf5hG1tHTLoxufQ5c+Rrqzj+wEbdiGVlG1fq+fVrLMOGEXCiZnvrwHji2JYHEKKfy+/+EdScpd1jVwhCA0Ic5k= 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 1765374072363922.871305219772; Wed, 10 Dec 2025 05:41:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKQL-00084z-Uj; Wed, 10 Dec 2025 08:40:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPw-0007i4-23; Wed, 10 Dec 2025 08:39:45 -0500 Received: from mail-westusazlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c000::1] helo=BYAPR05CU005.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPs-0001Sw-7a; Wed, 10 Dec 2025 08:39:43 -0500 Received: from SJ0PR13CA0064.namprd13.prod.outlook.com (2603:10b6:a03:2c4::9) by MW4PR12MB6801.namprd12.prod.outlook.com (2603:10b6:303:1e8::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.6; Wed, 10 Dec 2025 13:39:32 +0000 Received: from MWH0EPF000A6731.namprd04.prod.outlook.com (2603:10b6:a03:2c4:cafe::55) by SJ0PR13CA0064.outlook.office365.com (2603:10b6:a03:2c4::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:32 +0000 Received: from mail.nvidia.com (216.228.117.161) by MWH0EPF000A6731.mail.protection.outlook.com (10.167.249.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.4 via Frontend Transport; Wed, 10 Dec 2025 13:39: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.2562.20; Wed, 10 Dec 2025 05:39:09 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:39:07 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XmD1V6ExYj6jG0w5dHHfrLI6ERF7719svjalAddHtQTg73izAmYNvWLmsyhQRS1/mD6pQnppxNVQygGq+irRXX033TAN+TiJ9M4NhFFCA9000of3PtWoD5kmWAwiPwwdJpkigTG0Qwe78bVfFGr8HyrHDKqbSjpQTz8uWCubq3vrmk2g7baaN/Ve6b9l/fEJa8xZi9Hd3pmB/8PX9WjRpQxzEVwwF4P6k/Slh7YkTBtVBglQpz1ok9A1Y2vVDBVQpnftrBnoEaUsmh2Aybn+VOmz+4366/rM8N/CALb5XVrxvpQqfqM2mpq9ponuMZa1FA+aoC0gGY67IlAxgIWgfA== 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=RqUItNDWOFOhFJ7ZMdOdYilYD+yhQNOXV0sw/8agsSQ=; b=po7n+y210aX6rZ9kPp0AI+4ZwLbZVKfQIqUcygqZR8/tmVE79pDiVBWgmcTgBPhGtTXLlV63qEGXKXBlsPh0JLL/ab3N8ZYO1cNTEHPq6R5cO+WGEvwLDN4PEoJvKQJFZVlhGBb9kyctEjZu+qz1lBZZi+J1EIjV3ceYlCwl5cU1xQhpV/r885wPet4euWdL2i5L8H2zeHmGNZOpYOQxjSB96tFUEa+zL5s4rrisPJpWo3SEkOdoH3Iv6EqzYY5mZbtT3NtN4UP5cvmIc/mdaRvP/FZt7Ex9PdqrXtYvB+MZXBtUY0jJvx7/aYDXw94E3BHnD4mlSFi5SPJ2Regjmw== 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=RqUItNDWOFOhFJ7ZMdOdYilYD+yhQNOXV0sw/8agsSQ=; b=Fj2SGecxDLoVsC21gYSTcZBNIMlEJrd6XHNdYC1WbyVIul7eP9A52G8TDVo/OO2fkQ9rYqy4YJPXL+tdi8DeCJLWgOMG/tthe6Hnk6SSvbc1k37Zxpbgd+V9NAgedbz2WY/h0GcGJ/MXsn8i+y+jM3TgkgGotG/r/TDjCtfz65B8fs+GwjntRAIqSPxVTfCH52ZEkXZE1DN9Y1MIgj0lNZ4CMdlkymzK7UU+kPr4b4SfvQDqQb3MOT0SkBhV2gxo9nBGKHCMdG9E2XxtIi/r6SFzSiDutmSCsoJj2/TuvVNRzgFECPKhETJPUsWgBFlNBVeWR1jAgRqJRDfAXG9kBg== 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: [RFC PATCH 14/16] virt-acpi-build: Rename AcpiIortSMMUv3Dev to AcpiSMMUv3Dev Date: Wed, 10 Dec 2025 13:37:35 +0000 Message-ID: <20251210133737.78257-15-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: MWH0EPF000A6731:EE_|MW4PR12MB6801:EE_ X-MS-Office365-Filtering-Correlation-Id: e0131c7c-9890-435e-80b1-08de37f18cb8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?1N0yZYbN+Zb9Qzz8NdNcHiSRvVTmYoEDAnvK65TxIk7FnONWXgpNbBnFLJfK?= =?us-ascii?Q?yZI6WYjNQPeiq0ce87vfdReFLHv9/8KuJRepcaDHqqM3hv7D52PQ1r1VEnbl?= =?us-ascii?Q?qNXwlM3/fnL3GVxAos/wXSbF0bPz+5LsdNjnifcgZpioJ6R5CHhl3zy41PVy?= =?us-ascii?Q?2PB8+SDMxbHG7KErnKduZGcAMeFMKBiUZ5D3h2KyF9KncWk7TRIEO9LQjOeL?= =?us-ascii?Q?ucZLy9hDtV6UBsfzhTviZBNctvWJPgnzkS8XFvk3LUw2023LuUh0Pq/C/wmU?= =?us-ascii?Q?vQKcQQFAfpsH+yD7u5W2sPiRy/GZkRNUBWzXtY3J0r/ntffOPsToLTWzEzsh?= =?us-ascii?Q?7I5PXn/CNwja/yduxz8UBuTN871HKYpCMYvvS8rlOfdEnx3KFNUs+5voJ1VZ?= =?us-ascii?Q?UBKp+5+4lA2O6iOEcWpuoE8+E6e7TTNqkWxMWZ7mP7Bu9imw1n32rVUAC7tP?= =?us-ascii?Q?S1corM32ZzrCUHlTpT4TzpUzmoR3AEX4eiz5XqQbIf/xHpQDPs5lukUsuQrX?= =?us-ascii?Q?RLmFPwCj3GemhaJ//RQETLf1ylpn0raNTAcSDMh6C/JV3KiFagzw60XFg5pP?= =?us-ascii?Q?Mj7gSU5dTvCXBk3+bl3BuY+247g7JPnY2/yxJSXNM760q94WQQAXeiluUNLq?= =?us-ascii?Q?Ib17XahtrV+JvBPjOPSrd6weW2MH0eh9I+oLRlxzTHT/msRWLBeLV/M8fN9j?= =?us-ascii?Q?qOLuYnMe7871kVukn1O1JGMxxIGj2R/QP0Uj5NV334m9qOsz77qLuGvO7Kvh?= =?us-ascii?Q?rSrElsA9YbdhkqRvZ9DbJLhATsrGniqEG3PGwymuhxlyJyGnyYIYy8aqwEAh?= =?us-ascii?Q?PJAWmfqsvSm2/GiGE+5881mn4hLfYCHY96iQGQoYMzbGnfqTFizacKgfk3/B?= =?us-ascii?Q?Oh4uZfLuQbfVqM/8FfmmcTiXRGqF35nC5YQg8Hxcf/S35disTAJGFrA0ncwP?= =?us-ascii?Q?y2lUj78gyebnfZJWQCxJfX8W42awsOF/dxkrTbOchzHmKREsRRa1K9Ny2SJ8?= =?us-ascii?Q?db5pKop/49UAU7bj8mon3nSQiVcCjtPbhdA/t+MdXXS0KuTQREBLK4CdbOz9?= =?us-ascii?Q?fhcLIUV5LqA7HQDDxRL2jKfRBEuGXVepviPDJsl4lZc9buC2yXZ8n99o0CvD?= =?us-ascii?Q?XmGzq+tzuOfrcJY/p9rtn/fZfiZK+xd9eMIPtbb5kps/2wqyN9nJs4K1v+Ee?= =?us-ascii?Q?FTkoRRFemW6smtgG8mTOebM4SFw7YdBeUrYinN4GSYz0gyHjMsmmD9dMbZTE?= =?us-ascii?Q?17Z4TH7LRGOCheot8nYLVFyA1IpZi7bSz6uJCKCw9JiOu/xZMAxs+IoFrVg0?= =?us-ascii?Q?HKzWGqP2DYXtx9pNB+cYnsmp6DjRGJYtBKSI+Jp/BBLdNXMAx3bEgXuhpXAG?= =?us-ascii?Q?2xEQmy+kV3LRcMaxcAfLtT76XeoY5PqWVSv7Gt6fY/m60t5tXb2YVs6evo/6?= =?us-ascii?Q?8T7BYP/6dgo+YCkMaBAowzWeVMunu+BgQ0azlNkYlMGYdMy3jTTi+HfTy0Fe?= =?us-ascii?Q?RCFSxmqbYgZS2cXLRzcGLm6ah/XUPDu3ZD1Qep5M7SbZGis7h10g0Q08i4jA?= =?us-ascii?Q?gFj/Fd50CqNiPHdCUuA=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:31.9357 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0131c7c-9890-435e-80b1-08de37f18cb8 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: MWH0EPF000A6731.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6801 Received-SPF: softfail client-ip=2a01:111:f403:c000::1; envelope-from=skolothumtho@nvidia.com; helo=BYAPR05CU005.outbound.protection.outlook.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.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: 1765374072738158500 Content-Type: text/plain; charset="utf-8" Rename struct AcpiIortSMMUv3Dev to AcpiSMMUv3Dev so that it is not specific to IORT. Subsequent Tegra241 CMDQV support patch will use the same struct to build CMDQV DSDT support as well. No functional changes intended. Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen --- hw/arm/virt-acpi-build.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 1e3779991e..4f8d36dae0 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -339,7 +339,7 @@ static int iort_idmap_compare(gconstpointer a, gconstpo= inter b) return idmap_a->input_base - idmap_b->input_base; } =20 -typedef struct AcpiIortSMMUv3Dev { +typedef struct AcpiSMMUv3Dev { int irq; hwaddr base; GArray *rc_smmu_idmaps; @@ -347,16 +347,16 @@ typedef struct AcpiIortSMMUv3Dev { size_t offset; bool accel; bool ats; -} AcpiIortSMMUv3Dev; +} AcpiSMMUv3Dev; =20 /* - * Populate the struct AcpiIortSMMUv3Dev for the legacy SMMUv3 and + * Populate the struct AcpiSMMUv3Dev for the legacy SMMUv3 and * return the total number of associated idmaps. */ static int populate_smmuv3_legacy_dev(GArray *sdev_blob) { VirtMachineState *vms =3D VIRT_MACHINE(qdev_get_machine()); - AcpiIortSMMUv3Dev sdev; + AcpiSMMUv3Dev sdev; =20 sdev.rc_smmu_idmaps =3D g_array_new(false, true, sizeof(AcpiIortIdMapp= ing)); object_child_foreach_recursive(object_get_root(), iort_host_bridges, @@ -376,8 +376,8 @@ static int populate_smmuv3_legacy_dev(GArray *sdev_blob) =20 static int smmuv3_dev_idmap_compare(gconstpointer a, gconstpointer b) { - AcpiIortSMMUv3Dev *sdev_a =3D (AcpiIortSMMUv3Dev *)a; - AcpiIortSMMUv3Dev *sdev_b =3D (AcpiIortSMMUv3Dev *)b; + AcpiSMMUv3Dev *sdev_a =3D (AcpiSMMUv3Dev *)a; + AcpiSMMUv3Dev *sdev_b =3D (AcpiSMMUv3Dev *)b; AcpiIortIdMapping *map_a =3D &g_array_index(sdev_a->rc_smmu_idmaps, AcpiIortIdMapping, 0); AcpiIortIdMapping *map_b =3D &g_array_index(sdev_b->rc_smmu_idmaps, @@ -391,7 +391,7 @@ static int iort_smmuv3_devices(Object *obj, void *opaqu= e) GArray *sdev_blob =3D opaque; AcpiIortIdMapping idmap; PlatformBusDevice *pbus; - AcpiIortSMMUv3Dev sdev; + AcpiSMMUv3Dev sdev; int min_bus, max_bus; SysBusDevice *sbdev; PCIBus *bus; @@ -421,7 +421,7 @@ static int iort_smmuv3_devices(Object *obj, void *opaqu= e) } =20 /* - * Populate the struct AcpiIortSMMUv3Dev for all SMMUv3 devices and + * Populate the struct AcpiSMMUv3Dev for all SMMUv3 devices and * return the total number of idmaps. */ static int populate_smmuv3_dev(GArray *sdev_blob) @@ -442,10 +442,10 @@ static void create_rc_its_idmaps(GArray *its_idmaps, = GArray *smmuv3_devs) { AcpiIortIdMapping *idmap; AcpiIortIdMapping next_range =3D {0}; - AcpiIortSMMUv3Dev *sdev; + AcpiSMMUv3Dev *sdev; =20 for (int i =3D 0; i < smmuv3_devs->len; i++) { - sdev =3D &g_array_index(smmuv3_devs, AcpiIortSMMUv3Dev, i); + sdev =3D &g_array_index(smmuv3_devs, AcpiSMMUv3Dev, i); /* * Based on the RID ranges that are directed to the SMMU, determin= e the * bypassed RID ranges, i.e., the ones that are directed to the ITS @@ -479,7 +479,7 @@ static void create_rc_its_idmaps(GArray *its_idmaps, GA= rray *smmuv3_devs) static void build_iort_rmr_nodes(GArray *table_data, GArray *smmuv3_devices, uint32_t = *id) { - AcpiIortSMMUv3Dev *sdev; + AcpiSMMUv3Dev *sdev; AcpiIortIdMapping *idmap; int i; =20 @@ -487,7 +487,7 @@ build_iort_rmr_nodes(GArray *table_data, GArray *smmuv3= _devices, uint32_t *id) uint16_t rmr_len; int bdf; =20 - sdev =3D &g_array_index(smmuv3_devices, AcpiIortSMMUv3Dev, i); + sdev =3D &g_array_index(smmuv3_devices, AcpiSMMUv3Dev, i); if (!sdev->accel) { continue; } @@ -544,13 +544,13 @@ static void build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) { int i, nb_nodes, rc_mapping_count; - AcpiIortSMMUv3Dev *sdev; + AcpiSMMUv3Dev *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; - GArray *smmuv3_devs =3D g_array_new(false, true, sizeof(AcpiIortSMMUv3= Dev)); + GArray *smmuv3_devs =3D g_array_new(false, true, sizeof(AcpiSMMUv3Dev)= ); GArray *rc_its_idmaps =3D g_array_new(false, true, sizeof(AcpiIortIdMa= pping)); =20 AcpiTable table =3D { .sig =3D "IORT", .rev =3D 5, .oem_id =3D vms->oe= m_id, @@ -581,7 +581,7 @@ 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); + sdev =3D &g_array_index(smmuv3_devs, AcpiSMMUv3Dev, i); if (sdev->ats) { ats_needed =3D true; } @@ -620,7 +620,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) } =20 for (i =3D 0; i < num_smmus; i++) { - sdev =3D &g_array_index(smmuv3_devs, AcpiIortSMMUv3Dev, i); + sdev =3D &g_array_index(smmuv3_devs, AcpiSMMUv3Dev, i); int smmu_mapping_count, offset_to_id_array; int irq =3D sdev->irq; =20 @@ -699,7 +699,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) AcpiIortIdMapping *range; =20 for (i =3D 0; i < num_smmus; i++) { - sdev =3D &g_array_index(smmuv3_devs, AcpiIortSMMUv3Dev, i); + sdev =3D &g_array_index(smmuv3_devs, AcpiSMMUv3Dev, i); =20 /* * Map RIDs (input) from RC to SMMUv3 nodes: RC -> SMMUv3. @@ -742,7 +742,7 @@ build_iort(GArray *table_data, BIOSLinker *linker, Virt= MachineState *vms) acpi_table_end(linker, &table); g_array_free(rc_its_idmaps, true); for (i =3D 0; i < num_smmus; i++) { - sdev =3D &g_array_index(smmuv3_devs, AcpiIortSMMUv3Dev, i); + sdev =3D &g_array_index(smmuv3_devs, AcpiSMMUv3Dev, i); g_array_free(sdev->rc_smmu_idmaps, true); } g_array_free(smmuv3_devs, true); --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374145; cv=pass; d=zohomail.com; s=zohoarc; b=G7KbXXxMlF3lLxx3gJhzEAE09OClYG/JKexcgbzhQvCQ7ogwTyuosVHxT8a8AZdkg0YH0evNvSDaX/pV/04dTRjCKnJap8uy4WMm2YQHcdyZJUTh74fMoqmJShqq60L5aPgrMhLwsFOAwYvWIBA6yhhQtp0yxDkH9cadZtqtFeA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374145; 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=5uny+WV+qVKmWtHgnUlgx7gOya3GUysz2P/C8LtBCYc=; b=kdQ7L4+GwwgUico8Jr6Ga1k/rYexanIFdILjqvSP466CqKxyzSCPQ1leOUP/YdGyAvFZ1lLMb5Q5hebFTDWRCyNWAKRqZjqLIl3wz6sEBFAKVDX1HYfAevoQsK8SxKhsvkRL6tMNwC82U0cEt1CvRa6mDnQoGoJ9ZDQLoW/YIrc= 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 1765374145565425.89640002039766; Wed, 10 Dec 2025 05:42:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKQI-000834-1E; Wed, 10 Dec 2025 08:40:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPq-0007cY-3r; Wed, 10 Dec 2025 08:39:38 -0500 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 1vTKPn-0001SG-Kv; Wed, 10 Dec 2025 08:39:37 -0500 Received: from SJ2PR07CA0016.namprd07.prod.outlook.com (2603:10b6:a03:505::16) by DS7PR12MB8324.namprd12.prod.outlook.com (2603:10b6:8:ec::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.7; Wed, 10 Dec 2025 13:39:28 +0000 Received: from CO1PEPF000075F0.namprd03.prod.outlook.com (2603:10b6:a03:505:cafe::c6) by SJ2PR07CA0016.outlook.office365.com (2603:10b6:a03:505::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:28 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075F0.mail.protection.outlook.com (10.167.249.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:28 +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; Wed, 10 Dec 2025 05:39:13 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:39:10 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CmK0FlGLEy4Yj+EQd1MslrA7Bz93eU8/2ZOqi/DF4k/z6zPxlaAO2+PBAn3sF2ygMDAVURB+0pJbXfRbt7wz0biIwy2j/UMcXITImHET+Q7oOvAH6bEuT0lHx8Irhliyak/+i2Nr76NKbPHuRHcsjml6vjuB9Fq0Rnr95FzxL5+JDUf0oXWLVZ55/MNWlO3eiz+2L7SXYRyn4bJxS0kRIkL22F/WgFmxETa+7GBmT6YA80j2Itp6BQwZbNUgMqel2l6riDTxXj0lJWtvN6tus3Y2WfgOq4Z8StWqDV03U8NfPaUHaATbRUKCZVzw+BC97ZIkVUF5TiiULymy0NVmQw== 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=5uny+WV+qVKmWtHgnUlgx7gOya3GUysz2P/C8LtBCYc=; b=l5EiuuEvJ1RWGvkqCB2KkzzXPpWJNUGhZ096fwDeIQNrx/mHsUG4ytDCdge96D0FL2fPDbmQxQWJVYQ1lk7alt3F62nR1tf177EMrUdYFqx8JaWbIoAc5P4k89XoqXlBSNFC1THcyHzsKVxKwiEsz2auNpiB5wzhP/5CEZSow+ipGw/3SSl/RH5AMc+D/YTtsdkFrrOgwlJlJaz7oGKOModSjewxMXiaCuzQ/iKiMUqc3ouvnmhleM7glJ+7Ch5Ed9a4Q5Gu9+K2vv+p1zMqH/JQmG5LTCHVsFvtpOfM2YcN+pnXVHE43k0bdloapZVNvmjfwjgYF3egqxYFjM2g4Q== 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=5uny+WV+qVKmWtHgnUlgx7gOya3GUysz2P/C8LtBCYc=; b=c/jjFN9SVXXwilAhsQKMtYjmFllPlJaZcLjxHjSmiT83Ii1GWU0yRPA6zy8KKFeQXbdG//CyVQzs6GAq9RrTEYdYGW/zLVAQ1CQTiXCKrPfhk0V+UU1b8fovK+wrPI3+P7ULhYZKQ+u/Xljdf2sE5KfvMPPmF9L7050sj7LS98Vz1mcaWYyLxt+COTkqQhWbtAHvZ0k7pHv7UP8FyWwoyH6umNptGgaUhTn76LFyk3WisWMzLlmrIuqTa0aRd4oE1Kzk8QDevCOmLPtUU2A2cdQVpB885fgZ8CU7E53sGlr68oGlQazkTEvHhvIEa88qH5jF49anbwNZOJRFf4YRLg== 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: [RFC PATCH 15/16] hw/arm/virt-acpi: Advertise Tegra241 CMDQV nodes in DSDT Date: Wed, 10 Dec 2025 13:37:36 +0000 Message-ID: <20251210133737.78257-16-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-1-skolothumtho@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.126.230.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: CO1PEPF000075F0:EE_|DS7PR12MB8324:EE_ X-MS-Office365-Filtering-Correlation-Id: b164e070-91dd-4ed5-3eb4-08de37f18aba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Xw5c49GS98i61/ot1VUNngj5BOxMFO5ppYmNn16mS7Opr2G0JiE9VYU5KTiv?= =?us-ascii?Q?0Pi+dTCsSNdMw8yNly8EQWwsvRFfleti6OYliYzjvsU0Rf0bGbhr2E3gRpy/?= =?us-ascii?Q?gOI/PkPAM5XVyNbPvIvcQNAwUU/022A005IgXEIkivM4V3QHr3710RpEq+ge?= =?us-ascii?Q?4qyZdhQUH96SMUPDyZcVxzNbhjjO5n51x7I6qWSIDgzpDHOPW8jXPQP8GjMl?= =?us-ascii?Q?OYnfpBJahNTT+5QULxNlbT2Tj5T5u3qDVaSuz59ay4XT43zmMfSNTup5puzf?= =?us-ascii?Q?uufhOMMgMfaqrHo0VoEGfE95bS4n5TXymt0uYwl3TBjjkoH8xaRW4ieU9R4O?= =?us-ascii?Q?XbgF/r6g9TQmxw8so7TwyCt4om5Qi5XA0eb7PHcJhHIVn49u9Vqe7ygtL+ET?= =?us-ascii?Q?N97jtv8rKFPkRAZ22s0ZdkCFYiXz/k6wE4mqMhZxjIj+n8FLreuiGspZfM2e?= =?us-ascii?Q?frT+VK0znY6QmJmcjE8lXXQo3Aq4PnzD8U4rqB9xbF/3qLgCEEPWOAautjVi?= =?us-ascii?Q?l7PCQfk3PBI0r0EBXApt3UJEzSr1PNz5xODbqxQ330DlNmTXmg3dVtqjljoA?= =?us-ascii?Q?CeR+x2lMHjLFDSHugva8g0VYGpZk5RdarMYfCDz3Le9Qqsx9oKUeJGtvh1AG?= =?us-ascii?Q?NkfbIkL/363NQCiDDN+k7g4xLHbA3LBobipLpQp2j/p/1dTVFma06Wj6Kgql?= =?us-ascii?Q?C8tsshhqA3uY2ZtehDdH3iKI5oCg6TR9DmS9KgzSACFOLVoF0yQ5o7A7WqcF?= =?us-ascii?Q?9Oqe7N4LGwN15d0YffRE5Se3TQZEorLaGKnb7mnG0Pn+FPIdDzjttiVDu2t9?= =?us-ascii?Q?qR/7HKSkKm73dtA+aK1uJ12ZymShD+M/KN4an5bAxToDmGDy3oBZdcd3N/F9?= =?us-ascii?Q?5TJNwTYaNcb9Zorr8ojNSbxTQnFCK5jVG6hokTuANwZ4FA685M9upTSx6ZiH?= =?us-ascii?Q?ziJXFTcBKRiFRiJVgJFAFrcQDdFNU0Q7cSj+K9mAKrrW2yW57Ceon9vQV9bb?= =?us-ascii?Q?CEniWr8kJ9unZdfW1gaW6nZ54Hr+eXLtiDyzLVympbg764jF6rWXFfFJReRo?= =?us-ascii?Q?0MPoTxKR++5L26/6XFVeXCeGP0UfhpAyZZy8uL5N2DBjUzl/kCI9uaqWirTC?= =?us-ascii?Q?RQqaXcfLGYyCk7RFlfInD+oiaWmf6ZKeXrD67MUV5h+pcMJv70MxITnMOZO1?= =?us-ascii?Q?wCFQw4F33tF6ykH8a8jvi/+Rcg4njEVX/cOXVLRyAo0bck0pOOS3/T0tnAL1?= =?us-ascii?Q?JP/OFhKtKJ7oCbAd65qIOQkJYLK6SKhplKuLFe7dxolJgGIBbHC89uFSjjKS?= =?us-ascii?Q?SzUu3RBK+qCHLKkl8pnyqWAYtCB0O0iO0nclOlP53TCK5eH2UsgUBIIdoEIv?= =?us-ascii?Q?cotDlpbQ1c20lybVTjKb7eBfucH8Awjktzu7xiDPT9EzVsiyYggSN8jS0rQJ?= =?us-ascii?Q?H/nCXM6sYrAxGUVE1yvhMPmTcvOMKoPNsUQBA9NIn2lfzTwl++3HOdpSQelC?= =?us-ascii?Q?OldTntGNU23vNaXcal4sY7HSQan5e76MtPFyo6PATxEyGdRkMMEWvd13MvCF?= =?us-ascii?Q?7VCCNV96dsz8VfbmnDc=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)(376014)(1800799024)(36860700013); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:28.6299 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b164e070-91dd-4ed5-3eb4-08de37f18aba 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: CO1PEPF000075F0.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8324 Received-SPF: softfail 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: 1765374146859158500 Content-Type: text/plain; charset="utf-8" From: Nicolin Chen Add ACPI DSDT support for Tegra241 CMDQV when the SMMUv3 instance is created with tegra241-cmdqv=3Don. Signed-off-by: Nicolin Chen Signed-off-by: Shameer Kolothum --- hw/arm/trace-events | 1 + hw/arm/virt-acpi-build.c | 74 ++++++++++++++++++++++++++++++++++++++++ include/hw/arm/virt.h | 2 ++ 3 files changed, 77 insertions(+) diff --git a/hw/arm/trace-events b/hw/arm/trace-events index ef495c040c..e7e3ccfe9f 100644 --- a/hw/arm/trace-events +++ b/hw/arm/trace-events @@ -9,6 +9,7 @@ omap1_lpg_led(const char *onoff) "omap1 LPG: LED is %s" =20 # virt-acpi-build.c virt_acpi_setup(void) "No fw cfg or ACPI disabled. Bailing out." +virt_acpi_dsdt_tegra241_cmdqv(int smmu_id, uint64_t base, uint32_t irq) "D= SDT: add cmdqv node for (id=3D%d), base=3D0x%" PRIx64 ", irq=3D%d" =20 # smmu-common.c smmu_add_mr(const char *name) "%s" diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 4f8d36dae0..11494b29ad 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -1115,6 +1115,78 @@ static void build_fadt_rev6(GArray *table_data, BIOS= Linker *linker, build_fadt(table_data, linker, &fadt, vms->oem_id, vms->oem_table_id); } =20 +static int smmuv3_cmdqv_devices(Object *obj, void *opaque) +{ + VirtMachineState *vms =3D VIRT_MACHINE(qdev_get_machine()); + GArray *sdev_blob =3D opaque; + PlatformBusDevice *pbus; + AcpiSMMUv3Dev sdev; + SysBusDevice *sbdev; + + if (!object_dynamic_cast(obj, TYPE_ARM_SMMUV3)) { + return 0; + } + + if (!object_property_get_bool(obj, "tegra241-cmdqv", NULL)) { + return 0; + } + + 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, 1); + sdev.base +=3D vms->memmap[VIRT_PLATFORM_BUS].base; + sdev.irq =3D platform_bus_get_irqn(pbus, sbdev, NUM_SMMU_IRQS); + sdev.irq +=3D vms->irqmap[VIRT_PLATFORM_BUS]; + sdev.irq +=3D ARM_SPI_BASE; + g_array_append_val(sdev_blob, sdev); + return 0; +} + +static void acpi_dsdt_add_tegra241_cmdqv(Aml *scope, VirtMachineState *vms) +{ + GArray *smmuv3_devs =3D g_array_new(false, true, sizeof(AcpiSMMUv3Dev)= ); + int i; + + if (vms->legacy_smmuv3_present) { + return; + } + + object_child_foreach_recursive(object_get_root(), smmuv3_cmdqv_devices, + smmuv3_devs); + + for (i =3D 0; i < smmuv3_devs->len; i++) { + uint32_t identifier =3D i; + AcpiSMMUv3Dev *sdev; + Aml *dev, *crs, *addr; + + sdev =3D &g_array_index(smmuv3_devs, AcpiSMMUv3Dev, i); + + dev =3D aml_device("CV%.02u", identifier); + aml_append(dev, aml_name_decl("_HID", aml_string("NVDA200C"))); + if (vms->its) { + identifier++; + } + aml_append(dev, aml_name_decl("_UID", aml_int(identifier))); + aml_append(dev, aml_name_decl("_CCA", aml_int(1))); + + crs =3D aml_resource_template(); + addr =3D aml_qword_memory(AML_POS_DECODE, AML_MIN_FIXED, AML_MAX_F= IXED, + AML_CACHEABLE, AML_READ_WRITE, 0x0, sdev->= base, + sdev->base + TEGRA241_CMDQV_IO_LEN - 0x1, = 0x0, + TEGRA241_CMDQV_IO_LEN); + aml_append(crs, addr); + aml_append(crs, aml_interrupt(AML_CONSUMER, AML_EDGE, + AML_ACTIVE_HIGH, AML_EXCLUSIVE, + (uint32_t *)&sdev->irq, 1)); + aml_append(dev, aml_name_decl("_CRS", crs)); + + aml_append(scope, dev); + + trace_virt_acpi_dsdt_tegra241_cmdqv(identifier, sdev->base, sdev->= irq); + } + g_array_free(smmuv3_devs, true); +} + /* DSDT */ static void build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms) @@ -1179,6 +1251,8 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, Vi= rtMachineState *vms) acpi_dsdt_add_tpm(scope, vms); #endif =20 + acpi_dsdt_add_tegra241_cmdqv(scope, vms); + aml_append(dsdt, scope); =20 pci0_scope =3D aml_scope("\\_SB.PCI0"); diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h index efbc1758c5..842143cc85 100644 --- a/include/hw/arm/virt.h +++ b/include/hw/arm/virt.h @@ -46,6 +46,8 @@ #define NUM_VIRTIO_TRANSPORTS 32 #define NUM_SMMU_IRQS 4 =20 +#define TEGRA241_CMDQV_IO_LEN 0x50000 + /* See Linux kernel arch/arm64/include/asm/pvclock-abi.h */ #define PVTIME_SIZE_PER_CPU 64 =20 --=20 2.43.0 From nobody Mon Feb 9 08:59:05 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1 dmarc=pass fromdomain=nvidia.com); dmarc=pass(p=reject dis=none) header.from=nvidia.com ARC-Seal: i=2; a=rsa-sha256; t=1765374022; cv=pass; d=zohomail.com; s=zohoarc; b=kb0iEEnnI7Iyb9YD9vv5ew/qx5Z8PayeOWNPeywSBrQOMrus7SJFrLAUDBBIICkmXNXw5lvDBhF2sMooa8lWMFJz4Xy6toPLgRDk/J6/knJ3fYHx4pKPN8guKA2vtw+Z43K/Mlw1DzashDzhau2uS7s6ZN8dtoJZL+AlMchtqQ4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765374022; 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=aBsByYqOh5Lq6NJTlVHkkUFV6ULfIDML0Aiid/GVCjI=; b=h3PdoHAkvctPz/+uapU5TmqBLMynB8ktGkdhVaFVnn6AQujW79QFvOIWNeln4c9SKaVKk7kCnhQUR8wEx7QCGKDgKm+Fmd/W/yju2J0oPNC758YsECLbv+ye1ENBvk/5sjrXIChpFE6UXqC9JzNDMOWUr2Q8BZifjZYQEhf8CAQ= 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 1765374022104318.2823169392102; Wed, 10 Dec 2025 05:40:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vTKQD-0007ws-Ll; Wed, 10 Dec 2025 08:40:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vTKPv-0007hK-6Z; Wed, 10 Dec 2025 08:39:43 -0500 Received: from mail-centralusazlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c111::5] helo=DM1PR04CU001.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 1vTKPs-0001Ss-78; Wed, 10 Dec 2025 08:39:42 -0500 Received: from BY5PR17CA0006.namprd17.prod.outlook.com (2603:10b6:a03:1b8::19) by IA0PR12MB8424.namprd12.prod.outlook.com (2603:10b6:208:40c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9412.9; Wed, 10 Dec 2025 13:39:34 +0000 Received: from CO1PEPF000075F2.namprd03.prod.outlook.com (2603:10b6:a03:1b8:cafe::a3) by BY5PR17CA0006.outlook.office365.com (2603:10b6:a03:1b8::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9412.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:34 +0000 Received: from mail.nvidia.com (216.228.117.160) by CO1PEPF000075F2.mail.protection.outlook.com (10.167.249.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9388.8 via Frontend Transport; Wed, 10 Dec 2025 13:39:33 +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; Wed, 10 Dec 2025 05:39:17 -0800 Received: from NV-2Y5XW94.nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 10 Dec 2025 05:39:14 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pFhisAL7O/+EDKMaiNBeDyG1USjjI2WyBJGA8y2xaLFuN9IvA00dmB8lrgZjk8hVxDIzgw9A/GvU3GxlYKLh+lWA4S1XxDVVour2SgYbwyqHWVAUjlNjgKxJwPAo8KTwIYBWVzJp4RoDBsTfz0SLfW2V6o10YHeT+Eprv2oLTZtb9mZwBFFGAjvDwmxmG5ryGgv8QUSYtY3x37RgIbV2Vfjg6JkOQNkLm3O6tVfOSZr4ql89ZrSlgsp+LvFPV2ZjoSLiiJbitGxOeXsYfS7KTeJYgZ86g6Luf+mpSD3gMz/JusWI558lO0eoSmd/uhmlJdqq3XWzkww3ELhAOjZtPA== 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=aBsByYqOh5Lq6NJTlVHkkUFV6ULfIDML0Aiid/GVCjI=; b=c5kzyAisoYzq+X7/uhBkcTqohQXI17pKeTFyVq6g05dDzvekXlEWphLHQKDv6ZeCkj5VUG/yw2odrYnX/inPXB8thoo45YbCfN4QCrLaMYqOF10abRUE71SjXovVbRd4zKL8XdnKN0La7WKOufi1Km17dGnsDk5xr3tRYdkiuGAJg5ZJi/h+3NRDggwBiV2oTgnLHbHdU6ilQdJAM82QiUqVR53imkrwWvzI5gzsR5RuWAEzD1KaxknRLH9CBXkbIYrDf4uZehWFmirQmqOHy3UlBS/BOZD5QhkPfuHrTwvQncRBYcbbwTFQfNXECFl62k2lUOtVjwRP9drMii1oAQ== 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=aBsByYqOh5Lq6NJTlVHkkUFV6ULfIDML0Aiid/GVCjI=; b=XeQwCKoCe3Wr4BKn4meAWj/YednmXXsmCG6njsxNcgPC7hDVQkMjDcE+RVz2LdiCB+f0PEU9WZnrMQ/Bpa8WtwJ3ceQ3oTmqJwOu1z+Dt7bxBWEzg2bIuYO8O1qHybHxkJp2OTOrlf/B5r2lDyLDSTeViQNMTEv7FTum+RqSWjQ10WqEw4dEkNsvnrzMTcpCSvMksbr3ah/3tmrCpXEkoRaA9hnBeSkAags3JuADPBNpP6m9xdMttBhiEKkQrHQ8/frl00vsoBJWr2Skx87r+Zapz7SjGI25SN8qP6hXhYZC2LOinaNuK+Ofyo/chyNUiLoTk+uo92riNqD9L3WGJw== 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: [RFC PATCH 16/16] hw/arm/smmuv3: Add tegra241-cmdqv property for SMMUv3 device Date: Wed, 10 Dec 2025 13:37:37 +0000 Message-ID: <20251210133737.78257-17-skolothumtho@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251210133737.78257-1-skolothumtho@nvidia.com> References: <20251210133737.78257-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.230.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: CO1PEPF000075F2:EE_|IA0PR12MB8424:EE_ X-MS-Office365-Filtering-Correlation-Id: d908f1a5-b0d7-4bee-abc1-08de37f18dbe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?OHA1ZWQwcTJDcUN5bmhYMTlZekJMT1h6bTh0WkJCbDJGUWhVdXVBKzNjOGxM?= =?utf-8?B?U080V0RGRnh3S3I0dG5LMitqQVhXS29ETzlaYnlXT2U1am1IWVl4TlVoc3lt?= =?utf-8?B?Vmgzb0lodWNjd1JNSzQreC9JNnRwb3ZQUURIVVRWWU1ySGVKUk5YbUZTcEpV?= =?utf-8?B?eFQwUnZGQVlZTTJGejR3cTliZHBqM2I1dnpJYWcvekRBUWF5UDBBOXRlTkRy?= =?utf-8?B?L1VFOGdWZmVwbzI3Y1c3NkZFZVc1L0FoL0tpNkR0TE1taUNBQld0RlhPeFB2?= =?utf-8?B?R0ZodlowUVRpNlc3dWE0NXAyWmphT1NhQzRmc3Z2T2g2aEJVY2dGUm9CeGRC?= =?utf-8?B?MnM2OFZCeUJXSmJOQmt2WVhiRkZFemV4azBwUXJJSmVSeXBWd0s5M3Q2SkZi?= =?utf-8?B?aktXalhTV1UvRjY5bHRhV3hmS0MxQmIzakllckh3bU1paDRXdER1bGlNYndB?= =?utf-8?B?VDRSQkJ1RjBuUWVzTy9YVko0Y25HalUzQkkyZDBvSjdUSFE0YUVnTUluNFpn?= =?utf-8?B?azVZZ2s2UWN5SFdhdzdjc283Z2ljT1AvaUFKY1NObVpyYVRLQmt4aFVuTGp0?= =?utf-8?B?VTdGMExENmRFdTdIMSttMURlSC9OTkc3QVluQVlmNERuWkxDOGdWRnIyUVI1?= =?utf-8?B?c1l2MC9UYWdlOFJxZXZCVUFra0F6TjJjdjgxcXVHZXo1Y2xUVnNpUFFscWxp?= =?utf-8?B?WTBhRnh3L2daOEdBZTZXYk1PaVdKOSt4Mnlzakk1dTB1QUY5ZzhEZFA1Tm5K?= =?utf-8?B?U3VRdzU0anMyUTdYWWdyWEpNakhOMnlISVZSd1NUV3BaRkwxeXpjYjdpZStx?= =?utf-8?B?NFEyalYzNU9EMWpJbHF1eXZoWkFVTUJHNzYwMVhhTEIrV0xma3p5OWxmZlBF?= =?utf-8?B?alZWek1jUkFhRksxZGplYURReEJjbDMrbHhXVDhFYzlDTEpXelR5MUQ1ZENX?= =?utf-8?B?T0k5SXJIdFR6WGJRcXZJa2llakQ1NlNSVFV2eElON0crSmJsbUwweDdualpl?= =?utf-8?B?TG9TSlJlcnVZRlpoNkRZM1k4amNnMmNVUVF0QU5yWjAxM1NxVTdoZkNPeDJ1?= =?utf-8?B?U3ljcFhXU2NxQkxGbi92ajNteFR5a0l0N3lLMjlRQUZrak53NXB6dnl0Z0lL?= =?utf-8?B?OU1CVmgwUlNNdlBJM0pURGgwUERpNFY3dnphZHRTSFhlMVVTRkdjaUYrelQ2?= =?utf-8?B?Z2RBL1lqdzRwTjRYTU5rZU4wQXJ3NUUxL0Nhejh3dzV2TU9qNlFjNG9aOTds?= =?utf-8?B?bHRvNEc3V3lEalBxNWhmWGZrWXkxdEhqQzhDVDNwV0ZiOUg3QVBacDc0Uksr?= =?utf-8?B?dm90d1ZpUTJRWUtxa0VLbHNOdUJ2TUJjbnUwRStFem1Ib0JUaEFjQWROUDdt?= =?utf-8?B?bmlZR0V4aDRONU05NTN3eGd5SzdFRGdqVFArTWJ3NmdGenZDVlJhLzVSbkox?= =?utf-8?B?TVpOVWtWeGNRdlEwUW5zOXZsZDFXVWxCZXl3QlF5ZUV6VW9oZDBUYmZOUTdk?= =?utf-8?B?cllZeS9adTdvUlkzN28ybUJ2T05RelhsYzJnNkcrZUtzZ2RkaDlGZDdhN1NH?= =?utf-8?B?bDJITVJWcHZHNUhTR0tGUmJjRXNxdDFXVUZNeTIyclBrQVRJd1oza0RFeVIv?= =?utf-8?B?ZG5ZUTEvY1pQSGpCbmoyNXE3aENpeFNOS0laWWtLSThxQ3pPNFZLaGNpaXhZ?= =?utf-8?B?REdhOWpZMWJQcWRaMUp3a0VmaU15ODNOMGREWVhkQkUzK3pRUHM0eWE1SSs5?= =?utf-8?B?THVFSzdZTDFFdURqdllvbW5tZUp3bWZpeWVlSEhWb09UN1Blc29BVmRQTHd2?= =?utf-8?B?UDdDeUtlaHZZb2ZISWFpTTV3c00wZXlLL2dnR3Y2TXk1YndEbk8rQ1hGVDB6?= =?utf-8?B?NkUxY3FRVHJIQU1qdjlzU1UyUmIrdGQ5Vkw3RjJ4enFSSXdVM1RDT3VzbUVi?= =?utf-8?B?aHo4Y3VpZzF6UzJrSUVUZkVOOHlvN3B5VmFJUktwSk9DSHFiaFgzWEVGYUZJ?= =?utf-8?B?aVNOd2EzY3NBYkNiN1VBWDZ1cHBkc1lFcU9hYnNRVm9uVHRrNTlFODk0cElN?= =?utf-8?B?QmNxS3lqT0tIbEI0TzF2NVVsU2sxYUdiWndOc0huWXovalV3ekpPME5vaUZm?= =?utf-8?Q?Bpyg=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Dec 2025 13:39:33.6885 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d908f1a5-b0d7-4bee-abc1-08de37f18dbe 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: CO1PEPF000075F2.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8424 Received-SPF: softfail client-ip=2a01:111:f403:c111::5; envelope-from=skolothumtho@nvidia.com; helo=DM1PR04CU001.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: 1765374022524158500 Introduce a =E2=80=9Ctegra241-cmdqv=E2=80=9D property to enable Tegra241 CM= DQV support. This is only enabled for accelerated SMMUv3 devices. Signed-off-by: Shameer Kolothum Reviewed-by: Nicolin Chen --- hw/arm/smmuv3.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index ec8687d39a..58c35c2af3 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -1953,6 +1953,12 @@ static bool smmu_validate_property(SMMUv3State *s, E= rror **errp) error_setg(errp, "accel=3Don support not compiled in"); return false; } +#endif +#ifndef CONFIG_TEGRA241_CMDQ + if (s->tegra241_cmdqv) { + error_setg(errp, "tegra241_cmdqv=3Don support not compiled in"); + return false; + } #endif if (!s->accel) { if (!s->ril) { @@ -1971,6 +1977,10 @@ static bool smmu_validate_property(SMMUv3State *s, E= rror **errp) error_setg(errp, "pasid can only be enabled if accel=3Don"); return false; } + if (s->tegra241_cmdqv) { + error_setg(errp, "tegra241_cmdqv can only be enabled if accel= =3Don"); + return false; + } return true; } =20 @@ -2109,6 +2119,7 @@ static const Property smmuv3_properties[] =3D { DEFINE_PROP_BOOL("ats", SMMUv3State, ats, false), DEFINE_PROP_UINT8("oas", SMMUv3State, oas, 44), DEFINE_PROP_BOOL("pasid", SMMUv3State, pasid, false), + DEFINE_PROP_BOOL("tegra241-cmdqv", SMMUv3State, tegra241_cmdqv, false), }; =20 static void smmuv3_instance_init(Object *obj) @@ -2144,6 +2155,8 @@ static void smmuv3_class_init(ObjectClass *klass, con= st void *data) "are 44 or 48 bits. Defaults to 44 bits"); object_class_property_set_description(klass, "pasid", "Enable/disable PASID support (for accel=3Don)"); + object_class_property_set_description(klass, "tegra241-cmdqv", + "Enable/disable Tegra241 CMDQ-Virtualisation support (for accel=3D= on)"); } =20 static int smmuv3_notify_flag_changed(IOMMUMemoryRegion *iommu, --=20 2.43.0