From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1880B1519BC; Sat, 3 May 2025 04:08:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245294; cv=fail; b=gCoZu8weNpgNtVVOO3KCL0XosSiPuVywf36IrXKDS97esFsEz5TNunYgkHBtOrU9B1Ie9hTZEGQo71hdL3Dy8Sv+9+y1pYd2KIWOvZT6Rvk/4EyvBkB95SCbI1TCtcEoGkqPnpgXfAZUsS0UPM29UHckTw3eMtrbuVs4lT4GfWg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245294; c=relaxed/simple; bh=FbVB7XGaxLjhApnu/1fgkUg6vkXfoUrEj6utg0LkJzM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=mHsj/YD1zOSAmHrJdESMgzeB47CEKINParQR3QxB0BUbBw5qFQO4j9LJKSO6VIzMb9fqqNPBzt30HG8Qh4/B8iSEPwUvvUGAYtstzwdPFH3yL9m/O055wW73ZfhODUcKlZYhzD+CafIApjWzbhreUzw2hNYhnbeKeVMC8SBPohA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=BjPi4aLV; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="BjPi4aLV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T+S0BODj2YC5WsEwtK3+s9uqfXK6628zd/SFLdorf+1G5eX4DG77MgpZ2GEp/KW8IuoT8HQq5B2GqypSWrEDOThouLGaIWE0+ASGZZTZCTsKpto5CP785tMMHiw/yXaxsnd8Oagzlv/Q3/ZCzliA43zCxZg9iXjLFfd70A9c+1OQhSmE6r3nojfXPmjQWcgWfv2IcbsCAiMdKjC3Os0TC/+KfNXI2n058Q7VNImIHjyn9M5yZ/uGqYWVth+4IzP04p544yZy/uhjPhF7qWpolDYDJzFLhjajQjO4IlXpUIltEixG6dhKNqjaEP5UlazIuufNLWiRZNSyZL6yEfS3Nw== 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=/QBMiRWL0vM+gzpmMCQRNP/Clh7DhFE2t2TDroftIoo=; b=wPx2fny6lWwqU0Uz9SFLB/5GWzvsB/6Ri0xJkD2OtRvUChK0ztMjLOc9cfV2/qlSXHcFlRYoegFNsSrFEg4R/d4GUapCMlal7RKHTBMGVO/zL5kpoM/o9A413GKDMw52LAgUa5NFpKOmb7ohTNez8hi/HMlqoRXQTpnvnupC9BAydbIhF9Rr+D6Gkq3k3ndAX9G3Trh+QlAKcgfb9SVdUPptijvb1G2vFU0OhlXhJzWEOsRw7e81EnwiFZtY8M/itldtHOjkBE6wmU3VIk2WRUrMg/5YIFZFoE0C7+FD1hMG5M4cFhSNa7mySpPIlon7NPzjvqW8zOhmhImhHDwdqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=/QBMiRWL0vM+gzpmMCQRNP/Clh7DhFE2t2TDroftIoo=; b=BjPi4aLV7wrOEhWVyjv1EcC9bsISTMnt5T4XepkgL2tyXHRktkuMqC7I4lAzHYqC8nqgLzywxrbBFlPEBIlUhkptUV8+UaAAoCBStDX9kl/cjy4oi6okp849ozMjGa0AEzFN5U+ohOuVkalQOjCgB5PZmIOr5UAeO+ulzSF6Mf+Gy4WgV8CHyGhT861cRrRpX4OPy3TK9rN50J0o1Ywu3cnuiLZKPGolHjwL0J7kFQtCaReO+bucEVMm06mxNXSdRUjtGjk+1dsvKNA0v/dY4asln0pl8wrMQBFSYC61p0We4eFNxZ8BFdn6S7vHuMmlaeH8RmGVOtJWCbOyPTRRwg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:09 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:09 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , David Airlie , Simona Vetter Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes Subject: [PATCH v2 1/7] nova-core: doc: Add code comments related to devinit Date: Sat, 3 May 2025 00:07:53 -0400 Message-ID: <20250503040802.1411285-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR03CA0018.namprd03.prod.outlook.com (2603:10b6:208:23a::23) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: e1ff7481-bfaf-4eb7-a43e-08dd89f81d8e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Be1vg5X1ADYtxhmO9zbnAoQqv2zmpRROjosAmFyyO5oP3an64fzsXDwHRd0O?= =?us-ascii?Q?H/joJMLW5COGzlVBlNY6wzWXFDQ8ZOmJRZUs7T2swK2SlpianyOAOj06Ua/N?= =?us-ascii?Q?SZQ+OWZy65s+keF/hnSfzveuZNHj/ZmhdF4bJ9WbeyhFVeMieN0F23CBlArm?= =?us-ascii?Q?7XH4EQiqj6c3gXVQGM8U5nLLmCp9mIVP5ql9bwxXgOs/la6IT8uLzWUKTLwa?= =?us-ascii?Q?2j4vSwIZehHIo0sv8TPhtQ3AJnVWWH5yXbF6OmCHDdJlVF9EZTj5xHiSoROG?= =?us-ascii?Q?6DzulyoPjforvXtMQ2c7j68eWXXYKnfLH4JlvheyIwxR0HKR24YaZRrK7mLP?= =?us-ascii?Q?xAh8Cx7/cUjwXfI61OGtfnYwiBAY/1ROEWiQQ+A6l4cdNAq5jmRAyb/QIOqV?= =?us-ascii?Q?xASNz3TQToMU+e8p9Sml73LSHCxqVyIjQxKT4DdXLcPiowBcxnyl+IfOFyDI?= =?us-ascii?Q?SE/Az0GSckcn8MwxT7g4gcbA/LIUyneYS+yciBWyN2pP/g2fITtgrUcHW1I5?= =?us-ascii?Q?H+h/2BbpKF5I0dBKVPqoARHQeqbF5iUEV38a2C3lhD6m1ZUBRfZXs3rju9fW?= =?us-ascii?Q?cYRR+/YHWtSkVOQUQAZG8tafaJiWlimW9pyQhLAOafP8akhlbaBkBCosTI+h?= =?us-ascii?Q?xksAJrLY0+6mwV8ae0xhKnnOKaRSMmoNzBmma77QG68AnOTuKdW3Lrn42Ngb?= =?us-ascii?Q?lUFzWNT+7F5tbovusqdrg2Sfa82pPF4/qIUriaxpA23JTkDrF3kJq19V4AH/?= =?us-ascii?Q?5daMKWnzGRkL76LXPVLcEBRy6teZL5eC+Pavp9zBMKErZP1sofqE+w1UBDxD?= =?us-ascii?Q?Gs9e5GmFdWiqki+M9I2B4gddIBDYAuFbvS90hkMdvG8jFStI42Iqj01LNKov?= =?us-ascii?Q?Lpx+DSMwrm6eEd3pDZoqA1fzXKak6Dn/48MR3dsChXD4OA05k1R+DPinukO+?= =?us-ascii?Q?WbBy/7NIYYPi7buxAhtflZ17ISmexPFXdtLmEZcPkiD6U3Bra9e+yqyElZVz?= =?us-ascii?Q?a5qsu2Hc0ed5jkzgkjDli6HN7Xe/hPO0owMGzRPnUnFKuHaD6jt9YnwWSlRO?= =?us-ascii?Q?tX9rkY6XZNLoqwjX2tEwsrLjo41Nr+HV2/PR+TAocyi0rpIWWKcpxZrNM6Rv?= =?us-ascii?Q?ts6r+4bNlFDQu2OIpaFpwCIq4Eh5Ad2zit18sG5oWQ0dlm3SS6TxW+rEErYO?= =?us-ascii?Q?iEc3ApGBtfX6faSf6vieLhKojYbCcB+ixyQbH7snBXd9QSej6Ezttr0m7lsz?= =?us-ascii?Q?CQnQRLYCbXR1DGaTvPrDM7zSa6m0S3nCD0FTXiIrsCdaDDJD1V4P5jVEQdEf?= =?us-ascii?Q?ykrZxhD2WltcJM4qrsqbvPDWPqhy7hX3taojiFqptiv0iXNnSNTnVei9qw+H?= =?us-ascii?Q?5Wb82jpUFwGF0SBNOIL9ZCNiTz0iuVNwdIaIBkPGEODqo+IJ7wKMgMlN7YS4?= =?us-ascii?Q?oyBKCGRSUL4=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tJnA9HvmRTJsN0hFfolyPxSzVNn9WQXiEcPpT77P949lAwsENgVDB9n5lWJ7?= =?us-ascii?Q?vuygrwGUJplF2Mluao2kN/bFSG3jh8mur02P48cOyKBxIhVNOKJm39wc62Ee?= =?us-ascii?Q?FXuqB1LB4m6t7AGZuMBbq4BjqceN68wLwWOBEvz3wkwwCaQgzCfrGU9LKS3H?= =?us-ascii?Q?JmUKF9qzyk8s+hWdu4Yr/ZfRekX3aRHb9lHNkKqgg0xY0NCP6LOShwKlYoC6?= =?us-ascii?Q?Xjws/DbMXxMSt4ltUyhB83rJWWhEIaX/pzecm1RLxuO3gfXEvxDsiC35/s2o?= =?us-ascii?Q?ViFZ4CzyQSEXSrqNUI8mVGVz8tuOk2Je1GQ9n3yQzStle7IiKqWZxbI9u7as?= =?us-ascii?Q?NlpFihbBmsondDzbBNC+53brwPotrAYI4Ph9FYjdG/dhrtVKm7v4uXUiNghG?= =?us-ascii?Q?Z9xarQc5+rrZH1zeZSO7ajuAs4//jfE95uFqStow8HMfXnQpRR3nGOByiVCs?= =?us-ascii?Q?SEJx709gUMdZOtXB+9m2rQDo6J81nqQOLv6aYbzPJR0d3NF3uaXNbiQoOTBZ?= =?us-ascii?Q?mKPFGStj0CV9n0QRkZfgsO2jXCyjUoxlYHhB3B3XJd201wHr0END0CW++42x?= =?us-ascii?Q?Ymf+J/fhMUhvJ3I25NpuVMJvVdgunvo5diuZyc3mRnocloszDVOx+NYGzuc7?= =?us-ascii?Q?KizuA8wPesVaweo6RZZAwD36tZiNaIDQ9ere5kCqPo7TIRHlgx4CPbG39XQI?= =?us-ascii?Q?HgcNsi4U/MaGO8JScZJk0s/n+Ka9SYteSV5MhdmqlqgedzLiKb4zErtv4zED?= =?us-ascii?Q?BlXkJzNdk5USbVV7ghiCYlNUxfT6BfoGW72aEwdxXBv2G1n6Yt4YhCollONX?= =?us-ascii?Q?3Yefh4fzEGUOfQVj5fdLZhR81IP9CFWgGl7vvBX+cRAkAasTZkKxJmK1XAcv?= =?us-ascii?Q?8Nlj4r8BgthSFw3Ue2TTOQQE3edOhZk0W4pj4vxND2Ptjmwne7cVU7XYw/A7?= =?us-ascii?Q?9qigC3HMvMzCMjJV/ejHYy9w77SuNntXFxa9V9TvJ6gmLIl4G4wHe4Y7ZaMf?= =?us-ascii?Q?qD91+GtQMy4SY9nZJfoFLWDouJBSrnbA6aEka+S+slsftjuzTcUV+K/Dle8X?= =?us-ascii?Q?Rrc2Yy4VSIuw5BU5jhs6htHh8onGezeuDKST3cEiKf/xm5LWdKT71uG+5muB?= =?us-ascii?Q?jiw1rYITrDfubpOD7hpjNekBvWQ73E1XrMtTWvEY5Km1ITSqAorTk3Vnnlt0?= =?us-ascii?Q?zybWCo4ydNGFIQJ+sbs6Xof2Uzt1O5WCBqQmGOZ1PlyRlONuR/c7vGaePL1p?= =?us-ascii?Q?7UcbJ+uC4kC9/UNRL5AnFMEIHfDOXwOPS4QyR8uqVsGjxM7G/joPtRv9wINX?= =?us-ascii?Q?CrRXIU+L+bhkwen6SVlJdFkv3xve7N/GyBSn+X3rHwSsFxckX1CqkmWSSoX3?= =?us-ascii?Q?L+FMGagONtYFt/McH5Rzkg6tmhS8YsrEm/DWAL/wPqzJ4FMYP6Sc81qoEE1u?= =?us-ascii?Q?iBtykWQgLhRR4B1FH9P8F7nZ0vR73jbU6eKhnzFGzPP52gNTsx3vQubVI9it?= =?us-ascii?Q?xZmcGq34mscywBowz6km1EgYH9HHP3xgXNJe+qEOKq5GKV1pZuILvrm/WACn?= =?us-ascii?Q?7t7w9AxRQ6/EV2DdUiZyiIC5yMxgkeTh7fVYlldI?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: e1ff7481-bfaf-4eb7-a43e-08dd89f81d8e X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:09.8265 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Nnu/iTfc0x9V5w1UYR6xTXLUR+liWX3ZsPQRMkFegO0q+U7ioSCT0xinWDeYwtgiYoLP08Yxjv7S3r7FEW99Jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Content-Type: text/plain; charset="utf-8" Add several code comments to reduce acronym soup and explain how devinit ma= gic and bootflow works before driver loads. These are essential for debug and development of the nova driver. Signed-off-by: Joel Fernandes --- drivers/gpu/nova-core/devinit.rs | 34 ++++++++++++++++++++++++++++---- drivers/gpu/nova-core/regs.rs | 16 +++++++++++++-- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/nova-core/devinit.rs b/drivers/gpu/nova-core/devin= it.rs index 31a313a0652c..21fc9b96d498 100644 --- a/drivers/gpu/nova-core/devinit.rs +++ b/drivers/gpu/nova-core/devinit.rs @@ -1,6 +1,19 @@ // SPDX-License-Identifier: GPL-2.0 =20 //! Methods for device initialization. +//! +//! A clarification about devinit terminology: +//! devinit is a sequence of register read/writes after reset that perform= s tasks +//! such as: +//! 1. Programming VRAM memory controller timings. +//! 2. Power sequencing. +//! 3. Clock and PLL configuration. +//! 4. Thermal management. +//! +//! devinit itself is a 'script' which is interpreted by the PMU microcont= roller of +//! the GPU by an interpreter program. +//! +//! Note that the devinit sequence also needs to run during suspend/resume= at runtime. =20 use kernel::bindings; use kernel::devres::Devres; @@ -9,15 +22,28 @@ use crate::driver::Bar0; use crate::regs; =20 -/// Wait for devinit FW completion. +/// Wait for gfw (GPU firmware) boot completion signal (GFW_BOOT). /// -/// Upon reset, the GPU runs some firmware code to setup its core paramete= rs. Most of the GPU is -/// considered unusable until this step is completed, so it must be waited= on very early during -/// driver initialization. +/// Upon reset, several microcontrollers (such as PMU, SEC2, GSP etc) on t= he GPU run some GPU +/// firmware (gfw) code to setup its core parameters. Most of the GPU is c= onsidered unusable until +/// this step is completed, so it must be waited on very early during driv= er initialization. +/// +/// The GPU firmware (gfw) code includes several components that execute b= efore the driver loads. +/// These components are located in the VBIOS ROM and are executed in a se= quence on these different +/// microcontrollers. The devinit sequence itself runs on the PMU, and the= FWSEC runs on the GSP. +/// +/// This function specifically waits for a signal indicating core initiali= zation is complete before +/// which not much can be done. This signal is setup by the FWSEC running = on the GSP in Heavy-secured +/// mode. pub(crate) fn wait_gfw_boot_completion(bar: &Devres) -> Result<()> { let mut timeout =3D 2000; =20 loop { + // Before accessing the completion status in [`crate::regs::NV_PGC= 6_AON_SECURE_SCRATCH_GROUP_05`], + // we must first check [`crate::regs::NV_PGC6_AON_SECURE_SCRATCH_G= ROUP_05_PRIV_LEVEL_MASK`]. + // This is because the register is accessible only after secure fi= rmware (FWSEC) lowers the + // privilege level to allow CPU (LS/Light-secured) access. We can = only safely read the status + // register from CPU (LS/Light-secured) once mask indicates privil= ege level has been lowered. let gfw_booted =3D with_bar!( bar, diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index 3acec36f2d57..a2b506883654 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -74,8 +74,20 @@ pub(crate) fn chipset(self) -> Result { 31:4 hi_val as u32; }); =20 -/* PGC6 */ - +/* + * PGC6 register space. + * + * GC6 is a GPU low-power state where VRAM is in self-refresh and the GPU + * is powered down (except for power rails needed to keep self-refresh wor= king + * and important registers and hardware blocks). + * + * These scratch registers are "always-on" even in a low-power state and h= ave a + * designated group number. + */ + +// Privilege level mask register. +// It dictates whether the host CPU has privilege to access the +// PGC6_AON_SECURE_SCRATCH_GROUP_05 register (which it needs to read GFW_B= OOT). register!(NV_PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_LEVEL_MASK @ 0x00118128= { 0:0 read_protection_level0 as bool; }); --=20 2.43.0 From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48FE418DB34; Sat, 3 May 2025 04:08:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245298; cv=fail; b=JEdCjSd8N5u4jdAqXz0mRULqnvs8NSP0uB4C4KMcnOV7Y02YP0Cm6ok4YtwQVw37Q6mcOOJZhl7wBTyH0YhlKwaPpQfosUZFBQZ0HAJCEL+qU2N2mlWiM9dOVa0exKovcSniJkDIu+KeiJ5+zHXPqKuT76sl4qUysPmt2fVPXvY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245298; c=relaxed/simple; bh=NnnAiv1MddmBsek8dnh9fDVmSMkDct12oHLSKlBnQsg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FGw1RlCjGsRsQu5iRRy0RrbiUB8nLF9MQkhjrS0OOwV4E+uCrEcwW2NjHZ8QL7bL4olZZmAs/kwuvUPKOmLFnzzVCa2FutT9HY2mT6nsVBuaUhfXTtQMEvHYZcpQLT1LVWSMfsuRmla4bAasHsblmQiYbD0nnDrU8pgDbNLKHpQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=LzO6Y6qz; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="LzO6Y6qz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rvCVDcnNubOCKo2tuJHVKFjtO69Hsie+hh0Qqz1hVCavRoGYS8r+HhP0N/9b6C1lXUkHTIKxRYeakyd2hTBoYhuaBB/fdCGDd/B21MxdfbHUFROycWmHaGAZ0opl+zY9p17cbxhUinoSwB5epiYv+Pe7QDofo8ihl+hXEP9nhbJTAJwSUfGPRmnT5eSChekGbv7txGapv3twK5SSjc5sfqLVXRzRmH5HxI62c5RDA1DyBka1ZeGaH2LxEK91h15mGDQb73vMYp3fICVWmwepTEHVQJ/sLMOngieWwjCxZ3XhgynC9NvMdgTcEqDFueXsrRPG85lCczu/RTunBE/AYQ== 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=hlKV0K8/f5ZEHh/XHSiMpp9C3gpM8l40A0/ZCVjhKVk=; b=aSSGJyuF4JWM0fHwbDPO/JTY90oGIfleLxXHnzxv6FgxKe4psJMUAmWMTmW6AXxCpOSPWp4wG/nmHJzY5Ys4TpAvFogtFkbw+xHGo6N5pN7nDWT5mtpvxnGNBamIkSY4lxJUDhvzXTB9JloDcFjuKk/R9xmidPPgQGClJQoCyKGUdtDJHGu4ghYtz9OUo5JU9ke6HsGCQ7r6PBk9gja9/4ejwecKBtie/+UEdmrfiM0sSAHLWFzHAhbyWw1DIDTEbyKzYhdUQp5k3gbp7Vk9oXexB9izQl+QO3lw3lSpKxShAspCPsd9/JXpjICKflJw7Mu1vhTdmuwOR5PjHExwkA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=hlKV0K8/f5ZEHh/XHSiMpp9C3gpM8l40A0/ZCVjhKVk=; b=LzO6Y6qzvlt83eNXFMFEoAnfWcqaMFQb+01yuPPTqh0c0dUQo2bFQfGWsEUWINP8hCsP+WGyCjg2Dqahh0EOxIOmX4WoORdXrznO+7e7f27iyzs7Wg861Q80h6BktqhY6WnqlsO6cgUBFD2fEo1hlt7ogHahYHY+6m1YchvgWVanNOV8rJpUT8lg1T89E5LNm5qqwy9hYeNxj4SVJBQAf/0TxcAynN8M481Qev4yVRgut8GpEem1B6zf5i2rjTJz9ED6cUqhT8+5SCjGglxqdHDpy/6ZsWJ2NaQ+YaVZ0os7aNfkLmrQBlJvvBav2FuC0vJCAMjqRV/l3acxjAj7xw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:12 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:12 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , David Airlie , Simona Vetter Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes Subject: [PATCH v2 2/7] nova-core: doc: Clarify sysmembar operations Date: Sat, 3 May 2025 00:07:54 -0400 Message-ID: <20250503040802.1411285-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR03CA0007.namprd03.prod.outlook.com (2603:10b6:408:e6::12) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: 902ca1f2-18c2-4913-565a-08dd89f81ee2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?LPox3/EnVOvNlC3L7hT4n7n1A0a6ZMVLwcIN+Rjw7VBF7+sIs7Soe7QgSSg5?= =?us-ascii?Q?MR76/BZYR7r3QpZ0rnPrNzXkR0plkqMRQRzf+gEaUvuTaOpuqrQscYQZOesa?= =?us-ascii?Q?v9/w9+A8fGKStccw70eUxpJragQDOxAKx8VsyRLd3orwQU3ds7bZ8YwbqhvH?= =?us-ascii?Q?i+bc0HvWLi/f/2ayBiMfD8+SCIKFlbf+ygLFEUgxCERVl0v4YWgMskEx+3vb?= =?us-ascii?Q?nWfD4lQocna53NvMeCJkhhSsONvJY+Jyi+sQf2G93ZeQT6hu7HgNhnmxP5Ou?= =?us-ascii?Q?s4Vlqs78mbA/gJTs3b8Kb7aWrEv7CXUazWQ4zCGeJaS+0bhs2nAxL08mHa/Q?= =?us-ascii?Q?80X5b1ha0DkqUX8QS/uGwgktHLWN/mdgaX9lVQliOf2xsRAYuKia9RlVmhjD?= =?us-ascii?Q?qb7JXSHQ72ue4nwgGxPTZsywplZYYQ7TPviF+mNovqngvhnIcMz+qzU6wOlo?= =?us-ascii?Q?FsIMSWb8zcR9YVeFmhr8Mis35XWi1JXrN5+WD2jLm+1nxsoI30tceufvG+3u?= =?us-ascii?Q?ZVY4EKpPvg+uGxK7ZVd8qTv6pe8dwujjTYe7NTRS7PQZHwT22fPxUFvdCD03?= =?us-ascii?Q?HTw5vdz/Z7gXLcncDBC1+TP23HeD0mKw9OIj5bspaXy6y1f6zVK97/HqtC8V?= =?us-ascii?Q?zJSOkjHrKBpHd1CvqH+oCHLinT6eY8TkUQMjuBHGwjJ6YF/yMCwB7e5jDWNF?= =?us-ascii?Q?fa1QfL4HA8x/s3RBueGuCilJgkcqqQoPfFehnE8hjyMLbV6KXZFbzOG6fDy4?= =?us-ascii?Q?qhmJK+Ercy+8K6hXK0si517GeU8bsKQj3SzU9qkvB0iFRPJnzgQiKJAJaBcI?= =?us-ascii?Q?BMAusa0euBR2kyGhxjbdvFYJGXcPsGOHMOiYW6KvZ9BnbK7KX0u0CwNvz5X/?= =?us-ascii?Q?gFYFE9Z943W+XuP+X/juZ8/0rX6bhGkFWrvFS6oLgDI0lOmxWczU9Ue+vy6b?= =?us-ascii?Q?FMbHRfmvMGi7ztRkACKQ+3hbSN6qOYBWGlSt9VvktWjGr8maBLLRgZHwOTLm?= =?us-ascii?Q?1NdMr1+/I6aWFveae40H9wIS5zIGknexjNviNfT+3rZAG7Aq8Y7rgA/YiF2e?= =?us-ascii?Q?S28dJZ7ntXyH4lsGj4+rSru59oC9Blc702CrjymSYc9xH1xuPj2OnTaEuGfl?= =?us-ascii?Q?ucpHK7ohFk5Ghf0VeCRuCvm3Ei7b6R8jZUwoejMSgeFT5WUpdb/fT4mgmzyt?= =?us-ascii?Q?c6b3DvHo+zg7NbwRqPedOf45T70Ckp32M6wyDwrzPDv3FBnKYGS9V1PdE0wK?= =?us-ascii?Q?IjCK+GkD09t1oKsL+cQJ4tLef34PDX7Pf8uqWJ14j18H4zoMEtVfn8BldJfq?= =?us-ascii?Q?O4ZDKt02/Gf095eUhY7zdu+eRxXCLbEWvCsLOrpbW0oBR9NIlk+AjBQozfEB?= =?us-ascii?Q?p/WFsOo1h31oCGwjj0H7iyGQxc0byYVGiYYzHS5ddzY7kNNe0F0UiMYjWqbw?= =?us-ascii?Q?dVg6pLUmX/s=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CzR5W20atZpVPbWPF+m07M/9u5/Cl04CI7h92wLg69djyofUnHaA+QHcg3m/?= =?us-ascii?Q?Rhq/kE6spXSt4RzMsZjJp5Lkg3VCwIgMk1PLG14W7hPCov6Dt23i5j0ni1II?= =?us-ascii?Q?VyAuiAxPeNIH2aneLZ/fZ3xDEDVp/QauveWKkkRP6NHI6Xp3pMcGlUiluEVV?= =?us-ascii?Q?pGqQ57uanPGtSnIhtwRPfKICJi7PzFQAm7uvCG5KQzLuhfMhGlQBcJoo9nIh?= =?us-ascii?Q?v7svshFuTbTYqrxyuIMKWb+skaTPltlgb+vdTjf4zlb/tRnTUlRbYOa2AjPz?= =?us-ascii?Q?Ik7lukdvFawT51FrFv09NbyNwZgRSogi3TN2R3Y6S8/cWO9sZm8bL0wvsgWr?= =?us-ascii?Q?EBIaUuR7XX+fjFkrdw1OxOXfM1WtjVMrx1XA9IoCkG7H4QLV5pj7RlcuWfUX?= =?us-ascii?Q?xb7ArqHC1yrTzfr9L0XxcVk5N0b6CqEbv9+E5oqXgd8urAaQNMBbxd+vzX1X?= =?us-ascii?Q?DWqaMdqqmjwZdUOCrmAAt3z0lP2HMnt5CwXGj4GkpRAOOIfbezUwU3RLDJlE?= =?us-ascii?Q?NvHCIhR4rvVGThtGFSu5CGp1f3WPfv5M0XtSmoWqCZ7pIzbsGx5lzAMHrxQm?= =?us-ascii?Q?tI5DCoXyuu9jYGRtUQrqwqWVpGiW7XjOx5HmGdUllra+vaZ8ZPRLQUNpKMqb?= =?us-ascii?Q?TxwKW/If0WdtwWDokpd2EnOc3ByJxzpgwMKzBRESblOcAcbqNGZCLL5Q/FY9?= =?us-ascii?Q?Nm0v++j8hVNqLA927QjhCyqm5zjW6ZznCbFfOdA/edwkEA7dDIQXKQquPgMl?= =?us-ascii?Q?cdM94f5K/CGN8rI2XnoYGMjsPgdJeLAH92vrsRdOfMO7P81IoMEH52+i5Qkj?= =?us-ascii?Q?SeWv2EE0NG9COW9IEngOgLVf+mTyk25wwwxYtK6IDlMo5Vn2XWT+5u1anUuQ?= =?us-ascii?Q?s4Sk5NyA+zXLJhMv3M+g52Pivl/F8q4qlSXHX8SP/PQoheKQ10sqQIjYQnu+?= =?us-ascii?Q?rnFOHn2Oai8oYgB9ZYvlJIK3nBTpY2nRUhbIgG5b+DrTzJO05XYMmuBaS7Z4?= =?us-ascii?Q?1B5lxtbV6WbwazeVu/EHX8GRMmeFmH1vlvDnRcliliD6bDns83obSPhRrp7R?= =?us-ascii?Q?gK71uFXf3VMQvSElL0HODhEUfYRcrYhUyepOyKzYlaWOAEnRrJGv/uAW4ZsA?= =?us-ascii?Q?vWF+B7akjSI+7z63yhHVWZUF2Co7E4ZP5F+QUyQ1jW4ScmKLh0t6HArQ33Kw?= =?us-ascii?Q?e8igpP0k5o30n7ORU45xBjpmUZn/+DHHYcmTSZ/FRsw/BJ4z2lkrOXLHzN90?= =?us-ascii?Q?b8QwBnWfPUBV2wWAMFQBZWFHoOD6Z8rSlZxSPFzIH+B330t1NL5QXHE0q0hq?= =?us-ascii?Q?Jnv7GtsXFcbJRqXPhbCNw2HlBfIrfYX9pHTJ6L4xUCgsj4zfU4FOBWealcdn?= =?us-ascii?Q?xF4KPz8jAw57hKsuDqRWX77q/Y+RxXcU1EIAn1WRZyTTtiQhGkkQvsGkx+gI?= =?us-ascii?Q?+bP/GdlzTbHaXfWaJgVIta+cWV9TjV2M5rKrZVoJJbK3D9WPMKnwTaktkPQ4?= =?us-ascii?Q?8kECpkTntW/AofZI7KOjQZo844eJaKsipQlOujTTd0Xi93xYhuLdiIgB0/5Z?= =?us-ascii?Q?TaR9rGVLoLkw78vc6ZSzS8jwpULf2f53HPX8Gzqx?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 902ca1f2-18c2-4913-565a-08dd89f81ee2 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:12.0418 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: hgv3wc7RX8ttMgrRMd1oQVlCbzwbaZIk0J7J2iGRraVP8Rs7Ii3MV9y8pj2lgVO8Ma7DOtlH2VxTpNV6XLa7tw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Content-Type: text/plain; charset="utf-8" sysmembar is a critical operation that the GSP falcon needs to perform in the reset sequence. Add some code comments to clarify. Signed-off-by: Joel Fernandes --- drivers/gpu/nova-core/gpu.rs | 12 +++++++++--- drivers/gpu/nova-core/regs.rs | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index a46768d18ac3..9bd73755c466 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -169,8 +169,8 @@ pub(crate) struct Gpu { /// MMIO mapping of PCI BAR 0 bar: Devres, fw: Firmware, - // System memory page required for flushing all pending GPU-side memor= y writes done through - // PCIE into system memory. + /// System memory page required for flushing all pending GPU-side memo= ry writes done through + /// PCIE into system memory, via sysmembar (A GPU-initiated HW memory-= barrier operation). sysmem_flush: DmaObject, } =20 @@ -215,7 +215,13 @@ pub(crate) fn new( devinit::wait_gfw_boot_completion(&bar) .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not com= plete"))?; =20 - // System memory page required for sysmembar to properly flush int= o system memory. + // System memory page required for sysmembar which is a GPU-initia= ted hardware + // memory-barrier operation that flushes all pending GPU-side memo= ry writes that + // were done through PCIE, to system memory. It is required for Fa= lcon to be reset + // as the reset operation involves a reset handshake. When the fal= con acks the + // reset, it writes its acknowledgement into system memory, but fo= r this write to + // be visible to the host, the falcon needs to do sysmembar to flu= sh + // its writes and prevent the driver from timing out. let sysmem_flush =3D { let page =3D DmaObject::new(pdev.as_ref(), kernel::bindings::P= AGE_SIZE)?; =20 diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index a2b506883654..dcac7ab4619f 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -52,6 +52,8 @@ pub(crate) fn chipset(self) -> Result { =20 /* PFB */ =20 +// These two registers together hold the physical system memory address +// that is used by the GPU for perform sysmembar operation (see [`crate::g= pu`]). register!(NV_PFB_NISO_FLUSH_SYSMEM_ADDR @ 0x00100c10 { 31:0 adr_39_08 as u32; }); --=20 2.43.0 From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 011991922EE; Sat, 3 May 2025 04:08:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245301; cv=fail; b=QCgZF/yPN1OygMQfYAdVgRlYGRqXRixD3X2DIGOtztUqBiLDo+uO0L6SiugrkLjPXrH3Rr2bbEwfextUodcZsjI10bB7yAaEJbJGG6mUIgjGCdptKwxtLYjjbF/dibmirOrozztG/57AbxxQ/ZnHxeUGi8VHX/nQV/o9W4VgEss= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245301; c=relaxed/simple; bh=bOVA+F9GaWvnlxKduicRl34NVYvaz3lfEzjqgzYdnrI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Fdl0CPt/4cSpUPLEhZhwNO030usa2lxljFf800CoNY/aVWg8qD4bZp8hTH0gAN+Bh2FAybKWPqTi3Cky5+16QA4E9SIK5u0Z14Fpn6J7waG3En0lU5aeIOxucb1CJ0XGmhMY7ybkkJ7DvCJXcFa8rWCKO5gPJ/j9xr0M+vfWQAY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=oWdT3rUw; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="oWdT3rUw" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bOdjBUQlBPru/NMq94B3CQjEV9jRfrPrrTMTLkJsiLO0mn9ZF5N9XR8Cw6C7E1qAzmEbQIb6SEC5oWxh5KFfM2+ROWL/6eNUlfhglTwMKcurVaOVjDtcFUsNMcDaDtl0OvoqQ77QbnSHM1egRjxp2DiaRGsfsQ0c6ZyQBRnSgYqCd9IxQkaZjnW6Fdri8V+pnjtu0/4IGdWCP/M6DXZ+WNmU4oz/5RA6aI+Bt9EV0UE8nP78Dw1wvAveLpde5I9DsF/PlYYsA7nnjf7arG3Bq8I6U/z/7JwNq14tsH7zWTIEa0Tin8f3Vrj4pQ1humnPdLZp3qXXL6qVE4+U6FBioQ== 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=GgTqiPFj5ay0uk3Fl52h99+Q6ODuD+v/r+wqbDZ+Y78=; b=URfUYMoJ+qONazIHxTk+y8MhWeXrn7KgBYyVG0JO5zeDLS4nmCcssFarUlgIcjOnauN5VF181PHQB8nTAnEQH6j2E7OuSjPFzT1Zo0fHnpsTho5P6ClnWBMXZm75RwUD2IYDU8abDSVSUAi/0+ueup/Qr/oA5Ta6msYMRDDZYD2r1O4kvU6R3xldxrUaGDLL/uWIAFLj2FZqpiW+byfyDYrbcOTbLaRZn0COoB09cYlud56dJVDzyD8hFfISmlmrhQhJgWd1ArCUfWslWooWEGeC6xBE6xbslsX6ukwNipzSP/GaoQeoe7184+5j5ZNjutVsRV9BUSDnJXyNWS8wPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=GgTqiPFj5ay0uk3Fl52h99+Q6ODuD+v/r+wqbDZ+Y78=; b=oWdT3rUwVfhPnMCB4utv7zQDKABCrkPGr7xBEsBpgkuCQmbW9bXehgknpLxzkIbk1p2hpeNdjkHd5nDIOTF6n85wbj7AvSSqZkCLpXsycDQBi+ZNiY0pqlhKviI1/FSJ9PwAB8hBZti4vYEGMSrj906l/vsJ3i1JGMdFknJHHws4td1nDnZ3lTNvaOCP8EyF6kp5V8zdT/csuSux4DcmnrD2wmTaZy/vIJ9PNOoJ+apuY9HUPFbk8PWvaqsPzILyu04UpmAn4U3MGgW/LvYJ/vIKtz/DXnZ/TSE27rdRfm6wLR8tnPGNqEOv1iyxj6/lgySu/0y5afUEVmCZcDoATQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:14 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:14 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH v2 3/7] nova-core: docs: Document vbios layout Date: Sat, 3 May 2025 00:07:55 -0400 Message-ID: <20250503040802.1411285-4-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0529.namprd03.prod.outlook.com (2603:10b6:408:131::24) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: 1023db09-e44f-40eb-ead1-08dd89f8205b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ZGx4czlETVB6NThva0N3RUpmUnE0TTVtOVh2a1VQdzlyWTF4RVN4a3pYNXQr?= =?utf-8?B?ZEVBQSs1KzY4eWJiY2w5L253TnRZMkVSVzI5T2oxNnpIRjRJRldjbDBNNjZq?= =?utf-8?B?S0E5TndGd2hMWDhCTDNrbjhxOEFGUVB3eStuQ25Zd1A5SnJtTWQ0cmNybEMz?= =?utf-8?B?bFU5RERGQlNhZWpaWWZSVnByMG5YVjlUUzk5NFdZYkFrUzZrTkE5TGhBUnVt?= =?utf-8?B?Y0h6c1JjcUtUUW1RUlBFaXZGWFB1Vm1nVy9JZ0x3bExKbTRFL2ZpU2lGdWdG?= =?utf-8?B?MGVYVFBDdVJJU2syOVlBK0RHT1pCZVlCVHFybHpaUkNDWDBTZUE0NDRGRFY1?= =?utf-8?B?SEk1RTJUZU1LNFZZOXNVRG03TVh5SXh6UXNxd05lODdCekNwdDBCNnMvck05?= =?utf-8?B?dGhsOVFuQ21sQk5GQ1pQSGNBQWd6UHN0K1EwZ0xhT0t0QkFxR3BGeHBjZk9O?= =?utf-8?B?UFkyNlJQclpqdUpMQ2RnUjYwb3BHMnVySHlvalE4VEJYVjZUbGNiaWlvRnA4?= =?utf-8?B?Z1YzY2x6YUNUY1JQZCtoc3dSelVDVGx6OGErV1pMVEhJVE90KzE4TjNsMXFu?= =?utf-8?B?QTZubUFrUGxHa2FYeUtwUk1WRHFyTms4T0J2Q0ZFNStMUVpHdWFybGNlQWtP?= =?utf-8?B?TVdTdW1nSFFhdE1KSFZ1UnJGcWIycGZTd2N5eGJTUWVMMkk3bUFPSG1XenM5?= =?utf-8?B?S1ZVQmswTzFTL1A2OExOOEM4UHdGbjlNTjRJbHIrWGZDZ2M4UTYzdXh4YmRG?= =?utf-8?B?K3ZOaGMwTXh5Q0tmenZTOU9oNThvQ2FtcmdUUWxiS0NkQktBcXVNNEwraDRi?= =?utf-8?B?RExDUVM0Qkt2ZHJHbS9IYmhxNnhTRlJoRWhDaFVlem0zK1g2VXZoeE9KZitI?= =?utf-8?B?RDB3dmI5QXFrdjkwbFB2ZUVKWUFPWjZQdkdoVkg0eXdqQlVZdm9VZElLbWdo?= =?utf-8?B?NWhuVk1lNVdydTFBejZFK1QxS3F4UzdUdHpxL1NWNUNxdTlJUHhzVlp6N0hY?= =?utf-8?B?MXBXTnNUc1lvTXpwQ3g5ZjZNWnRTemkwakplV3FVSit1ZlplMGE2SElBa1ZP?= =?utf-8?B?TFhwR1ZZMHRRcU9VYmFveGg3a0hnZnBZOWNQNTN0RXhOdEczQnRnbnlaVWtB?= =?utf-8?B?bjVTbWdicXFEVWN4S2NwWm5qNE1wZzRlQUpTenJCejBvQWRNNFZrM2xYSWJt?= =?utf-8?B?eGx3bDJKNG9obVhxb2FQaHRvNk9VdHJNRzg0OTBZQU9PRE9QT0U3emNuU0Fv?= =?utf-8?B?NGhMSHg4NDZmc012RHBUb0l4dUlGbHJyOTVFYmdwandNT01pbU1LaUV5dGtN?= =?utf-8?B?b2pQeFdiRE5XbWNhUlI5Y3RLc0JZNm1PY3dOZzVBVXRkcC9Db1cvZUlCRFcr?= =?utf-8?B?dHBoQXRBZWpNa2pNWFpMY2JsQUczVHJRcnFKU0hHVmNkVEl2NTFMRmtJZGQ2?= =?utf-8?B?Qm0xTUZPTGREZ0R0cjRqdmh1RlZBbFp2bmxDcTVuUElwSlU1SlRNOXhQZEZV?= =?utf-8?B?dHBnOVdoaGZhOGYvYU9EY2FlUVNSczJ4c1VDNnluTGpCbmdMTUh0WEtPT3N6?= =?utf-8?B?cUlNc0NEak10OTh2Sk83b01XMGJkUWpqN3hlU3hsekN6YUx4UisvcEdNdmc0?= =?utf-8?B?L0VDNUs2eXFCUWh5MnlUL0hSWEg3M1VZZkxUbG05d2M3ZmtQU0VqY2d4aWJ4?= =?utf-8?B?aWhSdDFEYzlWbmxrVVRhQ0lmZllYT2Y0dmFoMzAzeDYxTmF1azdwWmJJb2ZV?= =?utf-8?B?aWc4eU1OaVZGNlkxSkVVM0xOSDQzVTllTWRSUmF1d281c1Rwd2o4b0RIT3po?= =?utf-8?B?Z0JaNUhkcHpBV0pNZUVYN3RqejlkN3I1dXBTaWJoZVNOZFI3QU00cm5Qb3VV?= =?utf-8?B?Y0ZSV0VVMkxQRGxtSlBYYllVZFZiOHh4ZEh6Y0FDMGxiblJpMkFhakh5enZE?= =?utf-8?Q?vNZxlscyDtY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?aDFGbTNaOGplcDZ6NG1keERLQm94NXRIajZhdlVhNDl0ZFdueGZqRFJ2RzVZ?= =?utf-8?B?aXRvNVh0TjdjTTVXV0k5aFZha2RzSW50U1NlTlB1K3JIcy9tS254TTRsdjNW?= =?utf-8?B?eEpkZ0F6UjBaUkF5blpoUzRsa0NheXd3TmVDY3JXakxsT0N4WnRQVzZqS3FK?= =?utf-8?B?TmdvV0c5Wm5mYng0VU8vRXd1WTI4aHRIL2d0RFJNY3YyNnJCbXlyS2U5K2o0?= =?utf-8?B?bWIyYXFvMGVwcXVRMEIzNHUzZ0lVTm9XRk1tRVloYklJNzcvMHh3YTE3NzBx?= =?utf-8?B?eVAwVjZ4OVN4YzRaYk02WDBubjlMMGhHUTZaTjMyRFc2emU5eHVCd1g5RStx?= =?utf-8?B?WVpacjNOa3M3QlFha0JGci9TaEJnaHBCMTlVQkFIbFlYNHBhMXE3RVIwWnFv?= =?utf-8?B?Q0oyTjFrMUpmaWRCZTFQZlNnaTI5eXBicG5nTDlQcC9WSklaQ25PWXhVZWJG?= =?utf-8?B?NWNXWkYzTEVpdzl6MTVNNmUrTGY2S3UvTlRQTmdvZEtYNEdwc3ZDYkZJbGRu?= =?utf-8?B?bDNYZUdlUFY1dVlKdUhJeUdSemhESmRmWGZueVpQc3pXNktMbnpaYnVIMTUy?= =?utf-8?B?N3JqLzB2c3JPSkp1ZzArWkZnVCt2Q2lkbUpmMHY0dUpERkRhZVZKT2xraElC?= =?utf-8?B?em9yWDdvWkRwVUFoREx1UjZreDJld0d5RGk1Qk12WTM2aStteUxFaGdFd2dt?= =?utf-8?B?RTdNUWpMVXhNTzFDazdGcWRkS3hCalB4aUZsRVg0NlREc2tqdHZOa0dXcjh1?= =?utf-8?B?WWVNSlB5ckxTZ1NBRytqTWczWVNpQVdaOUpJZlE2ZEN6UXp2VWphS3FlbmpN?= =?utf-8?B?OUtYY2Z1S09oZVRUS0pPUE5FbTdOZVVCbXZpbEQySmJURW1jNXNuRWZ6aENo?= =?utf-8?B?dzJPNCtvUkNvTXFvK25tNWo2Z1RVdFhBVExKOU9TTTAwZ1FqU28rWm1LaSta?= =?utf-8?B?M3F0amUxdDBIdGRYUG42VVRYN2FCcUQwWkxTWGR4Zlh5YjZXRW1pT0pxN1JE?= =?utf-8?B?MUZhMkY0UVA3c3ZkMkpUV3Bma2RWV3R2d1c2aU54Nml5ZUJLMVhYWHNCYjNl?= =?utf-8?B?aDUvZlpDZlEyNmhuNFFTdEJrZTgrUTBqYklDNHdkUU9PWXRaUGFZbUlta2Y0?= =?utf-8?B?Qzd6VUtiaWtDcnhnYnExTzNaN2VudlpSY21OVC96V3FXbGI0bUt2VWtDaWxa?= =?utf-8?B?azd0UXk0NXR1czFuaHNiS1VVVk5jWHZYNm1RUlZkdm5RYVphWjJ5NVI5NU42?= =?utf-8?B?V0xSUHRxU2NPc0JUdExIbEQ1SVl3V0R2WldDeExBRE9mZkphSXFFOUx0dUJ3?= =?utf-8?B?QmtFQ2dUZDd4TytQR2hJWTFMSUZ3bXE1WU82OU9UOUVrWlB4NlZlNUtETDFN?= =?utf-8?B?RHlmVEtPNHdhOHJraGp3ekZQN1RJakp6UUh0RU9oZFNzUHpFQ1dvMUQ2UTI0?= =?utf-8?B?Nyswc21NUWR2aFFMN0JOemVlNlBRanR3Y082aUcyTmFaUjUxY0ExM0VkanEr?= =?utf-8?B?QktpRG9lODFFV0RZL3QvTWpoOTJ5OU9GTVhvRElUTk0xdktkM3JVemUyK3Ux?= =?utf-8?B?Q1dtQS8zVS9keFNXcnc5UC85WmMxalY5YnVrSFcxTVF5UHNhbVZSRkVrb1FE?= =?utf-8?B?OCt6WVFtN1NmS0tjNlN3QlExWHZtV2FBRWhtZGt0b2d1YkhJb3pwclZxWUdH?= =?utf-8?B?QStwMUVnSTcxMmw2REZMaHlvK0FrdE5aV3JwbUl3MHp2QjhZbGJxU0pOTEZo?= =?utf-8?B?emZ0ZC9BSTVBMnFtWUtiVUo2VDUxZ2l5NmlPcDNVdWVzNnc0dFc3NTlLU0l6?= =?utf-8?B?VENEeWpQbUFpV3dicVpiQU8vWU5QWi9OczRES0VzY1pMRmJjWThyVzJYUzBi?= =?utf-8?B?MG4wclI5bll5dW9sTHBYMk0xOWtZbXhwaU4xK3NPaEJUdGdrcW1SeFhjSHdT?= =?utf-8?B?TFlPaDU1OS82Y0FkSlZma25ISWpRS2srdHk3bEdndU5qRHA0RmIwaTllQ0Q5?= =?utf-8?B?THpvZisydjJoQjNBTERNR29kY0dDZkI5anFQWFBjWG94L0dHZ3Nxc0lXU0o0?= =?utf-8?B?Myt2RkY2TkhPMTJjVFRNRjBCbTczOWFpU2hTNXBnNTYzNzdlK3NscXJya3Js?= =?utf-8?Q?sBRaX2Ob8udzaLOSRddgBgVkS?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1023db09-e44f-40eb-ead1-08dd89f8205b X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:14.5109 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +W57i/bpWH+ejeoFkY5xnHDiCEiEAkH89ealfCqtHx9qQVOVjudBpFAFyLX7lzAuoKPr0oeR+xExdF13GWgyGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Add detailed explanation and block diagrams of the layout of the vBIOS on Nvidia GPUs. This is important to understand how nova-core boots an Nvidia GPU. [ Applied Timur Tabi's feedback on providing link to BIT documentation. ] Signed-off-by: Joel Fernandes --- Documentation/gpu/nova/core/vbios.rst | 177 ++++++++++++++++++++++++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 178 insertions(+) create mode 100644 Documentation/gpu/nova/core/vbios.rst diff --git a/Documentation/gpu/nova/core/vbios.rst b/Documentation/gpu/nova= /core/vbios.rst new file mode 100644 index 000000000000..04ced35648cb --- /dev/null +++ b/Documentation/gpu/nova/core/vbios.rst @@ -0,0 +1,177 @@ +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +VBIOS +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +This document describes the layout of the VBIOS image which is a series of= concatenated +images in the ROM of the GPU. The VBIOS is mirrored onto the BAR 0 space a= nd is read +by both Boot ROM firmware (also known as IFR or init-from-rom firmware) on= the GPU to +boot strap various microcontrollers (PMU, SEC, GSP) with critical initiali= zation before +the driver loads, as well as by the nova-core driver in the kernel to boot= the GSP. + +The format of the images in the ROM follow the "BIOS Specification" part o= f the +PCI specification, with Nvidia-specific extensions. The ROM images of type= FwSec +are the ones that contain Falcon ucode and what we are mainly looking for. + +As an example, the following are the different image types that can be fou= nd in the +VBIOS of an Ampere GA102 GPU which is supported by the nova-core driver. + +- PciAt Image (Type 0x00) - This is the standard PCI BIOS image who's nami= ng likely + comes from the "IBM PC/AT" architecture. + +- EFI Image (Type 0x03) - This is the EFI BIOS image. It contains the UEFI= GOP + driver that is used to display UEFI graphics output. + +- First FwSec Image (Type 0xE0) - The first FwSec image (Secure Firmware) + +- Second FwSec Image (Type 0xE0) - The second FwSec image (Secure Firmware) + contains various different microcodes (also known as an applications) th= at do + a range of different functions. The FWSEC ucode is run in heavy-secure m= ode and + typically runs directly on the GSP (it could be running on a different d= esignated + processor in future generations but as of Ampere, it is the GSP). This f= irmware + then loads other firmware ucodes onto the PMU and SEC2 microcontrollers = for gfw + initialization after GPU reset and before the driver loads (see devinit.= rst). + The DEVINIT ucode is itself another ucode that is stored in this ROM par= tition. + =20 +The Falcon ucodes once located have "Application Interfaces" in the data = memory (DMEM) +of the ucode. For FWSEC, the application interface we use for FWSEC is the= "DMEM mapper" +interface which is configured to run the "FRTS" command. This command perf= orms carving +out of the WPR2 area (Write protected region) in the VRAM and placing impo= rtant data +called 'FRTS' into it which contains power-management data. The WPR2 regio= n is only +accessible to heavy-secure ucode. + +.. note:: + It is not clear why FwSec has 2 different partitions in the ROM, but th= ey both + are of type 0xE0 and can be identified as such. This could be subject t= o change + in future generations. + +VBIOS ROM Layout +---------------- +The VBIOS layout is roughly a series of concatenated images as follows: +(For more explanations of acronyms, see the detailed descriptions in vbios= .rs). + +.. note:: + This diagram is created based on an GA-102 Ampere GPU as an example and= could + vary for future or other GPUs. + +Here is a block diagram of the VBIOS layout:: + + =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 + =E2=94=82 VBIOS (Starting at ROM_OFFSET: 0x300000) = =E2=94=82 + =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=A4 + =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =90 =E2=94=82 + =E2=94=82 =E2=94=82 PciAt Image (Type 0x00) =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =A4 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 ROM Header =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (Signature 0xAA55)=E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 rom header's pci_data_struct_offset= =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 points to the PCIR structure = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 V =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 PCIR Structure =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (Signature "PCIR")=E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 last_image: 0x80 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 image_len: size =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 in 512-byte units =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 NPDE immediately follows PCIR = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 V =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 NPDE Structure =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (Signature "NPDE")=E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 last_image: 0x00 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 BIT Header =E2=94=82 (Signature scan= ning =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (Signature "BIT") =E2=94=82 provides the l= ocation =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 of the BIT= table) =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 header is = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 | followed by a table of tokens =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 V one of which is for falcon data. =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 BIT Tokens =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 | | ______________ | | = | + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Falcon Data =E2=94=82 =E2=94=82= =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Token (0x70)=E2=94=82---+--------= ---->------------=E2=94=BC=E2=94=80=E2=94=80+ =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 falcon_data_ptr() =E2=94=82 =E2=94=82= =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 V =E2=94=82 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =98 =E2=94=82 =E2=94=82 + =E2=94=82 (no gap between images) =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =90 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 EFI Image (Type 0x03) =E2=94= =82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =A4 =E2=94=82 =E2=94=82 + =E2=94=82 | Contains the UEFI GOP driver (Graphics Output)| | = | + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 ROM Header =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 +=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80+ =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 PCIR Structure =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 +=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80+ =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 NPDE Structure =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Image data =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =98 =E2=94=82 =E2=94=82 + =E2=94=82 (no gap between images) =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =90 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 First FwSec Image (Type 0xE0) =E2=94= =82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =A4 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 ROM Header =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 +=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80+ =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 PCIR Structure =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 +=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80+ =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 NPDE Structure =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Image data =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =98 =E2=94=82 =E2=94=82 + =E2=94=82 (no gap between images) =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =90 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 Second FwSec Image (Type 0xE0) =E2=94= =82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=9C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =A4 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 ROM Header =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 +=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80+ =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 PCIR Structure =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 +=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80+ =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 NPDE Structure =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94= =82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 PMU Lookup Table =E2=94=82 <- falcon_data_= offset =E2=94=82<=E2=94=80=E2=94=98 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 pmu_lookup_table =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Entry 0x85 =E2=94=82 =E2=94=82= =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 FWSEC_PROD =E2=94=82 =E2=94=82= =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 points to = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 V =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 FalconUCodeDescV3 =E2=94=82 <- falcon_ucode= _offset =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (FWSEC Firmware) =E2=94=82 fwsec_header= () =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 immediately followed by... = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 V =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Signatures + FWSEC Ucode =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 fwsec_sigs(), fwsec_ucode()=E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =98______________________=E2=94=82 + +Falcon data Lookup +------------------ +A key part of the VBIOS extraction code (vbios.rs) is to find the location= of the +Falcon data in the VBIOS which contains the PMU lookup table. This lookup = table is +used to find the required Falcon ucode based on an application ID. + +The location of the PMU lookup table is found by scanning the BIT (`BIOS I= nformation Table`_) +tokens for a token with the id `BIT_TOKEN_ID_FALCON_DATA` (0x70) which ind= icates the +offset of the same from the start of the VBIOS image. Unfortunately, the o= ffset +does not account for the EFI image that sits between the PciAt image and t= he FwSec +images, the vbios.rs code compensates for that with appropriate arithmetic. + +.. _`BIOS Information Table`: https://download.nvidia.com/open-gpu-doc/BIO= S-Information-Table/1/BIOS-Information-Table.html diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index 2701b3f4af35..91cc802ed94f 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -27,4 +27,5 @@ vGPU manager VFIO driver and the nova-drm driver. :titlesonly: =20 core/guidelines + core/vbios core/todo --=20 2.43.0 From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3872B199223; Sat, 3 May 2025 04:08:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245303; cv=fail; b=eq2IE7bf445e7zeTZ5P75sU5yWUST3JZEjhjfgSRCd3i+i/i9UpuhrpqLqihIUWPY7xt6zPMvsUiN0OVmQWReeXxSpJHWzDeabwmfaQbEgQLD9n+N8vd6WLlBwD2VLjxhDBvhZV8ms/Oy3/4XixMmwaodUTuzoH1Lj6cKYTaA6U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245303; c=relaxed/simple; bh=Vg5fPo4TpWTgk5fFk/idqn+nRfht3KLHv0ZmssFmwq0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=R3jqEH+HjMlN4ImyjR8T6B0/Im0dFyIxUwYikZ9rd5rBvGPqg2OyYUIRWYBK27jv4nXP8i1ifcik7UgbTbd82cbObucu1DMBs7PCLQY12dpKi/b/PTWUHsxKUWaOvZ+69M43WSPRfgIRMwaP2BqMXDbet3coeYt9pzceQyTmrp8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=rv6gCzyD; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="rv6gCzyD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IOYAYOZgie47lPBvSpmjBkyB9xJQAfVBp+DHmJxGEkme5habCOfnJF455SD3dwRIgVd3SoCRvYx7rk28ZstIPSY8nvHbEFOcpPa+oes9cUy18aMj8f53v3Z7367Gp69OYS+ud0YMn74Gee7aBoAiGIJNJSPik1hH0jaBAJZUZOgWwItKKCGj73zEGBwWqMRBX6w0v5WikrFvCYgbiMitGjkrxgRlff8ry/Cpi7QXPYExZJ01QGa9qkTosRt+Nns9BJPLe9Fw1o/i5oaLUejtoQ0z/e5ZASdf69yKmPXyD85PZZlHox+u/dRkG7dSiBC0qHEyxdTcTrjcyNpNvQRR9A== 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=FCEway+8+NeihLFuv1fu+sQbokP6ai9LvEdqlw+FZAM=; b=e07EdlQFsw0ru/FhWV5TMWajbL6Pv7/Fm0Q/k+RgEzeqU27GKGTCENOMei+vvdfhb/xVsms32fb3k3e9645WE/JT7GKEvNmXchXrIACkD9Qs18uBx3fH/NTm3dvzLw7ObPwJqLZTI2XG/X+1BVjAw8GQm4StuEpPxtDKFmdAADs/kUqvi6kdHobOoXu/6Y2Sjq3+0diCISavxWTduUJlTYrBih41QZImb+814IUpTefKSiFqETPiRtWmpy/Mi8BtkDbmV2oN/P648cW2CC6yiYRT/pAB60ll42o/L4I4iQy9P0kVkh1wf1R1nTHU1XMq9v3mAjowB+gjnvGKfm4IxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=FCEway+8+NeihLFuv1fu+sQbokP6ai9LvEdqlw+FZAM=; b=rv6gCzyD7MkNmlUabD6GbPK4pPml/l4SCYwRyOjEjATVhnVeXSE3i86sJdlo/eu/dMWKJiRH5efsRZmTKC50lWFLyD+OXITQBPmfVNgTo1aUdzWLW1U6zjcbFR1UUyYzJHZ6tk0DxhMuCBATCJMpnyU8ZTi/m+SijYx0KHX4nYEZB0LAYamM0U9Nvqx6yBDtIrScoIvF2xYRrcZKjhbbBHFelVZ/4K0qXqGu/a62GpGLhmTpRNS9fZtjLEWgosX1lA8MT6BakT32s7Ipk1ZIQnZRSpo5QLaHZBbNnfK1DacSWPo59KjLdZ2MM5aK+rSIpTHMdsdXrH3AqKHkeTtUIA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:17 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:16 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH v2 4/7] nova-core: docs: Document fwsec operation and layout Date: Sat, 3 May 2025 00:07:56 -0400 Message-ID: <20250503040802.1411285-5-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0041.namprd03.prod.outlook.com (2603:10b6:408:fb::16) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: 389378ae-e389-44cf-dcda-08dd89f821a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?RlZsSDNTamxnc2JFd3pLNk1wc1ZvQ1NKWDBCRStnK2xGME1GNkFkdWxmSVN1?= =?utf-8?B?dlU2VEZwVUhyWmZLNVY3M0QrYS93VjhZNDYvYnkvWnF0UjVraGpPSzkzaStu?= =?utf-8?B?T2FaeDhlOVVRQVE2ZkxwUDhQd0JhdkJGME9hNnZ1eWg5VERRSDVpazRrd3Z6?= =?utf-8?B?OXgvSlQvMndNcis3THozTDB4WVYwdVhhV1E0Rmo4R1laSWxhN2Rhbk53WnM1?= =?utf-8?B?U1ZldXl0T3lTc2Ztd09qOVlWVlhuQ0RrRVpkOEV3eDd1K3hweTdTWGhPTktS?= =?utf-8?B?OUhzMFN1TlR3Vm1ybGpjemY3ZVZlNSsrSlNXckZmN0tEdVhzU0UvcmcvQ0Rv?= =?utf-8?B?ZTJnVnFBdFlqZWRiaUNVRXBjTXlML2FiNUZlVHdHbm1YSjVXMmptSTZ6eUhj?= =?utf-8?B?TUE3QnBPT1l5U0lud2ZSNzRJdTNhc29meTRObnpKZk9zZC85OXN2YXhra1R1?= =?utf-8?B?Y3JldFp5Vm43eUxqMWx6MzVFMlkrQ0tNbksyZDhNaHJCbmJ3ZjJxYWFiTUpL?= =?utf-8?B?VHAzOHludFlOOGJGQ3duY3NoV00xTnNOQUZ1NkdmekoxaEhTVFFvTjhLVWgx?= =?utf-8?B?RFFZQXRJeW02QjZZbjJWTGxhZnhoRmZBK2YzRHdWWnBHbWpieU9DeEMxQjI1?= =?utf-8?B?R2VoTmtDalBxQXFEWTJQVlhyVENKb0RnaUNlUGQ2ZHA5N09JbDZUS0VMVFNu?= =?utf-8?B?WXZBUmFBOWxPVklMeExMVy9PdzNDSUgzaTFONGppeHdLa29ad0NGRkR2eklN?= =?utf-8?B?b2VsOE9pclVVWnpEdHlSU3ZxVkFVVWFRcVRWd09GQmNiT05zanJLUzR0Tk5y?= =?utf-8?B?dWdCR2hnU1gzQWJzamw5a21pNjE4QlRERWhkaFlYVFhsZ2srV2taallRWnRT?= =?utf-8?B?YkI4cDJGZmdxcFk1MWdFOUd6djVUQVgxaWM2Nks3VlNLSE5YQy83Tm81MzRS?= =?utf-8?B?ODJPU245TEQwV1lMTndQMXp5anQ1dmVVOFphS1l3TllRRUdPUWpDNTF1MkN3?= =?utf-8?B?SU9FM0xBRTRVZkEyWkdzM0Z4UW5OL2lpUlNTSXgrVmQ0TEZiQWlMbVJGRDI5?= =?utf-8?B?ZXJSbEtzYzIxSFJtL2p2cWxqQnMzbzNMOERibC90b25vU2NUZlMyVTI0YmlE?= =?utf-8?B?UU1MYkNvNTNRNHZpMXVpbHJjUE5zREt6aEVIK3RlL2dQU3dJd3ArWk9xaDNJ?= =?utf-8?B?aTlQbDl3emNjaWZtWXFiYkxPYkdEY3VQKysyb01YMzdlRSsvcU5INllMbk45?= =?utf-8?B?bXFMWXZYeHRMN1RzbVJhdnVxK0ZUb25EQjVqRzdBTkNlWU1tWFFFOFV2d0Rl?= =?utf-8?B?czU4ZDNCdENZeFZmdDliZks1SHlGbVBmWHJWdVd6aVNBVnduaGRuMzVyWFlu?= =?utf-8?B?MTBuRVFHa1R4VzFpUGpSdzJwNk5jL1hIVGhWTGhaczhkamFldjFacmREWmxW?= =?utf-8?B?QkM0R3JNOHU1MkdtMGN2UE8vY2d5czhwSml5clU3VVpMOTFxdG5zR3I4MDBS?= =?utf-8?B?bVZ6anlKQTdhOG50bU50N1dXWmozZm1FNWp0NVA1TWI1VEhFbk5EeXp6aHh0?= =?utf-8?B?U1hnaG1KTUdIRG4wakpnV2ZPbEtqZkwvS3M0K2xjbkx4N0YwTDRzR0tnNUhs?= =?utf-8?B?dElYWk1GVVlMK3FPeHh3Z3N6RW15ZktEVXdQSitvUzFtYVIza1BSK0Rrd3Ju?= =?utf-8?B?Rkh3NTBwTDZGOTQxa2xEL1laYStXYnFLb1N3U0NPZ3d1Q1dQc2pDSnNONENk?= =?utf-8?B?WjhUdHZQaUVtL3EvbnJMWlVLQzE1NnlyVDdSNmVYOFdiaU9hVTc5UW1UU0wz?= =?utf-8?B?K0tQa2d5eFVjbHRiZ1ovQXRoMHl1RllkQmR4Mkg1dkZVZVlBWjd4Q1VxQk9z?= =?utf-8?B?Ui9BSnczRGVoOVpPTlY0bkQ4YWtKTmRvazdpS0Z2bWt0R1E9PQ==?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dU4rL08vMUI3Y0E3S1ZNRVR6UEZsWjRlZ0tvbkdEN3Q5QlA0QW9zNHdvZ2hE?= =?utf-8?B?QzdPSUxmdThFdERZRkJOSzlLcGk1NWFiUUdDK1A2UUlzR3NSVDluZEN6U25t?= =?utf-8?B?V2QvTW54L0ttTElYbFF0VmtiVW5rOE53T0JvL1d6c05JT0RzMVJ1bXQ1ZDE5?= =?utf-8?B?VEZiZTNRMHZ3T05GQlI2WCtTQTF3aFRGQjZ4cFZRQXhxUTViZ3k3eWJoQmxS?= =?utf-8?B?a2tuOFlIUHA3RW9JU3BsZFk1WnV0SnE1Q2FwK3p0L0FLSWRyVE9BcjZSczlN?= =?utf-8?B?bldWMlRCQURlSTN6UTFpM0pQTFNjbTVWTTVicG5ibVhaeTh0c0VkRXIrTG4y?= =?utf-8?B?MkEzSFBvL2hlYThZSHZmMXoxVldtMHdjMFRqRWZ3YjFqNW9haGJERHVHU2s1?= =?utf-8?B?bW9kMU5tcjRLTTQzTDg3ZXRLbU1rUFBWd254WUFQWWladHJBWDREQ3hpQm5V?= =?utf-8?B?TExNVkpob3R4UnBCNXE5Z2Y3dlgvSVZKaU9uUGEyUFVEejdIL2hyT0graW9V?= =?utf-8?B?TEhiN2I4R1E5ejZIN25Cc2JuencyWFhCanZXcFFSeVBHSThNWkhMNStGTEF3?= =?utf-8?B?aG13dWE3eHhLWUxHVzRTaG5pd2ZISDRXd1NkMHRrcmkzK0NkMlMyZURFM0tr?= =?utf-8?B?NERDcHhyM0trMXBGTzRjcWpNZFZEaTQ2Y0xoRU9la1ByUmpVL1hXeGIvcU44?= =?utf-8?B?b0Q2WWRBV1hMU3BJQ0wzS3lwUndHVkx0L0VpYVZxTUNCYlhmTC9acUdUYWtN?= =?utf-8?B?Yk9zOTRDMjJYeksyaGxTblVsNFllRTkyeURVMGg4Y2pzNU1FaVMyT2ZhZlE3?= =?utf-8?B?NC9jRkRFNFVpRzQweW5OOExoS2N5UHlYWnVSNm5PM1VYR05YeUthdXBxbldZ?= =?utf-8?B?alF5eWt4ZXhucHlyTnZuYmdMbS9idHhKaGhQL3JRWG9VZ1psaEo0ZmxtaXZQ?= =?utf-8?B?eXdxSkxZaVlsOW1jVndNaHB0aE5BK2dUMTloLzRHUFo2aHBOWXZnT2dwTGZv?= =?utf-8?B?MUVESEpjdXA4d1V6ZTFDc1JnSG5yYmNmdmFXTFNXTkRLYVBaSlpSS1R6STN0?= =?utf-8?B?ZzFDSW9ySi9sb3pVNnRHSnlYZXU0NWFJdnIrVEd6WkFyNDRkVTI0QUd2NzFj?= =?utf-8?B?c0lwL1FxdzJSUnJLLytTZWMzeWRSV1owNmdjY2JVME9iZEZOOHd0bnJ4bUpV?= =?utf-8?B?MWsxOGFUemZlbk93YjA5d0t2LzVKU0hYMUtWV1AyYXU3LzFMMS9NcFJncjBm?= =?utf-8?B?SFo4U0JaamRMcktHR285cjVZSlN4eUpZSDdwNHBudGRZemFDUElpLytsVWVq?= =?utf-8?B?bXYzNFFkdU9UdHNmeHdJbWkybkdBSStqVnFocFBRTmZNUG1ZMUg4MFhpYm1G?= =?utf-8?B?TnlsUSs1ZjkwL0U4R2p5SkxRR3Evem1Ca0xlWkN2UlFQSWl4T2NVM1hTUkRH?= =?utf-8?B?ODNja2E1RDVaUHdOaUJJM1RvTnVZVjBQbzJLNkcvQUVua0JsVDZRcFVKblQx?= =?utf-8?B?VWpOUFNsUGNOQzRUcVVoVGo2V1Y1bkk1NkFaT2tjcGxMNUo0a2pXM1RiMU80?= =?utf-8?B?Wlg3NHg1WThEdEJlZkJGYnhZK2NOTGZyZHYwSU11VEprajI5YzI3bVBTWWRX?= =?utf-8?B?RVZ2R09LZjdoT05WMGNSS0pvc3JVdWFFYUF6MC9mNU1aMkJoUW85a1p3ZDVN?= =?utf-8?B?VXd1ajJhUDIwTlNKL0NMQjZEUE1xVnVaanBWZUI0amQ2VGRnVk9rYmRRUFov?= =?utf-8?B?UHYwbURVam9uVVl1Q1BqMmVJbWljUGcvNzNPamNoT3pTOTR2Zlhmd25tM1gz?= =?utf-8?B?RjFFcWRTdzlob1BqNzhRNTVUUWhNejY5aVBXRGoxTE5iQ2IxcUcwdTYvUFdO?= =?utf-8?B?SGRBWFhZd0QxVTdWUnNTYVZFSXU2RzVDUTBkbDRGUER0RjlVK2VYTUFpL1hW?= =?utf-8?B?blZIUHAzSUZHOFplenNDV1l2bGwwaHRzazRDa2tmYU1MbHZxa1lmdCsrTDFp?= =?utf-8?B?bE5YWWwrNEhTdmZ2THpLUm9TY0ZHZDZUU0xKcmVhR0hUdjJtalkwaE0yV2lh?= =?utf-8?B?QmFzbzV0Z1J4MFMwZk9JeXpoendUUjFmZkphOWgxdGM5cEVqRUlUU2JVc0Uz?= =?utf-8?Q?I7SUpkLIly0XNVJdfFu2TuuHj?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 389378ae-e389-44cf-dcda-08dd89f821a2 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:16.6555 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: u1vJ1QELDf+voDp2MgP9LO2Vad5TvN7dn7dfkySbKkMSgsxM8U9e87GAARMs/9u7EiYBQxdFQOyw1CaUPzcFsA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Add explanation of fwsec with diagrams. This helps clarify how the nova-core falcon boot works. Signed-off-by: Joel Fernandes --- Documentation/gpu/nova/core/fwsec.rst | 180 ++++++++++++++++++++++++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 181 insertions(+) create mode 100644 Documentation/gpu/nova/core/fwsec.rst diff --git a/Documentation/gpu/nova/core/fwsec.rst b/Documentation/gpu/nova= /core/fwsec.rst new file mode 100644 index 000000000000..bed941ac3f2b --- /dev/null +++ b/Documentation/gpu/nova/core/fwsec.rst @@ -0,0 +1,180 @@ +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +FWSEC (Firmware Security) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +This document briefly/conceptually describes the FWSEC (Firmware Security)= image +and its role in the GPU boot sequence. As such, this information is subjec= t to +change in the future and is only current as of the Ampere GPU family. Howe= ver, +hopefully the concepts described will be useful for understanding the kern= el code +that deals with it. All the information is derived from publicly available +sources such as public drivers and documentation. + +The role of FWSEC to provide secure boot, it is running in Heavy-secure mo= de. It does +firmware verification after GPU reset and load various ucode images on to = the other +microcontrollers on the GPU such as the PMU and GSP. + +FWSEC itself is an application stored in the VBIOS ROM in the FWSEC partit= ion of +ROM (see vbios.rst for more details). It contains different commands like = FRTS +(Firmware Runtime Services) and SB (Secure Booting other microcontrollers = after +reset and loading them with other non-FWSEC ucode). The kernel driver only= needs to +to do FRTS, since SB is already already after reset by the time the kernel= driver +is loaded. + +The FRTS command carves out the WPR2 region (Write protected region) which= contains +data data required for power management. Once setup, only HS mode ucode can +access it (see falcon.rst for privilege levels). + +The FWSEC image is located in the VBIOS ROM in the partition of the ROM th= at contains +various ucode images (also known as applications) -- one of them being FWS= EC. For how +it is extracted, see vbios.rst and the vbios.rs source code. + +The Falcon data for each ucode images (including the FWSEC image) is a com= bination +of headers, data sections (DMEM) and instruction code sections (IMEM). All= these +ucode images are stored in the same ROM partition and the PMU table is use= d to look +up the application to load it based on its application ID (see vbios.rs). + +For the purposes of nova-core driver, the FWSEC contains an 'application i= nterface' +called DMEMMAPPER which is used to the "FWSEC-FRTS" command (among other c= ommands it +is capable of executing). For Ampere, FWSEC is running on the GSP in Heavy= -secure +mode and runs FRTS. + +FWSEC Memory Layout +------------------- +The memory layout of the FWSEC image is as follows (this is using an GA-102 +Ampere GPU as an example and could vary for future GPUs and is subject to = change +completely, it is just provided as an example): + +Here is a block diagram of the FWSEC memory layout:: + =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 + =E2=94=82 FWSEC ROM image (type 0xE0) = =E2=94=82 + =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 + =E2=94=82 =E2=94=82 PMU Falcon Ucode Table =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 (PmuLookupTable) =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Table Header =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - version: 0x01 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - header_size: 6 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - entry_size: 6 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - entry_count: N =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - desc_version:3(unused)=E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 ... =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Entry for FWSEC (0x85) =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (PmuLookupTableEntry) =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - app_id: 0x85 (FWSEC) =E2=94=82 =E2=94= =80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90= =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - target_id: 0x01 (PMU) =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - data: offset =E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=90 look up FWSEC =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2= =94=82 application. =E2=94=82 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2= =94=82 + =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2= =94=82 + =E2=94=82 =E2=94=82 FWSEC Ucode Component =E2=94=82<=E2=94=80= =E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 (aka Falcon data) =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 FalconUCodeDescV3 =E2=94=82<=E2=94= =80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - hdr =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - stored_size =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - pkc_data_offset =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - interface_offset =E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=90 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - imem_phys_base =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - imem_load_size =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - imem_virt_base =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - dmem_phys_base =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - dmem_load_size =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - engine_id_mask =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - ucode_id =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - signature_count =E2=94=82 =E2= =94=82 look up sig =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - signature_versions --------------+ = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 (no gap) =E2=94=82 =E2=94= =82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Signatures Section =E2=94=82<=E2=94= =80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=98 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 (384 bytes per sig) =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - RSA-3K Signature 1 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 - RSA-3K Signature 2 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 ... =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 IMEM Section (Code) =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 Contains instruction =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 code etc. =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94=82 =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 DMEM Section (Data) =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Application =E2=94=82 = =E2=94=82<=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Interface Table =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 (FalconAppifHdrV1) =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Header: =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - version: 0x01 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - header_size: 4 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - entry_size: 8 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - entry_count: N =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Entries: =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 DEVINIT (ID 1) =E2= =94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - id: 0x01 =E2= =94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - dmemOffset X =E2=94= =80=E2=94=BC=E2=94=80=E2=94=BC=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 DMEMMAPPER(ID 4)=E2= =94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - id: 0x04 =E2= =94=82 =E2=94=82 =E2=94=82 =E2=94=82 Used only for DevInit =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 (NVFW_FALCON_ =E2= =94=82 =E2=94=82 =E2=94=82 =E2=94=82 application (not FWSEC) =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 APPIF_ID_DMEMMAPPER= ) =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - dmemOffset Y =E2=94= =80=E2=94=BC=E2=94=80=E2=94=BC=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 DEVINIT Engine =E2=94=82<= =E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 Used b= y FWSEC =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Interface =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 app. =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 DMEM Mapper (ID 4) =E2=94=82<= =E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80+=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=98 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 (FalconAppifDmemmapperV3) =E2= =94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - signature: "DMAP" =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - version: 0x0003 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - Size: 64 bytes =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - cmd_in_buffer_off =E2=94=82 = =E2=94=82=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=90 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - cmd_in_buffer_size=E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - cmd_out_buffer_off=E2=94=82 = =E2=94=82=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90= =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - cmd_out_buffer_sz =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - init_cmd =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - features =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - cmd_mask0/1 =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94= =82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Command Input Buffer=E2=94=82<= =E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - Command data =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - Arguments =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=90 =E2=94=82 =E2=94=82 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Command Output =E2=94=82<= =E2=94=BC=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BC=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98= =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 Buffer =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - Results =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - Status =E2=94=82 = =E2=94=82 =E2=94=82 =E2=94=82 + =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=98 =E2=94=82 =E2=94=82 =E2=94= =82 + =E2=94=82 =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 = =E2=94=82 + =E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=98 =E2=94=82 + =E2=94=82 = =E2=94=82 + =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=98 + +.. note:: + The FWSEC image also plays a role in memory scrubbing (ECC initializati= on) and VPR + (Video Protected Region) initialization as well. Before the nova-core d= river is even + loaded, the FWSEC image is running on the GSP in heavy-secure mode. Aft= er the devinit + sequence completes, it does VRAM memory scrubbing (ECC initialization).= On consumer + GPUs, it scrubs only part of memory and then initiates 'async scrubbing= '. Before this + async scrubbing completes, the unscrubbed VRAM cannot be used for alloc= ation (thus DRM + memory allocators need to wait for this scrubbing to complete). \ No newline at end of file diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index 91cc802ed94f..22e5712ac6b0 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -28,4 +28,5 @@ vGPU manager VFIO driver and the nova-drm driver. =20 core/guidelines core/vbios + core/fwsec core/todo --=20 2.43.0 From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55FC119C554; Sat, 3 May 2025 04:08:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245305; cv=fail; b=o8GxrjaZCuh2ca3f725Ny05YvtPu0dm++a8vhfnEyvrUpk3+/pR4XZKvnvgti2GggvZN8BojNwSSzbTtTLvLq8P3JsXjfrUnH3jvnULKpDFmKIPmCOWlC1FEsvirNVeEv0K565RM11gbyF7+uXpab0nizpq4sbARxkoRudyRwvA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245305; c=relaxed/simple; bh=SdgP/ZHp33BMyBmdsPVx2IITdROIraVAzdT++o2QTA4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=icl3Ggfxtlf59HVr/9sLm6PlRO0sKLfMNBE8ltpxjIzrSx6UFYyuZWXU7+wmp6rdGSNa0ia60LAu6CWLyz58ZoJ4G4BscEiE1F75hheJ27og7vcdNi5D42NmVGSgEAojnAkoj6xau0wuQsPIczuUt7+4rwAkn2kEzEQbi5ZuOZk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=sIHYOwn0; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="sIHYOwn0" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ff5GizAIeLOujMJrV64rvWVs5OFMbsirDuAi0WVJwPZJ1CuoXUD9TnLs4hoG95yn2L5Bl2kiHdHrt+hyQuUFf4WqdtX0v2R12vI35+Ou4PZR2K2tskQ+SCQeAFpDfEEKOYo+PKGM2qdI6h4eA6QlEcL3lOQ6S/1if8zlbPy25wse1sp3j8yVK3ZVoZ/V13up441jVBO5sTDUFFSyvyuIWnAsfYSiEkyEOsIni11mowjmyd4CtvtiqSSP4ycmxezJLOKEW2TdGPCygc9jAyL1P3ZDGAb8ArGKZNiYTc+xsRJ8EL1Kg0O6ZBrj/dTyhd/h5amTv9lKhE0QUH85aCW0Pw== 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=c2DYA742dUvRh92COsTaBpkZHdkC1nxUFQ8gjg6skQQ=; b=km+o/WlF/33zz40p9yuWFOWCCgX3T0A09B7xfWjLJk9HhOb+CDii0VbVQ0ZvtqCg1S299m8lW7UKNnsJUF70TXars6rxZZ+z1l+ZGzS9LigVoiwotBYZqQfNhYSWbxrQ9utbyG9sMwsOVhuVQ2kP/QQDKzlPBnuZ4A4Z2qksU2q3UwDMcpiStxUTM7CCBpFXSTth6jeyfonmfJq6OkaqPondvMIj7E0wao2sXsIymzdGE878eXBhjCzcUoE4cqBZp2xXapW/JzLrJjiciiJX61UD9AOSaTKWZgxBlHpII9OpjVhB8LeLek6BsE2ogyfOfjvD2Jdihpf778bCNJigvQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=c2DYA742dUvRh92COsTaBpkZHdkC1nxUFQ8gjg6skQQ=; b=sIHYOwn01Z5kBNI92hNqM/61Tuv3yO+qJwHEQrAS1s5bdJCAe0OvW3Wn6MJRWLzHlAarO3Kd2VqED+4hqdczCMV0m8e7m/kLovgzJjoJ7cyMbqE4K0yugEuPpyeoxYeFrg6iZAJVBBgAxDnh11r2JsXP3OgHKbS0cMPo9VLrA4Qmu4egt3OtK+NxfPgxJrGGQmp/ljwviKqDriiuIFesk3KTXfDdsqZvpl3Ix3F3PdcmVDiiDFQhBrVCNdcQgp4qdypGNmHceBoSvhTXMdlgHVDtLlG6ovit23+CMjf1mC8zY+Djuf0df0ndBDYUQU2kH6qv+9ROsPGHAj/jMf4BlQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:19 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:19 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH v2 5/7] docs: nova-core: Document devinit process Date: Sat, 3 May 2025 00:07:57 -0400 Message-ID: <20250503040802.1411285-6-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0538.namprd03.prod.outlook.com (2603:10b6:408:131::33) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: 487dcb37-4f16-4b4b-de01-08dd89f822ff X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XGE2YiAtm+NwJV8xhXIeuujftvZ4WXlG7gQ7ahPWGRtrsLIA1//knfHt1Chr?= =?us-ascii?Q?ZR3Dx9Ji25jB/l4hjYi/5S/n/MfKOp6llAv3cTosfwUeCPOws/TMtYhztW5l?= =?us-ascii?Q?xIk9IkNFTZSzqw+HsH4sHoUhjTTfXbWa+4UXU89JS2KjFbdyeW/yGQRAFrHY?= =?us-ascii?Q?c4xptL/aETduUIU/R1+osaTNx+nEcz+Qb/5xvjXEQJ4YKgsbdcuoQek9AVvw?= =?us-ascii?Q?jCXxnNMrWH8zlz/JTbyac4QOIDh8lf4ipRS9y5mrehpGqBMOa9JU3MEtPVV+?= =?us-ascii?Q?VBOoZAFYl0yYg6KpoO2nqjLG6y1v/x7J1sDa2OyXuknlAr+eaRyFc1y2WFuQ?= =?us-ascii?Q?HsK+kx8HqP2sAnUn5Zf9nCUPiSH+Tqx8FhX+zeh1RRfDsE8KrrQI0oW/omxX?= =?us-ascii?Q?py6iJrPX8ciDYN2Dl157q+ILZnhFbRKnxUyj063EwAnujIYvCtBaPizCbt+V?= =?us-ascii?Q?GA1RFlTEk4RmFJDp+bwNgMGsGS9fqkdw4agRR+ZIylq95WL4ectRa5xcsIwW?= =?us-ascii?Q?OWe9TkxnEkH/7voPk8mfBzz303dX85vw5HQdy2gVkSo7SHLoXt+X/S6ivu5P?= =?us-ascii?Q?cLbR7w8d2Q2pKgkhhdM7GuJUWsCWDRvIFnWZIl0BtPVZyfJoEDoAxa+5woHb?= =?us-ascii?Q?XkmMZ5FD1aKeKQUP8e36KjHocMX77odzZFh44bkLXHeC9XoMM2YL+olw9BC+?= =?us-ascii?Q?rwDstDZs/jzhu2cL7u6G8Cqo3e1O/Q7w8sLBZLj42k+Em7sQuGDIQbuoYhTm?= =?us-ascii?Q?oiJRCRq6McAdO+H37lhOtd+SzfMt+QDRa1KrAo57yeltgzDW0CE5nmRGSd/C?= =?us-ascii?Q?m79t6nWo/Ps5B9gMyjdM5xDTAJ1kTLKcCn6jMu2b0ncEVuWmtuGhzmUCvezg?= =?us-ascii?Q?Ohrjzs0agjF4etjrCk1HtqzW0GczpCZD7oRFoL0rAiQwodAeMg08zR92NAJ2?= =?us-ascii?Q?iOmoAOK+8yFvFKbDpb3U4nqooJSsWyEdsY19XSIumZ7QZHvqzIr/daDbhdCE?= =?us-ascii?Q?mrHZYSvg1fwl+K1Cr+tVxtFaY2hCBLQj3/HFT9aeYBMPKC5VNvqkDJK/QGZV?= =?us-ascii?Q?+sbIvETG7ceJ6Gbip5NCBe6IwFoXjUZNvjK2CJMkqfi0CY4UKvfI6sl0zG/N?= =?us-ascii?Q?4dZaIkqvmcPKp7L8guISyKvM0wZNJBoL4mYiqQvAKodRyYBwJJiN+RBmY+qv?= =?us-ascii?Q?cfXsdnSzgHzYdQ0M+3HatIVrYBoeRs/QTv+A18taZd5jwv1Sxoi2AhGOBgYg?= =?us-ascii?Q?rsj1Yh4Iurp/pMquEiD8rDkU3l7a2Bl+9eep3M2kaxPfLcNSniWioRfqkhqS?= =?us-ascii?Q?cC5CYXj5dKeA0TVWze4GgOBuB3OfD6bEJky7/Pw1gMOlCtcnywngLJTxEj5V?= =?us-ascii?Q?lVOVe+P5xwuiYAoWZLfVo8KROd0ckK2q4iTU95yQoZ4KyahkhjwmvBTgIA3m?= =?us-ascii?Q?EDAhqj/ENE8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dvPPVnKxuaqsfb+taJQ9eE4DPlkWwOAeHt81rqCMbz2BXSYafntTtzOCCfYg?= =?us-ascii?Q?Tq/WSfB4aHv3wbrZTajtQIjis0slyqEB/lOmlEdIuwXhujyqwFh2quljIDeV?= =?us-ascii?Q?DUcRLNnwdnJAuuabTl0Xfaeq1/wp6cZRe6P38niVvXRf1CuYscywSuCCPp5m?= =?us-ascii?Q?SB6+1x7xGWx9rvJMi7u9STU3bIPKMLda4xfpTkbU7q8lW9/ihJkDwSzyd8zh?= =?us-ascii?Q?EHbOL/pA+PfUxEa9ZXcyEhy1cp7mcGS/Y/8uRLWdGqPYYReRuGAIitlsDjP/?= =?us-ascii?Q?/Z25tezc0GTBcOw2MkfbYBIFu09aMlH0k6y7UQrjkb2U0Pculu26ztv9/Kc+?= =?us-ascii?Q?vgWYR+IcxH72NdRfvJr54DBoVjgNRAuaXYtEyCHZ2eQWZMjmEr/3ezjjfaFw?= =?us-ascii?Q?f1m8BX2pLbiOk0hK4fhn+Lm0iCgKD9pTvKmPi1nGIjLJkEHJ9DvFae5m9+m0?= =?us-ascii?Q?RR5VVj1xuINlcTKzKbFkvhNVA//idJivWPYXmJpcU2Y6vnOKOXQSzazc8YZE?= =?us-ascii?Q?qNdnkW4J0sjpqTE1bWQES5GpMTBdCVV6fR0kb1cx+wGpoPkuFlnncer0jDI4?= =?us-ascii?Q?FpnCSjFeEs2dxU0Mf7EecHJbsymI5BjbdPVlzBHmZsStFupjkVFtxbimrOan?= =?us-ascii?Q?g3yneXtBaqi9GM+uGP9NzP/cSBSCbiH2k9bv8ob7LAPVbqHW341k9PBm17RU?= =?us-ascii?Q?DZwQh9hREEpYRK0nEpsCCDmNnxm35rjF/Nn1Y5UyY4tyE5mInYNIhG09Z5o/?= =?us-ascii?Q?5YrjKvgdGToqeph0iccaGutqEaQDVfn12k2csI6dArq3CoNLMlzwJYpNHZ57?= =?us-ascii?Q?QgybwboXdW3rBhytfcKvVrB0pbjwyh+eOiEht5oB+vhxLVWVYVV38snJI0dG?= =?us-ascii?Q?qBeCtLMJU9Jz0joF/MnzA1Dd7wM+9C5efHiCd0e0rsSswNxapUnTYU2acDIO?= =?us-ascii?Q?PPyN1eIYOYHG6K9icxP7VwRbhUhQsinjlVCweT7ihe/PE0lD3UL/mfmHwJB0?= =?us-ascii?Q?DgFoyiLrQ2i32+m0vLps3lhPgqSdLFXnZPktsaUSa/S6B6dEegrAX9ybD7IK?= =?us-ascii?Q?gKvRHsRCVGGncQGkq/D4s/P5JcdkYCkZEMWMEraO8e0AqIT2Xqpt9mBaFigY?= =?us-ascii?Q?tEr4LvxjGeSs1DFI47WmV1+FGFEUISjr85/+1tx1dw16UlgH8pc+WkSpwUd7?= =?us-ascii?Q?E63CrfqAXnSLrd0kZ99mSYklq4nQ0q8pBJRuLzTwIikSaWBjgv48vJPbfo7u?= =?us-ascii?Q?F/w3LN4XkKEh57qRgOmDKlYlXz5DzbwY+FJ1Eqll9xwEqqurie8pArvHJxvX?= =?us-ascii?Q?eAv2OUdNzwlrEUiTxo1W9j7za8U9Extet1BtPyNyPDlrzIkxyVk8UV61svJz?= =?us-ascii?Q?aA8TNQWE8+oGGYiUyN1YxhfRJ5zCScaolbMp91i1ZJkGXH94V968AGecEYqk?= =?us-ascii?Q?izwhnIsl8+gbtunvA8JGEmel1nFAGba4pColB1u9kj+dO0tfYyz6wh9HNhQ+?= =?us-ascii?Q?/Ha6SUHIEKcL58fSNhv7ih6mkXUwoFj1Bw+jK07akx1MerxfJLNaTDS7D69Q?= =?us-ascii?Q?2sII0y9X4t/LN9NwxtL4badbYzxLIGeKgOduTgdQ9s9XQGIzPcUpBzim97nH?= =?us-ascii?Q?KQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 487dcb37-4f16-4b4b-de01-08dd89f822ff X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:18.9903 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7TiBznSPWLkADHgX0sX1VILuMBiqbeeOJrpO3YKr31HIXzItF8WY1alHIiFP69bdCZurjWdYyTHH638G2cI5lA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Content-Type: text/plain; charset="utf-8" devinit is mentioned in the code. This patch explains it so it is clear what it does. devinit is not only essential at boot-time, but also at runtime due to suspend-resume and things like re-clocking. Signed-off-by: Joel Fernandes --- Documentation/gpu/nova/core/devinit.rst | 59 +++++++++++++++++++++++++ Documentation/gpu/nova/index.rst | 1 + drivers/gpu/nova-core/devinit.rs | 6 +-- 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 Documentation/gpu/nova/core/devinit.rst diff --git a/Documentation/gpu/nova/core/devinit.rst b/Documentation/gpu/no= va/core/devinit.rst new file mode 100644 index 000000000000..85e7033dd3a7 --- /dev/null +++ b/Documentation/gpu/nova/core/devinit.rst @@ -0,0 +1,59 @@ +.. SPDX-License-Identifier: GPL-2.0 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Device Initialization (devinit) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Note that devinit itself is a complicated process, subject to change, and = this document +only roughly provides an overview of the process using the Ampere GPU fami= ly as an example. +The idea is to provide a conceptual overview of the process to help unders= tand the kernel +code that deals with it. + +Device initialization (devinit) is a crucial sequence of register read/wri= te operations=20 +that occur after a GPU reset. The devinit sequence is essential for proper= ly configuring=20 +the GPU hardware before it can be used. + +The devinit engine is an interpreter program that typically runs on the PM= U (Power Management +Unit) microcontroller of the GPU. This interpreter executes a "script" of = initialization +commands. The devinit engine itself is part of the VBIOS ROM in the same R= OM image as the +FWSEC (Firmware Security) image (see fwsec.rst and vbios.rst) and it runs = before the +nova-core driver is even loaded. On an Ampere GPU, the devinit ucode (whic= h is separate +from the FWSEC ucode), is launched by the FWSEC (FWSEC runs on GSP in heav= y-secure mode +and devinit runs on PMU in light-secure mode). + +Key Functions of devinit +------------------------ +devinit performs several critical tasks: + +1. Programming VRAM memory controller timings +2. Power sequencing +3. Clock and PLL (Phase-Locked Loop) configuration +4. Thermal management + +Low-level Firmware Initialization Flow +-------------------------------------- +Upon reset, several microcontrollers on the GPU (such as PMU, SEC2, GSP, e= tc.) run GPU=20 +firmware (gfw) code to set up the GPU and its core parameters. Most of the= GPU is +considered unusable until this initialization process completes. + +These low-level GPU firmware components are typically: +1. Located in the VBIOS ROM in the same ROM partition (see vbios.rst and f= wsec.rst). +2. Executed in sequence on different microcontrollers: + - The devinit engine typically but not necessarily runs on the PMU. + - On an Ampere GPU, the FWSEC typically runs on the GSP (GPU System Pro= cessor) in + heavy-secure mode. + +Before the driver can proceed with further initialization, it must wait fo= r a signal=20 +indicating that core initialization is complete (known as GFW_BOOT). This = signal is +asserted by the FWSEC running on the GSP in heavy-secure mode. + +Runtime Considerations +--------------------- +It's important to note that the devinit sequence also needs to run during = suspend/resume=20 +operations at runtime, not just during initial boot, as it is critical to = power management. + +Security and Access Control +-------------------------- +The initialization process involves careful privilege management. For exam= ple, before=20 +accessing certain completion status registers, the driver must check privi= lege level=20 +masks. Some registers are only accessible after secure firmware (FWSEC) lo= wers the=20 +privilege level to allow CPU (LS/low-secure) access. For example, to recei= ve the +GFW_BOOT signal. \ No newline at end of file diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index 22e5712ac6b0..301435c5cf67 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -29,4 +29,5 @@ vGPU manager VFIO driver and the nova-drm driver. core/guidelines core/vbios core/fwsec + core/devinit core/todo diff --git a/drivers/gpu/nova-core/devinit.rs b/drivers/gpu/nova-core/devin= it.rs index 21fc9b96d498..bd6a5c57c444 100644 --- a/drivers/gpu/nova-core/devinit.rs +++ b/drivers/gpu/nova-core/devinit.rs @@ -10,8 +10,8 @@ //! 3. Clock and PLL configuration. //! 4. Thermal management. //! -//! devinit itself is a 'script' which is interpreted by the PMU microcont= roller of -//! the GPU by an interpreter program. +//! devinit itself is a 'script' which is interpreted by a microcontroller= of +//! the GPU by an interpreter program (typically running on the PMU). //! //! Note that the devinit sequence also needs to run during suspend/resume= at runtime. =20 @@ -30,7 +30,7 @@ /// /// The GPU firmware (gfw) code includes several components that execute b= efore the driver loads. /// These components are located in the VBIOS ROM and are executed in a se= quence on these different -/// microcontrollers. The devinit sequence itself runs on the PMU, and the= FWSEC runs on the GSP. +/// microcontrollers. The devinit sequence typically runs on the PMU, and = the FWSEC runs on the GSP. /// /// This function specifically waits for a signal indicating core initiali= zation is complete before /// which not much can be done. This signal is setup by the FWSEC running = on the GSP in Heavy-secured --=20 2.43.0 From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34B4E19DFA7; Sat, 3 May 2025 04:08:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245307; cv=fail; b=gIqBpobAbr+Bcb1a+jkPaT5UkRvsJy7WOcC01UVfbDiEWhE4zxDQ+zwBRlrqeG+KxCTVftIRoKsamNjIdYe3YVQnk1D5MUH0XIot0k54qFU0jlsswd/+d6KIuyPA3FQQBvA4Bt+CxkMZlrogj7ylnvuyRrqxSCdlTkTKr9HnWzs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245307; c=relaxed/simple; bh=G6RKmyX+qjGh0b779nzOoRQEZjtshbsKN2ORYTpLBck=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=R/BPO6NcnVUJ9FeNGrmbJ4IGXMy44IpGuxeedMckxQot6k0/6cVq8VFXIat5LkHEMkpekCpzSS3pP4svOjTLCABU7zlwlQ9RX94vXXZ6eo9Pyaeyi+crffw6TfAKka9oF5QZX+K96sYPDhx0A8jpeqnEW+Y65wp7qcq86OkzFGE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=R0r5xWcG; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="R0r5xWcG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L/QXjGDM+PU0QguQHJlJos0BnrMb+TFTJyNzU62Q4KmdXizrxdY8CZbw8qxMfExCt9/adzL//BeaCLCwv2uJKkGK1AfUDBqxOnLz0q9IdWSJ6aj5zEWvLzpqYuozd0p8VECY81Zwfqcldt+8ww33Pw+W3Wt45cYo8BRJ4fohc8phIFMbqXsiIytWcyszxcNm3DrZOLOPgMAL9z9Kkq+e7/7BVy+vdzXfSS8U8Cfq0jaAcSs3dhcscxJzphUSvbLiZWvoiJUXDex7nL5KDqyxXK3rWgxH8mPJ+IIBt5j7be2tjFaxiP7iRrettlVv4dFDLyOgl3MvZesuRgxjDV+SaQ== 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=Qc70Y0Z52EZ3TqA7lQSDoymZPh1CTaawWZyxC6Ffdak=; b=ozxMAnbvLkuFz5Xq1ywHQm6stp0AbN+oQPtCsm78HgVvvLUryTYFBJUiagFbxMJAfzglluLGgDNVTDNme+SJBlosUAsExEgptAOw0dTmduIPnTZ3E3SXRCeE6kJmDvNXPMnN92HVGm43KR+07NnGx3gCLS0X6PbabHZf69H+nMx0tAT6MyI6tDnraDnlnX5Qgok3jPeHKV2wV+j3JGVDu4JKeGzYAiOvZul96oIX+BFhoYMYNKlFKEJs614jj2dkQmOgOyeqetr6TP+XtPrp24cDlx++EXYNtidG0Bb8gYwDtV/YLzfJALS65SfG7oznqvM0oI7w70VgZdWG4VtOjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=Qc70Y0Z52EZ3TqA7lQSDoymZPh1CTaawWZyxC6Ffdak=; b=R0r5xWcGtM9zkI3p+dq0AWDm499OWkM1M3FlARkc5hmwjnteUYMxlGtsuOJcybZ0Rod0m+unQ2GHk6VBnUD4qRFbuvS0iNN1df77xYQkag9qcyZd6c1ehOLGVELmuJD3ofXNv6gqOXqgqXudidRh+r0UJ7I4COtprIviYx3tB+sFpGkzv3X/DRM1IncSmGV6fdJaKPhTc+IgErsqWf17COyeTThkwmohSyfBQ2EQswHUs86c9Ns6fzBMdcjtMpshZz5W8M4rBZHOFNYP5IW1ft2Rb5qqyZzB/lWONI2ai2diF6jrRPJUby/J6xE6NEnrhs16W5K/lYRDicNXrdxUdQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:21 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:21 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH v2 6/7] docs: nova-core: Document basics of the Falcon Date: Sat, 3 May 2025 00:07:58 -0400 Message-ID: <20250503040802.1411285-7-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN0PR03CA0001.namprd03.prod.outlook.com (2603:10b6:408:e6::6) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: 9fffa790-2df9-4e07-df51-08dd89f8244b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Nk9JaVNPWFdsY3R0RW5oT1JnTk9uMUxQL3FGOTVqUnlaMkw4ZDdyOHVhdFBV?= =?utf-8?B?c1BQV0tGTUdRaTVzNk15SjVHRTJPa3VTUFMrdGVPdlQxMzhLYUw0MkpVK0xx?= =?utf-8?B?UXl1UmtuVzh3aUdSRzN3ZDZMNCtvRFpGbGRHbXN3a0tpdUdOYmJaMEpsbDZW?= =?utf-8?B?M2dONHY3ZjlRaGJjbmhyZk9EWmYyK25lMnVjaUlnQnptU2JsTjByQWZsYVYv?= =?utf-8?B?ZU1GbGRpQVY5STBSZDFlMk0zYlgxR1NzRTJRVDdueUhJeGxTQUwzTkltMWF3?= =?utf-8?B?VzFrN1BYR1VYRHAvNUd4aDZveUwxbmVwSytnOVBlSEk2T0xmMEFWMmQxd0VK?= =?utf-8?B?djF6VHB3L05ubTl1amh4TFdsUHZFNS93R1dkNzg3VWlrOXZVRzZkVzNtYWhX?= =?utf-8?B?MFNpMllGSHRvTjFjN2ljNFJZSUs5NTFqMWdCQjJIdWxQMURxeTZZd3ZNOFcr?= =?utf-8?B?OTluT2xtM1ZqT1gxcWJkeGpwRDdGRWZFNnJteGhxcnBBZit1YUFlMUp3eGlQ?= =?utf-8?B?Q1ErbVE4T0ZOcjVkTXpaTHVac2VLSnZTWmlXU2pDY0R2MGVYcFYwVmFHR3cx?= =?utf-8?B?VTNzMUJXSUk5NTNpOWtidG96SkVQZ2xpSDArV3hoZERyajJSM1o2Z2lzbmFl?= =?utf-8?B?NmtNdlFWSzJVdHhsemNxdmhEVEtUeWF2Sm9nSjM1S0NrY09lS0N4aU14cklJ?= =?utf-8?B?czRGWkxTTDVhNTQwUFZCVlB5K2poVDZGVEtyN0gyRUMvTjdhZlIvaGFZbm5R?= =?utf-8?B?WFNmcm1lUVMrZjFjeGNzREE4U3g2S1IrUVlROEVNNVkwc0pEZ0tGem5NUG0v?= =?utf-8?B?Z05JV1R2NW8yWldUaDB1ajA5cEd2Q1Fpd1JzY0VhODJEUnBjQ2hYN01QTm9r?= =?utf-8?B?RjlyeGtZTmloMjNiRUtZSkZDcklHUkYxWGFxZHBVQ3F6VDJ2eDgzakpDWXBo?= =?utf-8?B?ZVBkOVVCeHJLNWFxeGhWd0ZvTmxGY24yZUppdzM3TEtjbnFqTHR4RlBBNjN1?= =?utf-8?B?MkI0ZDczMU1zUkRNa0JINzhlQTRwOWFZbEw2bENHelJIOUo0bC9hZmI2a2xZ?= =?utf-8?B?YjhsaDJJYmZsdUl3SGFMQldlQ0pCa3g2NGlFV3BKazBYRDNwRng1U1Q0a2VT?= =?utf-8?B?NnIrR0lVek51SHIwdGloRTNpamEzWXlEUlgvTGNWYzVxM25aWlhrRjU0S0F1?= =?utf-8?B?NUtkbHJFQjBIYWtQeDlaVXpFNmpXOHZrdktkTnJIWllVVjFsb1dNMnBzblIr?= =?utf-8?B?bDNJdnZqK2p5SWM5c1htY1JRTlFndXh6R28zRXRjSjBWM3dSeElVaGhpTGxI?= =?utf-8?B?ZEp6MnphSmRKbDdrMEZYM0VubTBydjhrYzRqUXpnUnlwZjcxeXkrT3hqb1cv?= =?utf-8?B?VURoRHlHREExWFdmS0NXVHY1SkwvVTI4NnJWRWJFYmpGa1JGQUhvOXZwTTJ4?= =?utf-8?B?eS82Sk1ybUZXM0ZiWU9EbGEwUGlLMW5lS3dxeDNYSU9pcUFnMUc3Rkt0TkVJ?= =?utf-8?B?UDdVZDk5cTlsSmRQZ3NVLzlmc2ZuV0F5WFBNYzRhNDNVRGVUZkloamlydm1H?= =?utf-8?B?cFM4Snl3ZE9PbWFQNlpJbmd1U3pLTVVqSlZCcmtJd1Y5Y21OTnRNRElMSHE1?= =?utf-8?B?bFNCcWI4ZlhLeU4vcno4WlR1ZXI2TjdqUmxxVlZFdnJKSHVQSC9va1BxL0dZ?= =?utf-8?B?eDNBNDlQUVNsYTJtdzh5NmkraVdFZmFqWWZ6Nk1OSUdSU0szNjNqOUkzSG1N?= =?utf-8?B?ek8rT0lQaklDUmNLak5sSjZmTFJuTUI4UDVnbWkvMTJEaHdVWXRMT0Ftdkhk?= =?utf-8?B?aE1iYjkyeG52ZkdPamxkNXNXUGlzc3FQZklMR1MrWGRCUzR5b1BlMEk3U2xB?= =?utf-8?B?YVhleUozdkVEK0lXYk9ack4rRCtlRHBuQnVPc29vbU5oS2UwVllpMzVzWFhr?= =?utf-8?Q?F/w/qsrQ69c=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VHg2d1pvQVJkOGJOWkNpaU9ibjhDNVJYQytmT3BCT21RYkhyUFNPRlZ6V21C?= =?utf-8?B?dk8yc1Y2Si93UU5DV2c3WEI0emxlVDFkVGdPWHArS05mN0szVW1OR2kvZ2NV?= =?utf-8?B?VTNISldmbmwxVndqQzdBY1ovYVFOZEQyREkzYStaa0NoZkdGOTJJL2FVTXEr?= =?utf-8?B?UUwrSGlObmVtZzFSTHpYSmlGV05kbEtVWU5JYSt0WXBSUE5QSUIzeW1xTnB1?= =?utf-8?B?TTl1ZHdkNmhvZ3F2VkdyMk1jV1dkZGFXUG9sR0ZpK0dMSS81MWFMUG5SUWJE?= =?utf-8?B?ZUpXN1VzRDF6ZGZYZDhjWmdxOEhPclhYcHFOM052ZnFieGs4VzJkZWNReHBT?= =?utf-8?B?UHhUOUdyZE03Q0s0NXc1N3NOMUJIbW15K21oa2EvMUQyRURxNUhJVGwzM0Y0?= =?utf-8?B?aVNiRldUWSsyT3gwTkNldFY4MGhFMkFnU2swaDRiWm0wS0JxQk1zYlhBVjg1?= =?utf-8?B?RnZERHNmNWlrc2VrSTBQNFlrL0tRWkl6RUFNVEdNNVlLTTRueUg0a2NjUm5n?= =?utf-8?B?M2xxM2dtMW5nOXB0Y0VkRDYzZW5OelVkaFdxTXcvSXJuR0gzZzl3anhHSHFK?= =?utf-8?B?MTRZaXRuQlZLOWQ4V2xmVDVQZkpMN1ZPaHJIckxpK3hTdHRscm5yMkhOV2xx?= =?utf-8?B?WlFMRG40M1E3blBwVy9aZkYxTUhvckt0a2JaMU5lRDRDK3lnZXhxclpxNWVv?= =?utf-8?B?b1RGVFJ4SmhnbEZhUFcyZ0JHRVIxdU1xNmczRkw3VXBTZ0xiZkU2ZGVyb1lD?= =?utf-8?B?d0I3dHpzY1Z1NUphVVZidVFZaWFRaGFqcFkrN0I4SzVSVU5jZlR3dU5oL0Ur?= =?utf-8?B?Mm55UFJMdVVlUGJQS3RlWUdGWGJFRXFLdzFvdEZFQjgyQjE0KzZ3czFZZWVQ?= =?utf-8?B?RFl6TThSUmtYZjhuSk9KVlR6S0hpcTNRcGMwMnFHeW8rSXprYXUvT3RCdmQy?= =?utf-8?B?bW1sQUp4K2ZZQjdISDY2eGFDa0V1SEVJVmJXcDZDdHYzQ2J5bEI1dHNMZWEv?= =?utf-8?B?T0hyYlBwTy9aOFZzcThlVVp0T0ZiNG9XRUdFalFnbGNKU2dhS1RGQ09pbmRV?= =?utf-8?B?ZXFsNDQxRm1HM0JxTGUrVkF4bEh6ZEFUSnlrVmUxY1NqN0VqQ0JOaGl6TjA0?= =?utf-8?B?M3Fxclc5RTFFY3krVGlIYVpONm40cG9NOXJVTTJyWWRWYW9LS0FyYkdFQ1Nl?= =?utf-8?B?Ry83UmZXeTMvbXpDRTduR3BqL0p3UUVzSFVxNFp3Uk1TTS9NbW5CdEFyOUZG?= =?utf-8?B?Tllremt6aHhEV3cyTTR0Y1ozVktUb01Od2ErWHZXR2QxcVNIK09lUVRZcnlQ?= =?utf-8?B?RElLS1krdU02cU5uMTE0Zno4eVpoVDhHc0lsMFlya29DMTRlR3VRRjBwSm14?= =?utf-8?B?Z05BUm5HZUhaTy8zb2ViYzB4cll6QjNnTWM3ejBZRmtMRDYyeXZEYWhsaHhH?= =?utf-8?B?L1VXUElSa2poQnVTMHFZblIyQUI3SEwrWFBnTlpORzlIeXRrRE1jblFvVE9q?= =?utf-8?B?NGdSbHA5VFNXUEZXQ09nS05TY1BxWWROMXgyVVFHd3RMR0hJWHhyckRRN2lj?= =?utf-8?B?OTNrKzRJZXZza2JyV1c0WDI1UEJ1WjJXN0MvVWk0emltZWF4cTRLaHBZN0lv?= =?utf-8?B?WEl1RVduOFpSczFIMENyamU1RFhUbEd2ZnB0cUVpMlU4Qk1KelNmTUY2UjB0?= =?utf-8?B?V1UxN1pJVk9LNHFDWkZYaVRMdENVVk5MQjFaR3RKbTd4S20xc3pzZW5RN1Fl?= =?utf-8?B?MUJra0w4R3VlZG9USlJqQnpsYVF2b3RJVDY5U3FITlpTS1dNZTc3YzA4MCtt?= =?utf-8?B?Zm9RN2FOcTBkZHJQd2RnWHpyMkxhQVV0bGZwWEJ2OHZhS3p6cjU5bndDdkNT?= =?utf-8?B?bUVsZkM3NzlXMXFna3pqVlFqelhZVE91bTZsc1pOcWIwUTNaR21YSmh6MUpF?= =?utf-8?B?QW0vUk9IdUhkbmtlbFVBUFlhSE1wR1piM0lQaGQ3bzFXbDZIL1RlWkR3WmtM?= =?utf-8?B?NkoxdnZVeXNJN25ub05STUE5RFpvcVE4Ry9acUI1RS8zK1RsZyt6OXVxbFY1?= =?utf-8?B?NUgyb3hhUEV0L29aUk5NK3lvZ2YvYnBlWUZpUUFDWEVmVTllS2F1aHp5TzEx?= =?utf-8?B?bUpxcWQ4NkdmWno4MjBVa1dxVndTWlA0a1RwNHBKNy9qcXJidVluK2lVNEpK?= =?utf-8?B?RFE9PQ==?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9fffa790-2df9-4e07-df51-08dd89f8244b X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:21.1268 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5dGoX3pIOkAtqoyXmN7nVmEWjLqE7yWvLk+xb8tKfzNyW44ZjFmlSfnggTTn+yf0GIdoL5JiOOoH/9Wtp+mVwA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Instances of the Falcon microcontroller appear in modern Nvidia GPUs and are crucial to the GPU boot process. Document some concepts which will make nova-core boot code easier to digest. All the information is derived from public sources such as public documents, OpenRM and Nouveau code. Signed-off-by: Joel Fernandes --- Documentation/gpu/nova/core/falcon.rst | 156 +++++++++++++++++++++++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 157 insertions(+) create mode 100644 Documentation/gpu/nova/core/falcon.rst diff --git a/Documentation/gpu/nova/core/falcon.rst b/Documentation/gpu/nov= a/core/falcon.rst new file mode 100644 index 000000000000..f2b89cc2a159 --- /dev/null +++ b/Documentation/gpu/nova/core/falcon.rst @@ -0,0 +1,156 @@ +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D +Falcon (FAst Logic Controller) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D +The following sections describe the Falcon core and the ucode running on i= t. +The descriptions are based on the Ampere GPU or earlier designs; however, = they +should mostly apply to future designs as well, but everything is subject to +change. The overview provided here is mainly tailored towards understandin= g the +interactions of nova-core driver with the Falcon. + +NVIDIA GPUs embed small RISC-like microcontrollers called Falcon cores, wh= ich +handle secure firmware tasks, initialization, and power management. Modern +NVIDIA GPUs may have multiple such Falcon instances (e.g., GSP (the GPU sy= stem +processor) and SEC2 (the security engine)) and also may integrate a RISC-V= core. +This core is capable of running both RISC-V and Falcon code. + +The code running on the Falcons is also called Ucode and will be referred = to as +such in the following sections. + +Falcons have separate instruction and data memories (IMEM/DMEM) and provid= e a +small DMA engine (via the FBIF - "Frame Buffer Interface") to load code fr= om +system memory. The nova-core driver must reset and configure the Falcon, l= oad +its firmware via DMA, and start its CPU. + +Falcon security levels +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Falcons can run in Non-secure (NS), Light Secure (LS), or Heavy Secure (HS) +modes. + +Heavy Secured (HS) also known as Privilege Level 3 (PL3) +-------------------------------------------------------- +HS ucode is the most trusted code and has access to pretty much everything= on +the chip. The HS binary includes a signature in it which is verified at bo= ot. +This signature verification is done by the hardware itself, thus establish= ing a +root of trust. For example, the FWSEC-FRTS command (see fwsec.rst) runs on= the +GSP in HS mode. FRTS, which involves setting up and loading content into t= he WPR +(Write Protect Region), has to be done by the HS ucode and cannot be done = by the +host CPU or LS ucode. + +Light Secured (LS or PL2) and Non Secured (NS or PL0) +----------------------------------------------------- +These modes are less secure than HS. Like HS, the LS or NS ucode binary al= so +typically includes a signature in it. To load firmware in LS or NS mode on= to a +Falcon, another Falcon needs to be running in HS mode, which also establis= hes the +root of trust. For example, in the case of an Ampere GPU, the CPU runs the= "Booter" +ucode in HS mode on the SEC2 Falcon, which then authenticates and runs the +run-time GSP binary (GSP-RM) in LS mode on the GSP Falcon. Similarly, as an +example, after reset on an Ampere, FWSEC runs on the GSP which then loads = the +devinit engine onto the PMU in LS mode. + +Root of trust establishment +--------------------------- +To establish a root of trust, the code running of a Falcon has to be somet= hing +that that cannot be erased and is hardwired into a read-only-memory (ROM).= This +follows industry norms for verification of firmware. This code is called t= he +Boot ROM (BROM). The nova-core driver on the CPU communicates with Falcon'= s Boot +ROM through various Falcon registers prefixed with "BROM" (see regs.rs). + +After nova-core driver reads the necessary ucode from VBIOS, it programs t= he +BROM and DMA registers to trigger the Falcon to load the HS ucode from the= system +memory into the Falcon's IMEM/DMEM. Once the HS ucode is loaded, it is ver= ified +by the Falcon's Boot ROM. + +Once the verified HS code is running on a Falcon, it can verify and load o= ther +LS/NS ucode binaries onto other Falcons and start them. The process of sig= nature +verification is the same as HS; just in this case, the hardware (BROM) doe= sn't +compute the signature, but the HS ucode does. + +Thus the root of trust is: + Hardware (Boot ROM running on the Falcon) -> HS ucode -> LS/NS ucode. + +Example on Ampere GPU, the boot verification flow is: + Hardware (Boot ROM running on the SEC2) -> + HS ucode (Booter running on the SEC2) -> + LS ucode (GSP-RM running on the GSP) + +.. note:: + While the CPU can load HS ucode onto a Falcon microcontroller and hav= e it + verified by the hardware and run, the CPU itself typically does not l= oad + LS or NS ucode and run it. Loading of LS or NS ucode is done mainly b= y the + HS ucode. For example, on an Ampere GPU, after the Booter ucode runs = on the + SEC2 in HS mode and loads the GSP-RM binary onto the GSP, it needs to= run + the "SEC2-RTOS" ucode at runtime. This presents a problem where there= is + no one to load the SEC2-RTOS ucode onto the SEC2 (i.e., the CPU is in= capable + of loading LS code, and GSP-RM has to run LS mode). To overcome this, + the GSP is temporarily made to run HS ucode (which is itself loaded by + the CPU via the nova-core driver using a "GSP-provided sequencer") + which then loads the SEC2-RTOS ucode onto the SEC2 in LS mode. The GSP + then resumes running its own GSP-RM LS ucode. + +Falcon memory subsystem and DMA engine +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Falcons have separate instruction and data memories (IMEM/DMEM) +and contains a small DMA engine called FBDMA (Framebuffer DMA) which does +DMA transfers to/from the IMEM/DMEM memory inside the Falcon via the FBIF +(Framebuffer Interface), to external memory. + +DMA transfers are possible from the Falcon's memory to both the system mem= ory +and the framebuffer memory (VRAM). + +To perform a DMA via the FBDMA, the FBIF is configured to decide how the m= emory +is accessed (also known as aperture type). In the nova-core driver, this is +determined by the `FalconFbifTarget` enum. + +The IO-PMP block (Input/Output Physical Memory Protection) unit in the Fal= con +controls access by the FBDMA to the external memory. + +Conceptual diagram (not exact) of the Falcon and its memory subsystem is a= s follows: + + External Memory (Framebuffer / System DRAM) + =E2=96=B2 =E2=94=82 + =E2=94=82 =E2=94=82 + =E2=94=82 =E2=96=BC +=E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=B3=E2=94=81=E2=94=81=E2=94=BB=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=93 +=E2=94=83 =E2=94=82 =E2= =94=83 +=E2=94=83 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=93 =E2=94=82 =E2=94=83 +=E2=94=83 =E2=94=83 FBIF =E2=94=A3=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=9B =E2= =94=83 FALCON +=E2=94=83 =E2=94=83 (FrameBuffer =E2=94=83 Memory Interface = =E2=94=83 PROCESSOR +=E2=94=83 =E2=94=83 InterFace) =E2=94=83 = =E2=94=83 +=E2=94=83 =E2=94=83 Apertures =E2=94=83 = =E2=94=83 +=E2=94=83 =E2=94=83 Configures =E2=94=83 = =E2=94=83 +=E2=94=83 =E2=94=83 mem access =E2=94=83 = =E2=94=83 +=E2=94=83 =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=96=B2=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=9B =E2=94=83 +=E2=94=83 =E2=94=82 =E2= =94=83 +=E2=94=83 =E2=94=82 FBDMA uses configured FBIF apertures =E2= =94=83 +=E2=94=83 =E2=94=82 to access External Memory +=E2=94=83 =E2=94=82 +=E2=94=83 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=96=BC=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=93 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=93 +=E2=94=83 =E2=94=83 FBDMA =E2=94=83 cfg =E2=94=83 RISC = =E2=94=83 +=E2=94=83 =E2=94=83 (FrameBuffer =E2=94=A3<=E2=94=80=E2=94=80=E2=94=80= =E2=94=80>=E2=94=AB CORE =E2=94=A3=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80>. Direct Core Access +=E2=94=83 =E2=94=83 DMA Engine) =E2=94=83 =E2=94=83 = =E2=94=83 =E2=94=83 +=E2=94=83 =E2=94=83 - Master dev. =E2=94=83 =E2=94=83 (can run both= =E2=94=83 =E2=94=83 +=E2=94=83 =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=96=B2=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=9B =E2=94=83 Falcon and =E2=94=83 =E2=94=83 +=E2=94=83 =E2=94=82 cfg-->=E2=94=83 RISC-V code) =E2=94= =83 =E2=94=83 +=E2=94=83 =E2=94=82 / =E2=94=83 =E2=94= =83 =E2=94=83 +=E2=94=83 =E2=94=82 | =E2=94=97=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=9B =E2=94=83 = =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=93 +=E2=94=83 =E2=94=82 =E2=94=82 = =E2=94=83 =E2=94=83 BROM =E2=94=83 +=E2=94=83 =E2=94=82 =E2=94=82 = <=E2=94=80=E2=94=80=E2=94=80>=E2=94=AB (Boot ROM) =E2=94=83 +=E2=94=83 =E2=94=82 / =E2=94= =83 =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=9B +=E2=94=83 =E2=94=82 =E2=96=BC = =E2=94=83 +=E2=94=83 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=93 =E2=94=83 +=E2=94=83 =E2=94=83 IO-PMP =E2=94=83 Controls access by FBDMA = =E2=94=83 +=E2=94=83 =E2=94=83 (IO Physical =E2=94=83 and other IO Masters = =E2=94=83 +=E2=94=83 =E2=94=83 Memory Protect) =E2=94= =83 +=E2=94=83 =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=96=B2=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=9B =E2=94=83 +=E2=94=83 =E2=94=82 =E2=94= =83 +=E2=94=83 =E2=94=82 Protected Access Path for FBDMA =E2=94= =83 +=E2=94=83 =E2=96=BC =E2=94= =83 +=E2=94=83 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=93 =E2=94=83 +=E2=94=83 =E2=94=83 Memory =E2=94=83 = =E2=94=83 +=E2=94=83 =E2=94=83 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=93 =E2=94=8F=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=93 =E2=94=83 =E2=94=83 +=E2=94=83 =E2=94=83 =E2=94=83 IMEM =E2=94=83 =E2=94=83 DM= EM =E2=94=83 =E2=94=83<=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=9B +=E2=94=83 =E2=94=83 =E2=94=83 (Instruction =E2=94=83 =E2=94=83 (Da= ta =E2=94=83 =E2=94=83 +=E2=94=83 =E2=94=83 =E2=94=83 Memory) =E2=94=83 =E2=94=83 Mem= ory) =E2=94=83 =E2=94=83 +=E2=94=83 =E2=94=83 =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=9B =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=9B =E2=94=83 +=E2=94=83 =E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=9B +=E2=94=97=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81 diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index 301435c5cf67..75a98ab63055 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -28,6 +28,7 @@ vGPU manager VFIO driver and the nova-drm driver. =20 core/guidelines core/vbios + core/falcon core/fwsec core/devinit core/todo --=20 2.43.0 From nobody Fri Dec 19 06:32:58 2025 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2076.outbound.protection.outlook.com [40.107.243.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 536D51A23BA; Sat, 3 May 2025 04:08:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245309; cv=fail; b=ZFUcYxdyYp8BdvXCiqG8M5xkd4H8+ZT0GiRr3lliGawBZ0AN5oEW+haF7UkBzZDX/qRoBCc/cgTOMv3GXfcVfhcFskHmSI/GBvfvQpi4w+Ywb0l+N5rsMfvB/ECJ9VX/2YOBRn2DCxKOK3wvilKByZPvxKkpovc+ug/ZOBr1Rs8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746245309; c=relaxed/simple; bh=GpM6TxmHpN21nhh4mSbkpgl1Yrcq4xyuHsq3TyHMOn0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=lI7troLGChPEh2XmIrVXArCBGXNbIw688g+itVxj0z+k8CmIRGvRNmRSr5/GWf3PoCoVr48VeDwiY5QomMztlPUuOCtGqqYu1m36weBY1XhpA2Un1FDk3RZAbf+P2kV9bSn3w+uTCzcVDwERPWyiw+Z3lTsp2gXaaQdL1yWWpAE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=cjPgxYjI; arc=fail smtp.client-ip=40.107.243.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="cjPgxYjI" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L2dkItn8PF6T/L6NVwRsgjqAobKw+kqkKhorx+sCWhF/DmJlXvKghnaIpNjT6r8mpOC+hKt/POpIUrJ25cQZjXAULBBJ4tbAJ9OXGBOb88Tp+4VF3wO50JFk0YJijHnqdrJlmrdRIFUv6hU7ZD+X49BSzIfmHmWNEnD+OrnOsMnoBTM7ZokXO54Fh6DvNIFQjS5zklWa3FjTqmaSHkk65lYaCx5EfKOLYNWFzSJpCRe/Yn9pc+6R4vx2ACbHJSI6c9r1mCf6i9+sPN3aZ3qZ9s+IhrPDyxZI6rA9gupbYXXVoMOKnt/yQe6MU4jwPDbm1NIren6EUzkN2ht9Vf8sJA== 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=HJJjYPq7YjhCCFoKY5WRYVF00YL8/1WCa2GeXBHE4xU=; b=ktXwAQGyPhbIF/6b5FD6DVlmSLVHFTuAmbWQEvPB4Qhs9+qqz9YFRpefjB+OWk6/NVw7VUQzexwln5sgBq/g6ryha8vW46bZp78OmsTZd3GuuMpzPl2u3RqZl1ZD47heTXqhBAciNAHMFCtVWr7FjfXYzqog+eqrhWqyhwbyaEN8oA0RXASzSPgzgkwRILJ6kTJk2EEsw7EACfKA3Fqg6Dl8E0T5H8QeXpfGfFII+fcSDpDeYOlUGsVjnMpDFiT20qbW7/+1WWEIDkxQ/EO9fLk3+gBKvFYn0EMp8AoF0qoSCW3dTsfNyPnDBFKdpqCFdC37ondjzUKGE+Jm2OyE4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none 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=HJJjYPq7YjhCCFoKY5WRYVF00YL8/1WCa2GeXBHE4xU=; b=cjPgxYjIGxwchM0NGhGI1/P1cPK9DxvqzXVlxQEeY9F2Jz7c7XmlJKNdxwx2B9YorSVK+4quCx44IEZYLIXjlAgIalu165kAunHtiAFiwl6dgyarreubms7Gjhr8H9yLngCPWXKfcEYma6kkca10Q3zQfPLKy2JcdcOAL2u8IL8gXwHOE+pbGPlVkhraGUSArJ1BgUeuQwqGU0UG+XDDLAdxRzvpfNC/AG7Ga+WseIDhY0kXqlfpbrt5d11sJ0aUPlGk2V0KxRDD7F+QCcWQb9Kh5WMhiBZ7utj444Ra/UgEH8pVHWtaeKoXx6JBREw2XOUaIcL7Iit9VhKGbXj8bQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) by CH3PR12MB7713.namprd12.prod.outlook.com (2603:10b6:610:14d::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Sat, 3 May 2025 04:08:23 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%3]) with mapi id 15.20.8699.021; Sat, 3 May 2025 04:08:23 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org, Danilo Krummrich , David Airlie , Simona Vetter Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Alexandre Courbot , John Hubbard , Shirish Baskaran , Alistair Popple , Timur Tabi , Ben Skeggs , rust-for-linux@vger.kernel.org, Joel Fernandes Subject: [PATCH v2 7/7] gpu: nova-core: Clarify falcon code Date: Sat, 3 May 2025 00:07:59 -0400 Message-ID: <20250503040802.1411285-8-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250503040802.1411285-1-joelagnelf@nvidia.com> References: <20250503040802.1411285-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0040.namprd03.prod.outlook.com (2603:10b6:408:fb::15) To SN7PR12MB8059.namprd12.prod.outlook.com (2603:10b6:806:32b::7) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN7PR12MB8059:EE_|CH3PR12MB7713:EE_ X-MS-Office365-Filtering-Correlation-Id: 27ca6ca1-7f5e-4623-25bb-08dd89f82580 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?0QVTLBIRN02DsNXEau+kUdxh7jQnY8S4NfBPGd9mB/gVwNUCb8LsCZg3zdL9?= =?us-ascii?Q?PoLrDmE1ddP7T4xTc3kxnS1i73EoVm7RMwxTo373G/LI6A5VidCWPc7bjo0N?= =?us-ascii?Q?Y03yn7ck+atqct/0bm94zHQvZBw3Fsc654IZWJRWOYahOTg5JvoxYqPP+Geq?= =?us-ascii?Q?/3xSZjbmXPEqdRpFfpI99cCHOdA1LH+yYTUp7YghdK7SdeaM+/rMQQ9n0xGY?= =?us-ascii?Q?jWRWHf3gHdYuRz7OgL/WQlNYveqzuTNyEcUznMB27sMmO6NE2exeYojVnWvm?= =?us-ascii?Q?nXaeKrgmyt05H9As8VClvueIzF9prlJehvgnY+CWViV3fYeAPKsmfgwtaFND?= =?us-ascii?Q?BiVXEB8lv0vOaHqU0m7tMl8GtTwqjIoK8rvJKgy+ypRTFuHJSj/47QjcQgFw?= =?us-ascii?Q?NgG0ZsCXHA60njKorzGnhyeHWHZye/1TJ+sjInrK6aw2Y1VHcygglmrEBM46?= =?us-ascii?Q?OVvlUzi6rdc/bdNQSQgxz2KdZm/DxDwXrp3QWAu00uij4YcoE/qTR43rudXZ?= =?us-ascii?Q?0HaPaZlsCg+XVo/zGpdgOTQXvq4UEc4ljjsGImMViGuTcT1bJ+yWte0wtuiX?= =?us-ascii?Q?xEdKjKam4fweB0lvirB7JwvPBBoDFUdgfJMopHRUHSuqo82hHSJa/SBjtQNi?= =?us-ascii?Q?UoNcffNno7+QYfVk7uschpICb+9rLhYVECSxbinrnCnuYMxVRcBNxeP3FWrY?= =?us-ascii?Q?yBGE4QUSBo0EwjPrUUbyw/lbyO3a31Oj5RJS5MK6WHQSDq0TNg1YRdC50YMg?= =?us-ascii?Q?gvPVXvxmEKU6V5hKnwhafJxqluhxxgJXHOaq3ge/aaRubEPAeCDNjdgbaxIg?= =?us-ascii?Q?4qktx5ugimcP75tl7JecZFnXmgn6d5mbrTqDUIkFjRjHdK6WadSmvGqIKuoQ?= =?us-ascii?Q?j891jcXsz7GKNLzeAto23+owo46mWR7hmsu4OfI1aboEJ418Ngbq2UWYW6fR?= =?us-ascii?Q?k3+JUoBUE4pHdHECIK/64ZbtD+Oz1HC/2BuQLl3/AkYkwRJNjBd+GvIIT91a?= =?us-ascii?Q?rhDyTVuUpRymd6nzkegembwbbWFiKn7eqTqYgUaFp57c2RdaTw5H/Z/I03Db?= =?us-ascii?Q?eI1LYykeTdJygl8YMWy5Dl4jC6BAVmEvdpCvFbkyReSjIU7lKRnlqGJl8XrQ?= =?us-ascii?Q?JUhIOJC4qnxIaUEXtErb2JCiHIpeir/6vNWkOenxtA8ZC4oLEM+5wml6OIx7?= =?us-ascii?Q?QVap7GrMCKfUIBa4xYIU/DbX4LTnE8zt3EOTqTyC+wm9nkjxezjQE4CJd492?= =?us-ascii?Q?GltX0UBK5oHCOq0YDSXTRhFSK/+fglq8cPvcD9tEJW7bpcX3IwHUgiEcpiVU?= =?us-ascii?Q?mjB5zCKF6/g419SNpj1LfW06VqZ/2ZAWp3vMB1E+IQA5gdBas416vBvCo2U7?= =?us-ascii?Q?ZqqxMxQxgjYqpVXNLldDsbD64zRUQCxyWl7YVQlASyIv/SD3BX2fOMR8QZKO?= =?us-ascii?Q?4Ez0O0OBEo8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN7PR12MB8059.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bD/fhTM5f+m+/LrjAfkf9kBLP6BJtclKhyoe8zlbxid5IMKr/gmHoNIQBS71?= =?us-ascii?Q?SYKCmG58UKvSojleCC4HDGnKS10ZjrVPX6SL/qmJY496JzRnTRbZ7f1QM7bG?= =?us-ascii?Q?9C50/CgnnCNA4ZmUq9rCfN1rpWKDneHfjRDCzT/hOWi/d9T4e8+oGtzle7ST?= =?us-ascii?Q?h6JDO9gT3HwTeXJuqoCiuFiTs+zTHRIhf1O9/jSTlmXsWMZMKDgpu+oMvhXQ?= =?us-ascii?Q?0l6WBufdzJKneXb7hwVCwBUC8LJK2cdDpz3NebfBn/xUuNGGQZA8J9NYWxAl?= =?us-ascii?Q?q+mCLLzaZGm6mxC89SLOtrs0UkLN+mc7Wl+Cwn8upweO2J7bAULl7n9PjF5P?= =?us-ascii?Q?z69YfMCgCsLJuA58F8QGTo5BKMXf4Bx1IkFcD+AwzwqvOk9G96fxyMR26u+9?= =?us-ascii?Q?ifg2mmNHPMviCkJXhXRBBRc5u+NR+5TSGZJwZJKlFV0xKYKPjGFTX9Ls3PxW?= =?us-ascii?Q?K13yhVywquqfpywsn6UAR+mE+MgJfn79VXpphndnbVf2nlAGXylvbyZmkVQ4?= =?us-ascii?Q?EogFovyKy/FKlVNLyCXp4jLw3y4xewEXGvO45NypVmdauI1NkdbNKLLXmYxa?= =?us-ascii?Q?p4WD+Z+H7Dm/fv1AjPlKywwz45wyo8kUhiVs8Pvp+quUHvPNdkNoWUWjuXvh?= =?us-ascii?Q?hYGGFjMxUlzaVrk+ANV0UGxsRT1PMxoGOPyJ/Lg4UzBVE+nhz12ePd43Um+1?= =?us-ascii?Q?ZuaFBM4/9AkYSF/uhtSaICCtnm0dm7Q8msHOkz2KQNGSN7vBvVXsIs6PRNt/?= =?us-ascii?Q?nV/uSv61MhLfeOrqhe2ro+31y6/fVGoMVzNmudzj0SreDBEKnD3fjViONd/a?= =?us-ascii?Q?eLWPOaXvOu0xV27TR8d2ae+SryxLnyBxN2llDA3v8QciHinSGJQmuW3BMA8D?= =?us-ascii?Q?+o3D9M40xIiiO27Q3MRzppRHHBJyxl5M5iCOHQnWPnq3AmlVoi7PIe0ve6D/?= =?us-ascii?Q?ZshiddMcKlHxXIpSi9XlTjjrlezzvjqGu7hJP969tr9t0V9Y17GHpsU0QZH6?= =?us-ascii?Q?Y3WhTKQDbs3S7NydBx9numkMvmvd74Smiy3SADiY5sqt2x+HduVqry59cR7z?= =?us-ascii?Q?5vSop265lTN4+f1rGGpwLghOGLZ9LjkArh7r4bTNBUbqPkwam2o2B0MDAi7d?= =?us-ascii?Q?VdxOHhiL94OpleQTyq6xfANs/IN5Y6ZTK3NKgXYXEyXEZBXxqU7YLu1JNC17?= =?us-ascii?Q?kEtV+XGStC3QD43xORlUxAxTBis2VdJvdz4wI6LPr+qXWJpdHLfV2KvYPa/Q?= =?us-ascii?Q?GmJZejAWTk0DMQ5obDgjoD9qgPjvtY8B2yoFdN79b7xKB4uSabGTzibMhafo?= =?us-ascii?Q?mqeg36K/LimcqoyqDiLcOlh82chsGZgs3lE/haurutxMa08NoM7ZnEg3o7X5?= =?us-ascii?Q?TPp63A6ICmAMpddMWSgBf1l/lDYTL5fmP8OsDX0e1OL2HWTEVM/pVzKafLjG?= =?us-ascii?Q?hQzY2bjwfAM99Fucezi7+dnJL3t3NI3/V2a4oKV4+AavPhvcaSo/V6AL1nG2?= =?us-ascii?Q?8McAIHW/ywKHburQphY9CMdyhHo8ifOiaIpQr9E6QlfBJiAzxFhZLeKGnKkz?= =?us-ascii?Q?bCqo/1+530iFcz+rhJQ0Ttk12IGqCfq3ywP7apFT3+wwdQc4T6Rx5Yn+Gxm3?= =?us-ascii?Q?VQ=3D=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 27ca6ca1-7f5e-4623-25bb-08dd89f82580 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2025 04:08:23.1736 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZopAqv543i91Vn3RGTvIRhEi3k1byT/OJTJy4trVsg3P+YAfh9vLUenMYdMlfb6sLePJN9VCLqhC21RODBcRaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7713 Content-Type: text/plain; charset="utf-8" Add documentation strings, comments and AES mode for completeness to the Falcon signatures. Signed-off-by: Joel Fernandes --- drivers/gpu/nova-core/falcon.rs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon= .rs index e9ee0c83dfc5..003db40d3303 100644 --- a/drivers/gpu/nova-core/falcon.rs +++ b/drivers/gpu/nova-core/falcon.rs @@ -89,13 +89,19 @@ fn try_from(value: u8) -> Result { /// register. #[repr(u8)] #[derive(Debug, Default, Copy, Clone)] +/// Security mode of the Falcon microprocessor. +/// See falcon.rst for more details. pub(crate) enum FalconSecurityModel { /// Non-Secure: runs unsigned code without privileges. #[default] None =3D 0, - /// Low-secure: runs unsigned code with some privileges. Can only be e= ntered from `Heavy` mode. + /// Light-Secured (LS): runs signed code with some privileges + /// Its signature can only be verified and entered from `Heavy` mode. + /// Also known as Privilege Level 2 or PL2. Light =3D 2, - /// High-Secure: runs signed code with full privileges. + /// Heavy-Secured: runs signed code with full privileges. + /// Its signature can only be verified by the Falcon Boot ROM (BROM). + /// Also known as Privilege Level 3 or PL3. Heavy =3D 3, } =20 @@ -117,10 +123,13 @@ fn try_from(value: u8) -> core::result::Result { } =20 /// Signing algorithm for a given firmware, used in the [`crate::regs::NV_= PFALCON2_FALCON_MOD_SEL`] -/// register. +/// register. It is passed to the Falcon Boot ROM (BROM) as a parameter. #[repr(u8)] #[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] pub(crate) enum FalconModSelAlgo { + /// AES. + #[expect(dead_code)] + Aes =3D 0, /// RSA3K. #[default] Rsa3k =3D 1, @@ -184,15 +193,19 @@ pub(crate) enum FalconMem { Dmem, } =20 -/// Target/source of a DMA transfer to/from falcon memory. +/// FBIF (Framebuffer Interface) aperture type. Used to determine +/// the memory type of the external memory access for a DMA memory +/// transfer (by the Falcon's FramebufferDMA (FBDMA) engine located +/// inside the falcon). See falcon.rst for more details. #[derive(Debug, Clone, Default)] pub(crate) enum FalconFbifTarget { /// VRAM. #[default] + /// Local Framebuffer (GPU's VRAM memory) LocalFb =3D 0, - /// Coherent system memory. + /// Coherent system memory (System DRAM). CoherentSysmem =3D 1, - /// Non-coherent system memory. + /// Non-coherent system memory (System DRAM). NoncoherentSysmem =3D 2, } =20 --=20 2.43.0