From nobody Sun Feb 8 07:15:07 2026 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2048.outbound.protection.outlook.com [40.107.92.48]) (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 3B2C221FF29 for ; Wed, 23 Apr 2025 22:54:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448864; cv=fail; b=DIoZHNpDvuwskH+u8L32eqnqBbFhh0FmE2dAaR4GZuXqd/hRi+W2LIuL4pRpcTu7kmBjemcFonu67CFgoYumo0AF0I26hx3jQJrlSJy5Z1t30+PS2QkLKSP3h4gW5yrXusVPc4fFfqo4rLjbil108yl7atOs6qzUWwC1M4BhRTU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448864; c=relaxed/simple; bh=pVp8+O1YAb+HdaxpBvI/0We03cr/FlPf1RjRQUV/CMs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=h7z8DiKjhOD9sMwaO/V3IvbZy40Ujb7qmzBX2QJbjrPb5kuMRGj8kB2WHp4yWVdS508k8R/LbC1X242PfEdEHZGeVstX4yjYUajaA+aHf1+rrYRXACc6Q9tBBrtgC1xjFEDaax0addIZkwCTB/AU9/e0tbbfGB1OHHbw5K7o/aw= 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=sv7oCpfN; arc=fail smtp.client-ip=40.107.92.48 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="sv7oCpfN" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ew3tPXV8+p4BiqQSOfw+HPTf2NXXMz9TnKXRKyS2LXM+TO8RaKrBvZjvBLlMVbcfm2suq3ia6TsiEuSxi6J29/3zhbqimN9lMzFJNGzz5JP4T+I5L92tKJ9j/ZGsSZjurV9hRGYJAoVmUYoXcgqx+MtVhUYB9hAJHF6eFwNTtheaPwWfIp/lmiv866THN6/RgosDITEXqOIVTEq09jlqf8RYd55MdFm10cpBA9VtjZxLOE1z3/ntP9fzCaV7WyYT2x7dO2pwSnEBbJH+F+rtg2y4oDWIPBLETH1mX+M3QFWlIiEY6h91halcmYxy0Ea98+4OaEy6NaxLxZvIPVspFw== 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=ta1OUUm7qJCHFUdUqBxBwszEa7RYr8OO+Uwxal3riSQ=; b=wmjKrEdKSvYAKyyKtLVx386Ee1NgLcvILGDztZ10PRWd6skKwln9rqLjmGG62RUivBpPyTZo0ZcZBVhw3cSae9DL+dVnSFySVJ5FBQD2cOjCGc3L3d1d3xfl7779vrLmpit0j2tnvG7lSJ5+O6TeC2T2iVHZ4wrqJmrE8W4pDeslzyqdy1sDVD0FcRfsAAytkBiVGi5fmwZrVEL0EIyecA748e95fmTdYE//0rYrDn9p5PX5oOkF7bwCMBpZw5z19oOOqCgfjeDzOGtSGboMfN3Pk5B4SdGHLlKNtQq2pkTXNC6vT+2Bya3uJ3c9LgnZGfG9obyNtlKEatpYHIa2+Q== 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=ta1OUUm7qJCHFUdUqBxBwszEa7RYr8OO+Uwxal3riSQ=; b=sv7oCpfNxZIoFt9vSqzVkZDV3bqp8luSW/FTwUtfMxjOBSaIlSwprSlyveL/jagfmchFsPQ5F2CLQhCVrTADRhLX39BaeH8AAcobHBZN1klw/+zjt6Zf0pX0JbJQ3ofSbhEww5J/o1XTQ0vhUsHOnH0aKq4otUUJWjBeD7fQExM0cH7UQi9tyurIejLPbDa6gI0JHkU/CeX3SMBJdkQfx+knPVltzp1bhYuJusWYLzcDYWNAQBTirM7xKsOAO3gzKbJZgAEE6yxpBx8gvEeNyRS27hKmLVuv8pYmKHonmBUDGgH11f3IPAUHvNLz2hl10n/iXxFwLhRmMIroP/gujg== 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 CY8PR12MB7340.namprd12.prod.outlook.com (2603:10b6:930:50::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Wed, 23 Apr 2025 22:54: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%6]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 22:54:19 +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 , Joel Fernandes Subject: [PATCH 1/6] nova-core: doc: Add code comments related to devinit Date: Wed, 23 Apr 2025 18:53:57 -0400 Message-ID: <20250423225405.139613-2-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250423225405.139613-1-joelagnelf@nvidia.com> References: <20250423225405.139613-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL0PR05CA0018.namprd05.prod.outlook.com (2603:10b6:208:91::28) 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_|CY8PR12MB7340:EE_ X-MS-Office365-Filtering-Correlation-Id: bf7dc0e2-8237-4ade-a297-08dd82b9c7e9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DYH85Vz2ZaLV2mVvBcjVJiZs4WTEdNUu8o/s6gdlwuVXXieNrKJI68QrT5cD?= =?us-ascii?Q?CclfjdVMWz71ReqJM+U7zelm3ok5n0z8q9G5uQiY2a189efEg9MaQBWI0Wrl?= =?us-ascii?Q?nltiglo5o0y7GS3j2fQMQ1vJ6WnBDS5g2Tlh4Plqr9xFvDYWyWtUFHEcS9Yn?= =?us-ascii?Q?WofBCeNsK+yclq9moFdXs2/yuf71tB/PMcQdSpeZFN9RxfY15LkUXzfdDb8W?= =?us-ascii?Q?GJkxjpNJWzbq82gfP7DFMAxSpJXBE4HNPHIE9b9BTmgPXKL0npmbLTY8W1T/?= =?us-ascii?Q?WOLsxLAwjFRxlZAleCk8xyoUwhePO9dtUXjRfxrmWKoz7zSHTXicIp6qGRfl?= =?us-ascii?Q?2i1+xTdMziqsCvSyHsdZwifFKHQB+w5cuzQO8vzMeDVb5HC8kqnvcbCB66EF?= =?us-ascii?Q?/1rQ+NTEjMxSR7mZu0ryBUgB4T9nebez6Kf1jDudGMta2vk8SRYLnrEWpeeq?= =?us-ascii?Q?fyRr9cfmK0t+w2qZQcanCqY7ReQnBRH8l6gJl8bKHWXkJM+RNRfgKNDObByu?= =?us-ascii?Q?XRs2nEDSH23qpMSGt/KjYp+LbW7Fe+/bStX5a+nyjYdMStrPNyUO07O+LNhe?= =?us-ascii?Q?ximgb0vQDBFhdLXL0xz3mZxXrneRIxY3Fi8jfZGhVAzLMzjZRP6xg7CTpYmo?= =?us-ascii?Q?x+umbqY3jwAhQsPO80JePrHr7bymMuA3tIzzv90CuUW1fe1sYHVG5Doog2EY?= =?us-ascii?Q?P5jHpmEow+rKnjg+CIdDwQzDrLvOVeTf7uCwscvrKCdkAzUyLOpFOQ705A9J?= =?us-ascii?Q?GMS35Q6G01psaeYRqCKq5aZwbeu9AhdB6Tuj2S1vbFyPRxFUB3+nOZ3Pnshi?= =?us-ascii?Q?WD0uuj6vEXHZusjrMqzk+j5vpHVuqhesCRIPP8qZhPLPsPQ5FcWsHeLfwHvN?= =?us-ascii?Q?y5A0m5knw0BD+T7qKsl6p8p2GwNts6cw2pXWNiKwv1AOKm33A99P8b+Jqq5I?= =?us-ascii?Q?1h/Awe3hR79oiF9YikiIpiCYT4FTukr77qX6CX5cLRGGEd+CIdc5Am2RroMh?= =?us-ascii?Q?H4UxS5rHAgtyKgnaVO6p0IFECL8IgKj62A6dCxJF3lrdfsw1A81uh64VtSfq?= =?us-ascii?Q?XjZkaLQXOrS5/gHS1/Ufg+i4iANroas/iJvJiv2CDmS/EH2TdEaB7JYaARvP?= =?us-ascii?Q?W6hQqeAIPtYQjJKB5gJHtwdV1FQhHjbr2ncZFKbSxIRmHMZUz/5avwtWD6Ju?= =?us-ascii?Q?hxtCKZ8CVWNPw36nl5AAwkMqC1qmMRtQ0Nab6+9DIb38cHAJokPrvw+NN0m1?= =?us-ascii?Q?hToZp89EJIU5TTNiHk7Xmkz0hFG4dloWOR7l5p5T+0kvDf/emKCHUL47hifS?= =?us-ascii?Q?SReSzqglpLr0Tl468gb9nvWP+VpwTAsJuGWAJO0WHnwfGAfR6U3QOV+qrbzx?= =?us-ascii?Q?v2lAtCQSiZ8JNOMKGv/dmcmfOQqBpVW4n1Y6QEDTr8H8WRBL65PW3ZTzOCU/?= =?us-ascii?Q?sMsAJipTSWQ=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)(366016)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IZnS3GS7JOxfPi2grUQN5NUPDCJjnA5VQ2C71+a4lfx2AEud/AL5kX9n4d63?= =?us-ascii?Q?GoR5sRtmdUdGytAdms4PKfZv0wh0MHn4dU5G6rc17ofSBDd6yHjxpO/yrMsz?= =?us-ascii?Q?eOteojtQNG2EctEBMpRjzn33B0mTvEvnXaRnZdnXi3ZLlV/E0q5piVV4dWg1?= =?us-ascii?Q?qRrcWCrpRU56vuJaCbpJ0uG1CqDDR5E8rMQ2gAbq2jU9lac0gRIF/O4hjIfF?= =?us-ascii?Q?tzY+NbCtDOXQqD8cfij4jl8zxJaMP7ZzfMoBpomy1vG/aJPrkac1Efy8zAuN?= =?us-ascii?Q?JJnGc7DPi8F4Nem4F+CkJjwV7W20nPcajbrJo1qxzhJ0kp1HhgX0FJHwDxce?= =?us-ascii?Q?G9vXkrGiTOJXrdhlN76tjeAUUVUEBJ5MVFJUkv6RA70Hn8RsVcMe3NOmGDL2?= =?us-ascii?Q?TzWdMqiEQlWKFzfaJZ1fCNfQgsaKuPYlRIcgAsrmn7Bz+jW7X8C17jio8iCA?= =?us-ascii?Q?LspgnktNfp0dT2gBBEK4DjhSNJz+CHp0ea5YqRfFhW63uxhr9XjRpbOAs6HE?= =?us-ascii?Q?uWah6ydGW21s0qwiyJzL3PyI0jtcy9kgNtZKkBI7YUW0YJ4clEXzfBcBzgAd?= =?us-ascii?Q?LxSN2ywDRhGHJflwBp0ENEGb9y9FvcFEIFmSb3O5AeUeJb8l0A5edj++jx4C?= =?us-ascii?Q?1zNnlBAOguqU2pB1HN+SD6c/6XhO+gVMjl0qv+INCfYYXhcKjGOvYMZybtye?= =?us-ascii?Q?jS9rnPtnOmWYfXOpUrT0WPr8xoiBuwVlQ6G6BP8sle305DA7sSwU+BUzEO8A?= =?us-ascii?Q?DEi96PwgQGz3oX6l1E11mNzUB6IfKJ/i/7XCHojq6lanuljThI/A+aLAcdSo?= =?us-ascii?Q?h21iqHrRywTwEE0x+kLo7fUMBKszm44UVlMOPEctDpWOvtfKkOCkdJC0Pdc0?= =?us-ascii?Q?48lmef7e5OtRyUnQ2IRtAp6jpSdqdtpwMvCJ6gPIiLsDkrxFGWDe9VZr8CRc?= =?us-ascii?Q?ucQX1rvSV8O1r+WZxIkEV1XQJlZT9NSSN65f3QEsBb+9wDy1bxySdXtQPM22?= =?us-ascii?Q?wtSWyR0lbVlnMhtHoDAZVUmfqFT80OR4+YvGI59j3J08zezZQ2D7WqrlaTdp?= =?us-ascii?Q?r6K6km9qdYCdDcUXhVX0yucu3fgK0ylwrY9jeRDVZu4lp4ch+UUH57YVNWZW?= =?us-ascii?Q?IYhp3OiSmgAsCjk1KJv09RjQR6xOwG+v4h2jR6G1i1ch2hkSn7HZ5P3hL0zw?= =?us-ascii?Q?S3T5nW92zMknl7uoeX5fWYFeG7RIFIxc4VAkpBOEWV9r3nZMzBgUZE9VADli?= =?us-ascii?Q?Pq3OsQC8WTfQDPmwYwqUzNfyZQ5EY6xR0gdj1KMM/59AMsufjn8C+BEdKucN?= =?us-ascii?Q?9Il9dN7TJVmHNXvLkSM5Qs75+N+vup2tIEImxd0zPiOiL781lzS8k7fcbZPw?= =?us-ascii?Q?um1zuayeQyg6DN6Tw5tgi9QBENALCqowVoMMuwHUyFk4m3aElWtEyplg8oOW?= =?us-ascii?Q?30Vvi01Svd5Yye11kBbXDGaiusvJHhwpTbMlWEFb0mkNntBHEpUt9RE3wq6b?= =?us-ascii?Q?JvVUUuezz6TUSvZ0o3Hj1h2cPZYHm1XkPiDmxbT3eU7dK71Wi6W6XR3R1lyP?= =?us-ascii?Q?AI6nckkK+4pFxgeor4ats2rVEfmsOXK0XMp8ueTx?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf7dc0e2-8237-4ade-a297-08dd82b9c7e9 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 22:54:19.2618 (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: LXUhyMqjWQY8UUte6jOsTls7FenV+264wbqBZjDgClWgWn3Ur28YDg8lk0zyrccMg0VAXSHRX1S3VNVifMRqOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7340 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 | 36 ++++++++++++++++++++++++++++---- drivers/gpu/nova-core/regs.rs | 17 +++++++++++++-- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/nova-core/devinit.rs b/drivers/gpu/nova-core/devin= it.rs index ee5685aff845..890bdc4d9522 100644 --- a/drivers/gpu/nova-core/devinit.rs +++ b/drivers/gpu/nova-core/devinit.rs @@ -1,6 +1,21 @@ // 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. +//! 5. Performs VRAM memory scrubbing (ECC initialization) - on some GPUs = it scrubs +//! only part of memory and then kicks of 'async scrubbing'. +//! +//! 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 +24,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 high secure +/// mode. pub(crate) fn wait_gfw_boot_completion(bar: &Devres) -> Result<()> { let mut timeout =3D 2000; =20 loop { + // Before accessing the completion status in PGC6_AON_SECURE_SCRAT= CH_GROUP_05, we must first + // check PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_LEVEL_MASK. This is= because the register is + // accessible only after secure firmware (FWSEC) lowers the privil= ege level to allow CPU + // (LS/low-secure) access. We can only safely read the status regi= ster from CPU (LS/low-secure) + // once the mask indicates the privilege level has been appropriat= ely lowered. let gfw_booted =3D with_bar!( bar, |b| regs::Pgc6AonSecureScratchGroup05PrivLevelMask::read(b) diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index eae5b7c13155..f4a6a382e83f 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -59,13 +59,26 @@ 31:4 hi_val =3D> as u32 ); =20 -/* GC6 */ - +/* + * GC6: + * + * 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). + * + * These scratch registers are "always-on" even in a low-power state and h= ave a + * designated group number. + */ + +/// Privilege level mask register (PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_L= EVEL_MASK) +/// which dictates whether the host CPU has privilege to access to the +/// PGC6_AON_SECURE_SCRATCH_GROUP_05 register. register!(Pgc6AonSecureScratchGroup05PrivLevelMask@0x00118128; 0:0 read_protection_level0_enabled =3D> as_bit bool ); =20 /* TODO: This is an array of registers. */ +/// PGC6_AON_SECURE_SCRATCH_GROUP_05 scratch register used to check for +/// GFW boot completion status. register!(Pgc6AonSecureScratchGroup05@0x00118234; 31:0 value =3D> as u32 ); --=20 2.43.0 From nobody Sun Feb 8 07:15:07 2026 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2048.outbound.protection.outlook.com [40.107.92.48]) (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 31C7D223DC9 for ; Wed, 23 Apr 2025 22:54:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.48 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448868; cv=fail; b=cR6+E9fBNOH56/5zCi2xLnjRHmwtd6apBOhK0/uRwdcn8Cpfp4Bj/MJoc0Jt/cpxjRyKRKYCOC8TKNeSNr/Y0KCOW386wJRpTH6v+8Br0pwocboUOq9eeOvceoq9rq3IGWWBqL6ZDIPArzx63zy9/+aune7dq+phSsWSO8Nmr0s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448868; c=relaxed/simple; bh=YXV/WbFMYDyEcQwTQkJ6LFOXd6MbYRFRilgAgKgZ8yY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=rDcFTehetmH6AxTvs5pWrWiG5JPZQ+XXIxpLV0KYN1dWosb+uMmMUI2k48Sn5Nhzvwsh9J95YsMFpZ61ciT1eHoqM8z1mj4qCn5m48s1pDzJX9WEKJqWitSoKZzIvo3/jAJRNimCt+xJyXoQ9gJ0bGU6Kb0mIF6N9OopMo/GNv8= 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=SZI62RTG; arc=fail smtp.client-ip=40.107.92.48 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="SZI62RTG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HRE2q4ahs1xEka6wODaZbmNglYUFhlwkVpW7ESHKOwQmd+oJpf3cxDDVW9m6k/UlvDJ3SfK3z9enBypRL9YEoI1xb6x+TSyb5TrrJ2r3tEPmR+jL3/L425pJIN4klrw0568IgTa4sE1aErJneS80fN3Hnup8JDJ8n5CZnhoRG+6orOsmgZ3zrCS5YKZzvz5HMz9D5btR8+hXZNDr45oADCTrJhdC4ujHWf+udkDYqstoBNKcgYMU45/1Pnjwj4Ls9FYqQmrO/zlCndK3/KgRxieQBzUe5tiiogGudI8KIAscxGGTrvcqSWHEXGppWI1FXTnZjOBlX0mONAkGHmRlyA== 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=3vRMa8P5r9/YbZULTbjcZMH1z3+2BtPXRcnApYvD/LM=; b=qKsZSbQBimC4h4u/sw7VN5K+EP5ezdgjvftyKJNoCi/4wBi0S7eYlrXUGMTp8Epq+CBLp1rtHCSyXV49xDwRFQ0ID1eo8e/nx627ppM9jmD3V2wgXJBGKDebXu4v+aqsCnSU4ei3IPndTB60lMat7LkUbohCWzdPpxmssBovGrzSnZf6KCs0Y4l+3at9zz9I/BtT+d0FBNNCvf2xYsVWe6GWeGOn1ItMSosMqYe2xe2LqXPEKPZx/cDg0RYlDrKZ0LOcSOkEbJwsifu4aNhaw5HBXS0qtcmyabxYbIipInOjvipD+1kRlKo3VTrD34AZ5l9G4x5EbxZsLZ1rRtkI9w== 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=3vRMa8P5r9/YbZULTbjcZMH1z3+2BtPXRcnApYvD/LM=; b=SZI62RTG49xP3yMVSNFGGAs9JiJuTdOJTcl1ITlxurwWUiGUwp3V5CbePKUlEIyVGP/UAb4T6j+xM2vNtrRXisSI2FgzjQyVHxqfPUmuN308e0lf4+lkCLCRcZhkmZhCBNOuIOdjaKKXT9mYla1XRRnwETDPr+BAKaYodp41YUFpJookCbaEnbGnAogKeYThBXm/hGLEiQKBZyWplmx9N3R2wLDrwVGjCNHcMWQ41I9Yg8HRyGLAjuqBOWawTou4DH8Su56bIgaeqJR51fpQwPJSxvm3MPUoxeh/T0qHZL+O4xUYULD4TVLKmKYWklbjnmRpVQMGkRFee14AV/Alsg== 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 CY8PR12MB7340.namprd12.prod.outlook.com (2603:10b6:930:50::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8655.35; Wed, 23 Apr 2025 22:54: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%6]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 22:54:21 +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 , Joel Fernandes Subject: [PATCH 2/6] nova-core: doc: Clarify sysmembar operations Date: Wed, 23 Apr 2025 18:53:58 -0400 Message-ID: <20250423225405.139613-3-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250423225405.139613-1-joelagnelf@nvidia.com> References: <20250423225405.139613-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BL1PR13CA0321.namprd13.prod.outlook.com (2603:10b6:208:2c1::26) 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_|CY8PR12MB7340:EE_ X-MS-Office365-Filtering-Correlation-Id: 8b298af1-ca03-4855-35dc-08dd82b9c944 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NS8O2lPp3YWrvgDFrNutN2EIM12hY1tdxk7HndTZqFvumptcQpIl4OODNH2N?= =?us-ascii?Q?2tmZWdkwLdo9P1d3RHdvsqoGzwuYHZgainvV4dC33Zpu0V1JYGhrw2/hUPy4?= =?us-ascii?Q?yIpZVlxBFHN9ix7lJdfzh+XZyvM0AlCx1EUFispka+vhyHNB6RiaXEApvIDn?= =?us-ascii?Q?PRQscfPx8ODEYahbjUSA/964pFWsfFGhLiUXYdLFzDEbnN5dVbDzc5Agi1eh?= =?us-ascii?Q?MHrEXn+6pD8qNP+Yx2hQvMq2Tt9ua47K6ymFM2XDpUsk0Sh+bkVJlnXcqkXG?= =?us-ascii?Q?F0pgBeazY9xUX0O6uPc/N2PhU8SW9tQ5kVwisDWoOzKU4tJmFkv8OJPBcO9D?= =?us-ascii?Q?m8WBavBskd78VNp69PY9swlRlgjlYx/ZwFbEQ60ENhfqMdhhJ3IrI3fr8z8T?= =?us-ascii?Q?7IszatHkNHRGuhu+T1NsxT23fOPsQnpuAcDMRSS8eN6nyLQ838uGbr0V/ToH?= =?us-ascii?Q?03sP2w+POBMryxMQCLkX5L+HHCdpqHhF0qRKsJLgZL1IlDi/Y6AEnwyNGQbZ?= =?us-ascii?Q?9et4/CBREB3slu02r2C3evat1tT8AZKGyzu3jQAJYBF1Ua8Fr47nmqCyF5qK?= =?us-ascii?Q?FZFnTG/Oc/2bvPsYXyxgj4KZ99kJkCl0cgGw/tnuCIw3qjeYT/1rrNquo28O?= =?us-ascii?Q?Rp8sfvBeZdXKAiR3n/KaRSpriNsX8G5jNN+V60CPZr+vPbwk4bHuWJ7hT0q2?= =?us-ascii?Q?RJtKEdarmG9w9AfqNnoo1kxhAsrcgwmJf9L1CQG+xWmDchBuzavz+fp7OTvL?= =?us-ascii?Q?6iBHB/H+HkaKL+JXzb424vrL74m93WAlbqzCtZXuOzG+JkUSg3w2oiw/SdpC?= =?us-ascii?Q?XKKEFH5FQGzRWeCaDi5B8rkWpalIHlXfq/kncSZu5ASfn8BoJXRURvQncF1L?= =?us-ascii?Q?p3BJuHBb15WSetoCP8pqS6DuKvkjPsEKnou4HaCk9/5XGcv1cW4HSDUkznPX?= =?us-ascii?Q?7le6tddpNenY+gh4+uRCGjAtMuCpheTcGcwxYd6Khy8azw21Zw3QeOpeuUqb?= =?us-ascii?Q?0l7h0FMz2EB+yzaTgH6J8Ml3B8byiQcF1/UF2ldJyXhp7fXWHIutL3Cw4cWd?= =?us-ascii?Q?1kcB3prOPDloE+0NnUNZuYRFL3HQPywl3v65PIFCuHcAcHmnL5xs4S9FYX0v?= =?us-ascii?Q?75BRjWfIljANv/8GedIJL+dYGqA6AtPRpTKHJE2TXJhVM80OlaDfCZIVrWqR?= =?us-ascii?Q?OgPYqO420g/FR+gSFhpY+7rMFhMSFr6IQeJ3Hs9SMVQHwEfvo2IASmXSowds?= =?us-ascii?Q?O+AhB7Dt4HBKEs/PXeju+2V0nFUgnR9GyIORhTX3cd9yD0jeT2DeVV6l3/Q2?= =?us-ascii?Q?TWZhszHFFVkDgXuLeMlp9zbxYyQ9C2sNq36QCd1nDqyJZCaACjIHsXpJB98t?= =?us-ascii?Q?SLsm0XdSmZ2R1+9UrB7V6/YyZD9X016P2AgoQN3vdsbX6SgGug=3D=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)(366016)(1800799024)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tBSdDQQibyEiAbArCQZ6kWOiLJSrYedIDdbv+W3ftSkSPTUFyJ+qe50c7F4e?= =?us-ascii?Q?OF8oLBFIC/IyZmy4heX6rOgSK+lrhvZWifR6Etr9z/7iScQGN3Psry+qVuAU?= =?us-ascii?Q?oL9Usqlg3zBoVvqUsHux/9Wt9wjxuTOkmJQNgJNHTjxm/oeC2L4ZD4nZeW2z?= =?us-ascii?Q?CzeUl1f8PIym4jENdXYx7FwQW6geEW6MhjrHlrYket+Tvp0jW3Vj3ZCVTu8v?= =?us-ascii?Q?gSWiN5zi8RHZQTKx779SE8RSvNIuSFYooTbhePurVh9lPMrvCmoiyytUJxWI?= =?us-ascii?Q?1HUDKdHnfTmK/uSLQv7TD8r5eGQ0znlvQDmcIp4yoBcKg7kk65KypzNBZ4H8?= =?us-ascii?Q?M/gjZMIPQuYjZbr0nbkXbzJXBe3kIEx9uSfOrIAc/MZeg614vhRcgDNvvwSi?= =?us-ascii?Q?sbr14ZSSwSprhJWSQfFB+0HQOGedfuqtySxYCV2BbymfGuRx1BJQj5cN+Vnv?= =?us-ascii?Q?wetocXFwXPs+T6Va6sPQgqRhEIyGNnCKStmYgTewmCcdUuFe5klFLqPNvMkf?= =?us-ascii?Q?J/o09DMdBXG37HLHHV/ta8iz4hBYrHMH3gzMMG0vYD7dzxXIhvYfjY5Mr9O8?= =?us-ascii?Q?TwkgNgZErWof8c50dwL0Gdh5Pfnus8WuscwSH+P0SsbLKKJq62+B0ak+eEXN?= =?us-ascii?Q?nx3wNxRWhPz/gFm+99CxsLjgB9EvRWU+geLkj0NhThKK2C3EkwMez0WIuJCC?= =?us-ascii?Q?rywLFdbGSDBnsQr9UGPO6Ply/xTPT8TJXtazJLqY8vw3StGG8NL2h/zvyfAH?= =?us-ascii?Q?H8aG3/0O/VfjFCeg9RQC5JzzDWCEclw+uqM+0/3DVZ8g8JteHBanTD5bj4lj?= =?us-ascii?Q?6t9k7Bg2jPadgM04/VIGv/H7HfjM+Av+vpSx4PX+Qa3lliz9NcvXHu7ooSNG?= =?us-ascii?Q?z5bbt9UD/1G1gEWKsFMTG/5ob+zdMSQdoA/0DM3RhlZO65/pXQGVK7cUZZlf?= =?us-ascii?Q?uGCqmXmc2QXU+TS5K1SWc/AgAfjJBUeVMGecfoCQOZKxjkDcoelwez5d+RZb?= =?us-ascii?Q?44Ye87E02J8me6xj5nj39v9C7tT1jXUyZRJak687PFzClcjafqNp8DHwfMPA?= =?us-ascii?Q?PoGZEyncWXnC+t5eKHIEQy12gr20betB3H4e+YVGzOJRH/Ge8x+Ro4SWJmEo?= =?us-ascii?Q?7+7U3elqFpi/1nSnyxv474g1BJDuHC2olM2Naz8zV2b/G0zrW3QfS+OtoJoY?= =?us-ascii?Q?fAkCTxqxKiW5JR03fbPtPID+HHXdOqtH0roLNhOZSxVTN2rDLWaVJK18DWu2?= =?us-ascii?Q?5FowfMLzjti7xQa+FQgrDzkWtWMAjliUJdxW9mxxIaXooHcnJwuxMVl/nsDI?= =?us-ascii?Q?N+yCJIY+Emaox2Ov7j4rmRZlS/qbg5Y2RaWNNg+LARn+4umpJEaIqzYZCpJH?= =?us-ascii?Q?FAqi+36gzJYNqDLrqS/cd53R4+VhFkCoZ8zN1DbjSOmtLH+0zoVg/0b0IeXv?= =?us-ascii?Q?1PXpsANss10lLwL21bd6c209skPEIhFn2f3rZKZGDAnIqjraYQX6sgKiOpaE?= =?us-ascii?Q?ow0x9WEnfk6Bv0mAlzW5hLNWgcZyFjJsReygFfl/n9vFFhvDZ4neTyOBe+9k?= =?us-ascii?Q?GX1jqW74+W6jVavaTez+3bkCYvpljS7woQGDToOv?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b298af1-ca03-4855-35dc-08dd82b9c944 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 22:54:21.5638 (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: 3FP6RdHq/RK14KQzJWD6hLv/LeEv24YC2a7s1uNYYhSNE5/TOpZeVbL0og++xJ2fVqifiRZvyjD2K3YHsGtOgw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7340 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 | 11 ++++++++++- drivers/gpu/nova-core/regs.rs | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 4d03a0b11b64..61031bccb7d3 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -158,6 +158,9 @@ pub(crate) struct Gpu { /// MMIO mapping of PCI BAR 0 bar: Devres, fw: Firmware, + /// A system memory page for sysmembar (A GPU-initiated hardware memor= y-barrier + /// operation that flushes all pending GPU-side memory writes that wer= e done + /// through PCIE, to system memory). sysmem_flush: DmaObject, timer: Timer, bios: Vbios, @@ -204,7 +207,13 @@ pub(crate) fn new( devinit::wait_gfw_boot_completion(&bar) .inspect_err(|_| pr_err!("GFW boot did not complete"))?; =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(), diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index f4a6a382e83f..22906ab1a43a 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -37,6 +37,8 @@ =20 /* PFB */ =20 +/// These two registers together hold the physical system memory address +/// that is used by the GPU for perform sysmembar operation (see gpu.rs). register!(PfbNisoFlushSysmemAddr@0x00100c10; 31:0 adr_39_08 =3D> as u32 ); --=20 2.43.0 From nobody Sun Feb 8 07:15:07 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) (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 A02D2230BEC; Wed, 23 Apr 2025 22:54:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448876; cv=fail; b=J0yLnhvKy17FoNIF+lG7O4ICQGLawFhFyJeWZr016mi5Hg4T3hNB05olDQ1u4jGAAYH8rfbuHeO07Lq0a5SPT0ufxvs5JTtK95IW1tJMxNCB+40ktg+ja6E3gZKGbpYnEWGu63XCmO3o2fobxq0PfaAK4M2x5s4wuy+J0dNS3gg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448876; c=relaxed/simple; bh=PEhsu5Ba3htpt2u3FqMWnjRYRNcpYmyNpXIjlo3LEvg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=cFmS+CYeu3JXN0xOV5koSMJ/6t4/LXg7iKTtcPb5BlWJ9pyhRZXsLqMSGSm2N3z+xJYRyYidqy39JDQy8tKTREtNTdq8MVABw5uNKUxQ4d3c9TJaAG8ms85PZ6s71yPiePNTArYIPCGI6cyDw+F51iKEr+21jxrE0PmMPh+o/l8= 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=Ulz5VEud; arc=fail smtp.client-ip=40.107.243.40 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="Ulz5VEud" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LrHxypRodclECoZhXsSSjNLZBwsAZqIPZtQ7N3Y+o1Jig7QoksCKcFLV7pLpootRjl0rYyr1dkgRhtVNkSIPLi0Mo0CVkvGJVJFMt0xlEtBfldpYPn+uZtGqnTBw6+rYp98pTTmjcjRhxtQqlE+ZtFePMaaWMHVy77RYO+cSDBhJ4HPtAPkE6+t5YT+FmNUwObN16h0PjoX8zNUB91hbhmvhgnmjyUUsgI0VljvTm+anO3bbgGJdANfvoY9eqvOxBwElNdY/CAPg1onRqZInb4G1mVEodQhjg2qMeSZN00fB8zCTp/a9deUnh6lrSvUdX5xZIhvMsYEyUIY+bVrnlQ== 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=AiaukIXfE3BaRH+tUSrlN5e7frmO8qgf5t7RQhlHuSI=; b=onnDEYq9rcGvv5AvrzVCjacKRmalUCKT7kkFy1h+VpPKr68TQ45GiBB9XEy95ykP+0M65tZngxh1Jdbm+9zP34PCWaCotY3jovt6tSF0BZTb0QHf/L8OQGNyOmn4crWy1MD8fX4IscOwiu4oaxrSolIyJoHNDzwJKxkAksRRTukdHhsLtkU0Lj+EzRdoUxOCqr1Jogce8LthSs/ut8WzzrabpeUE42ElBpVT78Y28WTeEm/63dSa2femZOPhMF58OiTQ+IgLwC+wWz9MiDsq6xwTGvW852GlwxF2+eZ8i6SvAC0y7qDjbuQM7482fjjZ8HTMXi8LP1ABK2Qo1G9KHg== 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=AiaukIXfE3BaRH+tUSrlN5e7frmO8qgf5t7RQhlHuSI=; b=Ulz5VEudJSHO3xAIKONWwKipFAwqwxWtJSXBfIeQ451JXzBojsn9kO3znjdFCdysEfy4mJKlBtFMSSFNktbxnV0HZe0H2CcZFFdl7SgviPrjge4n3ia/ieltBe65BpR02uG5sEsf9vO2/vnVCsOaRRJqb1LJDqSlk8rVIfeJT4xVk4MrlOPfOBydvjS6lLUprp+fD/kvQhxM+lD/Ln9+waKdinnbZFrHxKLqJsPA9eADLVhymPalP1d2ZkgvJstdNkMNWTeRVnU4X3Q0HwSh4tqtv+/cqLZLF9WNJJMFpOU6tV7pevqamBi+ivtDFIFbmyZvbP8y8GIVizDr/vNNtA== 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 PH7PR12MB7841.namprd12.prod.outlook.com (2603:10b6:510:273::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.24; Wed, 23 Apr 2025 22:54:24 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 22:54:24 +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 , Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH 3/6] nova-core: docs: Document vbios layout Date: Wed, 23 Apr 2025 18:53:59 -0400 Message-ID: <20250423225405.139613-4-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250423225405.139613-1-joelagnelf@nvidia.com> References: <20250423225405.139613-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN1PR13CA0028.namprd13.prod.outlook.com (2603:10b6:408:e2::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_|PH7PR12MB7841:EE_ X-MS-Office365-Filtering-Correlation-Id: 8fee580d-a734-431d-a819-08dd82b9caad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WENMREJLWkhqN0dHSjhHang5SUI2WWJJR1hESWg0M0JFTk13RUs0ZDlOYUVk?= =?utf-8?B?Y1YrVEVadElWQWJjUUhpNE13RHFsTkZ2M1ZORFJtVEg4bGdjNmtCRnFoekFq?= =?utf-8?B?U1VpSTZPVmJTbVBPTkxoM1lSRTUvRVNVTk9sbERWSGRvc0xlT1BrNVdQbkdr?= =?utf-8?B?dFNMeW5tNWd1elllTm1UaSs4ZTg5UnM2UTVvWG5YQ2FSYU1xd3huU0w0dmZq?= =?utf-8?B?RE5Ia2pwblZZT1kvNm8wSDhWOUhZSE4ycU9FU2VmSzZGb0ZRM3p4UUE4dEln?= =?utf-8?B?cGVBN2tWSEFHZGpyV0xuY2JjSjJEbmJyaHJrN2d0NWNWMnd0ZXlrekJlek1V?= =?utf-8?B?MDZkaklzNGU5RHphVThUQkZrNFA2T3ZjcHVrdm9PZ2UvZ1VMWnk3Z3J6OWR4?= =?utf-8?B?Y2ZNYkk2Z0JZaWVmNURPb3Y2K2FtWnY4NmtWTDZQYnpWUzVaRUtUOElQRFo1?= =?utf-8?B?dXUvaU1tTTg5dkt5WWVSaWU2Q1ZCL0JvOElKMnVWVytuTHJzcThOYTgyNkRn?= =?utf-8?B?QWJKSi84VHpLbjUyWjc1a2d1OXAzQzRCMUpyRi9MdG83OFF0aXMvLy9yUkVu?= =?utf-8?B?T3k1UVViQmpBcERPeWdZd2drOUJaYXdDU1pJbVdEd3Q1SkZCSXZyVU1nRmF3?= =?utf-8?B?cTl0WDlqRDBjUmkwS1lDN0hveUl1Y294K2d3OHZvTFRVbWh3aDFRM0pERlJS?= =?utf-8?B?V3pjM1hnalVlemdkT044VmVFOHF0eWJUWjVGNkd2ciszbFE1OTkraEdYTGxK?= =?utf-8?B?WTVtTDB5L253OWxMdEFHMWhrUktOTHR4NXRsN20xaDFwN2E3cVJuS1NKbnp6?= =?utf-8?B?c2hYSmZRN1ZjaUZDWktneE4zT3lsajRyS3B2OEtsWWU3SngwZTB3U2JIZ2lG?= =?utf-8?B?ZHloOEF1a0x6QVdiYStFd0JVRGRLa0x2UkUxZWowanVoSHFIQ0JONTlvTGRr?= =?utf-8?B?QXdUUVkrTEZieWhWNE1xMVE4UUVwbEUxYS90KzkrNXBBcDhjSUk0YzZjNFJv?= =?utf-8?B?TlFpa3gwZm1VS1JRYk96TmNkR0kraUdDbzJXRkFNMms4U0ZvRDRESHRuMmVZ?= =?utf-8?B?cWZuTDFYZjdTMmhKV3VBTW5qaWtrdWcyNXFsalNUcU1XVlIrTlB3MmFwRVda?= =?utf-8?B?cFVNNWsveU5VRXl6alFPWXZrZWt4ZjFtMDRHcGF2YStGSkR4MW9CU3pwdnZE?= =?utf-8?B?VEtSVDdHeHBEVWZXUEswaFUyS1ZudHFDT0dBeGVxUmU2TnJWTTFsOWJ2cmRv?= =?utf-8?B?Tndzclp5VjhvTFBhMkVzRFZWRkFkMEo4WDgxZ2g4NElYNS9LV2lJYXBMUkVx?= =?utf-8?B?VkdSaGtKTXZDN3VxR2tBUm4xcWlxTFoxRlhKeDRMWEpPUk5XZTYyVzh1ZU1Y?= =?utf-8?B?Q0Iyc1UvVzVwcFd6SUhIeW83SlVENDF2UEQ2YWpXYmRiMFdZalZDRGVrWnNZ?= =?utf-8?B?dXpnMmdwNWJjWkVQWFptbk1PZzh4ejI1VHk5eUYzZFB5TEhISWRrN1NjQUhi?= =?utf-8?B?QzkxazFWMHA1VGRONTRrVHpRc05xVmJEeHZWbFBYQll0Z1d5UjAwdUxQcFc4?= =?utf-8?B?WXpHNjI0SUQyYVFEb2NNZllrUmIyek9CekNYbm14THJXZEJlNVZtQ0lhbndZ?= =?utf-8?B?MkxPd09nV20vMThUOUFOTnBEb1ZYSDNZUG5sc1pOY1pPNjhBbXhvdzRnMFRu?= =?utf-8?B?LzY1c2RETlVNY0w5dVUvRmpKc3pGVXZESnA4bzkvL2hzUlpNNHo3bi9DZm1m?= =?utf-8?B?NldDeXp4ZHhJRlJBL2RKdjJQTFowYitnUERvRFREcmU4WmRidzNmRWoyK0Zl?= =?utf-8?B?M0ZaS2NmMm55d0NOMVFQbkM5UUwvY1gvZVg4dER3VHN5WklDSEx1NDFXdHlH?= =?utf-8?B?aEVlc3ZkN1l0VFhYRkEycGNFcXJReThDam15VndtdGlyU3Ywb3BRL0ovVUVZ?= =?utf-8?Q?UyszEytt8+0=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)(376014)(1800799024)(366016)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RGhvWWZMc2E2QytGME9BL0RBWU1zSmllUjJCeUJEZjVoRzcvNnh3UFVCSjBL?= =?utf-8?B?bW1teGtHT0txeEZHQlJiTk9UYjdTRXRYWkFMVXc1ck9oOE1UaHVMdkh0QTNY?= =?utf-8?B?czZ4NitUaDAvR0wyMUZUS0d6UGJsUW5DZjhPNHQrcFk1cklLL2tpaXlFc0FJ?= =?utf-8?B?bGtvSDFYOGxJbFJiMkJKR3V3UVEvSTJld2d0T2dBRFoycEZsQ2FEanZZR3NH?= =?utf-8?B?VHpGdlo2bXNhSmVBb1FYRDV1VWM0dWdOV0JUcW5kSHBuZE1GSnEyekk4OHE2?= =?utf-8?B?Y3dqbGdDTVQ1dnl2TmNCQ3RUTmxFR2RhbVVQRThXRnIxb3d0VVoyTXloU1BR?= =?utf-8?B?Ym1rNjNCWkxKSkdmNDc3TS85K0NUNkF0a1FHaDFkNXhSQ2lDcHJvWDVRZnRl?= =?utf-8?B?OUpqNUVvRTNnejB6Y0pCalBKT1BseFZkYytGVVdROGgxcUkxcktYdy80K3hQ?= =?utf-8?B?NXZSNzkvTC9xek5TTkVDYW5IQ0RNSWsvTjZQNCtTSkgrdW84V3hBc0E2UUda?= =?utf-8?B?dFlFZ2FwVEw3alFlSFlvMnUzQStvb2NWeEo5QUEydThkNzlmbEVzZWNBRjc3?= =?utf-8?B?YzdrZDh0VWZuRjIxWWMwZGg4WjZwQXRFMXFMQ0dYT0pOb2hYRDNxeEhtQ1BR?= =?utf-8?B?eGxHQU95cTRNRnBSRVBDa2NaMVdxWHNHRnQyMU5lOE81VWpOMzZXSVczcnhR?= =?utf-8?B?bHR3SWl5aFN3VHd1eExPZ0NyejZXM3paSnh1RkVFSWJNNGJOOFNlN0FsbVVo?= =?utf-8?B?bzhzRGQxVW9VdlJMRUF1Smw2d2RhdXhwNTQ0bk9ydG5sS2R1YWhNVEEzUDNy?= =?utf-8?B?dFlZQ01zM25RY3ZSM2xlRHlhVStRbUtUc1AxOGx0YVJlVFdkSHNRTC9INmFY?= =?utf-8?B?V2paRnNZaXJIY3lGRkpBVEV4VU45YW9sZ3o0Vk9uZ21VYk1PSEJtUmhpeVNT?= =?utf-8?B?bWRPSWdXZUdEMVJSdzh1Z0YvWnA3V0Z4cXl1RitmQTloZVNmNzl6TVdlUWVq?= =?utf-8?B?M3lyZzQxVkJCQTNNYTZuNzdSL0owU0daNE5FcmZUY2dkTTNyNy9UT2czWEVj?= =?utf-8?B?YytmR0tVZFd0SzhreGVzUkx0TnJTTTNlVG1LQTJYdGlleE56ZWgzMmpxSE9s?= =?utf-8?B?dXNqY0orL3Q3YkFiekx2emlBQVI0UFZxckM4RDhQdVBza2gzSUxFeDVJS056?= =?utf-8?B?bWZJNFBRMVJGU0ZjRjdLbGxFYXA4UGVVRktDbGZRR2ZjSjlDOGU3d1lVT0p5?= =?utf-8?B?aHVvZkFGS3V5dWdoeXZXLzBxVVpjbHdtQjROS2tKMWl1WVFYaDVCSyt6N3Jz?= =?utf-8?B?bG5oN2hHZjE0QnRyempQUlF3dlZ4dTVRbk5oZVVYS3Y3UXlDNnYwMVloQkhF?= =?utf-8?B?cm9IRnQ0dllwaHE5M3VrNVFhN0hrMWxJcjF5bjE3dDdBZzUrNXBwK2hFVUdY?= =?utf-8?B?TkY0bG91elV3WjFaaUc1bWNxcmhoRVR4RXNtT2Y3ZHZjWGJjUGR5bGcwZS9z?= =?utf-8?B?Wk5uZlNUTG1WOXgrZGtMcWQra0VjUFpTWkx6aEJNN1hQNHNYSDl6c2xJdXN1?= =?utf-8?B?Z1QyT3RzanYxRWNCOEJUZmtTOXdIMGdnYmNnOGdBcjZEeEdZKzhwN01JS3pm?= =?utf-8?B?Tk4yOXRKTnMzMnIrbHRBZmNQMk92blZ4amE0aVNpSFNtdmFZQkdicWVWNEs4?= =?utf-8?B?aTR1NHI2SHdNQmFhbHZQUmE4eGFjNDlRY2ZOSFFGMEpVWnNib2paMVYxUW1k?= =?utf-8?B?Tmc2QTNiL3ZaRmJaMmx5WE81cDZhV3Bad0JaeXZLKzg3Y0hheGNpLzdQNnhS?= =?utf-8?B?Z3ZKWHRDamZBRWV0cGhLMnkxU0pNNVZvUEF2ODM0ZTV4QjNpOHFsdkh6TTAr?= =?utf-8?B?c3RyZ0ZlcmQyMzRBRE5udWpXRUk0ZEZUaEl1bzFVbW5ZRHRnVHlSVjkrb0Jo?= =?utf-8?B?RnpZNGRUUUFIYkw1WjA1TnA3OVRVcjFkNlVXRGtwZVVIODRrUU51U2x1MlhT?= =?utf-8?B?S0tPOWY4NkFZTkVwOTh2dHhqSGlVY1NHS3BWaVZXUlgzamdzcGErbEVMcUxS?= =?utf-8?B?VWNhTjBwOXI0VUxXV1dDVW04cnBPNFFwT28yTTM3NmZLNDNGOUJBUnllL05a?= =?utf-8?Q?qOlFoTjzD0XIbVzUwWVEqPxKT?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fee580d-a734-431d-a819-08dd82b9caad X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 22:54:23.9305 (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: 1AH8baBcY2s+DGV90IiYuuBHU8vqOFdkTRC97OvnMh5sPPftU0vDiRfC0yh46K5iHydVIFK9+hfJDJawv1gS9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7841 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. Signed-off-by: Joel Fernandes --- Documentation/gpu/nova/core/vbios.rst | 154 ++++++++++++++++++++++++++ 1 file changed, 154 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..17411f21b410 --- /dev/null +++ b/Documentation/gpu/nova/core/vbios.rst @@ -0,0 +1,154 @@ +.. 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. + +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 microcodes that do a range of different functions - all in high = secure mode + where they are allowed to perform highly privileged register accesses th= at the CPU + cannot do. The 2 most important parts (also known as Application Interfa= ces) of this + are: + 1. The devinit engine - this is loaded ontop the PMU before the driver= loads + and interprets devinit commands which perform critical hardware ini= tialization. + This will be described in a separate document. + 2. The DMEM mapper - this is loaded onto the GSP and one of the comman= ds it + performs is carving out the WPR2 area (Write protected region) and = placing + important data called 'FRTS' into it which contains things like vol= tage/frequency + curves etc. + +It is not clear why FwSec has 2 different images, but they both are of typ= e 0xE0 +and can be identified as such. + +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). + +=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 scann= ing =E2=94=82 =E2=94=82 +=E2=94=82 =E2=94=82 =E2=94=82 (Signature "BIT") =E2=94=82 provides the lo= cation =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 ta= ble) =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 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 +| | 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_o= ffset =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 + --=20 2.43.0 From nobody Sun Feb 8 07:15:07 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) (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 D3ECC242D78; Wed, 23 Apr 2025 22:54:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448878; cv=fail; b=DUXk5evydrYvssKobxLGmJG/U0MPDuYKMg/BaX04Mb/CbIJYHTaza4NKrb4vroSQygKfdAhIOAOX9mbk/vjV+xg2bIq5RasDpfDkm9d0x4hrZL3NKVPFT1yIH5pOXZrQ31Um0SoGQuiRU+SW+jArS/qq4k/22ec7rtFxERcGW8U= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448878; c=relaxed/simple; bh=pLxxzIiCly4RUxxBNsOHokQHhQTuDMW5GibcK2GBcv0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=GLJsXBO9WSnFqyoDc/Dh+xryiL0J5C8jszEVgw84xc34X58cxxF6dyhayRobM7O16WHiIzn7evcIWZvozpIIZlHi23b0sD5xzbC/b72546K2ClhE8sSnCzWkNHbvkNXpEWBL2U8sF+o9NLzCnH8JQJZoi+6sujZiAnjBCtFRrak= 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=S/PQ6YET; arc=fail smtp.client-ip=40.107.243.40 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="S/PQ6YET" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SwEjuFtd86C1cRANHrrQKjUmB3mf0Rx19zn5WknBwKj5xhyjwDzftb784G0Yez3y8T/OmMDiL60ccsoElqy7Zi6faQJiGxzziRqlykamvd1HwMOZUZLfLZut8iM8iISXVUGn0yvXHsqfIhpBDzurrUPVTs0q9W4Bdlph3I7UZhk2VHe/O48bkJOGmQeQ10TrSui+LpVIWHm1+Sbt0GbnFa/bjbvY3uOLMkhjR26UKU2NSETrrQZS3i7+dbBgW7TYPXK60sdqRsBbO74mLoaC7qvKqWE8+uzKwn3Wwf8l0oqHxniGJMHCZPZRaI4wkSz48XzUDHAvD8phaL8Yewlhrg== 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=Du5IHCP3h1SeKWBFAGevlPV8wkdfq6KQ3lU3PEJL1bg=; b=kEc92SZhd0HtlLmbGZ0RDb7yKMwzbX6kOCZBinY0Q2AxQ+KKGqz+QxZturfHB+6EYCVzbZCSy+jK3rTnIy040h8AaXOjhzQ1LnTboTa66c4470iiPZqjasfonNKi1kRf1G5Do+pfmkGeIKtRC7nLs32jn+fRes1uxKkPqMfGcYcIqmVtpWHI0Ym+oamSc/9rnOaYJZ6wXgvExpIhOfjfSlnk+5LvRl8Xpd+NF+9xMKiaJJm45sBlKzlPooaPKoHN8YWr6KRhs2Q81Nn1/HEpiuyHBVNiB1fV/Cy1fteb9ZNGKAF3Yee6or5VuBoSFp1gun9FyklYSQ64KYFX0cjo9w== 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=Du5IHCP3h1SeKWBFAGevlPV8wkdfq6KQ3lU3PEJL1bg=; b=S/PQ6YETfu+13D/iA5JhJM67/vnpYWSb49Ao4fEkg3U7U1rPRX/b3MLx43bIhH5Q+PJkVEkaHZgopzHfyZ4o0Cde3pFMRPnNVphAObTJs7U+AuCvSFXuHDwxNTDJI5Ys7OypHnHxl/uGeYCJoGoeFgcjYlynoqWJrGe3fFuQ2I6lLLD3ILc9ZSQGvgRef1wz889BhnyDdcVFY5RRVWtWB2iUpUwr/pMkjxc99JSpfqhMhOnf6sq7PrCtSrlNiS8nQCcht4v97D79w0U0A5WS30n1RA5fa8pEX6dtRqGWLV3K1yuEAepW8WEOfYnO1hNlsE7S8fmBT6A9Qo70MowQ1A== 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 PH7PR12MB7841.namprd12.prod.outlook.com (2603:10b6:510:273::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.24; Wed, 23 Apr 2025 22:54:26 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 22:54:26 +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 , Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH 4/6] nova-core: docs: Document fwsec operation and layout Date: Wed, 23 Apr 2025 18:54:00 -0400 Message-ID: <20250423225405.139613-5-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250423225405.139613-1-joelagnelf@nvidia.com> References: <20250423225405.139613-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MN2PR02CA0009.namprd02.prod.outlook.com (2603:10b6:208:fc::22) 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_|PH7PR12MB7841:EE_ X-MS-Office365-Filtering-Correlation-Id: 69784aab-5b45-4cba-74cd-08dd82b9cc36 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dlFucWF3cDRsSEg4blgrQ0U1S0pPNnh4a21RVU5wV1RXZFJRV2kyeGlOVlVE?= =?utf-8?B?SXp0V1hHRk1ELy94SGpMeFYrU3UzcXpVTDZVbDJHNGpOUU14bW1lcVNYR1JG?= =?utf-8?B?UzhMNGVwRUkwd0xNcVV5Znk3RE9kL0s5Z0xJOFRIQVBncU5FMHJyRUdOZ3FI?= =?utf-8?B?b3NpYTJFNExTMFZEam9oV1BWNTNwWC9mZWFqUkR1UkJQTGdwRk95WDJ3VERQ?= =?utf-8?B?eGwxcnN1cnpnNGV3WUFXR0FUSlF1S2JCNVZTak05eEIwdm1MZ0x4b2VyYVhp?= =?utf-8?B?akVpNmY5eS9tUFEwOVl6L2pVNW1kZFVhalJyNDRCbTVqVkU2WGNTOENlQzBD?= =?utf-8?B?TTk3c3M2Z3MxMllFUCtidUVURlNXTUg3ZzNka2E0TCtZVFZkLzRDRXBGNm9u?= =?utf-8?B?eWNuandjSjg4dVZWMFlYYXNzT2V4TWVpbzVtNGVXWDR0dUh6UUJRZ3NXSFk2?= =?utf-8?B?U0JNQnk3MGdsdm9veUE0bzdNUHlNUDBSYkpVVjQ2aUJ5SVQ4YWxvbVJ3WFpH?= =?utf-8?B?MGJBamZkN25pSkhPclEvZVo5cmFkODh4Vlp4TUNKSUMxN2FGTUtIZ2NaUDI1?= =?utf-8?B?eWZaeGIwNHlabW9Ib0hsTWV1WDI4MUQyOWs1eVlZK2VtVUorN09WY1l6NmdI?= =?utf-8?B?cTh4MGJONUdvTGtKSTVOTGg0ZkZHbFFkL2hYa0x5blVndmlaOTB5UmJDNC9p?= =?utf-8?B?QWc4d2VkSlNDNGRTdFd4cUhpdElja3NBNnBXZ0sxZEtlUzNONTdUZ3laaXBo?= =?utf-8?B?UURRY1kxVk5NWW52T3RiTlR6aVpidUVEem5JbmUxa080RTJDQlNJRXBjWDhX?= =?utf-8?B?NkFaU1JZV3Q5enVSK0RqMkFWejh0NUtRZjFXN014QnR0S2lTSzZEOFlDaW5a?= =?utf-8?B?WUZsRFNpRkN4K0V1OVhZY2NQUm5Xa0pIRHBCQ1NQYnFmQTJQUG5pdnFXdlZD?= =?utf-8?B?NWhHazN2OElQaGIydGFCaTR6OVBsUk96TzhtY3gyN0NWVDZ1TTFWV0J4bEIr?= =?utf-8?B?UnJrQ3VYclBrMDl5T1RpYkdzTlF5VnY3dEF3YXlaYjltQUc0eHRhVklad1dN?= =?utf-8?B?VldjRVpYWHBFd2xjbjJKUDVWMnY4NTdsMDcrWHhXbXhiYWpmSHhHd1paZzVl?= =?utf-8?B?cjk1TFBpZGpHdi8xUzlKTGFobnMwYkgrVW9JYzlSVitlZ0l2MEl3Sm93Z1J5?= =?utf-8?B?ajVVcXNzcUl4T0lIMjNZeE5DRkJPRTVBNEVYYlluY2pIUnh1WmhwLzEvOGRo?= =?utf-8?B?UXpWRVZxMGN6ajl1dUUzbHFVOXViZC92SlFrazRQWk9Lc0ZRKzk3Y0h6eGxT?= =?utf-8?B?WjJOZ0RadlZTbEttSVZjTWdKMGpTaVh6R3ZQZWQrWjVDZ2RGNlBiTXJ2akdV?= =?utf-8?B?TkE5dTNic1ZKdTNTZTVTMksxUjR2WE5uMzlpdEx0djRQbmZrUHU5cFZhZXU0?= =?utf-8?B?TUFhNjArZy9zSVZCQnhJbi9QWEl1Z3g0T0U3TWtsQzBMMytqeHFtbXVkdnYr?= =?utf-8?B?eUJWdzFOK3FwbzNlVkc4a2pLM2NIN21zTGlIcWRPSnZZR3pqdlhzcHFhV0RI?= =?utf-8?B?Y1RiRUpNMytDM1JhcjZwY3lCU3hRNFJjTDZsQkt4REEvWmhvZnFmbG9mUkdT?= =?utf-8?B?bVRUOHJHTmx6YStrRVBwOUdaRG9tbWp3b3FwRHRGaWprS2dSeGl2UjJHaDMy?= =?utf-8?B?c3NSZnYxdDIxcWV4b1piR0YweGJEWnkrR3hDWDNoRkgxanpOMDhPMW00YTh1?= =?utf-8?B?RXZ5WkRGcVN6aGxoak81Y0JNQ09GWjdqamxtRlhuRXNzYWNDY3JWTEVMalFN?= =?utf-8?B?NnIrR3AzQlNmK2VZUWYwTFo0ejVBN3U2eVh2b0Q4bkhXWHkzMkU2ZFZiU1Y2?= =?utf-8?B?czk3Z0JLM1FxZVVrTGtkcTBDQ1p3TG9qMnJ1V0JBNkJIQi9DbUFOMzhtQWE2?= =?utf-8?Q?qL4nR+NaCs0=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)(376014)(1800799024)(366016)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YU0wVktaVVZMSCtrVnBRZG1ieUdwRkdZakt3dWRLQzdnQ0owVFppc2JuK21X?= =?utf-8?B?cU5MNEJoV0FobmZwVzVSMUptMzJkYjVpZFJxelRQZDN3ZWQvSnMyUjlmandX?= =?utf-8?B?Vk1nQzRiRHdYYXVPY1pSNG5yY3gzSVJKZmJBV090ZVJFd1kzT0R2a1VSUTY5?= =?utf-8?B?eDdmSXJ3OGR4d1dqQnI4a1B3eVNFa29UR2F1WVJyZ0lZYXdKdlVCS2ZFRUlR?= =?utf-8?B?NWRDczVXLzdySWx2S2phRWl2bWFraURqMU5iT1ZQUWJnbFJkRld5YVB4cDBv?= =?utf-8?B?SEEzR1M0STQrRzVwTmRka2NMTXpUT055cHRaOTR1ZHVIQjNxVUJqVzRQTzRj?= =?utf-8?B?ZEV4OHI5YlJpTXVZM3B3b05OUGVrVkEzbnI4YWtvUDlkTldJTGhtZnFnL3pW?= =?utf-8?B?c0RwSEFrTElVWWw3bGV4THRwazRqbXI0UlVHKzRPWnlhUUFoMklqZlB6OGxP?= =?utf-8?B?M0YwYW5pcHVvcEg2aC9idXhMRXNDOVorTHRnVVpuYmF0enkvVlIycFlSNjNB?= =?utf-8?B?b3pFMEdFRGs4R3NNUVFYdWhBelg4RjBYUE5Cd3RYSUZ4R3ZpbzNuYUZiYUZ1?= =?utf-8?B?aDh5bXgxSkROZ1Eyb2lUcTJMQ2hVMUNrcXdhWU1RK1FYRDhQT0JadFpmVDV5?= =?utf-8?B?aE1EK0ExYUpvWjI0SzRwL2FGNU0zUS94TmZhekMwdUM5WTY1Y2J4SkR3TDJ5?= =?utf-8?B?dlZzNmc4Q09aSU5NV0lSOFVjb1hQUFBhTDZrbitWeXFjTFJtdTJLbEhwendj?= =?utf-8?B?TlNaU3k0QnhQTUduMkdleDRna2w1blErektQMTV6cnVnU0ZrYWlTbkdmSEdT?= =?utf-8?B?RnF5a1pqK1dlcHhXbjRLL3RlNU1GQUExUGNRbUZ0MmRpUTZlenpXRTYxN1hZ?= =?utf-8?B?MjRIU0pQY3BuK21mUllvUTN1SWx0NVhLeGFuNi9PQTFBaWtCKytWcjRRT1VN?= =?utf-8?B?UjVaNXp6b2pzaDdvYm8rT1hRd01mZzVNTWZMeVJ4NHVZTk5BbXRVTkhuV2dh?= =?utf-8?B?UnlaMzVyZmhZSmFMMW8rTFVnL1BnVmJyY1NNREtMcXJwcWxXUXd4RWVaODlB?= =?utf-8?B?c2xIRWJxakRyQ2tWYXZCWFdGZTVxLzlvK0gxL0JOaTRBaWlNTUxiMmpvaEFk?= =?utf-8?B?cjZCaWl0RXpVbG04c0twOGVwdzJFUGdQLzdKU3FUbjZXbHpDaWh2a0VEaXo4?= =?utf-8?B?bUQ1ODBZUHJkWk45NUFhOEJaN3JtdFBLYlJCK0NGdEdVeURUYU53VlRnZCtL?= =?utf-8?B?KzlFNkk5bThTWGx4bXNYUUFsVjVndXc3TFo3Y21mTEV4YUpvdEk0UFpzcnZI?= =?utf-8?B?MHhGT2ZDQ1BEYlBzb2NzVll5RzE3WUo1NUgvV2NIOUM5VzlzWDhpVE9lWjB2?= =?utf-8?B?WVlDaFNDWHBqREFBOGtzSnlYdG12YVMyeEdaK0pUODArMFZzdXpMZ3pFRDRP?= =?utf-8?B?T2g3WHpzTnZnbG4zc2NwQ3h0VmU2bFFUbkx4azFrbnJBV0NpMStpeEdTZWd0?= =?utf-8?B?UnVRdzF1QVpSYmtXL1VBQUcxa3hVckVhcnFPVzVNSmlLVTM3aDVDRnNDdlp3?= =?utf-8?B?MEkzU2Vkczk2VTlrWGVPUkc3Y1ZMNFpndFMxYzdDOHhHUjZ5eWcyNUtKWmpE?= =?utf-8?B?aGRnWWNYZjF5T3Q3OUk1by9TVE1TVGtNUUR2WUVFQWVnaGQwL1ExZmtKUCtE?= =?utf-8?B?eFlTc01hOEM4TTc0VW9WUWdtdGp1TFg0Ly9BQjN2ZFpyRjFGbGhmMXl0djBr?= =?utf-8?B?dVowSHQ3N21JVTJpcGJCdFcveFpyTC9XUmp5VzZPUnNBMkM2dW8vdDJBM2lW?= =?utf-8?B?YkFEclgvTjFzNUdKVy93bnpwQ3FOUERDSndxMTBMWDBCSTdOZ2xTaFp1M3Fz?= =?utf-8?B?MjlpdkxQVkxqNzBPZ0hwQkxwdXpsdTNpZTVLbHFtd281aHdqY2p0OXdHVDhi?= =?utf-8?B?TWQ3aUdYVlZDQVduemxKQk9lSTB0Vyswb0o1Q1g2UnFSclY2dWZSODNpRUF1?= =?utf-8?B?aGpxWFFZWVB0U0FpaFZQWHZHNGNKNW1XU2RwaW12eVZnamY5RTJVUi9BSEF5?= =?utf-8?B?VHVFbm1qOERjcGRyUGhibzg5eG9aUTdRaC9BYzQxeTBnM0poWjg5RnJqemQy?= =?utf-8?Q?641wFj/jF7MJ13abG2MemHiRV?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 69784aab-5b45-4cba-74cd-08dd82b9cc36 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 22:54:26.5059 (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: ucxNLL7yLe15+/kMTH/4sRIoJAP5fRmMREVUB0yjFZT0zaREft32cP+pxcJ/NMfOCvK+YULK0wnwtVpUmpMhSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7841 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 | 173 ++++++++++++++++++++++++++ Documentation/gpu/nova/core/vbios.rst | 3 +- Documentation/gpu/nova/index.rst | 1 + 3 files changed, 176 insertions(+), 1 deletion(-) 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..03d1f0d67414 --- /dev/null +++ b/Documentation/gpu/nova/core/fwsec.rst @@ -0,0 +1,173 @@ +.. 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 + +The role of FWSEC to provide firmware verification and perform secure oper= ations +such as carving out the WPR2 region (Write protected region). It is critic= al to +the boot sequence of the GPU. + +The FWSEC image is located in the VBIOS ROM. For how it is extracted, see = vbios.rst +and the vbios.rs source code. + +The Falcon data in the FWSEC image is a combination of headers, data secti= ons +(DMEM) and instruction code sections (IMEM). + +FWSEC itself is a central location for all microcodes in the VBIOS that ru= n on +various microcontrollers (PMU, SEC, GSP etc) some of which (such as devini= t) are +executed after GPU power-on before the nova-core driver is even loaded. + +For the purposes of nova-core driver, the FWSEC contains microcode called +DMEMMAPPER which executes the "FWSEC-FRTS" command (among other commands i= t is +capable of executing) that is executed on the GSP to carve out the WPR2 re= gion +(Write protected region). + +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): + +=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 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 =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=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=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=90using hal =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 devinit, fwsec =E2=94=82 =E2= =94=82 =E2=94=82 =E2=94=82 +=E2=94=82 =E2=94=82 =E2=94=82 instruction 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 =E2=94=82 +| | | | | (NVFW_FALCON_ | | | | | +| | | | | APPIF_ID_DMEMMAPPER) | | +=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=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 =E2=94=82 MULTI_FALCON (5)=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 - id: 0x05 =E2=94= =82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 (See note [1]) =E2= =94=82 +=E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 =E2=94=82 - dmemOffset Z =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=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 =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=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 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 = =E2=94=82 =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 =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 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 =E2=94=82 (FalconAppifDmemmapperV3) | = | | +=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 - version: 0x0003 =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 - 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 - 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 - 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 - 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 - 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 - 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 - cmd_mask0/1 =E2=94=82 = =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 - multiTgtTbl-------=E2=94=BC=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=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=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=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 =E2=94=82 MULTI_FALCON =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=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80+=E2=94=80=E2=94=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 - version =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 - targetId (PMU/SEC)=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 - loadType =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 - initStack =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 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 - 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 - Arguments =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=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 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 Buffer =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 - Status =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=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=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=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: +[1] MULTI_FALCON section in DMEM can either be looked up by + MULTI_FALCON App Interface, or from multi_tgt_table entry + in DMEM_MAPPER's App Interface. \ No newline at end of file diff --git a/Documentation/gpu/nova/core/vbios.rst b/Documentation/gpu/nova= /core/vbios.rst index 17411f21b410..da759b56fb2d 100644 --- a/Documentation/gpu/nova/core/vbios.rst +++ b/Documentation/gpu/nova/core/vbios.rst @@ -44,7 +44,8 @@ VBIOS ROM Layout =20 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 using an GA-102 Ampere GPU as an example and could v= ary + for future GPUs. =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 diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index 2701b3f4af35..c01dcc5657e2 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/fwsec core/todo --=20 2.43.0 From nobody Sun Feb 8 07:15:07 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) (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 CFEA3230BEF for ; Wed, 23 Apr 2025 22:54:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448874; cv=fail; b=GjRlyLyiMYO57on9DQ8QiNXY7U0KdmBrTsie+bayUc4MQVaLJVgFKyEiv5p8X7wZDc9yF0Vqzkb1vZFt2v4k99edYkSTRi8+bVaXr/5wszRbXDrABgJkxCOIvgxw/uKflrWlFpdcIjmXCJ/a56KogeZBcivi2p/HmgFcBCaFQDk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448874; c=relaxed/simple; bh=H6UM/BgZQeKqHPUjKv2lGhgkHk0oS6hkomlXfBDZDPA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Frs09r02qtXltPd0s9NfDy5eQlGE1lfb1t3VJk371qd5sfj0WfiDWtw+zTKrpNGCABzPbLSqtN9024rl0cKXawjb3AUp2wl3KmqpIuXgGNYDTuha+DUPfbIQuv/W/3bx2Qauazul7Z9mUL01DvyBQFprryTBow8czadJvgqj5eY= 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=A+KKvdaV; arc=fail smtp.client-ip=40.107.243.40 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="A+KKvdaV" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B3bsYi49UQXRGl2pF4xuW4giabjDtA9t9UB9hvHAJnbU4WLhP3zYZxYIqVlJfaRAvO9Mu7USU+GlsDOZr8/21371sZNAVhmehukszzmdY11YdMCQL9OEnv/0oGb/4MuPx27einBhiWOKYp4OgtbozfgO5iXGGEnUr5cI3kxPL8WCqriJydPcwcocJGhJKwVTtojKUutEd4Tf0p2MBniGMWTE15PJzwcMQEqYN4ZzE6BwAiEGi81Yb2IFiPSw7+itrVr6RqzxHkOMW/xTtAs29DTdXabO2/LhZQuJeBLxrKFY6a0Mk75MdmbyKZcNDAg4NSBSe2t+78J1xDKFFNK4XA== 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=y994U7+TcIAKV9fxjMdP/rqenZcngHwAXEJkiwjNgmU=; b=mtsnSWtYdCPATeMG28k5nSbD1CzRKf1NoZCaPONynPlJIkM3OZECTJe0r7pi80S0g+/psfkjT8XewayhEKxgWmE6Ah5GB2qxc/G3SYoMwoJ9RfGfyGZQeJbbgFfOn1gluFspYEqJltpueGUBVpfL8wuEuSAOdnGSmBV0F41b+bSh5cj3ygLxWRgbCLPWg+qmSdhggipG8LWnhEB7dksP5LHH83+DQTVcUWg6Awl8n1akTYUp6IPp7gT7FY0pJER+mgPGyR7uNB1lA1qyyFao62+XVt1tnDrjvq6r5qgp6BUUFEy12FShgmCBRe7eQ6nyAcpeuZSMuVRx4FSbJb1xvQ== 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=y994U7+TcIAKV9fxjMdP/rqenZcngHwAXEJkiwjNgmU=; b=A+KKvdaVTDTJbdFc0ncm8AGeLsAK0IJE/5cXqkV9MoT28uIgAJ5yViZe5nPK8iFzYritCU3swmwrG/YI4OG15LY9qiaUE8zwzMMte+D1Do7LhzP2uUGeNEFUDHR+fvfkzunN6QVvYJSXh7G0SFVl7scg4rjuq2o9gJULAR0wtNQ/5p/u0+HN0Es7HWiyjPUTqgpRw3FwwWDbbP0V9TKeId436SFHLDX0+JSNHbyN/WpmsBtUVmiD/qo6StR+O/SxdOFZihBh+0rFEYmOFvK33HNfjp145hZzmIlW+wUZgSUbqN2U7C5MxjBCsltyDkVN0mVhQIPEyJhmsbdibYtwiA== 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 PH7PR12MB7841.namprd12.prod.outlook.com (2603:10b6:510:273::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.24; Wed, 23 Apr 2025 22:54:28 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 22:54:28 +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 , Joel Fernandes Subject: [PATCH 5/6] gpu: nova-core: Clarify fields in FalconAppifHdrV1 Date: Wed, 23 Apr 2025 18:54:01 -0400 Message-ID: <20250423225405.139613-6-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250423225405.139613-1-joelagnelf@nvidia.com> References: <20250423225405.139613-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0246.namprd03.prod.outlook.com (2603:10b6:408:ff::11) 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_|PH7PR12MB7841:EE_ X-MS-Office365-Filtering-Correlation-Id: efb3dd48-6f67-4967-62d0-08dd82b9cd98 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?yx56Xg0xnEuZVMgDpAWIryQhz7qGtmW3fDQ8pK6xWZ0udm3Kt6o47zC4s3xK?= =?us-ascii?Q?oAV1AffrzxoTAG5yd78gueGhK2DkfAuNPTsjqNqbtd+wSUpQ0cF/GUDN0Hzg?= =?us-ascii?Q?g0I6IHyPvzm3JHs9HrfcVCiCDDmUZpc9HizaHASIflnQ+utxbwzFcBwjLYlt?= =?us-ascii?Q?rvIDjLxTw+2noD55OrpW5vjYrX2EdxJeSp6tXUZ/6VLpBKCQrWlr8xF/aJWx?= =?us-ascii?Q?YuhsHmE2LLY94xdtL3WxGDPkGw1kNMNFRwccnCxPhGsGV+Xs6NoDxCYJeqdL?= =?us-ascii?Q?krxNIAK+fwFUgi/2lIsKxHIS0HCiLllMTNHL1dM3e8Bvm1759x2dZ48FoWtc?= =?us-ascii?Q?KN3r5vTWy1t70AP+cDVNFBITWxdG7jug9V+V/ci2jw3fYU2N5JYKQyumpL/s?= =?us-ascii?Q?xyujxrET8OWhvH7o9I3FgsuQZ9F0qxGAA9UgtQrpGg9fsWwuero812d3yZkF?= =?us-ascii?Q?l4J43f0BLgcMciob+JPbN3rYEAuPyLUpgM+brtJ6QHCD7NSkiZ3iMMJ0Aox/?= =?us-ascii?Q?NUIjTbOLW0u0bMXUUjEv5juCGo0HKZSmBE4/CnuO8qGVp/S8uE34yrQEnKB6?= =?us-ascii?Q?7WOMZAZ6945M5cCMnbq01xoXDbm4zHDT4d6zcC9HAiYVPRjZYEX5cGDMP5Mq?= =?us-ascii?Q?HJSEHCokajnwxQdY7UP5cSgxZNSCB0B42pNkLS8CHxqXuy8nwSeJDiQJeSTf?= =?us-ascii?Q?MtVpLItXfchEtBB7fMWrlGn6DH9Do5qc1VbHnw2ikCRYu5kN8Scpc+kYm9Mj?= =?us-ascii?Q?u2FR9+QctGtWgz6jEzEJpElKjJR57gKRcOWEisW1uGCuBSOBgaw1crEk82Zj?= =?us-ascii?Q?tnelQNoe/DzYtPRiyqNSEa5PWb+tqc/nI/wCGE3DKTIigm7rXq4aBaVk/yo3?= =?us-ascii?Q?w8xOi8i1+Uku3jO0fj0wbjjWUA0YCTMdFnkBRw/TvqIP8GKN9ztDyEcsjHO/?= =?us-ascii?Q?0KONQkC2/XIB1tAB1HECju7uCK0+pEYew1qpOURQLWR8eA0xYkCu3HY8jZNC?= =?us-ascii?Q?b1J8o8Re33cQjJYikCPDnP6ssqUUhaFpF/hOTix/dxmqqr/oW8GNdNyCo9TC?= =?us-ascii?Q?FvwjcDtFXReRSBTmRhu6HYVDT7V7Wqhqze+Ye5aYHDTeTicNPF+Sn3yU3+md?= =?us-ascii?Q?J4tMY7mEeSFNFg9Z0aUQoa9kt37wRVAK83+deFXj54yvFTQXm/81GLcxwAMN?= =?us-ascii?Q?LprAK9SEj0cYRTqHdCD6d1aieMO3gq8Lbrh1e3k8vg9RVTqGvGub+8Cs2icq?= =?us-ascii?Q?HM2suMnIA9JJXOj5woeBujLanEtmMF9lypE+TDJJNO3OkBsd2a3RYdBY3yAh?= =?us-ascii?Q?5tfUoKs/ttaNc4aniSec5rk+AJaDEfxMf/FQuXj6r2FMrLci9Uf9YvifPVrq?= =?us-ascii?Q?cfXrdIZ+4QrflL5nKuxvnaQ6Sr1BgmGsoCxRtL0+l7yTfeNA7X7KetO/ag7Z?= =?us-ascii?Q?SrvmxjK/ct0=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)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?owXf0XnL3zKqnV6GSFXz+y94bkcjxYJpIRd1KOKYyIhdJ4gBYXorI1CLyUNP?= =?us-ascii?Q?VsVTNUAU9irIgNdRL8HGk+BUMWUX8e3Mo/DYCgod6IW3r1b/mUaFnkU1/qhw?= =?us-ascii?Q?YYChrlcdx0UFNZjzoPEkD5yijxkYVxvDoSz+oQYYLT/1Uky+4hsmNJLwuUad?= =?us-ascii?Q?S94PXjWh8MhZzfoUI19k3wjFUDoc+2CjQujn6imgqwRP2t4Gi95O+DlqQzZQ?= =?us-ascii?Q?z8xmHi0x8h691VHBW/3i2GQRgZ6QYV0lwN7BvhUxItzjKRZfsHGC48noGLJl?= =?us-ascii?Q?v5S/CY438QY6lSSwmKj+nWTquZp1upHr8ZScluT5RQ9DmZ/zB4LZRh3YGB3V?= =?us-ascii?Q?8cNVNuUBXW0eBzA0HKtAi+Hsian620S60tkTxHwLXJDNbYgKEvll9EVP0OJ0?= =?us-ascii?Q?F1lYeCAO04xo5K86/Gro3hpL+4VgqTZIa9VihSoOYUvkUQiws1Bg+W+pgFwQ?= =?us-ascii?Q?cLh6ptbRt9EnaAfdshxc8/6YBtHXFxt7xAWFQSjUNUAJUP3Sk3eQVS6Ti0AN?= =?us-ascii?Q?Ke8ER+cwIbgl1TYowcrVc6XxiDLsfdbOU7icZh7wqk7G13l+8bVVEnwfqDq/?= =?us-ascii?Q?9ZVy3TqgSbPPoHCGjGbVp/nh/UvY5l6WX000rkrbpxHHFXJcHiwBpXXZ8K7r?= =?us-ascii?Q?nOZjA8LOt0FXBxBv4LUn27lpgGETl6AcrNwtvsWMqGy6Gb7c/PK2lGyaYF7o?= =?us-ascii?Q?fECqSzB/5NIUmhXxlzd3QumyvGbOjz8JisBBWajYFLppadXIIIOO8aFOW0hl?= =?us-ascii?Q?7+D2LYogSB/UcQhVdnpgFcbopdyYBQmscSn2ihYtjp8QpqCgAb5aeVcBH1Tj?= =?us-ascii?Q?FsFzsJ+8FlrQotfu45J1DJ6EuR4mdG9mU1tXn/dRFNG0aEdJ1KTYJWPXn4Ea?= =?us-ascii?Q?vzxbYs2VPjnUubhLI3/xAm0AtWmZvHHhXT2AbcHp/+98nF5Es4x7GUWwQqjv?= =?us-ascii?Q?1rwUE+U9SyH6Q7dEwcoTAyxRHxsymJg903Nd4leHy8xDRyRn9w9oH5EMUWXh?= =?us-ascii?Q?mjdUttGEgTbwhB5+6J1wjpzkSN6CkyU06cHNJpZKOzpBcNiGmr9rycBEWUvy?= =?us-ascii?Q?Rvbw/kzvW/x1Y/Aod0/zttmJTUNL9QaLL0a0gltrswxin+KhuVFnlZ+nyHyU?= =?us-ascii?Q?iuKMJPUN7CpUa4pdtQXXGtDulG+VwFv3ANEJslGYUgof1iDDw1k86BAZVS1f?= =?us-ascii?Q?9h/i7LM/pfayKWotre7sK8AImQ3AvUwVcZdBANuinV/Kg3hde420SbHPW1lA?= =?us-ascii?Q?FY+BXjWgcHviqeZcnsoHrU24v4FkvBdhdEdBV2wApZPAn5zUKJqdQYWJTc/f?= =?us-ascii?Q?26ypDzj3YKBY/gXf20G6q/Nl0GKEIDjdrXZrfDwiHHAlwwdD533l9aR8iS5R?= =?us-ascii?Q?1hNelsNpU38IVAD3RpFk0Et2OD6GwlaccWM8Z5cavQ52h8hZpWbP+8tR5WrD?= =?us-ascii?Q?pochjIsUn3pWvEb8ZInVWADWz1NyeTI6vopKZvBbOrOthjUVR67Pkb9UMA6P?= =?us-ascii?Q?TiphiDmvSjKen6X+qWDnOnBP2iF5DUtXM0+Yzgfa5gh9t9fqldybDhMpFqKt?= =?us-ascii?Q?qqyqA3IuQRjzKKLzvUoZ4UItLMlo6a80rQ4iahvE?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: efb3dd48-6f67-4967-62d0-08dd82b9cd98 X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 22:54:28.7644 (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: F28RgFymL/SgAuysnwVVWr4Za4+95ZmJwfd3Ct912JUiLdBpj+aZwgJAkUslJxMwqG8tBZeh3dt/7hlzPNF2GQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7841 Content-Type: text/plain; charset="utf-8" Signed-off-by: Joel Fernandes --- drivers/gpu/nova-core/firmware/fwsec.rs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/nova-core/firmware/fwsec.rs b/drivers/gpu/nova-cor= e/firmware/fwsec.rs index 664319d1d31c..79c21db9d89d 100644 --- a/drivers/gpu/nova-core/firmware/fwsec.rs +++ b/drivers/gpu/nova-core/firmware/fwsec.rs @@ -29,11 +29,14 @@ =20 #[repr(C)] #[derive(Debug)] + +/// The header of the Application Interface table, used +/// to locate the DMEMMAPPER section in the DMEM (see fwsec.rst). struct FalconAppifHdrV1 { - ver: u8, - hdr: u8, - len: u8, - cnt: u8, + version: u8, + header_size: u8, + entry_size: u8, + entry_count: u8, } // SAFETY: any byte sequence is valid for this struct. unsafe impl FromBytes for FalconAppifHdrV1 {} @@ -169,14 +172,14 @@ fn patch_command(fw: &mut DmaObject, v3_desc: &Falcon= UCodeDescV3, cmd: FwsecComm let hdr_offset =3D (v3_desc.imem_load_size + v3_desc.interface_offset)= as usize; let hdr: &FalconAppifHdrV1 =3D unsafe { transmute(fw, hdr_offset) }?; =20 - if hdr.ver !=3D 1 { + if hdr.version !=3D 1 { return Err(EINVAL); } =20 // Find the DMEM mapper section in the firmware. - for i in 0..hdr.cnt as usize { + for i in 0..hdr.entry_count as usize { let app: &FalconAppifV1 =3D - unsafe { transmute(fw, hdr_offset + hdr.hdr as usize + i * hdr= .len as usize) }?; + unsafe { transmute(fw, hdr_offset + hdr.header_size as usize += i * hdr.entry_size as usize) }?; =20 if app.id !=3D NVFW_FALCON_APPIF_ID_DMEMMAPPER { continue; --=20 2.43.0 From nobody Sun Feb 8 07:15:07 2026 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2040.outbound.protection.outlook.com [40.107.243.40]) (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 2BD26242D9C; Wed, 23 Apr 2025 22:54:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.40 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448881; cv=fail; b=Oy7PVthEF3dxw0EcTe9hrcbeDvLRVDrZSxsQKFGQGCXoVP9LZxfxXfuMAoASERWyyecwmDNhViPhZQ5miFm6xU5kDL3Ad1jsKcFlkH/v1bKMtM5IUyO3Tp8RPreX7zK49PoZMYMcxiYOABwIcA3qAoJ7k64zuuzdzXykgZIZPDc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745448881; c=relaxed/simple; bh=n62gR1nRADQcKVJ4APaMv36d/9aWLPqUkw/CPMpKSZQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=ADynVgSVCl6capxdDYDGXUIJ0REZzBTKuc8ksV+q5jpi+dGvJHAd4ZV2dtxnga2QPoFyHB54jjzo8YY3HJMRJa9flSvJg4xOVnxEXXFubwUsztXElytYUZfY3dZMDBlRD5bfgLMosxHXqX7eLzBQyWIfhUOIVI+ClJiEBy9yP6I= 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=EpgvRhDv; arc=fail smtp.client-ip=40.107.243.40 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="EpgvRhDv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KNfDIhGFNzjRex1Ut0pu3OEhckbGehId9rqixenhVuv0W0x3CWccmRjwc77Fx/s63nTty6kDc+oi6YiGmOettCK9lYHM2ZgSpJoJh4+jLrI2obNoJAvfRK3+OBxAsZqVcPjR4ZWRrPyYRHYctdTFqqMfstXCTX7WqyLsBwThCHxASZv7Seep4UGt9bUiIe84AXzexU4VdrmU9ausVgjJ/uefRpY05BbIIK0cG8ACi8aI2reYijw9IMjiWYslPEYzpOfjVK3RKTSn122izDw1kNI9RHSVW0TfzYO3XPJXmNbjOF9f4gBVvtNicNVXNVOhsP5+3Kf+0CQ1rIi1hnQKKQ== 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=r++cWG9pp8ABxTb6b2QgXcZwBXN//JCueqoLtOdgkq8=; b=YX852MPnDU3sEWMrQAUHna4feSS6H6YJfEXqJ3DH/vMChAiTfNFUwxg/tf97JTrpY5Y8m9byufXTBAbfauDQjUX8E00ZoPmqtVfexUkIFbhwNx5KgvQzFt+PbQHUBWJVPumDaHlbjsNriOW4ehZCBQHkHuMyONw1ir/Z9G3M3Tn/RkQeAdtAKtLhMAfehuFHJlLz8nBWugxKqyJ6NANB+4EIzZfWs49x6DMHzifYZdT9q6VfBP2FseOuvYILuZxAGcCqZSLUSojf96iIGUO3k/KXDhdPwAshaM06IcPrFjfehX1Lb4szhxV9H3/RvjF9X2If1uvpqLv60vu9ZMGTvQ== 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=r++cWG9pp8ABxTb6b2QgXcZwBXN//JCueqoLtOdgkq8=; b=EpgvRhDvfEzYLipGCbmHkXoOKI/cI4XyzCAcgtK1/mQtV42yopER1oDORBXo0a2N+BInEZwAeQGO1AbGY+M6hbCVpHYy/GgRDxQas7r1eEf5Je8znz9rnlV/9p2ygHpPsGVqcVdF5BE4l8/pGeCtvR/Mz0q6AqctIhHHAumHpzaAah306gRofDt2HiX6lHA7dLWnMPeL+qLvupmfHPTYq1deCiQ6nSCqiDLt+KSEBH1FpwoH9AAausaxLeuyFuIflZVOreHY90BhQmK96c2sTBH6yUL6An9Wz6lzP1i7UoGMCPoM+pS39QVEx02RMh8EfLAtJOSiLzxMEBHE/49Ipg== 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 PH7PR12MB7841.namprd12.prod.outlook.com (2603:10b6:510:273::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.24; Wed, 23 Apr 2025 22:54:31 +0000 Received: from SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91]) by SN7PR12MB8059.namprd12.prod.outlook.com ([fe80::4ee2:654e:1fe8:4b91%6]) with mapi id 15.20.8655.033; Wed, 23 Apr 2025 22:54:31 +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 , Joel Fernandes , linux-doc@vger.kernel.org Subject: [PATCH 6/6] nova-core: docs: Document devinit process Date: Wed, 23 Apr 2025 18:54:02 -0400 Message-ID: <20250423225405.139613-7-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250423225405.139613-1-joelagnelf@nvidia.com> References: <20250423225405.139613-1-joelagnelf@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BN9PR03CA0246.namprd03.prod.outlook.com (2603:10b6:408:ff::11) 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_|PH7PR12MB7841:EE_ X-MS-Office365-Filtering-Correlation-Id: c64193cc-1adc-44bb-eaa3-08dd82b9ceed X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?/Yp0L/1hz4SNjobuLFv5Ageh5wIyD3jL+8YBXjIBXTcFzZ55n0dIc4CfgbuG?= =?us-ascii?Q?loccYyI3PKY2n9BcVYulp6e72yRhKOJOgQlCvdqFsuNxJOacHqcxRULJHw5A?= =?us-ascii?Q?DmOFW42Gz8nRP2PHWfjqMzcht0INk5M8gKtDdJv3MN2HTZJ53B0PrhGKUqbB?= =?us-ascii?Q?M7dLoVplZg9N7qXTzS9EsLs2Qu0OgPZogKmtddsT57NtqxseoxxkuqOKI1an?= =?us-ascii?Q?tRDzrwOHMR8hx5Xw2CytoLOrQsYPLNiDAMpe1QQoDVkUD2WeXcmJRar0wuII?= =?us-ascii?Q?Fj5E7fL/noWBbZ0/izS7uBPrecppVNk655Nur9AoTzR/4tqLDyLgLura6dvW?= =?us-ascii?Q?qP4zeZo5YydrzzO+45xDCw1RU0dKKnBQOhVhQHYOzJv51bCMn0sc19vOyQGl?= =?us-ascii?Q?NWbp9kVal/TbJW21u4D4+wHnp+1+/oDwhIv+S+brkzJEz+py5TsCkPWx9P/U?= =?us-ascii?Q?HdWEN5hWopovCIls5O30NbGOLctdlKdvtyg21BLQNLatNnXnWQUfquXKA753?= =?us-ascii?Q?O2xXTy9HpAS8Z3UWZYJIV2oMX9z4wHn5CP9u5LlDrOc5YifjXoIXmSaoP+IV?= =?us-ascii?Q?aqgF/EE18tvGgV/cwYfOkYmqDPrciA7jxXhtPTlS9iauC+J+mFbCPZU1QNz9?= =?us-ascii?Q?bFr/kHuM1H6vmjrRcj6Vve33CYZFHuwbmEWqnZ8WNAH8ZCVjpUESViLDVah5?= =?us-ascii?Q?isAt0z4ivxWx287Wovr6GZx7Lz743qbgr8d6y5onY+k5+upAKbmx+djwJcXA?= =?us-ascii?Q?1fbfFOt+rWmxB4Sm+H4xUawMH9aSO+ZeiLq7y5ktFuiPj4H9nGAybnB5Wf9m?= =?us-ascii?Q?0WKiuF41SAfile/7Ur2WC1yLLv5XIOorKzR7E9baPhjaN6CGzrcw0Myj7Ex7?= =?us-ascii?Q?Jq5UfcLnLFNZczlAmkx+vL9VyO2KM2HUUOZPa8+ST58qinU9f1btkiyntPIn?= =?us-ascii?Q?nP4YR2vxeKqQ02/PjVgMIcqXhNutAyvltQTWt2eLiCPI/O6zxskRTEN7de3B?= =?us-ascii?Q?mq4ybnhHvhHjx4Rw/uuUiGcauIQQ6w4+o82SkSgB++sSxdTZFhBGuoiCC/DY?= =?us-ascii?Q?di5rkq8ujQ/sQqRwncvNnVimJL/cfCZdYZXim4KwAzD+cl4gsKh+mfl1KpdS?= =?us-ascii?Q?P2Op0ZyRivn39duO+U0hz1y+JXq6osMfGD/Ng2oNd4AY1RSdIh+fHU+2CIx7?= =?us-ascii?Q?2GnMqpwQQegFZd6964y+JSmnwEe+FT2XamtIVYjzIQJsvzTwLH07Al4XcaGd?= =?us-ascii?Q?EQ4tzSJRAnkmYTOVIeKzRoC5DcgT/VvNQn8UsVc5rLZzoLe/Uz09ZBCb92rf?= =?us-ascii?Q?c8XYPdId8D7MocjOZ1r1IJ+neRhTm5BKZJo7ApZtiM94Bb4XeVqHSqvgLuOY?= =?us-ascii?Q?hzllr7vySx/djWFPnUaGSWDXXaiS7COquW3XQrx4d28G9wTz5hKZdv4KnKju?= =?us-ascii?Q?BwGk4ddd60E=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)(376014)(1800799024)(366016)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fEn2NBTDR86jSl0CWM1Iuhq/gGIsrBmwYsPxk7YzdbNT+QVqY4yyDQDYPe21?= =?us-ascii?Q?JjWxRxrXixw/oLA0zkt0J636CW8CebiT0QL/GWokRI22K/+gyD80a7slfomc?= =?us-ascii?Q?0+SgsZfS7YY8Wuq4XqgTVx8nm8eWQJmbdu9rJqCpJgzfa9DO8uSRl301YGxh?= =?us-ascii?Q?UTO48onmvWA7Rzzf/BPKE6WAsJk3EcQ0wAXzIXxq4JV/0LFBXQtJ3wHrjHhk?= =?us-ascii?Q?c7VqitAbCSntHeqWfqNhjj4MrWsCcXC/c5vt8Kp6j8LulgNIp43FIm/S1Oev?= =?us-ascii?Q?/EdkinARyfqdK4s+rgNdKgyP3yool6XqrzQfZ11oalnFuoxFVTKdlQnPW+D1?= =?us-ascii?Q?ecGJSl8Ki7EtEC4l+RtTWXeYF6dBHXUDa84DEtrhYYMAZ3WUM8Ff5i6PxTkJ?= =?us-ascii?Q?fcdCyCYYf5HIeNAKrBmsZq+8eo3mzJPTxEp4e2ZEH6tq1Jhz1E7ZChk2bAzw?= =?us-ascii?Q?LVUAB54mGmCt9sGuLFJKXxFL0E8Pni1NMxwh4qxd2Eo8aS4WfPj/H40GyrQE?= =?us-ascii?Q?oZP2hYQRlB7KbQGx6XbQ0IQhBSUROYGnl2IIHWPY9ywCC1+SLHB4RmSLuxDe?= =?us-ascii?Q?0TQUtiVcA2ZC16shJ737wd1Qg5XDYefEXD2QltHNIV8OSc7JEixu0R9eMu7t?= =?us-ascii?Q?70xJCXs0WcqWkUsQ2y1i7CWr9En8WuPvvVlQn1RK0hWThRnmexQV0CZVHdKs?= =?us-ascii?Q?RgCKQjCkPQhGtugjMhkloHyhJqW48ueuTup4a7DiROZrP3Q7iRl41lH0hg7+?= =?us-ascii?Q?aQD+mBC3kbHvrvxhi3H5fzzz3ehWM3eGjkJCH1FcGSKCWqfa/Kb7T/cz8QUX?= =?us-ascii?Q?KPUzQ7uMB3m13ALt3w36dWP8OPzgztl0wW0aEve+EsX0I/qimSGuFyQKE4Da?= =?us-ascii?Q?HuVDRvtmgp6E8c20rTvFH30tXIIfCS8kzgc8EhZkD3OMnTM3vAmoxEMkIzdd?= =?us-ascii?Q?R6rmQbh7rdwWXBehHk7ZXPwwfiDEHG7WkXYeDsTSFSVxe6BpCNJj0wP3OaAW?= =?us-ascii?Q?Nn18/5AXiHItsC8DbhI1SSGQXhQkGt2jhCe4+7iSLjOJrxlWizecMKTu/07+?= =?us-ascii?Q?D9jKXUBwFti+SE+hNa4go7M8kw0w6Rwr7ljDXtXypjhb2JOrW39EeWVRtxcV?= =?us-ascii?Q?sUftUA8uJQSCeKm9WE8smgZEz4PV3Rdcb7LBE8udVn/ShFpcGBKASsQefRHm?= =?us-ascii?Q?yzBcZW7+PgAuuATP9gP+/djt7DmdN/itdGMBhmKXysAlbw6mSlXOliN2HB8y?= =?us-ascii?Q?/wajIhcqwq09ONUubPuRQP6MSZVPJPRP/pBvjrd2SpagG4Y5TFqoLYEKcJz4?= =?us-ascii?Q?67xN6ZPaa/5yhR0dkIWUwuLYyuG7JyDhJifC3JPaHiBClHA5epYU2UHu+TXK?= =?us-ascii?Q?xj9jwwNRw7CnLSAOw5jNSfPPRgeNORfe46Z3QAI0yXoxPDk7x0gxr3MSm3Ry?= =?us-ascii?Q?Ifaq0t+lt9BHwdhf829b2M7dWW/pg9aAnEKCgamdFA6klTxy096iZldC4T7p?= =?us-ascii?Q?YmU1QpA/sYmt2X/iVHurpIYp+x6lXnOUoaSDYc3PAGtgvlXOAX4Qb9BmU2QW?= =?us-ascii?Q?ZlOL+ZpgtJ6nnIIfEPEdNM80A9nD9L9cvegC6cgX?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: c64193cc-1adc-44bb-eaa3-08dd82b9ceed X-MS-Exchange-CrossTenant-AuthSource: SN7PR12MB8059.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2025 22:54:31.0168 (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: EDn/RfWJR3Ke7TSXsm5jlr2E8d1p/AZGjaF8YTjH+dKZT+/z7XNfUTJtCel5LOIPh1cQyCsYLrd+8ORr0ggFZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7841 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 | 54 +++++++++++++++++++++++++ Documentation/gpu/nova/index.rst | 2 + 2 files changed, 56 insertions(+) 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..e504ed3efe15 --- /dev/null +++ b/Documentation/gpu/nova/core/devinit.rst @@ -0,0 +1,54 @@ +.. 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 + +Overview +-------- +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 is an interpreter program that typically runs on the PMU (Powe= r Management +Unit) microcontroller of the GPU. This interpreter executes a "script" of = initialization +commands. The devinit interpreter itself is part of the FWSEC (Firmware Se= curity)=20 +component provided by the GPU firmware in the VBIOS ROM (see fwsec.rst and= vbios.rst). + +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 +5. VRAM memory scrubbing (ECC initialization) + - On some GPUs, it scrubs only part of memory and then initiates 'async= scrubbing' + +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 core parameters. Most of the GPU is consider= ed unusable=20 +until this initialization process completes. + +The GPU firmware components are: +1. Located in the VBIOS ROM +2. Executed in sequence on different microcontrollers: + - The devinit sequence runs on the PMU + - The FWSEC runs on the GSP (Graphics System Processor) in high 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 +set up by the FWSEC running on the GSP in high 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. + +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.=20 \ No newline at end of file diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index c01dcc5657e2..301435c5cf67 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -27,5 +27,7 @@ vGPU manager VFIO driver and the nova-drm driver. :titlesonly: =20 core/guidelines + core/vbios core/fwsec + core/devinit core/todo --=20 2.43.0