From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2044.outbound.protection.outlook.com [40.107.220.44]) (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 12F8A2222C3; Tue, 8 Jul 2025 06:49:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957400; cv=fail; b=XrgByCyjNEfE8H2Vrk2o9xj1mSJsYFMrjwaW9E5CtQ1hcNTEI9OshtCIiigjTbMjBXt7SXDiE3XwAAJ6n83XSiIp5Z5RZ3MCS4CxXt1Eu3x3MoFJZoFoNRqD/H8ioiwHanuyw9faxwyc1N6u9usAxTMgEku6I53jJPetIfONHlA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957400; c=relaxed/simple; bh=OZy1Vsj2IvmhUcHP+gzE5Ys6Qof7+UcYyVEujzzghts=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=peiYCBkxz8RBOrw/7fI/cAZ3Y8AZJ/nhfu35+pU1PVf+9K5dIZqXGQSzUn8AUMHwgT2Pq08Wf/bctRz9V4hrg/qC2TaDHUqBBAcad0F+c328lyg0JOctg6tsYAunlKcNg/tg8VpqP7qtpXVOZ338W3uybJ5TtBuJkJRtg9JDPrA= 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=tfFQRUFU; arc=fail smtp.client-ip=40.107.220.44 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="tfFQRUFU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Rxxsul6O/LqKoN7SPn81AUBFgckbj7MGycf/gDwP70mmcELqfSZ2kAPPD736SxyeNDxyatyWiBB+kDtKxsaYKznQ8/M7zVFesI//Rev+guvVOd/l7FIJ7TUQKHQEsAVJBRsyg/vamC+MfkfGmYrtUnxC0dwJTmOvTD6b+Dwzq+qP+VvldfZl2jhND4wFSE+PJY+cqnOBAvbfK/qkEVzxenS8fLVT7cASG9PGWcGDQ9sAlXmzEpM/Pz2+Igt4YtAiWxlitPvIna+tcRiFAll4IbZXAVeaF5dab5ynMdcjOYFnBeDFfzcNwsf+FYod/35n+n1ws92NOHPSiXrZC7SHng== 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=P1+iDLCYVoH0YC9EtKj24zz/I4o+2eq8tT6mfPySBOg=; b=bSFg0V4ggV/b+hpETVocgEcQVTXvw89CQHkq6S72+H12SphpsivKhd+uiLIS/OtSag3099PxDybxXbt64Yh5D0Wq1MIegUZeuDh/K7d46eAMsgv8DrjAGZGb7xl/OR9p2wMwW6/x/cQTa1nMA5cVxVYY4vAyOwmsOJH+xNyUOq56AqhCEU1z+fcV4q1wsHta0VpyyPTyubTpCcX96OpGnlLqtXghI58QRg3CSlt4waunldQ/XRI4ASrnz3QkRIsmGUrMRJH/Fu/hdIgIP50A1jJRFXKsBq/QK5XgePF6HXNRsVK7JQzWrN5mikeHUjJsf4FWO82gQJ2Sts06UuvEHQ== 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=P1+iDLCYVoH0YC9EtKj24zz/I4o+2eq8tT6mfPySBOg=; b=tfFQRUFUsripk2RLBGR579JrRfI0NvWVyTuXGwk80DXpZ9G0u0tf//Tlua5nb9Y3nmaOwdxRn1JgIeq1oqw5KsW9iDpLSYlxLzb0KHvrEyDjpLWZZlCXOMWy/DYws9NrFiLIFTdgz6jtGQYMOLU34ccsZpqo17uzXjo++WtZo7oprx+nycU5wU28AalOSPb8X8axrUU3JpKX73iUz1wESsgoHWkjouCAvn9Op478veDg/P3KIjPomDOtYwnsqLWiyevLKxWNQ+27lkndEDoqz7PmHOdmy0iqgbJdYdSZVV52CNrNCqyYfsUQ5mehzmyenZNjM2lV8mIarv+fRIXyfA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:49:55 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:49:55 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:41 +0900 Subject: [PATCH v4 1/8] gpu: nova-core: Add code comments related to devinit Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-1-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TY2PR02CA0058.apcprd02.prod.outlook.com (2603:1096:404:e2::22) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 239f36a8-f0ba-4cc3-68f1-08ddbdeba575 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bkxZcHdubnRnZHlhSlh2ZDhFdGF0WlN0RElTb3FiM05zY3pKMlJnUExLZTlQ?= =?utf-8?B?dnlBdG1Ta0Yrbjh4RjFCaEp2RVBld0tKeERyQzN2R2hJbHA1dWRORDZLMHFH?= =?utf-8?B?SzFqMXlZNlJOTGVVQXFoL3g1RkU0SGtKMnRSaXJqRkoxQU93RXdVckg2eWxZ?= =?utf-8?B?dUQ1RXdqQ3RPTVhWNGR0NHVrNG0rN2kxdHREajV2MlMzdlRLQ00xb0xLWmFP?= =?utf-8?B?UFY3VmIyY2c5RWdrTGhtbmtqazJQcjdiTzBqYkVmemViZXgwcUMvc3RhSVpD?= =?utf-8?B?QUJoRklmeWYwcTdRSTRMalpaOGFQYlVNZnZtV041QzY5M1F2eUpFdnpBOExv?= =?utf-8?B?cDJIbUFUWWpNcUcyQlhGS2w5UGtzYXRjK1BCSDJSajlvYlFtWm43Qm1iazdJ?= =?utf-8?B?ZmQzOXI1V0ZxcjhvQXA2THVzbG5LRzg3eTRwaDlmTnR5elczcFE1aHExOXJa?= =?utf-8?B?bXF1T0NnWVhQcGhUOEtDbDJpMlhRTjU0ZjlkWjR3OVRvNEsyakFJcHdPZFJM?= =?utf-8?B?ZVJsTXlZTVU0YVNJczhaRHQ5akptNmlab2hvTU94cXpLb28zNmxOUE1mb0xM?= =?utf-8?B?S0dKamdCSXlFbWk4ZFcwSnNySDV4RDdMTFB3NTE2OE5Gb2ladVlSTjJmcXpo?= =?utf-8?B?OGwxczlXb0p6dlFhMTVKa2JUK1BrdjEwbFBhZENudG5INHlUcDc2di9TNE52?= =?utf-8?B?RGRwdVY5eit2Q0F6MTlWRmtXTzQ2Z1BBcUJPQXlnWWUrZ1k3b1lhWHV5QWYw?= =?utf-8?B?VTRyT2l5cWpYRnJtVER0OEFQMW5RZUl3eHJMYkFKMGphRTY0WVZ6WmpFV0Vp?= =?utf-8?B?Q1pIcy9Nazl3UEFyM3VTbXJJQ09MWjd2Ty9JOXJqeDdFQ01MSkU3UDFtT2k5?= =?utf-8?B?WEVVVHUweDlCODRsWVFrdmI5dmc5Vzk0YjRMSkVyTTgwUkMrSllTZ1ZleWtX?= =?utf-8?B?VU9LRDJSaXBpL3FSamhkdHprNFVoQ2V6akVRc283eitzSERvZlJnZGwzTnBP?= =?utf-8?B?ZnBKUmZRZE94M2lKU1czTnJMYmVHK01mMXpGT0hDU2NCMEEvSVJUa2w2NWlw?= =?utf-8?B?Yk1oNTFTUXZ3ZUo1V2x4MnNEcGUyckFpaTVmK0dyM1oxejJ6MmxFSzlhRWh1?= =?utf-8?B?TXc1RDhpbUdacnBodzIvV1NVdjhlZlNVdWQ4YksvM1dzQTkwZ2ptdFhzYUpU?= =?utf-8?B?K3VoR2V4TWZETmMybFJXeTNIQXJWeW90WEpLQXZ2TUVNdUlqcU5FZmFiNnJL?= =?utf-8?B?c1ZUcmVGeVF0cnJ4U3BvTHZMRmE0WDlSOXVUZ3Rac29QNnpzeFk4YldwNXY2?= =?utf-8?B?Szl3VkhwVEhjaVdXaVpjcXdBc0liY0ZpOExvV0hpZk9GQ0hoZWl5Z2M2TUZX?= =?utf-8?B?bDRTZnBDUUtHYmozRzVudUdHRDdRRG5hdVN2dGdQUm1PZko4ZWNpdGRLY3lF?= =?utf-8?B?V0RlaWE3OXIzNkNFMEV5QjdqdUxyTzRFVVBaR3ZSQkoxVHhYOGJlWDA5NGtP?= =?utf-8?B?WDRsM1RmMG5PekgzeCtscjhTa0ZDK1B3dTJ0RVJtQ1k1eU5oSkxkVjAySEEz?= =?utf-8?B?THZWSXNtQlZ4d0IwZVB6dEE2akJibE8xaGc4c001Ni9Tb09kNXhVbEgvdndn?= =?utf-8?B?TEliekxuY0w5UTFnQXJxVDYwZGFMellqNFk3akVkTFN1eFhKem82aHVuN2Rw?= =?utf-8?B?aFNjOW4yMXpMTjk4cmhYajhvNHhIeEp1MUNOdFNsbjU5SWVwOTl2ZkkraFhm?= =?utf-8?B?U2tObUVaWEpueDlXaXhGZ0NDendqZkg2RXNBSndqZGJnKzJvZEZpUlk2akd2?= =?utf-8?B?aFZ4NVBRUlVNNDhURjY2c3hPbDBNSnVPV3ROYTd0NHhwRjA5VFpNTU5oelZN?= =?utf-8?B?ZnB0Z0RYT0VOZjVpWEVZbFMzTTl6NjEycU1zMDd0ZFQxM0k1WFBIMnNpVmMv?= =?utf-8?Q?ewxClMlN5Zg=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?czU3NUJtM2dRbGVDRmZFTnF3SGJGMXdQNTBVOEtsVmowVjdoYUJ3MkNqOThZ?= =?utf-8?B?bFBhdVI3cWo0dmMrYXdDRXF5Skk2OTVLd0lyeFJmaHRuT3B5OERpWnNiMjVH?= =?utf-8?B?ZUNRbytTb0IyRjVhdVVOODBVbVkwZE9QSWl1Yy9xdjdEdktmbWNWVDgzWDdI?= =?utf-8?B?VlFxMmxxcjJFdllTWU51dWU4YXdYZzVVdi8wS0lMMDFRUVNsR2tIV3J2U3R5?= =?utf-8?B?VVBjMUVhRGdFc2ZzMndvVVJKOG5NV0VCRGp6VndsUk1nSjBZc0Q5Y2Urek5v?= =?utf-8?B?TGl5d0xteGtqbFE1TGx6Vk5HWXBBVWNtaTVJcFNyRW9lNXlqclZjeG0zd3Zu?= =?utf-8?B?ejVidGVCNWRvZEEwOGtUd0hPR1Y4emRBSkJaZmZHcXFSSjFhN3FGdHYwWW52?= =?utf-8?B?bW53QnVIVUtzRnpyRFNyRkZ2T0VqVE5kSFBRWGpTMEw4NW9PY0FrQXQ5SDdp?= =?utf-8?B?VHIrMTRrcUxreE0wR2dkQ1M2MUhXd3dQTFZ5T1VtbmVXQ2srZ250N1BUbjk0?= =?utf-8?B?UlRFMnZCRmRDUURINVF0amFKVVVoZGM0UjlZTUcwelRBcXVDZGM4V0V2MFFY?= =?utf-8?B?VnBadTVJQUpUV1RsSklFVWs3T0dLeEJsWlNiVW16Nlc3anFhTFlYSUFqUGt6?= =?utf-8?B?QzZKUysrUU9QeS83NkY5VVp2NlU1QmtsL01veEVmeEhaZTdJWmZsUnN3dVBG?= =?utf-8?B?VTJtRXNneG0wZ0pZQVBSQVZxMVRubEJ3YisyOXBSVWJmSU1WdmVVTXFGbjZs?= =?utf-8?B?Y3ZTdGZpaUhuK2ZLMnM5bmhiQlVZZnYyUVBzaVJRQmFjbUYzcmtSUWF2dVJq?= =?utf-8?B?UGxmNzJ3c2ZZbTBIdXhVT0pkSmF1dHZYNTZqalpQbTQ2VHY2Q3hBam9kdmZh?= =?utf-8?B?WFQ2bHRYZlNDNmltdW1RTm1vYXhuTzhJayt3YUY5MnY2REt6di9aU2l1R0lP?= =?utf-8?B?QVl6ZzA3SUNDMVVCQ01STGxCaFRXOWpZUVFPZ2h3NUtENU5PWVFCR1Rjbnox?= =?utf-8?B?ZXgwS3lzaFlQKzdrRUhVN3ZoRUl4Y204MTAvZGdhUHR3REZUTUZHZFB6WHZ4?= =?utf-8?B?cUdFZ3BIdm9oMkthSEx3enc3S2FITWdLbTY3SjlEVml3cmZGS1duNXRqK0Iz?= =?utf-8?B?NmVKS3FuMDN6VkhOaEhseEd2WmNsdXhTMXVnT1BZcmMvODF6aHdrZ0tNaGRK?= =?utf-8?B?cFNRaEQ5eWxoS085MVBTNGwrUGRJNUVaTWpDdnFJTFp4alg5bGV6b2t6bm41?= =?utf-8?B?N2VIOXpXSE5aSStCdG4yNTlTaVhuVVFMb0I0YVdoenFFNERsK1o4UmJIRFhH?= =?utf-8?B?QnpqT0RxRFFJeXpGN05FOWVNMFpvcDZtOTZYQVlKeTFKR01rWXBTYjZVQjZo?= =?utf-8?B?S29KTVNKbjQ2SDZVT0oyOWVncm5UTlJQbHdXbFJFSk1WS2lpWTJnRXlBd0dm?= =?utf-8?B?Mmhpa2VjRXUySjdQWS9jTDloYzFNRDBGK0t6NWRha09ZSXRaRjVyMGJBYVA1?= =?utf-8?B?T21WS2hpS1RBa015UTQxOGVQblU1WUprcThPSklZMS83NXkvMmdPQVFSdXV6?= =?utf-8?B?UDNiWTUwRkp5U1k5YU5ieitTcHU3YytlMStla3ZiT1MxZnZJR2ltWC9zeVp5?= =?utf-8?B?bmRTTzY3RzhmYUlZemlGR2JQYmVoQkJEOWtIa05Zc0lCUjJianFhSFhnc0VD?= =?utf-8?B?L3M0Z1lpek1malc5aFEvQ3kzNFBacUVGQlBmQ3czSU9HYmNLRkQvWklKWXRu?= =?utf-8?B?Y0p0eGpsQTF3R2Y4eHlGUHBlRjNvSDZ2SjBrWUpPVnhSMlBZbkRvUktMTGpu?= =?utf-8?B?cU0xUGQxRzVlQXJIVlo4aUFYaEtFSWRIelNhdmxSUGpBUjVaU2VaMnZXWTgz?= =?utf-8?B?M2NHRllYOGppNEVFN3dtTlptbXlwczdUbkVXRDc1Z1FtV1JmbjI1b2xCakUy?= =?utf-8?B?bUw3bGF0SStPNkFaWHBOVy9zS0hKUE5xa1pPVE9jbFVIUFR1NG9ZWXdMRWw4?= =?utf-8?B?WHV1UkRqL3cyQldyMHJjVEdsRTRMbllQbWQ3czJ0bkhyWnJSOWZhZFZYbXdm?= =?utf-8?B?UURVYWFlYUpXRkp2UjNSalpid0QrY3M2eVVuOXhFVmV4TmltcVpXOWplVUVW?= =?utf-8?B?bTQ4ZHlFd3BBOVZFd3crRHF1UnRMcFFvWDZHaS9HNnlUWG9YMmlmaCtHWjRK?= =?utf-8?Q?UdBj9qUN7Rw8aoJcsBSuwAtaV1On5YqUdNIGy3WuxRUr?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 239f36a8-f0ba-4cc3-68f1-08ddbdeba575 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:49:54.9131 (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: iiKvSxQpqeH7ScN8Cx5daao2pxKWA2hPKjzsNfnwzdNgZcdgNKejjoxjkWcRr1H+ayAcZmr1sC0uX6hFHWpbFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes Add several code comments to reduce acronym soup and explain how devinit magic and bootflow works before driver loads. These are essential for debug and development of the nova driver. [acourbot@nvidia.com: reformat and reword a couple of sentences] Signed-off-by: Joel Fernandes Signed-off-by: Alexandre Courbot --- drivers/gpu/nova-core/gfw.rs | 39 +++++++++++++++++++++++++++++++++++---- drivers/gpu/nova-core/regs.rs | 14 ++++++++++++-- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/nova-core/gfw.rs b/drivers/gpu/nova-core/gfw.rs index d5b68e02d405750b18d634d772f15f413453e80d..8ac1ed18719926493369c2aae9a= 59b2b55fa2b12 100644 --- a/drivers/gpu/nova-core/gfw.rs +++ b/drivers/gpu/nova-core/gfw.rs @@ -1,10 +1,22 @@ // SPDX-License-Identifier: GPL-2.0 =20 -//! GPU Firmware (GFW) support. +//! GPU Firmware (`GFW`) support, a.k.a `devinit`. //! //! Upon reset, the GPU runs some firmware code from the BIOS to setup its= core parameters. Most of //! the GPU is considered unusable until this step is completed, so we mus= t wait on it before //! performing driver initialization. +//! +//! A clarification about devinit terminology: devinit is a sequence of re= gister read/writes after +//! reset that performs tasks such as: +//! 1. Programming VRAM memory controller timings. +//! 2. Power sequencing. +//! 3. Clock and PLL configuration. +//! 4. Thermal management. +//! +//! devinit itself is a 'script' which is interpreted by an interpreter pr= ogram typically running +//! on the PMU microcontroller. +//! +//! Note that the devinit sequence also needs to run during suspend/resume. =20 use kernel::bindings; use kernel::prelude::*; @@ -14,13 +26,32 @@ use crate::regs; use crate::util; =20 -/// Wait until `GFW` (GPU Firmware) completes, or a 4 seconds timeout elap= ses. +/// Wait for the `GFW` (GPU firmware) boot completion signal (`GFW_BOOT`),= or a 4 seconds timeout. +/// +/// Upon GPU reset, several microcontrollers (such as PMU, SEC2, GSP etc) = run some firmware code to +/// setup its core parameters. Most of the GPU is considered unusable unti= l this step is completed, +/// so it must be waited on very early during driver initialization. +/// +/// The `GFW` code includes several components that need to execute before= the driver loads. These +/// components are located in the VBIOS ROM and executed in a sequence on = these different +/// microcontrollers. The devinit sequence typically runs on the PMU, and = the FWSEC runs on the +/// GSP. +/// +/// This function waits for a signal indicating that core initialization i= s complete. Before this +/// signal is received, little can be done with the GPU. This signal is se= t by the FWSEC running on +/// the GSP in Heavy-secured mode. pub(crate) fn wait_gfw_boot_completion(bar: &Bar0) -> Result { + // Before accessing the completion status in `NV_PGC6_AON_SECURE_SCRAT= CH_GROUP_05`, we must + // first check `NV_PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_LEVEL_MASK`. = This is because + // `NV_PGC6_AON_SECURE_SCRATCH_GROUP_05` becomes accessible only after= the secure firmware + // (FWSEC) lowers the privilege level to allow CPU (LS/Light-secured) = access. We can only + // safely read the status register from CPU (LS/Light-secured) once th= e mask indicates + // that the privilege level has been lowered. + // // TIMEOUT: arbitrarily large value. GFW starts running immediately af= ter the GPU is put out of // reset, and should complete in less time than that. util::wait_on(Delta::from_secs(4), || { - // Check that FWSEC has lowered its protection level before readin= g the GFW_BOOT - // status. + // Check that FWSEC has lowered its protection level before readin= g the GFW_BOOT status. let gfw_booted =3D regs::NV_PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_= LEVEL_MASK::read(bar) .read_protection_level0() && regs::NV_PGC6_AON_SECURE_SCRATCH_GROUP_05_0_GFW_BOOT::read(= bar).completed(); diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index e8b8aabce3f36abe6a7fba3e11f677e36baa3897..3bb38197a890bb32d54b9aa4df4= d9ebd740dccca 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -104,9 +104,19 @@ pub(crate) fn higher_bound(self) -> u64 { } } =20 -/* PGC6 */ +// PGC6 register space. +// +// `GC6` is a GPU low-power state where VRAM is in self-refresh and the GP= U is powered down (except +// for power rails needed to keep self-refresh working and important regis= ters and hardware +// blocks). +// +// These scratch registers remain powered on even in a low-power state and= have a designated group +// number. =20 -register!(NV_PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_LEVEL_MASK @ 0x00118128= { +// Privilege level mask register. It dictates whether the host CPU has pri= vilege to access the +// `PGC6_AON_SECURE_SCRATCH_GROUP_05` register (which it needs to read GFW= _BOOT). +register!(NV_PGC6_AON_SECURE_SCRATCH_GROUP_05_PRIV_LEVEL_MASK @ 0x00118128, + "Privilege level mask register" { 0:0 read_protection_level0 as bool, "Set after FWSEC lowers its pr= otection level"; }); =20 --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2044.outbound.protection.outlook.com [40.107.220.44]) (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 D7512223DD1; Tue, 8 Jul 2025 06:50:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.44 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957402; cv=fail; b=LpXtMg2bW5soyvz3zaq/en0oMSP0hmByyx86pwwRpa1p7mYt/bEd6SxRFv4fuEkmsXn4huyrk7r7iIFX+j2+tFW+2wWL4mlja2es00UyY3z+M1Yj0xly+Sox2e7YPtq9V4dq9biAOCd4Zmgv4geM3u3REkZMHowKE6lcQdZljsQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957402; c=relaxed/simple; bh=0mcl2XzZLi/NJSpDJVF766eytq+VahI8OJQEG3KvUUE=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=haVrtcnd3kED9tgm+CopKNTRw5PlbBu2/P1oGpvsi/CdZNErV9DhMSeUtNixtgr4/LaC/mDKF6tdSFEHa8fr54nzKD3Gkd9KTv3wDJz25ijV7fd1tlWwYjfLFlddjsR2dSYCquhSo7sAC4MpqhMxhwn/FCSbL8ax0dlIEhHUNFw= 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=KnN9rLS3; arc=fail smtp.client-ip=40.107.220.44 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="KnN9rLS3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S/cwRu/1nHMuMnh78Ueottcm5QeZQsj21jQhgbQlcoed93HfgRL3hDhJz5CwKPbfz6g9cEQ3NLP7PS0EcuNtiu5o5GmF0qiDOO7w/lh3Zg2WXCxS6LtTbP+jtaMrxrI/0VFhpyAoFZbQRrnsWEhzGkWw1KuBS5zTPzt1UHNI0JgyRjUc6D4FDavMRIryvCEW8exxt37kkSIWlnuYF7VUVuedSTvzjdR+/VUsCniBYwbkePE/o4NESoi+tnTLmn8msDO0prThccF0P1yLbbTgw1m42IOnlFEGQHVeRZRAkVRDQd5pK62lHdjTaMp1LTcM26s3pw3AVt0ltd0J8OWD7Q== 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=VMxEbw3yF3SgJjSW+BwPvhSUtEt+71k0vKT13w+9BlY=; b=Y+pnNUPLh9WGjGF5Xkl7sk5rwj9Vkryx2o90jf0ybdGp95zlxMcRWnB4IKYkWWu9E2jRYRDEX8OGrWe3yOUnR83WJ9PTlLDG/YBTRjv4tZ5z8kN/+A5GxaaeantFPbwjrWaAUF6RN0uX/OteKTkQPsHz5REilI22W65iIC+W2bPnrGgFRrjogvxofaalrFZ8l7dLIU7zScryp2oW3LN1RdKrI2qrI4DkD/ro0HO5oAP/qCU6e2KsEP2wqOuiWVa1/IPDaAln/gXFARmkTU3wotvnsmlWG2lJy54/D09Nl0dzKX5JBBoBS4XAdHndffBCVFF7HgxDPgICZi+kbmowqg== 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=VMxEbw3yF3SgJjSW+BwPvhSUtEt+71k0vKT13w+9BlY=; b=KnN9rLS3ipYjYMvpqRdPpo6LlDJbZFB8CCmB5eJTnBntIH4PF9UIHu5N2WD77ua4DbNY0PwwdObMPKj0Fi8FWjjow23Ppq/W8ADstetRXem8i3tf5s8WCog82bxG+k05/QgeeGQuxvXNWknWEE4RWzNfXbKGNMDlfjru/72hGgVqOMkq4eT9u8jXkhNO57XVRpgz3RJhy/84QU1cKLHejkVTmEc04KfmIYlNMqxCRrLE2AGPHs/o45v0a6r88a83ERE4phT0MdVsACryYpjAyRkd8jWnigUWTwgEqswwcANjm/4ApqWpRzAFmmVSPA4dSOnDtIemoERR/85Tgnbbhw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:49:58 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:49:58 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:42 +0900 Subject: [PATCH v4 2/8] gpu: nova-core: Clarify sysmembar operations Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-2-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TY2PR06CA0003.apcprd06.prod.outlook.com (2603:1096:404:42::15) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: da67c598-f782-4275-d229-08ddbdeba784 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QlRZRWRIRHBVTlhUZTl0Z1NQSmE2OFFoT29EQkxGdDlaMSs3Mnk1Qm9INEN4?= =?utf-8?B?SmJudEZuSUpzVTRTWk5yRUdIRUx4T3FaZGVDMHd4WjFWRWo0VmpxR3I2S01w?= =?utf-8?B?bVQxSkJBazBSMng1akdrbCtZZ1dCN2NoSlR4Z1ZQN0tnUFJPNW50b0Zjc3RL?= =?utf-8?B?anUxbUwwM2gxOVJMMGljYnQ2OGp5R3Y1TEVSQStqSW9lR2NvMEQwUTA1RXcy?= =?utf-8?B?cXFTd3kzc3FXMzBGbjd1VGx0d2VjK2wveUdZV0Zxa04wU1VQUTRwSnRLVkZj?= =?utf-8?B?WmRJUExqQ3pYU1FvM3UxRHpTZGUzdVVlZjlhVm5XMVVGSTZ5eEZOT1AxaVRq?= =?utf-8?B?dWxUU1UvbTRIV29aNVVJLzg2OTZCSEZiaUY4cEIxSStVR0pEdzVOTTU3ajJS?= =?utf-8?B?czQzMFBTMXllOTlRNkVlU2tCUk5EV05ZaEVrQW9LRFJwS3d4NDkxcnpXV3hL?= =?utf-8?B?S1UrQVlxN20zUGxmNjlPTjJxYnhEb21lbDBMV291YzcwaXJUQ0xUZ1ZjUU50?= =?utf-8?B?MTRpcFRGaGdkaFpGU09yejg4MWVDSVRHWStqYk9Qb0YydGUwdjhySmVyVG1G?= =?utf-8?B?M2hMNlEvTFNNN1o0UmxFNkY4UmlOOHJPNUdHR0pwVUFyQ29LQzU3UDFMeE43?= =?utf-8?B?eHFTUmc2N1FKQW9rOGVyWW1ENWtzQ2ltallFNzlDeTYwWkpYOXplb2VUanVP?= =?utf-8?B?ajlwVS9abzUzYTMzUWlWSytIUFkwMmFjaHU0M29FakhpQzVIV0hpeDVGVTht?= =?utf-8?B?TmNRdWVkWSt1R0gxV000OXQyOUJkSkh2dFlMT3FVTjB1dS9NS2V4OFIvWmlO?= =?utf-8?B?THh2VE53RU85V01jTk9yMll1U0RXUlZiU3F2RWcrK1g4bmNlNWJ6T3NCdjhh?= =?utf-8?B?SmNvaWE2RW03cWJLeHBQT2RueHdsejBaZG52ZGpDK2lTRTg5LzZja0RkdHF2?= =?utf-8?B?b2hBSFp3OFdGYWJVcWoyOG9XYU9jaUNEcENZbTBYa1laR1FxUHJ0Tk9KNE5O?= =?utf-8?B?ZWJTQ0t2U1RFdWZZa3pNWEZUNG94QjFDTVlQQmVXTjloSVJpKzZKaDE4UHlB?= =?utf-8?B?d2VsUlBtWU5uMnU4c0dGODROWllGdVFTZENLbkFuV2NhRFRwVU5ONThSVGhx?= =?utf-8?B?ZEFDRU9YS3psZXZ2MnRSMlZ1Y2ZEeHBZbkY0V1RVRC93cGlvb0t5dHdDMUZX?= =?utf-8?B?SDZTdHRyNDFZanFiVmpoR21wOGN1V2dLclZ2a2YzVUdCM2p1bU9YQlVPMDd4?= =?utf-8?B?NlpYcUxPdGI1eUpoZTVnRWVFOUc4a3k3YUFTSFhGZlZzZlczYnN3eWRZeHdN?= =?utf-8?B?OXFCNWZEL0l5Ym4yd3VEMjV3S28vTEk2QnBaVVZCV0VqVUVmNldGWlIveTJK?= =?utf-8?B?N1UrSGxGL0t1cVV1WnRHUVpQZVJWUVI1dTBINm9TTFJUZUVNMzhBcGVGTDh0?= =?utf-8?B?dFRiLzRpc21TL3pEV0FRZGtmdUxoYS9aQUpMVTJ4R01QeUxpZlI2UEk3NDBR?= =?utf-8?B?MHZETUY3L0w0ZzJTbmF3TDRBYlB4cWp5RXl6RHVocWtBdDA3ZlF3RTZSZWp1?= =?utf-8?B?S20vdjlGL2t6NDVoMUZneHR6NDk1ZHJxWXN1b2N1NTdGSG5NTHJVeEQ0WE91?= =?utf-8?B?MkJxT2V5Sjl2eDg3eUtMcmlwdTVTRFVWb2crV0JHUEpwZ20xN2JVY2ovS1dO?= =?utf-8?B?c2owcENKNkhTcnBlNmErbUFuWDZIYmZYc29DSUhzMmYySS9xc2xLOUxWa1g5?= =?utf-8?B?a2lIb3FpUk96R2RZMmQvQzRXV3F1ZmhyRHBhZnNHSG9lWlJXSHNTeEt0NnZJ?= =?utf-8?B?N0NLRVRVQzlXQTQ1aEpxM3hXUVVGQ1lrK1d6Mk5DMU9tUG1qcHpwWFVmZ2lR?= =?utf-8?B?YUJGUUJvWWR2dXVrdTRidC9xYzNnMjdzRmNZT25Sc2tzZTJhR2ZQR1EyTUda?= =?utf-8?Q?IZw6vomDBg8=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Z2tpM1NPMElnaFcyUm1tNjZwWDJ3RzlMRzZteVAyVlNFSFUycFpVZ25sbzZx?= =?utf-8?B?Y2lORkdjV2xtZVdaaHVvaGVrSEdnYmRuOEpPdURmNmxVSTN5UFFUU1VSdDh6?= =?utf-8?B?cXBPOURUdnVDcE1nTVBLb2NIWHh1LzAvbnZWUlE1U0ZLdGFySXZjNmRuQnBp?= =?utf-8?B?Qm14RFMzTFEvN0Uyd1J6M2hRWHhJZC93QmVldVBOWVBTYTQvQkk5M3lGRnZO?= =?utf-8?B?TVdETEQxdVp6WUFScHFHTDROS2lFMTZMd1NtdkFZYUJSNE13ZWI3UFU3S1ZD?= =?utf-8?B?eklHS2hieXlZeGhWVGxZKzloZkxUSDU4M2Rud1d6N2F6YXUzMjdvL2pmeGZt?= =?utf-8?B?SFJzYjBiaEU1ZTVqY1piSjVtSmRCUGVTNlpUVUNuTnF1Nm5VRm53VzRlcWxI?= =?utf-8?B?Tzg0dC95d2tPTjVEQS9lb3JOSlZJSmZNcWNCTFZqSkQyclZyV0c0eTdVSnVx?= =?utf-8?B?LzhVaE5SV1pNRHFuN0YzaGZKWmNNakJvVmlKd3ZISmpla05CUGczcjdxU0pU?= =?utf-8?B?TDByemRkZDlrelorYXBUWjhaVFM1Z0lXVkh6eCtDMjBaNHJOZzQ3Ky9LTTFI?= =?utf-8?B?YmJCbkthRC80WTM1dWhoUVJwTEc5L3hJUXgrcHpJZUo0cUltQkJZaFExNjJ3?= =?utf-8?B?VXFWd0FzeHVTVHNuYW92RlhXR1NYVHoxMllsRUtpMVlQY1NJTmI1bVhvTWtj?= =?utf-8?B?d3RZUXpMbCtmYVd6b3RncTZES3RrQmgwU05hdE53OUUzRDhOdTRUc0EwVGZH?= =?utf-8?B?NThNRlpRUStZVnhDMnFHbUE3N2ttZ1FYbEUrZU45aUEwaGhHcDhtUzNhL0xI?= =?utf-8?B?Umx6NzMxYytOa1BuKy9GbVExRXN3Z2RsMjlxOXAxSWx1eE5KUFBXeCswckJS?= =?utf-8?B?dnpGbVdiL3p1YWt5dnpIQmRRTGZUYWFrSE1naGg1NkdFR1pSMkg5b1ZTNjV2?= =?utf-8?B?bHN6RE9ES3F5VnZMRGh4aUZYcDhYZC8zQ1dzWVhIYWpXSFBkRWV2R2ZteFBp?= =?utf-8?B?RE5HUUhFd0lsdTJ0NllucTVuVmZ1Y2hwVGxScTJCRkw5RGZCclVjSldaZmZJ?= =?utf-8?B?OVZHWVE1Q2t0MCtYdXpYbGxGdDhKcHVld3BtS3Z1K0FkdERvcUZ6ZDBhb0NC?= =?utf-8?B?TWhJbmZNMWwyaWI0SllBdUVtL3VaaWFad2Z5clIyUWJVdjFBTUVrT1YxVWhx?= =?utf-8?B?Ny9SajBlMHp6YWFUanNRaWtDcERQNmRldEY2UlVyMStOSFRGQXFZZHVEMXI2?= =?utf-8?B?V2xvZ2pkK0h3ZXR6dXh4ZjVxS2VKTWJOUy8vZlVSbEFWSTQ2N0tEbDM2Z0Fk?= =?utf-8?B?OHArZWZsdEpIa2txUEZDUllJclpCcXdYVHJ3bVNTc05vN2huNGFGV01WdHpx?= =?utf-8?B?WDRtZWJudDdhaFVRY0VzNU9GQ0FWKytyRkJXeTV6bjJkb2JjVHptN2ozNWxY?= =?utf-8?B?VElnRHdNZXNqSUIyTnBnVkY2c2owN21LejlKRFl4d3VOVU53bU9hak5KdEJY?= =?utf-8?B?WVJ6MDFWbTRrN0JJVGwvREZ2Q2ZSMnJnZDJXT05tUjhJWmxsK3h2eXF3RGRJ?= =?utf-8?B?anRicWRwdmJ2QWpSQXFsMmV0bE12YlQvN0UvcktCSFM2azBiMzVRellFWm5i?= =?utf-8?B?V0JRMEJPeW1RYm5IQ1QvRi8wN1ZENFcrY1FJRlVPd0tFMjJTQlFnWmZUUGI2?= =?utf-8?B?ZzQ5ZHpWTFg4WDNxNWVGQUovdUtFbHJWaHRxM2VPeEZ0ZDRCaUUxU2x2cGJE?= =?utf-8?B?R3N2TDM1ZHRtMFlwTUN0OWQwdndLc0djTmdUbElQdnNYRlI1RnFOZzFVempD?= =?utf-8?B?WjQ4YzQzaWM4S0JFSmpTMWZNdU9nVVVtZGpXd0k5OWdwa0ZvZEUzbmUxc0Zx?= =?utf-8?B?OW9BeE5WK2N4YlE2am92R0t6T3hUQWI1akdDU2ZZTHRPZ3djMzNWcDI1ZklH?= =?utf-8?B?ZC9tWEM3QzhWMjdhVXBMc2lUVlpIMkJsWVBQUHpsWnIyU2c2QlBzRFZsUElX?= =?utf-8?B?SFVQU01RdGhIcVdTeDdHRXhXbXFEMWZISmgyV1Z5OFV6UXRKeElDQ2VSSHNH?= =?utf-8?B?VnN5SEg3d25Ga0VPV3l6cUFsRW1ZRW1Za1RSYXVacno2Z2Jxb3VJbUw4VE5S?= =?utf-8?B?NlBkZXdHTmVtNnJQOHVwbGtKUElOU08zQ0lGYXR0WUhCdm5zWVVYWHNmSHJW?= =?utf-8?Q?5E/0vN2gFk5yKR4nyMMqmFumIK1KIHD0Bp1jGui+EJz3?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: da67c598-f782-4275-d229-08ddbdeba784 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:49:58.2986 (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: DKXrx/18QxXCcVb0JOGj7sb2k9voEtswVZQyRBbiX3AGuEkqBW9Sxomx0HFW1P2hjnsmHBqh99yEv+9OsHh2MQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes sysmembar is a critical operation that the GSP falcon needs to perform in the reset sequence. Add some code comments to clarify. [acourbot@nvdidia.com: move relevant documentation to SysmemFlush type] Signed-off-by: Joel Fernandes Signed-off-by: Alexandre Courbot --- drivers/gpu/nova-core/fb.rs | 10 ++++++++++ drivers/gpu/nova-core/gpu.rs | 3 +-- drivers/gpu/nova-core/regs.rs | 3 +++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/nova-core/fb.rs b/drivers/gpu/nova-core/fb.rs index 172b4a12ba2afc05860cc004fd1f0154402f467a..4a702525fff4f394b75fcf54145= ba78e34a1a539 100644 --- a/drivers/gpu/nova-core/fb.rs +++ b/drivers/gpu/nova-core/fb.rs @@ -17,6 +17,16 @@ /// Type holding the sysmem flush memory page, a page of memory to be writ= ten into the /// `NV_PFB_NISO_FLUSH_SYSMEM_ADDR*` registers and used to maintain memory= coherency. /// +/// A system memory page is required for `sysmembar`, which is a GPU-initi= ated hardware +/// memory-barrier operation that flushes all pending GPU-side memory writ= es that were done through +/// PCIE to system memory. It is required for falcons to be reset as the r= eset operation involves a +/// reset handshake. When the falcon acknowledges a reset, it writes into = system memory. To ensure +/// this write is visible to the host and prevent driver timeouts, the fal= con must perform a +/// sysmembar operation to flush its writes. +/// +/// Because of this, the sysmem flush memory page must be registered as ea= rly as possible during +/// driver initialization, and before any falcon is reset. +/// /// Users are responsible for manually calling [`Self::unregister`] before= dropping this object, /// otherwise the GPU might still use it even after it has been freed. pub(crate) struct SysmemFlush { diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 8e32af16b669ca773e63e184d34c3e0427bc9b76..72d40b0124f0c1a2a381484172c= 289af523511df 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -170,7 +170,7 @@ pub(crate) struct Gpu { bar: Devres, fw: Firmware, /// System memory page required for flushing all pending GPU-side memo= ry writes done through - /// PCIE into system memory. + /// PCIE into system memory, via sysmembar (A GPU-initiated HW memory-= barrier operation). sysmem_flush: SysmemFlush, } =20 @@ -283,7 +283,6 @@ pub(crate) fn new( gfw::wait_gfw_boot_completion(bar) .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not com= plete"))?; =20 - // System memory page required for sysmembar to properly flush int= o system memory. let sysmem_flush =3D SysmemFlush::register(pdev.as_ref(), bar, spe= c.chipset)?; =20 let gsp_falcon =3D Falcon::::new( diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index 3bb38197a890bb32d54b9aa4df4d9ebd740dccca..b934ffe8e81390b36f5a39af39a= 9b9f337aa66bf 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -51,6 +51,9 @@ pub(crate) fn chipset(self) -> Result { =20 /* PFB */ =20 +// These two registers together hold the physical system memory address th= at is used by the GPU for +// perform sysmembar operation (see `fb::SysmemFlush`). + register!(NV_PFB_NISO_FLUSH_SYSMEM_ADDR @ 0x00100c10 { 31:0 adr_39_08 as u32; }); --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2043.outbound.protection.outlook.com [40.107.236.43]) (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 E7EED2222D7; Tue, 8 Jul 2025 06:50:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.43 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957406; cv=fail; b=W/Bn8lmCSZuzuA+n8Hiu3SISHl9okAjSqGXYsdIe4h7splvlks+5neI6gVXwbkzp6oo8WSGeTHcE1TUjsvEg5Y0WyhXT18BUDEIuEqyiAhhJbAUR3YVBx6wcJhOwShl6ky7SKyZvC879XzV3KhPpk/Lm8qQQFhX1nti7dnsIuks= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957406; c=relaxed/simple; bh=Xj5A7+DzjG9nT248Lc4Mp20eZkLlCsoDKjVgwBVjVv0=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=k5Fg3VCl+laP8JjX7JzLXH6WwGoC4i+0XzHBa4/RRCBMJEAoKnvFbv3M/mKnxu2w4keajyZrLzVr2GB0aCzzpTFiUZbD+tJ41G2DYWvaMlA5Ny0RrHCempsyixYzZRoiq2wn43bWBnSEDhBgrNTo/vE5zze2TeJGPs3i9awlLQM= 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=C/pBLkXT; arc=fail smtp.client-ip=40.107.236.43 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="C/pBLkXT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XPW/Zitucdy6b5Y2xTJVZl1oRM9KzKuFwCjvQElPV6GNo/vrohgO3bJXPkaAksNLoIVUjN8up2W0tuTyXsau9Y5cB6KTPafgRJr8nNZJbDjmo5C0dfoTXUF7ial90uYcatG6siVcGc+TpFjCwlz5GxS6nFGIPi6Y5ARpcYaXKMU9RlB7RQrWDBVXlTMS2NzbwTwC4nEdofX5HI+OJhCLlavAEh4HO1sfF7WdC37CdhY19k3ttiExAHsjrzcAiGKHtMpk0tsK5Xb+KKqu0O7ogbziRHJkne03a0TbUEt1rZz+WfLBJTl54g476YBoN1ixf/t3Be0AfVCCtjyve2MLBQ== 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=ACPY9WLb9WKFfG1O/b5Vsl4HXn3NTdzL/5eYIz12QEw=; b=PEqYFSheakhlzYcozGxFBr1iJqxnS9BWI9vQTc0TI8RAq8/VAu8K/FXzfJd1yGz+UO8sP4dS8eDweEGIH7pXbz61n9AlQcW/tshkFjVcwVmX+jCy2ni6exuuVl9EOnZa6Lahdm3WiETzwbr+W8QZtDooJ0wC2rRcJM13B6DrWVKHy3+rWhHqK23dJs1B/8OnB/8ftfXu9shxJbHLmKW5MVv20s4rjE7J1o//XahgUPp4VqBSipWk1QFcwEPDYaHaYwtJ5jVafZ+AFzdneTOtpi3G51qIYHxGWAjjyNvsfB5oVfp1XVMRPmwCoIkabWjP7fjpzpC0VljmIvB1CMUjlA== 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=ACPY9WLb9WKFfG1O/b5Vsl4HXn3NTdzL/5eYIz12QEw=; b=C/pBLkXTTSXe5GvhbXVSdRd+AxLylk//Fg8PZR6dTL1IuurT0OdzsSGfV0L5T/XDZn+u6/saMnVhOlqw13EtSO9JXCt0WY20MbFSuIVN+bHsHri2CUNJx8PgmltPxvcJZX+4fAV7zfxcOvpCYCt8CKFHyVwpQYJnRC8sG3UQRtN0HP8csW7J8QNZqw3dqna46RBEkOfuKupdqO/GcB1dMdZF8plSst6d3vu6IgA1tOoRU6p9A2UDb2fSikfwRRwUOznBBS3xQ37+sIKZMkwukZKi0OhCNFSqEO9QCqXF7GJNA+Pl9yZu41Y4cKfJx5jEDQXUwAKbxTHuFq+INkVySA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:50:01 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:50:01 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:43 +0900 Subject: [PATCH v4 3/8] gpu: nova-core: Clarify falcon code Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-3-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0090.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::19) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 40aaf749-e526-4d9a-8ecc-08ddbdeba990 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?K3hxdHFxV3BmSlhiRjkyYm1YLzVOclBMK3BLWVpkY1JBVUwySEwveVlnM3Vo?= =?utf-8?B?ZHZuVEFUZjVQZkp6Z0F1MEdobGR4YTRwUEprUGgwVEIvZkFNTW1pRlZnQlJO?= =?utf-8?B?ZDJvajRqckNxdm55RTcrMHFzOUg3bS9MVTJPVTdtZVZ4V3Vwd2JGNHJRb3Rx?= =?utf-8?B?RHU0OHJUQWcxaHQxb3FZN2VVZFdrZWdLTzU5TCt6S3R3Y1llTS9hY1VBdmYz?= =?utf-8?B?WVRYalYrTUZadVBCYkFZNDMzQlh4RlV1UmJOMTl4aWk1R0ZWdEhPdjFremp5?= =?utf-8?B?WFljbTJ2bzhRdnRDczBoR2h1WmdGazBCY0ovSEt1L1JYNDYrcUdwQVBYdko1?= =?utf-8?B?bW5OM1VvYWNrNDlVWDBlaEtWQ3hPcWVCdnlIemxWUDNPVWRBNlZab0VzYmNP?= =?utf-8?B?ZjFlNk9ZWXQ0YnpUN0hoYzhTRmc4bm41SUZGbnBrOWN2ZGlldHgvN09xamQ3?= =?utf-8?B?Q3FrQXF5UE00bkhTajIxdW8zMHlER1RlQmFVclBSMmJaalRuSEFCWUxQclhV?= =?utf-8?B?SEJuZDdXZzN4Q0FGV3ZSSkFoY21Qd09LZEVmTndKNVFReWJVajA4QTJoaDBt?= =?utf-8?B?Q2EwWGIvTUR6YUphUHRURUxwTFljVE5mL201VUpTaUYrWU9PemFseGtqODFN?= =?utf-8?B?NnNkVjdodGFNQXAySGNWcmhha2kvc1ZMN3RPbENlTHRiUkVEeFQ5aXJZYVpl?= =?utf-8?B?SkcxSE16VnljK0NpSEJVdVk0eU5ERGF1S0pzQXd1OGtPQlZKM1YvYkE3WXZs?= =?utf-8?B?NnpzU2FJbEpjRDYyS055ZEQ2MFFuNWgySGNOK2RHYXpZb0Uvd24xYk80SndI?= =?utf-8?B?R0tCUUlIbXJDR1MvTDl0eE1JOUFGQmpUQnZJakRZeTFVMXJieFFLTUlKZkZa?= =?utf-8?B?U0tlTGx1cTliM1hKOWhtU0U0SXlPTVUyK1BsZlgxMXk2ZEdjOGpqemtoNXMy?= =?utf-8?B?WGFFZFk1OXM0UEdveUEwbjNnQmR6SkJFdTdlY1JRNy9Qa3NMbVJEZ2w3QUpt?= =?utf-8?B?VEMvSllydkJvc0RDT1FSY1lwTkw1b3lxQUNSQXJQMEQ2WElxWGQ3bW9oQ3ZL?= =?utf-8?B?eUUvR1FqYTdIQXc0azEwNVpNZ3NxZnFycXltVG1neFJjajBXNnFudXlRczhE?= =?utf-8?B?eXJTZWEvS2Jsdzl4YXhka3Jta0RkenV1Tm1sLzVjUzZwUXMvakl5cEZ1dEdR?= =?utf-8?B?STBpMTQ2L0dPcjlzTDhYTVpXVU5uWkt2U1Rka0lwQzhDSEhkblN2ei80dWFR?= =?utf-8?B?c2RnYnZ0MzVUOFdTZ3NWNjFjcnB3TkpNNlZFT3M4MmpkLzFIRDR3SndtYUw5?= =?utf-8?B?U01ndUZ4YlFKVWpTaitSM1JFYW8yU3hOTUdtdjZvdmdTcEo1bXRlWWRsc0RI?= =?utf-8?B?dmM5Z0gwVnp4c1RlTkZGYko1OFdRVHY0emYxeEsvZFdFN0M0ci9aa21uOUh5?= =?utf-8?B?VmF0T2gyMXVDd1BWNkNCWnNodFcyUmlLczRjVUdhbVNjR2wrV3lrczRkTWph?= =?utf-8?B?OFBQdFhwM1J4bkZRVXB1N0dUUlFYWk1jdFhDaFM5LzFIUmZHZkJycGE3VjdT?= =?utf-8?B?Tyszc0FFSzJ2b2daNFltV3pGOVM5Sit6QWFUODZEa0l6aVFIUVJmNEFuUC9w?= =?utf-8?B?aDN2YmZaZE1TUk81WVV1cStubEo2dTBoNXRjUWE1R3RyN29hdGtPV0c4aEZ4?= =?utf-8?B?bFVJOERXL3luZmt2S3prbktScHYydGxSQW9STVk4eWdteWhQYkJVMXI3VWYz?= =?utf-8?B?QXdkMzU1d3NpVW1GZ0dtQzhpbTE0Vmc4K0Z5Nmw1VXNTdDg3a1grVFhqQlYx?= =?utf-8?B?YmZDcGtDV0tWTTc5U3VRaXVobTIvMHhtQzd2bVk3UDUzWHRRWnlaZmp2Zjdt?= =?utf-8?B?ZmlORGlMR2FZY215TTR3d0JBeUlDMWI1Z2xKMlQ3MUdTaVR2M0o0dzNBY3ND?= =?utf-8?Q?islLmdo3fFA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RGxMQTI0WklBMlc5V3M0aXBkQThqd0llTEk1WXRONmRvaEhuZWVnL2FoemZN?= =?utf-8?B?cktZb2hZZ2QyKzFxZUthUHZURWhmTGpEcXlzMS9RampmWUJQRzFOYmRLNnVi?= =?utf-8?B?UElzeisvdzJ1Rk5mSEQxTTNBbXFSOFhjM3VvRS9CRVBXRERnU1NVS25QcWtT?= =?utf-8?B?S29zeWk5WmtqVGJzODlrUDNnczd5R3RodVNnalZXcVlqUHlnSDY1Qld5NnJv?= =?utf-8?B?MDRqZStBcTVGcVJ6R0tqSmIwRHE3TG80L1Btcjd0UHRoR0pya2lRb1Jpc1Jx?= =?utf-8?B?aW5GVnZibENhT0FUQk11T2E5MkVxUkRNVy9kc2RIa3hOYitOOGlHL1dIbmc2?= =?utf-8?B?cEJHd25BNVhJNDFrZlRZaytmMlVySmpVV0Nhb1dEcUFUalRzVnB1dkxFZEFR?= =?utf-8?B?dHJlQW5iVXM3R0pyS2tvQytISlpsWm1CWmZTRERyRSttMEwwS2RxNW9ROEc0?= =?utf-8?B?Tk5ocmYwNEh5VnQ4a05xQ2hYdTJ3QjlRcmRqWkRzbnhwdXVEUUZXTUhzTElB?= =?utf-8?B?YnMzQWJlZUxOengzVXpFN3hmSWxrYWljaGpibUo4d2dpN1pzMXVGcG9yVVNr?= =?utf-8?B?amtOQ285Vjh6amdTOXJ3UGdEMjEwQUhpR3ByZGpUYUgzQ1h4YkN3TFE2L0pQ?= =?utf-8?B?UXFDblNLa0p1bmplVXQ3L1dKTDZvSWRZaTFSN2I0a01YdW1YVGJvK01uanJl?= =?utf-8?B?WTk2NG95Y3h1Y2pqNTJ4ekRReG9uUzBrT2pvWm4vcHZuS04vOEtXMUJJOGM0?= =?utf-8?B?SkQ3T0l1TmRuUXNCcTVoYjdKbUxHYUhPN0dvOWRYd0UzTTg2V1hKOHAySlRl?= =?utf-8?B?STJCR2E1RHUxTVRnVU1jOWVVVzEwbjhLNEVCazR4aG1pVUtSRy9aOTBycjRR?= =?utf-8?B?eG9pSktUUm9CYUIyRUFGRmFKcXVuSlZ2dUJEZzB2NXNvL3ZBYWRXTnhUdjdY?= =?utf-8?B?U3orRmROOVZBNlFad3Y2a0hEZjNsbmpuZE43Y2RBbnhBNG9tRnBnbGNHTUkw?= =?utf-8?B?eDBHUmxKblVKdFl2ejRCRlE3NlFybjBUMVBJOFBHeFc2RUpxNldjdFFkVHBQ?= =?utf-8?B?c1Q4Nm9PK3hTd2ZVYklRZW1hdUdaYlo5cS9qanNLZFMvTFZ0dFZoSlhOSWJs?= =?utf-8?B?M1FqM0JyOWVmSXYwQVYyTlZ2dkxmOEYzMVJML1VyNDA2SjFZSTVHQUU2Q0dP?= =?utf-8?B?Y1A1dG1XVEcwcTI5MVZGL2ZqWWsvREtFUHdneng1bWx4bDhERHo4bU1qQzdq?= =?utf-8?B?SFVHclVxaVhLUG5UQWcyeXZVQWthZ0hzakcrTmw5ODhFbzI1NjZVYk91ckdO?= =?utf-8?B?VXpxSzRmdHZxL2dNWUdESzR1OWFFd2xNSEJ4SURWSFBwTUN6WTE0U01jUHV6?= =?utf-8?B?STkzZSthSVlza20rbjJOZDYyU1dmRjFoUnBKMXp1eVJRR3RhZ3k5M3huamVH?= =?utf-8?B?MEpXSVlsaDhoMXdNQk1UUVNocHpwcklPRkRrbHNoVmVNRlFSY0kyOTNoLzlm?= =?utf-8?B?UVY2NjVYR2w2RDhnM1BMZ1hrSlM2YjArbVZseGdOOVowN0Rpd1NhQTE2Vytm?= =?utf-8?B?NmRENEZtb0xtSGFTaUJ4WFRFaUExZUZzMGdvZ2laY0I5VTJvU0JLYlB2V2w4?= =?utf-8?B?S0k2TjRkV1pPUHJEUDZIblgzNDRjMi9udkhyQnBDNnpCem5pYU1ROTBFbk94?= =?utf-8?B?MS9RWjBkT1NMeTBsTXludW9ydWlLM3g2eG53SlV0OHhhcDd1cEZPMUx5K3ho?= =?utf-8?B?a0NJd2xEenZJWE1nWEpLNU93OTkxN0RQOVpoOE8ramRmN0toZHRWaDBOa2hj?= =?utf-8?B?UFBvS2FGS1lNM3BjYktEeFVpWUtpSm52WnFYaGx1MFcxU3BXaGFpdENjOGQz?= =?utf-8?B?MDBNZS9SQ3BHMEtKTW5TLzZpMlIwV2ZlV204M1V3WDFTNGVNQk5rSHd2YVlM?= =?utf-8?B?UFZwcXROVmJISkxGbDVjdmo4dlJxaEUrNmJYS2Q5YkhUOVVYY0paeUdrSjRs?= =?utf-8?B?M1VFVkVFVlVlSzBSZHlXSWc5N0d2bWdGN0JnZjFjdld4c1dvSkhUU1JONXla?= =?utf-8?B?S25mYXVkd3UyYmJWL1JOTHJtOFI0UFNHZ2JJdlc5cWhyMWxDUm5oWlRBTnBO?= =?utf-8?B?RGZQaTdxQjFXdEFTcEFYUHJEMC8wZmtXaFNPVkpMNjVtTlBMRkRvbWhrT2NP?= =?utf-8?Q?4JEzYJUeszWtCT78wHT/rl0Hb9UQf8/gmUk4xqjPKZNw?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40aaf749-e526-4d9a-8ecc-08ddbdeba990 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:50:01.7353 (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: cOEv8XoLEW/rII1Ma7iypetHU1+qZtsG6rpMQXbWJ1o45PlGk9zKZputYZG+f6eb1osvAzXcqc7/F+b24gHekA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes Add documentation strings, comments and AES mode for completeness to the Falcon signatures. Signed-off-by: Joel Fernandes Signed-off-by: Alexandre Courbot --- drivers/gpu/nova-core/falcon.rs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon= .rs index c2c6f9eb380ab390befe5af1b3c5df260ccd7595..50437c67c14a89b6974a121d440= 8efbcdcb3fdd0 100644 --- a/drivers/gpu/nova-core/falcon.rs +++ b/drivers/gpu/nova-core/falcon.rs @@ -105,14 +105,23 @@ fn try_from(value: u8) -> Result { /// register. #[repr(u8)] #[derive(Debug, Default, Copy, Clone)] +/// Security mode of the Falcon microprocessor. +/// +/// See `falcon.rst` for more details. pub(crate) enum FalconSecurityModel { /// Non-Secure: runs unsigned code without privileges. #[default] None =3D 0, - /// Low-Secure: runs code with some privileges. Can only be entered fr= om `Heavy` mode, which - /// will typically validate the LS code through some signature. + /// Light-Secured (LS): Runs signed code with some privileges. + /// Entry into this mode is only possible from 'Heavy-secure' mode, wh= ich verifies the code's + /// signature. + /// + /// Also known as Low-Secure, Privilege Level 2 or PL2. Light =3D 2, - /// High-Secure: runs signed code with full privileges. Signature is v= alidated by boot ROM. + /// Heavy-Secured (HS): Runs signed code with full privileges. + /// The code's signature is verified by the Falcon Boot ROM (BROM). + /// + /// Also known as High-Secure, Privilege Level 3 or PL3. Heavy =3D 3, } impl_from_enum_to_u32!(FalconSecurityModel); @@ -136,10 +145,13 @@ fn try_from(value: u8) -> Result { } =20 /// Signing algorithm for a given firmware, used in the [`crate::regs::NV_= PFALCON2_FALCON_MOD_SEL`] -/// register. +/// register. It is passed to the Falcon Boot ROM (BROM) as a parameter. #[repr(u8)] #[derive(Debug, Default, Copy, Clone, PartialEq, Eq)] pub(crate) enum FalconModSelAlgo { + /// AES. + #[expect(dead_code)] + Aes =3D 0, /// RSA3K. #[default] Rsa3k =3D 1, @@ -209,15 +221,18 @@ pub(crate) enum FalconMem { Dmem, } =20 -/// Target/source of a DMA transfer to/from falcon memory. +/// Defines the Framebuffer Interface (FBIF) aperture type. +/// This determines the memory type for external memory access during a DM= A transfer, which is +/// performed by the Falcon's Framebuffer DMA (FBDMA) engine. See falcon.r= st for more details. #[derive(Debug, Clone, Default)] pub(crate) enum FalconFbifTarget { /// VRAM. #[default] + /// Local Framebuffer (GPU's VRAM memory). LocalFb =3D 0, - /// Coherent system memory. + /// Coherent system memory (System DRAM). CoherentSysmem =3D 1, - /// Non-coherent system memory. + /// Non-coherent system memory (System DRAM). NoncoherentSysmem =3D 2, } impl_from_enum_to_u32!(FalconFbifTarget); --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2085.outbound.protection.outlook.com [40.107.220.85]) (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 7F3E422A4E8; Tue, 8 Jul 2025 06:50:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957409; cv=fail; b=MvCqyKrRHAYb2kr4evGgBiESLwzVUm0P3HgxDfMekBBzvcvP9R4WT79fMjLAObT6WlXBb9te/EiWlPe9aSh2+qi6EailVdkVzpkysWe54gCSVcABpjK104OzyLnEFb4nDRllNGNDerXhBocvK0qTQ89pQrjG+2DBi4iloq77Joc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957409; c=relaxed/simple; bh=ALOJ6f6pR5N7Ic/o4JSTMt1ySRJgdRopmpBm0NKzWa8=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=MlaDO0K9Mhs8na9JW9LJvuEBrPxVesCkaQg1HcteqA65hrPvN8yqsT8DkLankfzTT/nmKX3qHwlKfyJsTPGpRKgB9Td9caVs8rxGe6+Ql+xSfw0YqJ7WYAq5//iPJ34LzX5N6Uo/9eSggwOHn5vkj4gq8uxQY9Wacd7RYJCeT5o= 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=Es7nOckT; arc=fail smtp.client-ip=40.107.220.85 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="Es7nOckT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=W3i7BefjCHwsJHOfVj6bAqc+zhqrm7Synpyk7L4eE7BLz51RwsAfwp8JGvb5QTYGulVzmkFKIWdPnpZPJkIerOB2RVooAk1rJ0FF/bN8MqLaRxIKlS/n7VCa/msxMLfdOJUd6l/RjZ31B1eMTZNadhJa/oEMc/ipGRfQb/IGwYFJ6fqabjASmmOsUd7pdPKuoaJjn3nMre3uMH6YXoLw6EgLu5sljHt/Xq2puLdqWtZbfzNKXz3rEhS0WM343l5qkO6OK9Jj0kHSvW4o3eKyCXTa0noSiXj5L+yzVfCpHIgVREAUWWnTZPXPG3/FKF4PCJFGmhT1Ih/ZOCvh5E7Zxg== 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=vvSXBvSg/26EQoY7Q89ckw+unz3xiKh5Q3uL0AdJIgk=; b=Bc+t2JAirzcb3FBsmJ7TyQhRTLP7JWk6IIkOsaaGGZnRsh/XsyJaT79QcN1xoEw2PUaH0lRADqwaieaC7LY0RdJanIqAhB7JEsrpBXjHCmKtm+XqROaSSqy5sogauXra8pWiduO915ZKNjlcxcq+5OyFhkwo8/T0zs87flQIS6/7EBCioK49VeR4n6Jbdji3N0C30uWL55kQCwHUuyYvxwA0zrEhiJgfV1iftS+ztDxNtQn3aaTGnHkmcJKIUCqtAjQiv1/bE9Sr44h+6Xnk/VJLd6JfscrTHmLEeLFt0YBg0s3aTHX0h3jHO3QERxOiE5A6Ea+ZPjKvsIZZLioL9A== 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=vvSXBvSg/26EQoY7Q89ckw+unz3xiKh5Q3uL0AdJIgk=; b=Es7nOckTOwnojryZoLkCsGM+sFKcFDe9mqsAVfw6oq0HH0etKw01ZG7BEJR4NdHV+0at5V7qpBktd35NNjay/KvlpKUQ5BMjwkT0tSRDXk33ksU/AoLeUoyP4v0atjPu391F28hOff1cd5tgXxHOsCpx48fOUT7mLELZNw2wNzwYR/lHpAzldTUwNW0YX7kBn5VT73V30WfCyyFejN+MI/rvmtOxYB567ulItIGIwgv7c16Ny0k62sLIYRPrTDBr8Wv0zj3EWjWmqOpMqdCWsKf1dnRPqF3sgKfndPCY0UNWRI5NYDguUjCgV9htv0Rd8wu5750YE0eGPP7yTurD6A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:50:05 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:50:05 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:44 +0900 Subject: [PATCH v4 4/8] gpu: nova-core: convert `/*` comments to `//` Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-4-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0261.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:455::12) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 957e768a-c50e-4e4a-7b62-08ddbdebab87 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?SEtudURodVlMdU5QZ04yb05sQS9pT1ErSVY2c0tFM2d4bTkxK0syNGNmV1Uz?= =?utf-8?B?M1FYSXZTVGFFK2pqNjdHUUh3Vk5NYi9KL0FMSGhPTXZuNG1icUY3aDJmTS9P?= =?utf-8?B?cUF1YjBxNU9CU2hDTnpkRGg1MmYyQTZjQWo1QSswQ0p5MGpSTXkxQXd3R2FL?= =?utf-8?B?TWVQYkxDY1llemgvSzdtWkZrYVdWK3ozZ3RHQjVTOWR3akJCRVJOSEVYTUc4?= =?utf-8?B?Y1ZPWFJySENaMUtKNU81dEduOGxLeERoSmNhRk1FK1dybGpveGdRN2l3YWRI?= =?utf-8?B?VXpCUlJaQjROTEhVN1JKNS8vR0I5QnU0QXRERDBzOTFiWk5BT1dTUWhPbTR4?= =?utf-8?B?OWxrSjJ2UXZacXR2WkF2czdQVEFBSmJKTU5zZDRsOW9NYU4vTjJTU1MwM0dU?= =?utf-8?B?RnRqaXQwNnFFbEZRSjkzUEUrTUszRGFaOGxZTitwRDZiaVlMK1l3Y3V2elJO?= =?utf-8?B?S1B4b05WY0NoUnpOcmxlR3FCRVkzbUYwWWswYnlUTlFXcFFlUldtSUh3MnZ0?= =?utf-8?B?NGZwcTd6S254VVd0UmkyS1N0R1dmL3ZnY04wT1gwT2QwYk5tZzlGNnJ5QVlE?= =?utf-8?B?TXdjMnBjODZiaGx0YW1ZZWtUZlNKd3N1QU94ZTR5Y1RHMmxjSGNUK3B1UGV3?= =?utf-8?B?MmtoOUY1Z1RWcVBNeUpiMXJSbU1BcVNpUFpjUU9JUE9GWWNJY3FzbFhKRmdI?= =?utf-8?B?b05uYmVOR3dSbytKRFBLWUVZMEZvbjlEdzZLSFIycUdSVE4vbmtLNUxXTDBn?= =?utf-8?B?emo2S2YxSjZqT1dQbWdJdUl1Nnk3ZEtjZG9xMkF1a25SVzJOMnJnYThnMGhj?= =?utf-8?B?ZGZxY2NOL0NuZUhlTzdSbDRzM09LVXdFMU9pUGZKdENleFJGbDFxWm8vYk45?= =?utf-8?B?OFo5ak5CN25nUjBPU1ROOU1rOWJaMFY5c2tnTFovL2k1bVQxOE9DNG1WUkI1?= =?utf-8?B?QVVyRlA1OXlEc29lOFg5SFdJd2ZPb1E5ZU05bjIxNUtERjMrekJCUHRFc2M5?= =?utf-8?B?UGY3dlZkVklxZFh4T2VJbEY5MW1wd3VWbnY3bWdWUTZrbno5UGpNM2FQV25B?= =?utf-8?B?WndnRTNFNUgzMnZDUm9QdUtqU1JYZC9qR1pOMElSOUtSc1RZdEZUc1ViYTNm?= =?utf-8?B?SFUvQVNMUUxuSGlyVzBhbk1mUjc3WUNGSnUvSTR5RmpLdWU2aElUM1pPdzR2?= =?utf-8?B?SE55UFF3L04reTRnOGhXWVA0VktIS3kwZDVVdlhTUGJsUFJoblpZclhLSU52?= =?utf-8?B?bGxIc0ZraGlIeDQ0c1dybG1lNjRSWU04VVZCckhMTGVoYTNvTkpPMjJ3Z3JL?= =?utf-8?B?WmtGUE9zYjM4Qm54Z1YySHRQNWxNRlZjNnZQOFltL015eEpMS2RDYzVYRDgz?= =?utf-8?B?R2pRcEExK2FBQWlzVkdTYk9xSVhIQlQ2YmhJNy96Tlc0V0I4TEhmZ3A3S1dZ?= =?utf-8?B?UkdsQ2l1Z2ozcC9zT2ppbkN4QktzTkhZSGdlSGlNTGl2dUFIc3U5b0tNb0lp?= =?utf-8?B?Qi8zdzZQREhEVUpsNEhrUjFybnJaUmlaSVFrZU1BaXVNcDR2bnh2OW9DZXlh?= =?utf-8?B?RENJT012bTNlMGF3K2hHelhiWjNnZHRwZXM2VGJaQitUSjA1RCtMUm45c1VL?= =?utf-8?B?Qk5DekthWkY0Q2Y1Zzh5ZnRKRDFlU201Y1IrRHNzU0lDVTUzVVU4WGlCbTZV?= =?utf-8?B?cUlHL0VwN3VjWnNyRjg4UFlvVXIwMXFYSkw1TlY5Rm1meGE4THU1eGd1ZVBJ?= =?utf-8?B?NDhWeGgxSE9FMnl5QVc0SXdIeG1DdXJKb0VGVFVIaDJMaVBEbVh0aFZhRTQz?= =?utf-8?B?QTR5OU9UaHN0R2VkSkFXblpDaExub2JVRFRoUWptSlpNN1JZWEd1alNUTHNM?= =?utf-8?B?Q0tOWE9CbTZKcFVFa0xnWWMrdjhoRWFEeFlDeHJLY2pEelhYMGpRS1ZYQVBm?= =?utf-8?Q?2V3dCHsPE80=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y3JnMUQ2UW5yQWgvL296cVFKWHViREx6bGdBNW5BTUlPbjA3clgwUlU3ajRG?= =?utf-8?B?c1lGaG9oTmtseVpvbnZWNmZ6cXhEVE1EWDVmTG9ReCtnUXFhS251dWRraFVU?= =?utf-8?B?eWNlUEt1YWZnZG45OHE4T1VGTUJrOTJ2YnJMZU1tQXdDU09tbUQ4ak1pYnpF?= =?utf-8?B?Z0lUaytXRWp6aG1yNE9UK3JKQVFaOUZyWGRUa0E1YXNGemtpb3E3QWNxdU9m?= =?utf-8?B?S25GNUR4RGE4cTJNSEpBZWdSTGRGY2tqUnRVcjN2RUJpTy9OZVdoTzBRd3FG?= =?utf-8?B?YTd0UWpjZStLUnZnWDBVQ3hDTzVZamUzVVkxY0hoV0ZPdWhISmRMaUx0em8w?= =?utf-8?B?UEwzbDlTeW54N3dnUXNBMElwZ05rN3l0UGpOMnh6bnRaWndmTVcwRU56S09w?= =?utf-8?B?RUU2UWMwdFQ1ZU1Pc3czWTkxQW93NDVEU0F1enBMY3oyT1hmRnptd1FIM0pM?= =?utf-8?B?WmFWWlZRbWNPUTdrR2RvNHptVEVKTzlUaFoyR3RvOUwzZEwzWmI4N1dhekY3?= =?utf-8?B?QXZaQzFvSXAvRUNYTmdzWnhnQ2dOakFsdGt0RU0rTzdtZURJZWZRTVZ4Skdq?= =?utf-8?B?eUswZjdhM01TS1hpc1I3K1NnL2NjTUNEa0FTNU5mS1lSc1FsTDNqTHBoRWlr?= =?utf-8?B?L1RtbkVEQmhjZUNsS0h2V3FWemtycVV4ekNidGhXVWtyMUhuM21KWjFNbnd4?= =?utf-8?B?RHNKZ2ZhVEdQNHozUEtDdWdBb011S1dmLzdOUDFaMithQldDeDRFdXhDZ0NR?= =?utf-8?B?S2djYW5Eb1pYRE1CaDhFWExmVWUyMkxzaERkZUFBenFGT0t0QmhlMkExQW1L?= =?utf-8?B?VFNlU0ttSnVEdVFhR1ZpZGdka3dVbStYdnh5cUZXei81SzR6dWloTFpyYzBQ?= =?utf-8?B?RkZFTWR1TkFYTE5HbXU1aE8vUTNES2k1T3p4S05Td1kvQlNYeFEzSjB4N25D?= =?utf-8?B?V1VaSjFFSG1CWW4vaUJUQURkUW5BV1VoNVBpKzNPTEFWR2RxcHQ2b1Z3S0l5?= =?utf-8?B?OWRNYzlDQTdpL0JFNmN2SU1BWHRXS0FJaW11U1krWFhBNlVxNmxoTURvaDNW?= =?utf-8?B?ZTR3bWwzRDBBMEtLS0tuTE9GTUJJaE5zaGFPMXEwY3N5YU1FTStTcUZGOFc4?= =?utf-8?B?V2dxT0xOblk0ZExFU3hFaXo3eEU0eUlYS3BEOTN2ZHR5Y2JISEdqMWovaitF?= =?utf-8?B?WFgwSVVGMm5EbUZnWDhTc3l1OEMwTFF1MHVuWWV5ZXBpazNicU1JNTh0WXY2?= =?utf-8?B?YTN2MW9LNDhROTJaYUJZSnk5c0I2Vy8vS25PQUJta0tid1JTaUI0UkYvVzlY?= =?utf-8?B?T2xwaS9ZcnVUcHZrSm1IVHRZNmRFSTZXUVJjQUd3SGtsM3ZSSFpCU3c1OUV2?= =?utf-8?B?OCt5S3Y1UFN6cDY3TC9rZnBNV2k1SSt1TS82cGZhS0FpRCtYY1g3Sll1QVhI?= =?utf-8?B?TjRDVHhFMkRhY0xxV3NGNkpJSGhseUpHcGtaY0RyWDBGTDl0a1RCTTJNUFpw?= =?utf-8?B?eTFwaTZJRWJzUXphK2ZBVlVwNHRRMDgwSE95cURSakpFTGc5ZmFnc3NscnJM?= =?utf-8?B?RzNENUhDZWtvQ1VwMzJ1OFV2Mmp3bUswbWlWbnVUWDNKSGdTckZ6V2s2RjFY?= =?utf-8?B?djM1UFhqSEMvakxuL0tXaXE2azNlRGRXYlk1WXROM2FmcnIzYUxoYTMySUFX?= =?utf-8?B?MEpmeFNDMEpWNkxINUM1cC9hTjdyNVlEWVUwUzFzQjJvbWptK3ROTDFHMEVD?= =?utf-8?B?M3JHbXBUMEdRV0oyNE4wVFJnRFN2TnRGWUFaWEdSZ3NnTURqZTRrMVZiZk5m?= =?utf-8?B?dkFLSWErN20zZjc5L2g3bDduckdzZjZUSitZSy9nVlZRWHIzWVJQaHhVeHN0?= =?utf-8?B?MkJjamVwQzdNQitJZmhzZVZEemhzSUQ3SFgySUdockcvd1dKSEJtenNMZGl6?= =?utf-8?B?S2E2eWppTkFBUEpmWnpaQjVIOTBDUklrZEFJdTRoU0dkbFI4MVJ6QmFCV0RS?= =?utf-8?B?SmFoWjB0b3Z1a05lVzEvSERtcDZtZ21ERUR6TjBmUmR6K3hIR2Rsd0NqVEJl?= =?utf-8?B?UmxMcWJEVTdTVkRXZTlQNjNrWDMrZVd0SkltYnpXblExZTlzZU9oSy81SmEy?= =?utf-8?B?bGJmWWxnTHphRDU0TEF2NmlzQmR0MWk1Zi9IY0srUnJUeU9td212OGRyMkd6?= =?utf-8?Q?8Nhmyoay/o0/33r3b7Syrk9IE4Jxbo6Vdimz3ffITOf8?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 957e768a-c50e-4e4a-7b62-08ddbdebab87 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:50:05.0459 (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: jyvDSnOK4fuIx6gSK6e8yFR/nig+Se3JSdgJxNR5XeOoTH31LTPptIeFK8zxG+knj6Q7E4mgSP1gDs1OakB44Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 The second form is preferred, and there was no reason to use the first. Signed-off-by: Alexandre Courbot --- drivers/gpu/nova-core/regs.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs index b934ffe8e81390b36f5a39af39a9b9f337aa66bf..6f774d4f79a5eb253df90e335d0= 5cf6bc1fa5857 100644 --- a/drivers/gpu/nova-core/regs.rs +++ b/drivers/gpu/nova-core/regs.rs @@ -14,7 +14,7 @@ use crate::gpu::{Architecture, Chipset}; use kernel::prelude::*; =20 -/* PMC */ +// PMC =20 register!(NV_PMC_BOOT_0 @ 0x00000000, "Basic revision information about th= e GPU" { 3:0 minor_revision as u8, "Minor revision of the chip"; @@ -42,14 +42,14 @@ pub(crate) fn chipset(self) -> Result { } } =20 -/* PBUS */ +// PBUS =20 // TODO[REGA]: this is an array of registers. register!(NV_PBUS_SW_SCRATCH_0E@0x00001438 { 31:16 frts_err_code as u16; }); =20 -/* PFB */ +// PFB =20 // These two registers together hold the physical system memory address th= at is used by the GPU for // perform sysmembar operation (see `fb::SysmemFlush`). @@ -160,7 +160,7 @@ pub(crate) fn usable_fb_size(self) -> u64 { } } =20 -/* PDISP */ +// PDISP =20 register!(NV_PDISP_VGA_WORKSPACE_BASE @ 0x00625f04 { 3:3 status_valid as bool, "Set if the `addr` field is valid"; @@ -178,7 +178,7 @@ pub(crate) fn vga_workspace_addr(self) -> Option { } } =20 -/* FUSE */ +// FUSE =20 register!(NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION @ 0x00824100 { 15:0 data as u16; @@ -192,7 +192,7 @@ pub(crate) fn vga_workspace_addr(self) -> Option { 15:0 data as u16; }); =20 -/* PFALCON */ +// PFALCON =20 register!(NV_PFALCON_FALCON_IRQSCLR @ +0x00000004 { 4:4 halt as bool; @@ -312,7 +312,7 @@ pub(crate) fn mem_scrubbing_done(self) -> bool { 31:0 value as u32; }); =20 -/* PRISCV */ +// PRISCV =20 register!(NV_PRISCV_RISCV_BCR_CTRL @ +0x00001668 { 0:0 valid as bool; @@ -324,7 +324,7 @@ pub(crate) fn mem_scrubbing_done(self) -> bool { // only be used in HAL modules. =20 pub(crate) mod gm107 { - /* FUSE */ + // FUSE =20 register!(NV_FUSE_STATUS_OPT_DISPLAY @ 0x00021c04 { 0:0 display_disabled as bool; @@ -332,7 +332,7 @@ pub(crate) mod gm107 { } =20 pub(crate) mod ga100 { - /* FUSE */ + // FUSE =20 register!(NV_FUSE_STATUS_OPT_DISPLAY @ 0x00820c04 { 0:0 display_disabled as bool; --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2067.outbound.protection.outlook.com [40.107.236.67]) (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 3017822D9E6; Tue, 8 Jul 2025 06:50:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957414; cv=fail; b=P4mRFj8RuxJI6Ea+8UzFZ+OIBsfBGgwefWVu0oejBso46NaVjSEvu5sEnSVS7naMUTUJVoX9Z7DvtQA7spXcbOYzt2NlZZP190w6BeGrlnZpxbCLc3TeWKIwpk9e4g9ISxbknnyfZppB0WLfjVj833KBwaALGu2Zc6MPBqo6/PY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957414; c=relaxed/simple; bh=yc7OjAP4dtpfkv2ChVPOK6t5043TVHR66++Dcp3/lY4=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=f3vEIb+3ODiN7ZcaK5AsTK1zlasP5UZhHMDf2BEiPnxKo5R9qwZZH5wEh2dYMgSkOgeXeaXs7SWG1rkYEpKfN1frAtuP22Im9NqOiZrcijSQvomeSTIcN+gcYW69obAhD6QJ7HBQjx3KDBLNYP7MjcrG2rkv5goJKM25Zb1hP24= 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=DUxTheHg; arc=fail smtp.client-ip=40.107.236.67 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="DUxTheHg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RUdi61BIRXE9UQltDqzpU8m2g0CQjKgPCxjAVKrNHgqWxgXiz3O2e/bHf+BJOpz3UeNiWjtTFew9W7NYAehfSV9UKhmWkrZwc9VtJ5m4h3VX/ZQECe2xu/RfOfkAuNPy/z5Z70MFyQCUB6h0j9LMc+xBKP1rACa2slkCmxzHj4/lY4h9n6Ymp09LXcivK4iAtTbw3y66RcJafnmDwi/7mWNmUpE1zjOV6oufQS98hFMr6STFjXGGT+n4DcwoPymE/nbJk6VDwjvWayUMe7NqZBbuCvqJ+WOXKMWeFo7k2F8wBdfEtmRe3adMTNzD6/5XlOzJGkwEZsfpW8PGq3gOQQ== 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=mTvELx4c6vuuzfnqD9OgoOzve2GCsN/3xoLflGF61Ls=; b=pyc2DA2mkwBRDmXASEMGX/bwv9hG7B2cCcO9HqCG2c7z4joSMybEoLOsnlvAUQl0kKgeCjEte84VCMwpyWSuVAsYHWBnGZTuFrVoHPBsixkY6w8uLwG9TPFdJQtVV+Y7EIHsPDVLRJ5mFJFzbl3RGVx60qhyjhZQujIBZKgC47Yb+vpanQBHqH7S+pClWczO7igHbhU2PyBm6DhTq1l8qrOvkDFHnVHCW8lFxSewFRnP998g+OwmviTCZnI1u6FBusCkYT0F6BS/n/ehoFvbhwqRQ+MrYNTNvuYKVYVNL0rwP+N5A7G17HtkbNUvlbA5yizDysd1riLc6x2u9qfxxA== 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=mTvELx4c6vuuzfnqD9OgoOzve2GCsN/3xoLflGF61Ls=; b=DUxTheHgKRMcxLsZUaRFyIuHVF7q2mshddoHz354PW6i0svJWdvx1pAHedpjk8QswwIhY3MBJTmXkBVB7rPIsyq2J5Cdj7Qmu5EruPNf5mSaiipJOBsyTWnoe+T0u9O0M/0dlyAxa3+yJdiBEsB5iFcnv8gF+VYp9/qM9BO+tWj595e0S8HG2aUxmnDHB6Ryu8zn/2IbTpWzV8BccKWbE+FIIIKnExav1S5ZmqB7pLaT9ddsEp7mh55X26nL+ipwcaY5fgNqDsnxzeNUBjyRj+ENeDM7lQnQttWOP0r4RyFs77EjR20dyRPsoYYjVow222g9n+JuB/2/BqDl7h8uWA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:50:08 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:50:08 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:45 +0900 Subject: [PATCH v4 5/8] Documentation: gpu: nova-core: Document vbios layout Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-5-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0089.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2b3::16) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 2ae6afe1-b383-4632-18a0-08ddbdebad6a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ekRvNjVSbmF6RjRDUWorbWhtSUZ6eWJLZjduaktxKzRnSDVidW4yanNCazNI?= =?utf-8?B?VFJsY1NBR2VzakUzcDF4cmNORGtqNTFEcGh5ME5HV1pjb0xxSHcwTTM2S0Ez?= =?utf-8?B?OStRODMyMktwZ3lYVm1NTFdFNmpHb1dzSnVaMUZwa2ZvM0lGT04yZlFnZ1hL?= =?utf-8?B?aWIva0UrV0x1S0grYldEZmd1LzNKWk5ZeFBNNTNMaG9KdUZBVHY4b1BHdCtB?= =?utf-8?B?ekhNRm5vVUIxemhVM1pCM0cwT21yU3owc0IySkFJMjJjR0o0RjhnZk5WZERQ?= =?utf-8?B?RW4xcmd1Uno2RTVrU1RxUXJsN0hkM3E2TzVYRXM1UWJtRFFLNU4yRitBTEQ3?= =?utf-8?B?ZStDaGNVdkEyYW9BZG5VNVZ5Y0M0Ullsd05IN1V1cGw0R2xlSlplV2hveFA2?= =?utf-8?B?ODE1Y2lLWWdYZ2tTOHRJeDFBS3pCQ0FTQ1gyeG1iVUdKbjRLeHRmT25hbWpw?= =?utf-8?B?cGozNS94bGxKM2EydDcrdU9RZTRhNGRYWlBMQUVWU0Y4S28wRms4R3kyNDUw?= =?utf-8?B?SHJOVC96dDJ1aVNpN2FLaWlyajZtcUpyKzRoWENuNVFtUjRJRDY3cEZ2ZmpW?= =?utf-8?B?d1V3QkZ6dE1MdUV0cjBvdUJnQ2NWVW9LaDlEcVdoekN3eEpQTVRoUHVIaXZD?= =?utf-8?B?cDF1bSs0S0RtTUhIbjZUQ0JOUXdmSCtkVmovZkNMaFdGTnFaUnZPaTJuOHpP?= =?utf-8?B?QWh0QzJPL1AvTlpJeWhZMUg1N3JNazVMTTFHRzFMWUdBWUprb1hpOTFHVGY0?= =?utf-8?B?M0w4R0l0WjUyTHRWdEFpbThjV3VJb0VvbndlR3J5czBVbm1ES0Y2RFRKK1k4?= =?utf-8?B?K1BXaEZwYlZlNVZxd0txOVlRVXpzQUI0alNMOSt2OGFOM2pxdERBc1VMaVZy?= =?utf-8?B?WTFHMDRBbHJXN0xyRjcrUWw0RjlnLzZzRnpBdmZqYVY0blBXWmxWL2FZV25s?= =?utf-8?B?Sll1aVdLSXNleEdQaGQ4YmdBa01DS2diZG04ODRNY2lRSndwcDU0VG5zTXpT?= =?utf-8?B?RndIS09qWDM5M3I3NkVMaTlpQnZkYXdFaDdHcHpTY1Budy9BazVDTHVORmhm?= =?utf-8?B?ZEJxVXNjdFhaUDBBVUFPM1E5QWJpTTNZTGNlbHlBZkdMekh0N2xIRVAyOFls?= =?utf-8?B?d0ZCaG43VXVRQnh2andpRlU2YmZXOEMxQ0pna001Z1AzeS9LWUk5Q0tvaVdv?= =?utf-8?B?UXhCalZ4dlRTOVZkT09OOUhpckdVNnBLUnVHb0hZVEZ1VHlQM2JnZVZuYjA2?= =?utf-8?B?aGtVeG02czNaQUc5S3VrZkpoZnNROXdiS08ySml5NXF0NEwvUzdIZkRLQmlD?= =?utf-8?B?Smx3eUF3MW9CMllqdTRiMVNKWGlxdWkzSmg2RzlINlB0TncrWURDaENUdjFr?= =?utf-8?B?TU92K0cvQm9ESnFUU0Q1aDZwVTRrQkJNbTRLSnR6dmc2TjVXekpmWVZwNWZj?= =?utf-8?B?N0hNQTExcVBmaDF1Q0p1Z3IvZXhTdkcrKzFXWlRWUGdzVjhkTXdoeUxhZjZG?= =?utf-8?B?SzRuZlVjN0hlODJ5RGhRTXVRdmVQREJOM1pJdDZpUzhaRkpJbzlaRkJuTEtF?= =?utf-8?B?TEppTXlYSzY5ZEo2eU16MWN1RFgvaGhVY3JVQ3l3cGdURUNEUEc5UFFtZ0lx?= =?utf-8?B?dVY0azlKQUtWdklPMHNwdFJPZFJUcnlnbzVpM283R2JuSnhZaHBGUWFMNG5C?= =?utf-8?B?OXdKM2hETVM1K0dQM25JdUhiSUp6TlJpWW1TR1BLOGNIazdleGRNRFhYWE9F?= =?utf-8?B?Q0lpSU8vZm5iaExLTlJ5MlMvUURuYWhGWjFsek5SdlZla1g3eUJOSStkTm9B?= =?utf-8?B?aXlsaWNJSHRtWEs4ZDBzUUZGZUhGeGl3OXltWlVkeFhzYkJ3U1U0cGRob2dP?= =?utf-8?B?bm9iT2QwZitFanEzZUZLZGFXM3lucU05WG9UV0RVbUtkdU9lSkcyUUNsMG5P?= =?utf-8?Q?qrZDfhnqOtU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QUFXS2VQMDM0dmlSNStxNjNJZWpZUlVPa2N0MjhWcHlzUVQ3NytYMmgzemNv?= =?utf-8?B?dlJXR05hZmdoT2pBbHRKOTBCeDUyc1JuSTM5VlhWeUxnbUFtY091MTFXN1B5?= =?utf-8?B?Rnl5RTVCckhtejBBVnBUVlp6UVkxcWpzcEZQak56ckVlUGVGcXZXZ3lhY3pL?= =?utf-8?B?ZWx5bXlyTm11RWpCaHVwWVBYTXJnSTFTLytFeURDeERrUnZhcm1ETmVCelBX?= =?utf-8?B?YytEcC82YlV2aTNyNS9yL1Vuem02T3BYY1VwUEFxVmYwd215Vmlrd1lwOUc5?= =?utf-8?B?anJ0TjZ4MUVuRWswMk1ORy9FTDZXbzlDK2p0WVQ5MzlWYlpydFUxVEx3aVV2?= =?utf-8?B?ZG9qM09YcW9OcXBVV25pQWdvZDJrd2pyeHI1RXVMSGlLSnpwMzg2VzJyY045?= =?utf-8?B?TnhQUFhLZWxTWlNuMUU3N3AzQjFkcCtCQ1c4UnRCcXhqUlIrSTEvMUtGNTlz?= =?utf-8?B?VUpFam5PMmdENGVQdzdxUzFPcHZUSFM5NFdvenFiQVoveGkyQjZMREJ2RFhZ?= =?utf-8?B?THpOT0tCR3pWOXFKK2NPeG1JQ2tJUWExemFhQUNCL3lBUERtQUt2djdQdk9k?= =?utf-8?B?NDcwMDdFVUQvQnhIVkpkeDJyeG5rcURMMmRWc0dkall0Z3NNMitIWW1LQU95?= =?utf-8?B?bmxDVk5icGtEWlJ0K2VOMEt4OXNuSEJoSHFsQVVuaEliRGMrb3c5MmhXU0Jx?= =?utf-8?B?cGZ3ZERJb3pUZll5ekMyd1M5SHphb0hRNmJibDR3akVnRy9najBUQnRCdTFv?= =?utf-8?B?bXVxOGxHMFlCd21abEd2emZ1YkFQWXc2Z0dqcCtWa1Vtd3dPZnpEN0graFVR?= =?utf-8?B?dmFYTldFZ2ZTd0QvWCtjSG4vV1BvOXNBVzQ1T3haZkRFYVFudUhsYXZucHF6?= =?utf-8?B?dzBycWN2YjVxS3hSclh6d0JCbVBOUlJDVVRka2hSYmlIMVNybUxQbTFvdlEy?= =?utf-8?B?WUxqazRXN1RyVmlaT3MvakFKdnFBUi9oMEdUdkVIREMxaElkQjNuS0M2Y3Ar?= =?utf-8?B?c1V2ZUpna3RrU0tnbDJVbEk0dGF2ckorZlJCNEpWVkNZUUpGdHhFMGxvRVZu?= =?utf-8?B?MFRFNVBtU3hyNG9tRWFtc081VzlFWDJMTzIzNmM0WnJlWEFaQ0ZhK1A1c1Vv?= =?utf-8?B?TkRHZkpEM3U0RlN4MnJTTEtaS0xWUnRHMkw4V0ErdTZBSzRQOVhDbjFqOEhv?= =?utf-8?B?bDBod1BDN2hmL2M1RU0yVHJnQStpdEZwbE9TU0t2Z2FjcThqTU5IYWRwdkdK?= =?utf-8?B?aE9NTFBUUXlWenE5bFJjNlFkZ1g2TDlXR0hVLzd0ZXVmdWdYa0VJZ2d2azZs?= =?utf-8?B?REtLY29DZjByaTFSMFZnUXpkVlBPa3ExdDRrS1RnQ1FtallvTmMvUnJOdzBC?= =?utf-8?B?K0htcVRuKzVTL0NsRDFPTTFNZjBPTWhHUmtqTzYzWGZvTTRkVlZpZE55U2RG?= =?utf-8?B?cWt4dURiQWhqRWN6WjdPdEcwbWhHVENqQkVmYy9NODNKNzhJMjB3M3RTMW5V?= =?utf-8?B?TXVoMlJkL1NWQWF0Q1JYaUJOWXUvcExQUDl2eFhqWnM0UVllUGdrYXFkQ0JJ?= =?utf-8?B?eFVMNlBnRFk4bXhxV1JlbmdsV2JYZ1RPKzR4azJVekljbU82Q3JMV1R5RE1q?= =?utf-8?B?MUkxTlVCS0dqSXo3RXNXMFBOeVVDeXhiMEk2ZXdienFKUkJocHhtK09zcmFY?= =?utf-8?B?TVBTS0ZuVUdNb24zanRIUjNBOXdNK3VXR0ZCZHFzNXFWUTBXeXMyRWVUUUdq?= =?utf-8?B?RGNRTXVoZ01QWUltS0hXMlA1MGVjMTljUXRkVEh4OXd3ZFExMnk2aUw0aEVr?= =?utf-8?B?N3pTR1JtV2ptUi96SC9lNGdpaEVCVWxJbUpsUlR4aDhOWEFXRktHOFM0M3Qr?= =?utf-8?B?KzdiT0xEODNNWjlnRmN6MzV1K0FmbnFMSlpqbktCZGU0aFMrNkk4SHFybFF6?= =?utf-8?B?dTVIbW5JMG1mcmZQZ1JidEl1bkRQRGZkV3VicE05d2xHVEgwNGwxZVJZN3V0?= =?utf-8?B?em9UeWJxaEE0d1FVeVJCdEw4Z3BvRWxqSFVVRVJoMFFmM2FVakpadDA2SkxV?= =?utf-8?B?T2R0OUNnUkpFZGs3RU1RS0RsVWZsZVpxVWpCNlhqakxHU0ZwK1RZb3pRRjJM?= =?utf-8?B?K051akIrL1h1TVVvQ3VoWjh5bXMwU2l3UTZtV28zUWlFazFGSVBhZCtPVVkz?= =?utf-8?Q?vtQpHu4VOAjYCcWs0RrLRDC4PAk1Kd9SqZeW4kg+z2ZB?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ae6afe1-b383-4632-18a0-08ddbdebad6a X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:50:08.2663 (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: ru7k2VNWqjs8YFUDfH2IbCwm3bY4LTBVVAw0WyDzjMoaNCsIgIMdHyZ3NIwPeyXPENAePkAXa4WVQIpANkaPYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes Add detailed explanation and block diagrams of the layout of the vBIOS on Nvidia GPUs. This is important to understand how nova-core boots an Nvidia GPU. [ Applied Timur Tabi's feedback on providing link to BIT documentation. ] Signed-off-by: Joel Fernandes Signed-off-by: Alexandre Courbot --- Documentation/gpu/nova/core/vbios.rst | 181 ++++++++++++++++++++++++++++++= ++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 182 insertions(+) diff --git a/Documentation/gpu/nova/core/vbios.rst b/Documentation/gpu/nova= /core/vbios.rst new file mode 100644 index 0000000000000000000000000000000000000000..efd40087480c4fd6cc8ef10ddfa= a9f0297417e5b --- /dev/null +++ b/Documentation/gpu/nova/core/vbios.rst @@ -0,0 +1,181 @@ +.. 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 +bootstrap various microcontrollers (PMU, SEC, GSP) with critical initializ= ation before +the driver loads, as well as by the nova-core driver in the kernel to boot= the GSP. + +The format of the images in the ROM follow the "BIOS Specification" part o= f the +PCI specification, with Nvidia-specific extensions. The ROM images of type= FwSec +are the ones that contain Falcon ucode and what we are mainly looking for. + +As an example, the following are the different image types that can be fou= nd in the +VBIOS of an Ampere GA102 GPU which is supported by the nova-core driver. + +- PciAt Image (Type 0x00) - This is the standard PCI BIOS image, whose name + 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 (also known as an applications) that do a r= ange + of different functions. The FWSEC ucode is run in heavy-secure mode and + typically runs directly on the GSP (it could be running on a different + designated processor in future generations but as of Ampere, it is the G= SP). + This firmware then loads other firmware ucodes onto the PMU and SEC2 + microcontrollers for gfw initialization after GPU reset and before the d= river + loads (see devinit.rst). The DEVINIT ucode is itself another ucode that = is + stored in this ROM partition. + +Once located, the Falcon ucodes have "Application Interfaces" in their data +memory (DMEM). For FWSEC, the application interface we use for FWSEC is the +"DMEM mapper" interface which is configured to run the "FRTS" command. This +command carves out the WPR2 (Write-Protected Region) in VRAM. It then plac= es +important power-management data, called 'FRTS', into this region. The WPR2 +region is only accessible to heavy-secure ucode. + +.. note:: + It is not clear why FwSec has 2 different partitions in the ROM, but th= ey both + are of type 0xE0 and can be identified as such. This could be subject t= o change + in future generations. + +VBIOS ROM Layout +---------------- +The VBIOS layout is roughly a series of concatenated images laid out as fo= llows:: + + +---------------------------------------------------------------------= -------+ + | VBIOS (Starting at ROM_OFFSET: 0x300000) = | + +---------------------------------------------------------------------= -------+ + | +-----------------------------------------------+ = | + | | PciAt Image (Type 0x00) | = | + | +-----------------------------------------------+ = | + | | +-------------------+ | = | + | | | ROM Header | | = | + | | | (Signature 0xAA55)| | = | + | | +-------------------+ | = | + | | | rom header's pci_data_struct_offset | = | + | | | points to the PCIR structure | = | + | | V | = | + | | +-------------------+ | = | + | | | PCIR Structure | | = | + | | | (Signature "PCIR")| | = | + | | | last_image: 0x80 | | = | + | | | image_len: size | | = | + | | | in 512-byte units | | = | + | | +-------------------+ | = | + | | | | = | + | | | NPDE immediately follows PCIR | = | + | | V | = | + | | +-------------------+ | = | + | | | NPDE Structure | | = | + | | | (Signature "NPDE")| | = | + | | | last_image: 0x00 | | = | + | | +-------------------+ | = | + | | | = | + | | +-------------------+ | = | + | | | BIT Header | (Signature scanning | = | + | | | (Signature "BIT") | provides the location | = | + | | +-------------------+ of the BIT table) | = | + | | | header is | = | + | | | followed by a table of tokens | = | + | | V one of which is for falcon data. | = | + | | +-------------------+ | = | + | | | BIT Tokens | | = | + | | | ______________ | | = | + | | | | Falcon Data | | | = | + | | | | Token (0x70)|---+------------>------------+--+ = | + | | | +-------------+ | falcon_data_ptr() | | = | + | | +-------------------+ | V = | + | +-----------------------------------------------+ | = | + | (no gap between images) | = | + | +-----------------------------------------------+ | = | + | | EFI Image (Type 0x03) | | = | + | +-----------------------------------------------+ | = | + | | Contains the UEFI GOP driver (Graphics Output)| | = | + | | +-------------------+ | | = | + | | | ROM Header | | | = | + | | +-------------------+ | | = | + | | | PCIR Structure | | | = | + | | +-------------------+ | | = | + | | | NPDE Structure | | | = | + | | +-------------------+ | | = | + | | | Image data | | | = | + | | +-------------------+ | | = | + | +-----------------------------------------------+ | = | + | (no gap between images) | = | + | +-----------------------------------------------+ | = | + | | First FwSec Image (Type 0xE0) | | = | + | +-----------------------------------------------+ | = | + | | +-------------------+ | | = | + | | | ROM Header | | | = | + | | +-------------------+ | | = | + | | | PCIR Structure | | | = | + | | +-------------------+ | | = | + | | | NPDE Structure | | | = | + | | +-------------------+ | | = | + | | | Image data | | | = | + | | +-------------------+ | | = | + | +-----------------------------------------------+ | = | + | (no gap between images) | = | + | +-----------------------------------------------+ | = | + | | Second FwSec Image (Type 0xE0) | | = | + | +-----------------------------------------------+ | = | + | | +-------------------+ | | = | + | | | ROM Header | | | = | + | | +-------------------+ | | = | + | | | PCIR Structure | | | = | + | | +-------------------+ | | = | + | | | NPDE Structure | | | = | + | | +-------------------+ | | = | + | | | | = | + | | +-------------------+ | | = | + | | | PMU Lookup Table | <- falcon_data_offset <----+ = | + | | | +-------------+ | pmu_lookup_table | = | + | | | | Entry 0x85 | | | = | + | | | | FWSEC_PROD | | | = | + | | | +-------------+ | | = | + | | +-------------------+ | = | + | | | | = | + | | | points to | = | + | | V | = | + | | +-------------------+ | = | + | | | FalconUCodeDescV3 | <- falcon_ucode_offset | = | + | | | (FWSEC Firmware) | fwsec_header() | = | + | | +-------------------+ | = | + | | | immediately followed by... | = | + | | V | = | + | | +----------------------------+ | = | + | | | Signatures + FWSEC Ucode | | = | + | | | fwsec_sigs(), fwsec_ucode()| | = | + | | +----------------------------+ | = | + | +-----------------------------------------------+ = | + | = | + +---------------------------------------------------------------------= -------+ + +.. note:: + This diagram is created based on an GA-102 Ampere GPU as an example and= could + vary for future or other GPUs. + +.. note:: + For more explanations of acronyms, see the detailed descriptions in `vb= ios.rs`. + +Falcon data Lookup +------------------ +A key part of the VBIOS extraction code (vbios.rs) is to find the location= of the +Falcon data in the VBIOS which contains the PMU lookup table. This lookup = table is +used to find the required Falcon ucode based on an application ID. + +The location of the PMU lookup table is found by scanning the BIT (`BIOS I= nformation Table`_) +tokens for a token with the id `BIT_TOKEN_ID_FALCON_DATA` (0x70) which ind= icates the +offset of the same from the start of the VBIOS image. Unfortunately, the o= ffset +does not account for the EFI image located between the PciAt and FwSec ima= ges. +The `vbios.rs` code compensates for this with appropriate arithmetic. + +.. _`BIOS Information Table`: https://download.nvidia.com/open-gpu-doc/BIO= S-Information-Table/1/BIOS-Information-Table.html diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index 2701b3f4af358b373d4ef47975d5a80213f3e276..f38041fcd595524b204eabf6ca3= aad51038682cf 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -28,3 +28,4 @@ vGPU manager VFIO driver and the nova-drm driver. =20 core/guidelines core/todo + core/vbios --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2067.outbound.protection.outlook.com [40.107.236.67]) (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 498D422B8A4; Tue, 8 Jul 2025 06:50:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957415; cv=fail; b=QsGlGyl+iYkQ9TxRdC4VHBJq+WZ+w3zmB7LT5Kmc+uNAa38agNyl6MY3eVosPwo9MQVRnIroXUSmraWCfO2fUT7FaV8WT18oWPuQSyCdsaj8D2+cJxcD6AymKPvMsbiGoZrBz2iojjMDdW8vQPERt4+iX/jMXZgFYZDMHay5K8c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957415; c=relaxed/simple; bh=ABKzu3RAF9+M/PS6jvL0Zyx9GsLohbJ7YGYYNobEy4c=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ca1+LOx6F9MoOSmKzq6aCYhEiQT9wJcnArTZA/6ddXvFTEaiYc2p2gNRbjR2J5gPrQPJM+LkzX+b8T3N917PSSVWo50DKU2CP2Kw+cGfxUtzH1aEppa3CyvmNRk++1oZedWHsGRggVoIOZ7mvI3FNZ/bHfDCEEi/09BIv95Eleo= 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=L0rN6bRz; arc=fail smtp.client-ip=40.107.236.67 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="L0rN6bRz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wSvKn6sXku/ngUFo2ZaqIfZiyyKQyrO8PKsEuhTnD7jw8j+LYAGv1sOaR1B3jkbw5A9vvry6G0jgkzKDZ9mJViq5Hf6SYkZuJUDGgAnRHQ207RfIT2biJHVKqhBbU66TuY47HlSDVfn+pHGHaymygRApG6o293E+TLSJwkW6DXxtVhHoiD7qLaODGGhjaNmPAZ0MTdwmXodzKrL89S21+BP6OiaRkbYPpwVzv0WTTHS3AA3gusJG1G5emFtvtKe6KEENzL37pko24GFXdt5712uYKgS4xblcNqljbS7ZMtbGp0R43rOFC3U6lfVOr0RevMtcwEHFF9VlJvoh58PmJQ== 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=sPCMPPPhW8LN4/mXiKcuiqnEUbEegoAMu8hbl3ceLGA=; b=fdoffKr0FNHpexgsqK7PZUjKwjxy2kt4ra7FTZswqg3f1ZH0TzaHeI/sIEmd+I1tnNW4SM0l7HcMJMibQ4Y4fMfhUhXvWHZd/Vam+JT1lk6vj4nXVRSlp8EZAqa2rVvguXr3J7NBMTal4UPRp769Bz3eKS5Ai/0ekCgI2Djab9/BPKQt1LTpxIhZb0yOMyEQwJ3OPpt9eoXVQ6l8Hm179DDEWjDL4BVrJTMVR9a2REu9q33V6rFaayw+MGiCK/RnmVZCzSAl7pIVxWkFW3k+phdEqMB6+3Vv5nK7xxWCNXg/r33aDN55dk4dyVUDUUKkb7oTX3tlGfyLzato5C6PgA== 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=sPCMPPPhW8LN4/mXiKcuiqnEUbEegoAMu8hbl3ceLGA=; b=L0rN6bRzHUSAeyu0h95umRrKKMls21rsKSpnKpj1r1x5iuavELfxDPUhscdjJYNBHFfPupogD/rXVEE8Ea+jSe7VQiGuq242o/Dkal4um7rmt7+c38fe/htvfX+VRJ3cHcW/KOu74r+2aDt0d/DUq253RV6Ie+yhgL3dcvmsJGDwqCusfa8Ab+cCMw7mhir9wJO5bW0piyb7rkZX6lDKev3I8JKtXV7w31rc1uP1rGNNsBnKiihn6eaqqCeqZng6CZGJ/zcK544gjl5wtHVPgRf9raZk4rrLG0I2ObPYl2j7WEow1ooo1i3PbnJIA7SjW25V5be92MC3f9erLqcdhA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:50:11 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:50:11 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:46 +0900 Subject: [PATCH v4 6/8] Documentation: gpu: nova-core: Document devinit process Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-6-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot , Bagas Sanjaya X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0028.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:263::15) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 5dff5679-8016-4ae5-1271-08ddbdebaf54 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?QXJ2dzlvS3lpWTNHUmNIUWYraTNhbEkvWnlqaTl1Z0ZBTE9SMGNZOGJKSE50?= =?utf-8?B?S1RBanN6dnp6L0hIMjIybWVCMjNRNGVjNDZIV2JWY3RtU2JCN3RSaks2UWdG?= =?utf-8?B?d0hpSGxMVEpiSUVpd28xQ2EzdlZFNzJBL0Q5c3lGK1R3NnUrb1h4ZHdEWGxh?= =?utf-8?B?MEt6NW9sOEZSb3JPNEVkVkhraytGUmNjbW40WFpnc0I0UEFuRU9qb0ZwZ0cy?= =?utf-8?B?Q0dCM2RyWU5neTlDM0ZMTmJ6N2tpci8wVTIrMjdMcGtiRzFSL1ZRVjJTcmhQ?= =?utf-8?B?a1lYQkFoeGhuTGs3SWJUTXhkaHhaZzBwSmlsSXNLWCswemNJdjVDMElWRHU3?= =?utf-8?B?bHBXTXlTRkdKdWNVK29McEkwRFNaQ2hDU1NYVUhpVWVLN3UzSmg1SEVSY21N?= =?utf-8?B?SDl3NHh5clBIYUVvOWtEdWx5N3liNkRpYkZSN0VZY25IK1Zrd0oxY2loMlpa?= =?utf-8?B?enIzMmNFaGh1ZW1lMTh2eXdzZ0hPMk51UmVBT0JWZVNReEpxWFFJdkZ2c0Zs?= =?utf-8?B?RDlPK09OT1g3cU1IaTJieUs4ZEZ4VS93c2pNdmM3NjhyTExwRUZhSlJ5eHBk?= =?utf-8?B?TUNoL0hBOTYwbzh4OXRBTFZCUzFkRm05alRlOXZWUTVSclFjdGliNGVSbmJ3?= =?utf-8?B?YVptZlFFNG5xdEZUVkxxb3BDR1UybUVmdm9GTDI5YXhscFFLQTF0SnA1U0pB?= =?utf-8?B?R1RuL0hXLzY0S0wycnM2aEVTTUNRZHpNUHErNzhYZ0JvZkxYdUprQmFra1J0?= =?utf-8?B?Z2I0MUNlNUNCbXBLL3Q4YmNQQ0pISzQxb0ROcVl0S2l3Q3JCQ0E5U0J6YSs4?= =?utf-8?B?YTFXK0t4OXpEeHBGSC82d0w3K1pOQ3E1TUNQUzkzZG9iMGJ0UFlCL1pubVI1?= =?utf-8?B?VHBXUVEvUG51b3BDbXR2OENlNExiSFpwTFRRb1QvaDlEcGQzSFVRZ3k5dHla?= =?utf-8?B?clRnaUxhSVlEUDZEUWlRaWhVUzQzallHRCtoa1NvS3llZzB2VEkrcmwyLzBK?= =?utf-8?B?UWxRcHhmZ3VrSDhramZsWkRkSlJHVDNYUlREMTloRG92ZXpVYVNzYnkyTUtM?= =?utf-8?B?cWpMMEhBWjNZUG9tTFJuNHA4cHRtSEpkK0FRcEtzaDVOZW9sZURMUU9RU3F6?= =?utf-8?B?aEZXeGRic0dseE84UUVicmc2ZXc5eXhJVkRVR1dTWnBvVmcyT0lCajR4enZj?= =?utf-8?B?WEVhaG04aE1jUmtURngrcEU5VllzcVZUUkFsUTR1SDlab2RYQkovSExodHdq?= =?utf-8?B?TWJ2ckljYTRwQlJKOUVTTnAyeEgvM1BxNEU2K2Z3V2JqcDU0RzlRaEJ6eHJ1?= =?utf-8?B?WFQvZ2VVN1BXdWZFTTRmejFvRFdES1gxVkJzRENDRVIrMW9YbDhSU3owZlRq?= =?utf-8?B?bzJoeFlwYkVscTJteVpGcEpGMFVTTHNZb2NUTkJRWHNSOU5kRXdWellvWWgr?= =?utf-8?B?d3RlYUxXVStvWHRUL2Z5SXNwdlljRHY5QTZtMnJBdWt1bTJ5bklGSnZTTS9M?= =?utf-8?B?SUhiNC9sK0pkeGpIUkRXU2ZSeXg4R0Q3NFlnYmdSWTJRSHM3MDJhVVV0ck1L?= =?utf-8?B?aWlyd0p2L2lNVHFmaGpxbVgxSi9nSGlqR2pTWXl4bWx5amJ1SHNJbDFKNDUw?= =?utf-8?B?MEFtME4vRzg0M292QmhyempVY0hVOWtSaTNOazNiMXpvbVAzdVU1cXpSVEZu?= =?utf-8?B?UEJoTVRIcmQvaXBrV3U0dU5ndTMydGVHeUJqSzREajNERmlIUndBa1ErYUZE?= =?utf-8?B?RGFMU285bHlHZHN1Tllxc3N4T3FmbDFzb0JOblZlbi9SbnJ4SFR4Y1k1T3Y3?= =?utf-8?B?azN4MDFpbkJ2VmFJdFhuSnpCeG01WWlMRGI3aSs3T1FLa1RKN2twQXlqd1Qr?= =?utf-8?B?bkF5Vnp4dktrMFFIcnlBK1BiS3RHQlY3QXJ2SUN5RFpTMHp0QzZlRmJZOHZG?= =?utf-8?Q?AiI9FeUBi3Q=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bkx2ZFRNQ0NtcmF2cUhBOEJPemhIWjh0T3RpN1JFKzhsZy9KT2FLMzJSZEJG?= =?utf-8?B?b09mYTErK0NlS2trS2JMb1RYVTNuRzVTUjVOWUZHdU56M0tDdGEyN3l0YUJk?= =?utf-8?B?RFFmMVlOaTdGcXNEcDhjeWFrNy9aVjJ1SmR3UDdyMHh4UEdac1h4ZTZHTVBN?= =?utf-8?B?aUxMM1Q1TkF5clRRUkVjZWRSRndWZ04zeEsrcmVqUHVPcE5XTlBhblh0NHRY?= =?utf-8?B?OFNCQloxQUppYTAvR0xMWEJnbFNUZVAwY0RONjU1TXBRbU5FQVh4ZmNwVmRB?= =?utf-8?B?UWRYVVpNbVY1aitJY1VJZ2paaEtJL0Fra09VbnlZejF5elFPeWhJR25qVWJi?= =?utf-8?B?MzcvYWwxYjUvZHh0RWw4YkxNQVlsZzlUTTF0QXU1VTQ5V25EdDdxMW4ycC93?= =?utf-8?B?VVlmdjdBV2VDSHcvbWg3ZFB6MUFacEhvNmR3SXhqL083ems1UWYwSTRRcWV4?= =?utf-8?B?MnZoWEJ5UHRQR3IyY1pTTjd0ZWtWN1NVMkNXd3JIU01BV2dXTk9FYWphQmVC?= =?utf-8?B?VnlyTzhEcDl6V09LWitjRTFkbGZoOEsvQzVqei9sQWpLVk1NL0s3S01YK0lS?= =?utf-8?B?cjZsRTZQWXVyb0E3emtSWkNBYi9NU3pDSzNualZXekxVYW53RUx3MHNKSXBl?= =?utf-8?B?Rjl3OW1GLzVpeWYvSUxEUnRPTHdDSzNGZGRjMEhzbE1SZU9lblV6WkRyQldP?= =?utf-8?B?aDlHb21yZ3JKaGI0YUcxeDRFYlo3NUErZG8xeGVuVVBaUE5kZU0wYVFDTTJI?= =?utf-8?B?U3dLL1h2ZmpidEh0YU8yQUZsbGovdUp0Q3VOci9Ld2xLNU9ZWkp1NitoR0tx?= =?utf-8?B?dU5QWUp3TGJ1R3VqOTlhRFY2NEMwWXhvUnpiak8wR2hUSEd3VGczZTN2dUVz?= =?utf-8?B?Y2pJWWpRWlVLYVFhUWRZamV6RVpMN3ljaGNLbFVBZTNHQTUzbWxYQnhFYlB5?= =?utf-8?B?UFdwU3U5dmN0VUZlQW0ycXk2cVpUaXhlSkM0K3M0Q3BrWXkzNDk1Y1UvRENV?= =?utf-8?B?NTV4eGVoR0ZidmdJQ2xNK2REVk5MdmNGbXA5NVEzaWIrK0MyZmpLa2x1SXR5?= =?utf-8?B?Znlvd2twT05CM3VuTFF5YUlTc0tiRldNVTM2N3YxRzJyU2JRWWYvT2pGOXNx?= =?utf-8?B?TUpUNnJXNkx5c2tvblowdkFCU2doUng0NThkSWkxQXExU1NtNnhYbGdnZlpJ?= =?utf-8?B?YVNJZVFCVDZSbC9pajNlVUIrY2hFNi9iOGZmSTRBQklURENwR3habzhJUFlj?= =?utf-8?B?cHVRak1FTExTaE8xYW9lU3I5djNlZDN2NUZjUklrY2JoUldEekEwMzAxdjFD?= =?utf-8?B?aXFJZkpDc0RnbWlGOHpCTFRuditYajlpdUYwRmROVFYybTFzbTFCUTVVMVJr?= =?utf-8?B?VkU5MnQrWnEyQXplanBaNFkyY0kwYjFZdU95cFZIUDFVTnBjbjNlaFg5SmFO?= =?utf-8?B?Y2dNZ08rZzJWQW5MMnN0emRVby81cndMVkZIUi9LODVZbmV0SGxtdTdJTVo0?= =?utf-8?B?UUptMXorcld0enlLR25POG81VTZ3a2hORlg5V24zWmExTEVmWE5oWkJUcFdU?= =?utf-8?B?K3ZQVmtNSklXSkJvMC8weXZxY1NRdWZ6V0VETEZRRjNqMC9ySjQ3ME5NbERw?= =?utf-8?B?VlBDTG1oTWlBRkpLT0YwSW9mQ0U3ZmQ1ZFZTeGNRcDdpNDY3Q3lIYkw2aHYz?= =?utf-8?B?V04yMmZuOWtsdkZhWWZHYkd6Nm5kTmFhdFdXMmo3V3I1Tjh0LzcrYzRHYXh0?= =?utf-8?B?Y1ZWMnRGSUJBOHBjY2I1Z2d2UDRQV2pYbTlmUEZuVWZSK09SVUQ3WkxTM0Yz?= =?utf-8?B?WEpQMkJTd1BsVTk4dG1nL0ozRlI1emJkbnphQXh2ZldPdExMQytBUTNaWWIx?= =?utf-8?B?dytMUVY4UDY0L1FJUzhFSGhBaHFJdDZVSm5NS1Bqd01BUUM3VzRzVktGdkVt?= =?utf-8?B?WW1Kb1ZpQkt5eWhxelg0Z0d4dTdhZ0hvTGZsWHVKYml6ZGdLMEl6NGZaQlNs?= =?utf-8?B?dWF6bmhXZ2lDa3dLWmNOTTU4ZjcxOXFDNm1teGhza2Z0TGZGNVFsWWdjTDN0?= =?utf-8?B?VGhKSzZPZGJGMFlzQjd0OVRtMXVWMiswNjM0UmU0dys5Um45YWhGcjYwaVVE?= =?utf-8?B?N3hCc0U3Vnd0dzhMT2hBSTlwZ2E4L0dmanNtMDl5NEFsWCtMZG9zeVFXdGRI?= =?utf-8?Q?qz9JDnrkPXAqOY624+EIIjf9RDegQvVK7NJBEVOPefyZ?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5dff5679-8016-4ae5-1271-08ddbdebaf54 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:50:11.4133 (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: gHlRdcOF9qIFZfQqRnV6asAFPsifqPuqpegV5j05k96rC25n/Rk/xSeQm6ZulSwK6VNbdrwJX9lqIDFNYSmSHg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes 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 Reviewed-by: Bagas Sanjaya Signed-off-by: Alexandre Courbot --- Documentation/gpu/nova/core/devinit.rst | 61 +++++++++++++++++++++++++++++= ++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 62 insertions(+) diff --git a/Documentation/gpu/nova/core/devinit.rst b/Documentation/gpu/no= va/core/devinit.rst new file mode 100644 index 0000000000000000000000000000000000000000..70c819a96a00a0a27846e7e9652= 5470d07721a10 --- /dev/null +++ b/Documentation/gpu/nova/core/devinit.rst @@ -0,0 +1,61 @@ +.. 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 +The devinit process is complex and subject to change. This document provid= es a high-level +overview using the Ampere GPU family as an example. The goal is to provide= a conceptual +overview of the process to aid in understanding the corresponding kernel c= ode. + +Device initialization (devinit) is a crucial sequence of register read/wri= te operations +that occur after a GPU reset. The devinit sequence is essential for proper= ly configuring +the GPU hardware before it can be used. + +The devinit engine is an interpreter program that typically runs on the PM= U (Power Management +Unit) microcontroller of the GPU. This interpreter executes a "script" of = initialization +commands. The devinit engine itself is part of the VBIOS ROM in the same R= OM image as the +FWSEC (Firmware Security) image (see fwsec.rst and vbios.rst) and it runs = before the +nova-core driver is even loaded. On an Ampere GPU, the devinit ucode is se= parate from the +FWSEC ucode. It is launched by FWSEC, which runs on the GSP in 'heavy-secu= re' mode, while +devinit runs on the PMU in 'light-secure' mode. + +Key Functions of devinit +------------------------ +devinit performs several critical tasks: + +1. Programming VRAM memory controller timings +2. Power sequencing +3. Clock and PLL (Phase-Locked Loop) configuration +4. Thermal management + +Low-level Firmware Initialization Flow +-------------------------------------- +Upon reset, several microcontrollers on the GPU (such as PMU, SEC2, GSP, e= tc.) run GPU +firmware (gfw) code to set up the GPU and its core parameters. Most of the= GPU is +considered unusable until this initialization process completes. + +These low-level GPU firmware components are typically: + +1. Located in the VBIOS ROM in the same ROM partition (see vbios.rst and f= wsec.rst). +2. Executed in sequence on different microcontrollers: + + - The devinit engine typically but not necessarily runs on the PMU. + - On an Ampere GPU, the FWSEC typically runs on the GSP (GPU System Proc= essor) in + heavy-secure mode. + +Before the driver can proceed with further initialization, it must wait fo= r a signal +indicating that core initialization is complete (known as GFW_BOOT). This = signal is +asserted by the FWSEC running on the GSP in heavy-secure mode. + +Runtime Considerations +---------------------- +It's important to note that the devinit sequence also needs to run during = suspend/resume +operations at runtime, not just during initial boot, as it is critical to = power management. + +Security and Access Control +--------------------------- +The initialization process involves careful privilege management. For exam= ple, before +accessing certain completion status registers, the driver must check privi= lege level +masks. Some registers are only accessible after secure firmware (FWSEC) lo= wers the +privilege level to allow CPU (LS/low-secure) access. This is the case, for= example, +when receiving the GFW_BOOT signal. \ No newline at end of file diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index f38041fcd595524b204eabf6ca3aad51038682cf..e4e017d926767284b5cee844d8d= ba32be6bc064c 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -29,3 +29,4 @@ vGPU manager VFIO driver and the nova-drm driver. core/guidelines core/todo core/vbios + core/devinit --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2063.outbound.protection.outlook.com [40.107.223.63]) (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 06DC42253E1; Tue, 8 Jul 2025 06:50:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.63 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957420; cv=fail; b=GhBenaYw7G5Uoe7jHRGpdwVzN0jPSN75GF/ivwyzq06qP9MRemgoWl2oJaCnotWxRRS/duZKxhdBUBrbx1CXAhkMHZuIapin9ZOp3w0KetY38Gm1Pet2kJQvsQ5tfITyqMlIxSW0/KVjsc+9hCsnkKOc8YTu0hviDRgdc955iWY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957420; c=relaxed/simple; bh=v1HFkcbhR7VtcaQkc9z+t+lr7+vzWcKTinR50O6zZeo=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=McYChRPl6dZCJpOz0dMwD3oooF9kmmeV+Zc+CdLpQ50qSF9Y2QiGlS2MLgq1xO4mQhpnuojHRfFrAaKsxfDKgtFXtQWUg2HfewJPe+JvL1/vM1d8Yc5DP3eLXiFXxmVvOgcCQfqfy9Iw14i7Ywoq6GwQHWlzA3iCYkNC7MDKZAY= 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=VxoUXE7D; arc=fail smtp.client-ip=40.107.223.63 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="VxoUXE7D" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=S6KwYaQeACf3grJ01JTr+6Imj0w76taVsRBr/nAqEnDFfzv6sYX6HR4vRQ/CrSV8F1chZ6cqF7ODe1DwfHN+rf2v60xL3ZPyXwnhRxUjLHFLcoZXTv2dco5sUmpQ0kn/S2p3LSXjbNYYR4uTQ+zUkW49kvyzrAwZZL1KSEuunFQjD/RuLpC6+b7tXE1t4RYWRZybsR5oYHIPGnnnZQXDJfYhzVFa0nAQcHYKvi4yKYUZLaDhsCfobYVaNrGG6srXirRmJ7tOC729U+PRTOE5SvdaQ7GkDvQdXAA4Ixx/XjGKOXgbs7v2bfilCZxGVIps0VhUqprlnFo5v25c/A33LQ== 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=giblcuSB1arYxs8axtjtk1wOeJHQs8qbUFZak9uzzVw=; b=Queo9ud4VOBTLHvkJXmxLlS2OHwBayn8gPtnY4rm6jIz2AByBMcRZCFIT5V+E387NrFSH4YoQ7UXD3S/Y0VX0pNYQa8EH40n3YyqzxP+StT66rRi9pHIQ3uV0Yq1JXwW2fAbfU9PQQHoJeDaqCU4lQyplU5u7ishdFHK55qYcKZl42Kryb5qJwVpkB8C7d4WqiIl0vHDdZYmlkxc0c4qU/nJGNGmLmuMF0FZ9Va5xwdxkJc6BlkCq7bjlsmbwI3hAJHHlLSIMjrLwrh21XbR2TB3MSp/8sOtx5ZgjoMhhQt0g8OQj8iYemQINaGaW2cKOXzn8iB4W4pQ1tHxQKWBHw== 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=giblcuSB1arYxs8axtjtk1wOeJHQs8qbUFZak9uzzVw=; b=VxoUXE7DNW8TvRX0NJBbV/Y7l4WVhJEpEjOU1qOsRspjD7ReR0ob5klV1LSeWoLMNkJdKBusKO1mnbJE7l8HOpcdJsdAh5Cx9QZyJJxM7pKOik7H25jgCHELItooN0mAUKYv/0aPCqyoukSWLq3zK7R6JMCn7pVfWPZ32PqZKhiQJQPOvpLz4qjnEthJIkprXT9UQ4VU6/uInOfznJnww1OAE6IO870Hoandk/jx+ezM+zjZrDjC/6Ba4DmyaFHcYqJPR4yWg/rxTS84/qPUoqJ1jxIA1ep57dwnETQArMuOzhhwiwgo2yjC2/cO/o7beZ0xCpb9gLlL8Q/Bm0ntZA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:50:15 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:50:15 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:47 +0900 Subject: [PATCH v4 7/8] Documentation: gpu: nova-core: Document fwsec operation and layout Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-7-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot X-Mailer: b4 0.14.2 X-ClientProxiedBy: TY2PR02CA0048.apcprd02.prod.outlook.com (2603:1096:404:a6::36) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 1aef1715-ec75-4f1c-858e-08ddbdebb188 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?TnNLdzRxaDZwNkE1ZmQzL1BGTldyMitNZUdVL3pIOUo3cHUzeDBWOTZUeElq?= =?utf-8?B?K21uMUVGcmJESFlNdG5WeE0zd2dub1dlR3pXVkNBcGozK0s5aDN3N0xOTmJE?= =?utf-8?B?LzkvRlB5TUcxTGR2b0tYdDdRbU14TkVJQjZCM0xRbm5lUE9lczdKYjNLd0hj?= =?utf-8?B?eGRRZ3F4UkIzWWJSWUo2dXdFcStiL1VXZ0M1b3c0K2hTc01EYm1FNmV6cmow?= =?utf-8?B?TElXckQxUitBV2hlakJ5S3BqVWpQUEJIY0hNYTRxdTYwaUlib1QrcWFWYXhY?= =?utf-8?B?QjFJbFVLSTRBY3VmY1VvUFlaOXZGdUFJdmZ4UzdGc05Dam9SMnRjUkZTRE8x?= =?utf-8?B?eU1XTUdJK2FjeC9LSUc2cjFRM053UG8xbzh1bVptZWszUG1WcWtCc3prWndP?= =?utf-8?B?bnk0K3ZIYWIySGtCOUZvUyt1ZGo3YXBva0lvWjF6N0c3S2VuY3gwQStDWnhI?= =?utf-8?B?RkhyU1UzbGt1WlJ5SU1tbHp3NXRIcXF6cUo5YnRhSWhXdEpxR21zVEhxNjNC?= =?utf-8?B?Sy9mR0VKaVRrRU0rWEx0dlRLdDlJdlJ2anRxeFVuUHZPNUxlZVJGdkszeFpS?= =?utf-8?B?RzYyTEdKa3N4L3J0MWh4R2ZiRk5tTTI2VlNYUGg3ZFB2d3lqdGJadzZrWVc1?= =?utf-8?B?cncrdlk1THNXeWFmamF3QllIckJIUDBLYXpLd0g4N1pKemlqc3RWaHFXWDlh?= =?utf-8?B?aDVmbUxBdUduVGlkSkxKU3pTbDBSYVBQL2tiaUsyR2k2WUFhRnJyZ1lTS01B?= =?utf-8?B?QnZTazJHK0xERy9Ha2ZGbkhxL0NWUlFVaTZlbUsvaGJGUTZoeFlPMXZmVEZt?= =?utf-8?B?WXRoektycms1NHJlbElyT0dneC8wZVp5SkhHb0lPU3FsaDdhTThZbGU2QXNM?= =?utf-8?B?YWwyOFp1eUt0OWJHeGRkWUlRbkhkc2lYZ0NCOUVaa1NZSTRVdTg1RUJDaVI4?= =?utf-8?B?dDdMT05xdXRoc2FoRFZyT0k4VVhkbWFzM3R2UENQa29PYXk4NHpOQk9ielJn?= =?utf-8?B?aW41QWhxaEQ1djlydnVEcElZdGQyajBMeURPSGo2bVJiWGhWU0ppSUpqbks4?= =?utf-8?B?dXI5RHExNloxUTljYnYwS09HSCtWL1RxckU4V1dmN0x5Nk1VbHlmRFRVS3lE?= =?utf-8?B?TlRvaDlsQytwUFk2VFJFblhsSHIxVXpFLzAzUDQrKzhpQjBrdmNSSGhhcWI1?= =?utf-8?B?cldLTU44V0grNmFuVEE0ZXJOQS9mTDNjQjZPZENLR201RE1KUTFUazJrZVds?= =?utf-8?B?OWFYempLSGtRUDVWTHRTVmNHQUVtb3dEa0hZSjVtUkpRZUxyTTBnd3FiV3py?= =?utf-8?B?T2w2QmZJeTc0MHFtTEdoYWNXNnNXN0pITmRVZjVrclYzU3JLcEJILzZmeU5U?= =?utf-8?B?ZUs5cEltSGN3aCswVDhzU2tFWXdZTEwrazQ0aEd0L0plNG94UDZZOWhMTVkz?= =?utf-8?B?WElOdUlUV1ozWm1aRnFQQzB4a3lCVHBPZHFRSm1PdHg5aXA5ZVRHdys5aWov?= =?utf-8?B?bTNHRVJsaWxySWVtRDhSdVRPRUt1dGxMQTFTalcyWDJ1L1pRdGxjVVpmdVMv?= =?utf-8?B?a1ZaeURNUE4rZldrN2Y5WWIvOEx2UThvWjJaNFF2Znd2UC8ydnFma1Q1SDMr?= =?utf-8?B?VTVDZlFmc2syN0kxRVllcGtBWHkyNFV3Zy9FL3kwLy9Mc0VKemdpdTJId1Bi?= =?utf-8?B?Z3Y2L2FsZ2d1dlFBaWxXbERvejJlMEdVZUZ2MzZFRUVXWDVuWFpOS3JPVUtJ?= =?utf-8?B?R3BNTktVNTNKLzdqR280QUtObVp2R0Z1L2ZrWjI0aklRN2s3ZExOeWpNelgx?= =?utf-8?B?UjhqbHVJdmNXcEZSZ1pZRzZrUFhXMWlXcUNJOGFiOHdOZ3ZBNnpzTkRxVmty?= =?utf-8?B?NzdmdVRKT21wMS9zd0NqRVAxYldNUFlNbEp4YTNIMXlmMGc9PQ==?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dkhDanFuQjBqQm1ST3RKVDA2MEQ4NzJRWFhPTFI1dnNBZE1FaS9Ray9kSy9U?= =?utf-8?B?RldNYmRrdDdndlRUdnpJSytnSTJ3dkRpNzdqdktBaTRLOExKSVViNWpNK2NN?= =?utf-8?B?bUdpcjVVN3p5b3JJSjVoSThLSXZqYVlKWFdjaDB1MkJWRjJ1QmdrenBQTE5B?= =?utf-8?B?cjFWR0kyZTlvK3N0YkJKVU9HeG5NdmdxdEpoaVFiWEpYTWt6ZkZJbkpuNW8w?= =?utf-8?B?eUMwZldET1BFQi9RQVdoN1VuTTZsY2FvYkRhRkNLQkQ1bTExU3pQbnJSaStN?= =?utf-8?B?WEsyUWpDQmFlbktFM2RaZzNjUjBsaUZ4b1VKUkN6U28xNW4zNGJ4RnZmek5B?= =?utf-8?B?YTMzWGU1RlV3WGtJMnpobEZ3MVhvTGxGNk02OXFhYkxqQklHNWdwN2E1R3Yz?= =?utf-8?B?L0t1Wk03NncrME4za0VyL01xVzVhMEZJSjVRT0t5cjgxczIrV3Y1QnZpdXo4?= =?utf-8?B?VGdEYjNzcjluSlE3UDhTdWRYdnBGZnVzekx2REZsZ3h1Ti9ORzErQ2pvaUVL?= =?utf-8?B?Sy9xNUJpMXpDaTQzVXFza3VCSWNwZEpDZkVtUXdEU3lHbURvMk83Tm5lL1lv?= =?utf-8?B?Wi91bE83VmJlUllVUW84QzV5VGRnRXk3T1hQME1KSGNtYVhhVWk2N09hVjJZ?= =?utf-8?B?UVlmNC9mUnpyK3NBOGF3OU5xVWZmOHdGcUhiZDZncFdrbUx2V1IwaXFHRmVH?= =?utf-8?B?MFdwbnZXclhqT0NMVGFqVnRnMENyck5ZZkZqajRrUDRBZ09ZeE9CU2VPdk4w?= =?utf-8?B?c2dUTjBhZVZ1SXQrdEl5ZlZTUy9IMHFZZEdYWkJXTTBtNDlDSUNCd21KMmI2?= =?utf-8?B?SURRNElQWUkvaWJweHZTY1UzYnRlbm9UYlMvb053OUVmSVhHRmVjczR4aWdL?= =?utf-8?B?V1doZFN3em1YdTVPYlhzRHNEaE1VNEE3ckFUenY3NkVwcGZmdlRUR2UzWU1W?= =?utf-8?B?eXVMa3NtRnpYMEZHVjh3UDh3WXQrd1YrVTc5ZkpmYy96bGhldXBUWFF1Ym9a?= =?utf-8?B?bE5RWWpBTGJPWU0rVFd5Rm9icTQ4YUpNTkJuVXBPQXlhR2MrVHp0M3dENFIw?= =?utf-8?B?R0h1anZvY2N5OFRLQXI2ZmhCSmxadXpUZG5tSk1VS1dWMlNIbjdZdTVZR0VM?= =?utf-8?B?WmlwVTVMcmNTWjhXdTRlaVFzTjNLWmkzQlU4WEYzU3I1T3FnbFJ2S1RjdHBt?= =?utf-8?B?Z011c0NzQnQvK0NIeXd0bG4wa0dPeFhsN1N4NG91Yy9YUWVJMFVoakVYTFlL?= =?utf-8?B?a0RpNmc1bExzbk1FcnFJMzh4WThTdlhZOUFIT1BCL0thd2M4ZHRUdjkvVXR1?= =?utf-8?B?cUJDR1NySnZwc1hTa1ZjNUc0NHEvWTJ3NzdQRmsxSVhWSFBhc2F3ZnFCZTB3?= =?utf-8?B?UjJGVmxIblpHaUxZcHVOSmNVVkpIci8vTGVDRStKeW90RnFHRldkYkttU0wr?= =?utf-8?B?QWxzQTZJazFBL0VjVFk4b0ZrWjd2MitCWGVwaU0wcEFyd0VpZUVrd0hjUUZQ?= =?utf-8?B?OWwvdUJTOERNVGJIWkxQVUdiQmtucC83NzlGTjBrN0lXV0ZaQmNwK2w4Z0pK?= =?utf-8?B?ZDY1NktBT0FaVm1Scnp2MUZjSk5rdkY0QzR3Sk56ek52cVVpaEZ1VDlIR2dt?= =?utf-8?B?VitOZmYwRVBiaXNIMW5xeG9tVjdFZW5pVFlmZEJiTWY1TFVtRU9iMFFoSXg2?= =?utf-8?B?S0VPN2NxTHRkUkh1MFRpQWZOSXFDd0lZTDRGSjVlY0p1aW5SNHRKU29JKzBp?= =?utf-8?B?YlU4REVOTUUxYmxLTnpqY0Y4YXdjUTE2alhMRlpLZUUzTm9uVWdaelNQZmhQ?= =?utf-8?B?SklVZnZsS3Q0T1B2NlNMTkpNVTNaclRIVnI1QWF4ZjhvbXdZZURRM2NkZVN5?= =?utf-8?B?OWpjOFhkNzlQbUZpaWdTSkpUQm1Tdng1eDZqQlhVNUViclZJYmtsYkpkMUll?= =?utf-8?B?Qm9rS2JlOUxFREtxeGR3cG1qYmlqaXZXckNtSDJyZ3BXK2dpdVh0T2VnUk1G?= =?utf-8?B?OGRDc1ppWWJhWmMxWSs4eS9ER1RiYzh2VXFqa2MxR3VVY08xVmwwU2t0b2VZ?= =?utf-8?B?OE5jemcxaVNCUnIxenhkaXBISlJoaUZlV0lpYkJla0x1eDVZTXVIQmF1SjUy?= =?utf-8?B?Qk1ZclNNUExFYUlyK3p3Tko5UDE2N0FjZmtjWDNrendGWlJHU28rNDZRL0pL?= =?utf-8?Q?a9Odgu/RZOFRt3z77J6D+/B2b2r9v4aU7wzlVZR71ER8?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1aef1715-ec75-4f1c-858e-08ddbdebb188 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:50:15.1152 (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: tW9WaikKL6QZaEFhe7Gn3Elwt31/4w1UuXkjmrLTTZTRFXSMjchFO12VbH1Lcq7ncUH63zjzm3uGLKFh3syrtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes Add explanation of fwsec with diagrams. This helps clarify how the nova-core falcon boot works. Signed-off-by: Joel Fernandes Signed-off-by: Alexandre Courbot --- Documentation/gpu/nova/core/fwsec.rst | 181 ++++++++++++++++++++++++++++++= ++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 182 insertions(+) diff --git a/Documentation/gpu/nova/core/fwsec.rst b/Documentation/gpu/nova= /core/fwsec.rst new file mode 100644 index 0000000000000000000000000000000000000000..c440edbe420c39d7f405316a134= 72f8a13fe1d8d --- /dev/null +++ b/Documentation/gpu/nova/core/fwsec.rst @@ -0,0 +1,181 @@ +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +FWSEC (Firmware Security) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +This document briefly/conceptually describes the FWSEC (Firmware Security)= image +and its role in the GPU boot sequence. As such, this information is subjec= t to +change in the future and is only current as of the Ampere GPU family. Howe= ver, +hopefully the concepts described will be useful for understanding the kern= el code +that deals with it. All the information is derived from publicly available +sources such as public drivers and documentation. + +The role of FWSEC is to provide a secure boot process. It runs in +'Heavy-secure' mode, and performs firmware verification after a GPU reset +before loading various ucode images onto other microcontrollers on the GPU, +such as the PMU and GSP. + +FWSEC itself is an application stored in the VBIOS ROM in the FWSEC partit= ion of +ROM (see vbios.rst for more details). It contains different commands like = FRTS +(Firmware Runtime Services) and SB (Secure Booting other microcontrollers = after +reset and loading them with other non-FWSEC ucode). The kernel driver only= needs +to perform FRTS, since Secure Boot (SB) has already completed by the time = the driver +is loaded. + +The FRTS command carves out the WPR2 region (Write protected region) which= contains +data required for power management. Once setup, only HS mode ucode can acc= ess it +(see falcon.rst for privilege levels). + +The FWSEC image is located in the VBIOS ROM in the partition of the ROM th= at contains +various ucode images (also known as applications) -- one of them being FWS= EC. For how +it is extracted, see vbios.rst and the vbios.rs source code. + +The Falcon data for each ucode images (including the FWSEC image) is a com= bination +of headers, data sections (DMEM) and instruction code sections (IMEM). All= these +ucode images are stored in the same ROM partition and the PMU table is use= d to look +up the application to load it based on its application ID (see vbios.rs). + +For the nova-core driver, the FWSEC contains an 'application interface' ca= lled +DMEMMAPPER. This interface is used to execute the 'FWSEC-FRTS' command, am= ong others. +For Ampere, FWSEC is running on the GSP in Heavy-secure mode and runs FRTS. + +FWSEC Memory Layout +------------------- +The memory layout of the FWSEC image is as follows:: + + +---------------------------------------------------------------+ + | FWSEC ROM image (type 0xE0) | + | | + | +---------------------------------+ | + | | PMU Falcon Ucode Table | | + | | (PmuLookupTable) | | + | | +-------------------------+ | | + | | | Table Header | | | + | | | - version: 0x01 | | | + | | | - header_size: 6 | | | + | | | - entry_size: 6 | | | + | | | - entry_count: N | | | + | | | - desc_version:3(unused)| | | + | | +-------------------------+ | | + | | ... | | + | | +-------------------------+ | | + | | | Entry for FWSEC (0x85) | | | + | | | (PmuLookupTableEntry) | | | + | | | - app_id: 0x85 (FWSEC) |----|----+ | + | | | - target_id: 0x01 (PMU) | | | | + | | | - data: offset ---------|----|----|---+ look up FWSEC | + | | +-------------------------+ | | | | + | +---------------------------------+ | | | + | | | | + | | | | + | +---------------------------------+ | | | + | | FWSEC Ucode Component |<---+ | | + | | (aka Falcon data) | | | + | | +-------------------------+ | | | + | | | FalconUCodeDescV3 |<---|--------+ | + | | | - hdr | | | + | | | - stored_size | | | + | | | - pkc_data_offset | | | + | | | - interface_offset -----|----|----------------+ | + | | | - imem_phys_base | | | | + | | | - imem_load_size | | | | + | | | - imem_virt_base | | | | + | | | - dmem_phys_base | | | | + | | | - dmem_load_size | | | | + | | | - engine_id_mask | | | | + | | | - ucode_id | | | | + | | | - signature_count | | look up sig | | + | | | - signature_versions --------------+ | | + | | +-------------------------+ | | | | + | | (no gap) | | | | + | | +-------------------------+ | | | | + | | | Signatures Section |<---|-----+ | | + | | | (384 bytes per sig) | | | | + | | | - RSA-3K Signature 1 | | | | + | | | - RSA-3K Signature 2 | | | | + | | | ... | | | | + | | +-------------------------+ | | | + | | | | | + | | +-------------------------+ | | | + | | | IMEM Section (Code) | | | | + | | | | | | | + | | | Contains instruction | | | | + | | | code etc. | | | | + | | +-------------------------+ | | | + | | | | | + | | +-------------------------+ | | | + | | | DMEM Section (Data) | | | | + | | | | | | | + | | | +---------------------+ | | | | + | | | | Application | |<---|----------------+ | + | | | | Interface Table | | | | + | | | | (FalconAppifHdrV1) | | | | + | | | | Header: | | | | + | | | | - version: 0x01 | | | | + | | | | - header_size: 4 | | | | + | | | | - entry_size: 8 | | | | + | | | | - entry_count: N | | | | + | | | | | | | | + | | | | Entries: | | | | + | | | | +-----------------+ | | | | + | | | | | DEVINIT (ID 1) | | | | | + | | | | | - id: 0x01 | | | | | + | | | | | - dmemOffset X -|-|-|----+ | + | | | | +-----------------+ | | | | + | | | | +-----------------+ | | | | + | | | | | DMEMMAPPER(ID 4)| | | | | + | | | | | - id: 0x04 | | | | Used only for DevInit | + | | | | | (NVFW_FALCON_ | | | | application (not FWSEC) | + | | | | | APPIF_ID_DMEMMAPPER) | | + | | | | | - dmemOffset Y -|-|-|----|-----+ | + | | | | +-----------------+ | | | | | + | | | +---------------------+ | | | | + | | | | | | | + | | | +---------------------+ | | | | + | | | | DEVINIT Engine |<|----+ | Used by FWSEC | + | | | | Interface | | | | app. | + | | | +---------------------+ | | | | + | | | | | | | + | | | +---------------------+ | | | | + | | | | DMEM Mapper (ID 4) |<|----+-----+ | + | | | | (FalconAppifDmemmapperV3) | | + | | | | - signature: "DMAP" | | | | + | | | | - version: 0x0003 | | | | + | | | | - Size: 64 bytes | | | | + | | | | - cmd_in_buffer_off | |----|------------+ | + | | | | - cmd_in_buffer_size| | | | | + | | | | - cmd_out_buffer_off| |----|------------|-----+ | + | | | | - cmd_out_buffer_sz | | | | | | + | | | | - init_cmd | | | | | | + | | | | - features | | | | | | + | | | | - cmd_mask0/1 | | | | | | + | | | +---------------------+ | | | | | + | | | | | | | | + | | | +---------------------+ | | | | | + | | | | Command Input Buffer|<|----|------------+ | | + | | | | - Command data | | | | | + | | | | - Arguments | | | | | + | | | +---------------------+ | | | | + | | | | | | | + | | | +---------------------+ | | | | + | | | | Command Output |<|----|------------------+ | + | | | | Buffer | | | | + | | | | - Results | | | | + | | | | - Status | | | | + | | | +---------------------+ | | | + | | +-------------------------+ | | + | +---------------------------------+ | + | | + +---------------------------------------------------------------+ + +.. note:: + This is using an GA-102 Ampere GPU as an example and could vary for fut= ure GPUs. + +.. note:: + The FWSEC image also plays a role in memory scrubbing (ECC initializati= on) and VPR + (Video Protected Region) initialization as well. Before the nova-core d= river is even + loaded, the FWSEC image is running on the GSP in heavy-secure mode. Aft= er the devinit + sequence completes, it does VRAM memory scrubbing (ECC initialization).= On consumer + GPUs, it scrubs only part of memory and then initiates 'async scrubbing= '. Before this + async scrubbing completes, the unscrubbed VRAM cannot be used for alloc= ation (thus DRM + memory allocators need to wait for this scrubbing to complete). diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index e4e017d926767284b5cee844d8dba32be6bc064c..e3650f53ff53113f31f63f67cf2= 6116b5c070693 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -30,3 +30,4 @@ vGPU manager VFIO driver and the nova-drm driver. core/todo core/vbios core/devinit + core/fwsec --=20 2.50.0 From nobody Tue Oct 7 18:22:23 2025 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) (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 89BBE236451; Tue, 8 Jul 2025 06:50:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957425; cv=fail; b=oiBUXitmDiWL7ZQALW7VvP/gjDBxRkXq/mJKFuxSNvxvCW2xt20Fm7eMKQai0vnw1GJnY2b9Qao+8ly4MZR1xVN8NgdPkuswNpVbvEhlD3ghgE3YB/gv4D/NhbpSIXL6nCYj+ujXcRFAN+Og8862K6AxJ/T47dN6R41zyL7zHqI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751957425; c=relaxed/simple; bh=5hsUSQO5rgZd6557NG49zVSK8UG0TgYYnh/gkMWTsfs=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=ruAk7o3EZm49mgL9dz6v03wDboDP86n8gsGZ1jDdZ70nRzjgq378J3ZEV4nvdg4O7Tm9vUjh5kjy9LUpRkKtNmeDp6wq8pLDauxqOsew0On6D6Mzd10pQUUybWd/xnJyKatm2JkuI1zb0uAmKYEEDvHV5H7eiMAZZ2NU0d5xKPM= 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=EcmGrWwH; arc=fail smtp.client-ip=40.107.236.41 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="EcmGrWwH" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WtYDngunMWiXdoBL3OOXjXJS43Nc7jHUe75cBetfkDiiUOGvtSCThpYLy5J3I3Kq9IG2JxLQ1yzsGfTUNikE3x0M5GR5V2iXheSACsHZ444J/Wld8NZGRUDkIleChe8/WXCy6GXXrlWXupW/UPaD/rkv+hzTqFJMRH7PolMUaa6fa67E1aUtvnhbf/R+B5Ut+kEM6wjwglayWvKLjlOZLKlErpPiMAz3KDp4b50AjoXU2pObFmzAZ7B1f8WZMS9AaEcDKUI/Hd7rPXKVkwgThEDtK9i+lqP2lxiRCSX/T0oPzzvpGdVHgoiGU45FF2xX6V9m2cjNNHqguEKVB6n35g== 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=fqqvMGehSSegS97UBu8iWP2iGx638ghw8px5XVVp+E8=; b=sNrCJxnvyWmf1vwqjCXzBHsrTYr5uqV/BOobF5/fhQCg8ik7Ol2zuk+R2+KoTzhE86sdDOWVql7qXmp9xpS4MKja4AxQtT1b/n0Sw3dqpv4VG2M4ES/Vhki4GqH83bJT38KdE3JeK/fGGJJxWZJWkVgoWze/9aYnh3RkRxzpg/PxhcVtHZM/iKm5Iw3arIQnzNOI4kUORbe3uz0BSmP8/hwFaCmdmIVz96FVvF/sSJLbRSmXKh65pK5XvwDV2XgglFX1BL4GvZMeyDWup0w9G909OhFUOBseR5baZQ8tGpnBBZgvdAS+c0mwqMi+WZoA8EjgxaAZydS47/Rk6mrxrw== 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=fqqvMGehSSegS97UBu8iWP2iGx638ghw8px5XVVp+E8=; b=EcmGrWwH/CA3DYSXG2AQXm7K0W5iY2t+ZWImfQ4vxixkKqBuHEKXhdPOyiiVX5vLlWcnfSEoGeN7dBd4xmcSBkhZ0loob/YmeRDf2zgP0aU/w1+1waq6XaQ96lvZzHrLTOsiec0dT3QZOFe/qbeIcWvZtm8uVsj03QCQi15sA4J4GRvWP1HVouHfhvnxfo+utqcXRrlhZszqVYqns9JI8HnxgR9bGiJrl6DXiWAt0J8xbH7VeB0pY+knImFYAmRR7Xy7l++woPzGVcnDLEFnIUlbbSnaBpRkBqXt5kSjC4waRJZteCcGPxiNFTUjMOGKNCJ9JjERDZj4I8gadwEO9g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) by CY8PR12MB8412.namprd12.prod.outlook.com (2603:10b6:930:6f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.23; Tue, 8 Jul 2025 06:50:18 +0000 Received: from CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com ([fe80::6e37:569f:82ee:3f99%4]) with mapi id 15.20.8901.021; Tue, 8 Jul 2025 06:50:18 +0000 From: Alexandre Courbot Date: Tue, 08 Jul 2025 15:49:48 +0900 Subject: [PATCH v4 8/8] Documentation: gpu: nova-core: Document basics of the Falcon Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250708-nova-docs-v4-8-9d188772c4c7@nvidia.com> References: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> In-Reply-To: <20250708-nova-docs-v4-0-9d188772c4c7@nvidia.com> To: Danilo Krummrich , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Jonathan Corbet Cc: nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, rust-for-linux@vger.kernel.org, Joel Fernandes , Alexandre Courbot , Bagas Sanjaya X-Mailer: b4 0.14.2 X-ClientProxiedBy: TYCP286CA0024.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:263::14) To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18) 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: CH2PR12MB3990:EE_|CY8PR12MB8412:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ae7b893-dd02-410a-c30e-08ddbdebb3b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?UzdlMFYyd1BYb1BvLzU0YXlrVTVmaTJmVGlQaDBpT0RVdjgvMmtIb2ZOK28r?= =?utf-8?B?LzJjN002VTYzczBkT2wwSk5sTk5SNHJJRDYxSnpWaENUd3REVnFEVk93RDJj?= =?utf-8?B?SFhzb0J1NVIrdFFJRUpHM2x3Q25OWmVERWVVekRhUU00ZmRkd2NiNmZqdWVF?= =?utf-8?B?V2N2VXA5cnpkVFVkRE0xSURPbVhRbHpud3diZFRzbWhxSTVLb3p6QWxJWFZa?= =?utf-8?B?Sk5LNUtDemRIcmFEQ0J0K3BUbWJGRXJqMlFHZk9tVGtPNkNRWldNY3JackJD?= =?utf-8?B?VXR2NkxmZ3BJNTlsV1p3anlVcWFSdnkybFZBc1JKcVUrYmlKcXFwUEZLMXNI?= =?utf-8?B?aFJaUk5BWUd1S2xxdEl6VWZHS3RXMHpxQllUKzJRclUrM3lQcHUrbGUxdjh0?= =?utf-8?B?TjlqMmp2MmhMYlNsM2pYSnVWOTU0eWVmVGMwWUplUHpiQ2NtSEZIRm90QjFD?= =?utf-8?B?WlNHd2ZaTGNvVXZjZjVmUWVYazJlYUhpTXFtM3JidWlFZ2JoanlCZ293Zlhv?= =?utf-8?B?dTVtWmFyYlRtd29WWEV3ZGZvYWZDZmxkN053S1hqSGk4NTh0a3oyQlNNaVJV?= =?utf-8?B?OUwzWkMxaXk3RGtpS29VN1dvNFYwUkZxWGNQSzNYVGg0ZnBEZnlJOStNYUlz?= =?utf-8?B?MnVudWNSUnNDSHQ1TkNrSk9rT2pjVC9DWGluNmRUSURicW1aT2V1T0NGUzl3?= =?utf-8?B?MUtTK25kblNqMHJMVGZMaFZBM3BUaUpZeDc3c0NXMjBUV1U3L1VIdXJLN1h6?= =?utf-8?B?ekNNWFNLSkhDSTNxMUdLTURzK05vejhwZzBlL205Zis3K2ZMN09wZnJYMHQv?= =?utf-8?B?cnJzaWZsVjgxbldTR2EwM1pRV2M3Nm1ESGQ3VGQ1VU41UUNtNVd3N21iWmxj?= =?utf-8?B?RmRadXhiT0I5UFlRcUY2cWRERHBIK2ZtZmoyNjkreUNYWmEwVHZMTnNhWFN6?= =?utf-8?B?T1JIZWY5OUcrMkthbnkyRTNIdUVMZEVGZy9YK1IxRlJHSFkrczZOZGRQdStU?= =?utf-8?B?emFGcVk3RnZxSTMwNmlUVlk3bzNReVhYMmE3ayswcHhzME13SU1vRGMxbG15?= =?utf-8?B?REZVcFB2MWVOVHRCZkhLOWxFZlpFY2NZbGJwclE3Zk1jdGg5eDNZaHJVTHc5?= =?utf-8?B?Qm9BTmNvTUd5anVJc3p6Qit3eGt6WjRPZXFGYm5teGgxSk84V1U4bFZ0cmlR?= =?utf-8?B?a1lXamlEbXRBYWxISmJxbmltOVhjRStXa1BwYW0vRnhsSDN6dEdsZlZlTk4w?= =?utf-8?B?ZlhwTDd6KzdBWlkrUXR3c3RkYi9SOGoydnorYldacU1JMEtVSlozWUdrYXJL?= =?utf-8?B?NW1yVE1Zc1ZoeEVrOFZmU3RBSk9nSUhZVFA3WEpZTmFVWFlKdVJ3SEc5ZUxC?= =?utf-8?B?dzBkbmVJRUp1L2NXRlJSSjBjQnI4SUlsUkpQcmZReUNCNVVCZ1BwY3N1Wlkw?= =?utf-8?B?MDlXWHYxMDlCRGpIYnJRcHdaY3ZrVEtLS3lRbXlCQ2VQV3lvcUp6YVJ3NEhY?= =?utf-8?B?MnNjelpQdWEzVTB4RDlwZ0hDZGtBenpOQk1tKzUzRFg0VWh1eklWeVl6QXZj?= =?utf-8?B?UkJxa0M2bk1MYy9HTnRqWFdEenp6QkloNGlobFc1ZFN2SG0yOVFUcjltK2FX?= =?utf-8?B?dlYvdnZra0xtTTRNMWZRcCtOWEtlNEE2VS95UmNNdEw3ZlFPR29nNkU3NW9a?= =?utf-8?B?OTQxY2NDeTF0RSt2cWdBbXBIa3dMNndHcml1M1JsbzlaMWJPSHVodk53ZnJk?= =?utf-8?B?aWFJQWRuQXE2M01lU1NyZVJ5NytGUGdGbUh3eEY5OWZQcTJtbER3eXhRVGdD?= =?utf-8?B?bW1sZ0NKeTdSdFVXSWc0SEtlcVo1ODBvRTNzWkpRQzBwMzROWVVEWFpiUnJD?= =?utf-8?B?VkMrSWZpbG9BYjNaQllIR2lGeTA5a01palJTajNhV2Vwc005V3U0bjFLeGhk?= =?utf-8?Q?/l/lu/CdpGA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(1800799024)(366016)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Wm5HODUxcU5HdGh0cEpQajJRQ3FJbVFFbGtkNXJTeEtjOStBSGdVWFNjRC9s?= =?utf-8?B?a0ZNOTA3NGowVFBzVmRERy9MOVc1d0NWRHpYTk93TDgrcTB1clRLc1VTck9U?= =?utf-8?B?QTh6K0UraTlpM1FlT2U2QmU4MlMySGs3OWFMaTRTZDNBOTVLWjN3NUJtWVkw?= =?utf-8?B?QXQ1aWcvZHFKWFgxUmpBTmw2N244aFd4ZXVhU1FxRGdYVnoybzNSZzVFaDBk?= =?utf-8?B?UGNrVndWNmtXYnZ3UzVHKzhYVmxrWmt5d1dHME40dkUwaHZMQkd3aU1KTE85?= =?utf-8?B?MFlDaHBLM01WN0FuMm0xdkgrZ09iM2J2MHcrZWlLejYyL3NvWjc0S2hqb1lm?= =?utf-8?B?ZGFIL3dNcUhxNEVidkJJdHRrams4MnJTM2ZNUkx0M3lxeERiT2hGSUgxNnZk?= =?utf-8?B?Ky9RWnlyRWVMSzZWdTJ2YnhMLzBCN1BaWmNnOHJsLzRNSWVpc2pTNTNMbFVl?= =?utf-8?B?ZVhrVmRMcVlhZmpiMnlmTWtETktsdTg2Y0VMVlBKUnpNQUxrb1RBdzR0RWhs?= =?utf-8?B?YVB2QjBmWlV1K1FnOFRNcTdBZ1VMNVJxVWVEcUp3dUlEakNrbFhreG4wUHlh?= =?utf-8?B?cEhLZUNQSTN2VmR5Z2tXUm5QaEhxYnVYb0hYUlBvNlR5Unp0YWdxUk5sa0th?= =?utf-8?B?dUljL1lGb3hMTUZ3TFlwano1b2dQU0t5NThCbm1TazE4RjBHSlJUWjA3cDdr?= =?utf-8?B?STkrQjZLVitqNzhsdm1BdkZJeC9MUmEvQUZvZkJQOHJxN0pQZ2R3WWtsSXIx?= =?utf-8?B?bU9IcFVDWlArZFJYMXBHMTVIVjlRZmxZTkc2NjhWWjhrdDZqbDZja29OWVRO?= =?utf-8?B?OFFtVnMxaTJZV3A0R0ErWStQNy93TVY1M0tMbjVCZmVoZ1FMbjNQN0tpeFpX?= =?utf-8?B?QUV1YSt4ZFhVSUhGdE5QazFlNW1OMVFQTmVIZmdFck11TE9YZzQvU1I2WStY?= =?utf-8?B?WXFoT2hNYXkvRDdzWE4zRysrdzR3Yi9BckZZNlVKcjJmanpaRjNNbDRkdGJV?= =?utf-8?B?Zks3U1RSN0JzUTl3ZUtmN2dQRzlaVmw0cURKNUl6eEUxTXJLSWRuV204SnJY?= =?utf-8?B?MERxSUlneWtraHRiMXRYMDRCeFZFSnU0WVIvS2RLNWEweU03ajJON0I0T3JJ?= =?utf-8?B?NnZDTjdyVi81T1FQamNWcG1MN3JzUkxMZW5IeU1qVmJadDlEYm9pKzFGS2w4?= =?utf-8?B?bkNKdkUxeDNxVmp0M3NYL1lxQnNZclNzYVF1bVhOQVBHY2JJZWFJNU5kbkFr?= =?utf-8?B?bkN6RkpHeTc1TExSSFphZmdXM0ZLdEhIc3YxcDQzMVN0ejdhL3NJYVMzSit1?= =?utf-8?B?cjROMi83TUM1d1FxU1Q4Sy9QT1J1eEw5WE1oUkx2SlR4ZDZyQWduQVRoa0Y0?= =?utf-8?B?SEpUa0xYbmdES1FKbWp6MWh6YWkwcVVJRnZhaE1tclBKT1F2K2NtMC9GcUMx?= =?utf-8?B?VngwS2x6Q0V3RTFSZFpNdm9ONXlySUxwVHFwYWR0aGNWbmc0cytLVnNkRHMz?= =?utf-8?B?OC94UGdyYU1ia2J2WFBJWGtuSWZlRmFReG9aSkc2SzlHd01iaTRRM3FOKzIz?= =?utf-8?B?eWg5WnFzdUNNNCtrbExrVmNoRGw2Tm5YMWR2bzc0V3hmelFhSG9qT085RmJ4?= =?utf-8?B?clVNQjR1S2NadmdIRkMrOFZjU3Q1UVF2ZW1aLzErbFJOUTNuT0hYZlBFZzBM?= =?utf-8?B?S2luekVMQnBTMTVUVVJieldRcUtZbkI0NEVFOHcvdUVXMGpBSC8yUm83K3lB?= =?utf-8?B?b0FDNVc4eXRuSXZIVEhCQitCUjRvc1VIY0Z1YVJ4R1J4OS9rNEgyaG0xaWQ2?= =?utf-8?B?YzRIeGFvMTFoNkplWCtMSjFhVkVsd25uRTQ3THdyVndpM2NVbEt6WW4zVUgy?= =?utf-8?B?V3Q4N25tNURkNUx3TmFzZURpMHg1bjVzL3hhZjNYUUZKRmpFWkN5LzA5Qy9Q?= =?utf-8?B?SGd0S0kyRVp0REpiQlZXZCt3MGN6SjZBejVONjEvZkZ0cE90L2NlRnVRYWtO?= =?utf-8?B?RWhLbXFKd1pzR1VNZ0lKc1hXYTN5cE9JcldxZGdBRFVUZVZyMlBRdEh4S285?= =?utf-8?B?TWFidEcwdjBLT01jcVlKYnZ4enlUQTVScjlvTHMyR0RYaW5BOGZXNG92SHJI?= =?utf-8?B?bzNJRG9qMTdJQ3dydkZWdDd4Zys5QjBzNVMvc296amd6dUpuR0NyeThNQW9B?= =?utf-8?Q?E+rBabqensEz7SAOWdZ7z4SjNNkaXbVBy9Sxj+GFsY2d?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ae7b893-dd02-410a-c30e-08ddbdebb3b4 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2025 06:50:18.7766 (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: O+MakmoYhlHnNXWtfCkng7S1np4w5hQnNMfvTnjIRzprwqud0DywBf+4bqKZoMwolGCwja6apmlgVF7R6oyGeg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8412 From: Joel Fernandes Instances of the Falcon microcontroller appear in modern Nvidia GPUs and are crucial to the GPU boot process. Document some concepts which will make nova-core boot code easier to digest. All the information is derived from public sources such as public documents, OpenRM and Nouveau code. Signed-off-by: Joel Fernandes Reviewed-by: Bagas Sanjaya Signed-off-by: Alexandre Courbot --- Documentation/gpu/nova/core/falcon.rst | 158 +++++++++++++++++++++++++++++= ++++ Documentation/gpu/nova/index.rst | 1 + 2 files changed, 159 insertions(+) diff --git a/Documentation/gpu/nova/core/falcon.rst b/Documentation/gpu/nov= a/core/falcon.rst new file mode 100644 index 0000000000000000000000000000000000000000..33137082eb6c14cecda2fbe6fdb= 79e63ee9ca2e6 --- /dev/null +++ b/Documentation/gpu/nova/core/falcon.rst @@ -0,0 +1,158 @@ +.. 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 +Falcon (FAst Logic Controller) +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D +The following sections describe the Falcon core and the ucode running on i= t. +The descriptions are based on the Ampere GPU or earlier designs; however, = they +should mostly apply to future designs as well, but everything is subject to +change. The overview provided here is mainly tailored towards understandin= g the +interactions of nova-core driver with the Falcon. + +NVIDIA GPUs embed small RISC-like microcontrollers called Falcon cores, wh= ich +handle secure firmware tasks, initialization, and power management. Modern +NVIDIA GPUs may have multiple such Falcon instances (e.g., GSP (the GPU sy= stem +processor) and SEC2 (the security engine)) and also may integrate a RISC-V= core. +This core is capable of running both RISC-V and Falcon code. + +The code running on the Falcon cores is also called 'ucode', and will be +referred to as such in the following sections. + +Falcons have separate instruction and data memories (IMEM/DMEM) and provid= e a +small DMA engine (via the FBIF - "Frame Buffer Interface") to load code fr= om +system memory. The nova-core driver must reset and configure the Falcon, l= oad +its firmware via DMA, and start its CPU. + +Falcon security levels +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Falcons can run in Non-secure (NS), Light Secure (LS), or Heavy Secure (HS) +modes. + +Heavy Secured (HS) also known as Privilege Level 3 (PL3) +-------------------------------------------------------- +HS ucode is the most trusted code and has access to pretty much everything= on +the chip. The HS binary includes a signature in it which is verified at bo= ot. +This signature verification is done by the hardware itself, thus establish= ing a +root of trust. For example, the FWSEC-FRTS command (see fwsec.rst) runs on= the +GSP in HS mode. FRTS, which involves setting up and loading content into t= he WPR +(Write Protect Region), has to be done by the HS ucode and cannot be done = by the +host CPU or LS ucode. + +Light Secured (LS or PL2) and Non Secured (NS or PL0) +----------------------------------------------------- +These modes are less secure than HS. Like HS, the LS or NS ucode binary al= so +typically includes a signature in it. To load firmware in LS or NS mode on= to a +Falcon, another Falcon needs to be running in HS mode, which also establis= hes the +root of trust. For example, in the case of an Ampere GPU, the CPU runs the= "Booter" +ucode in HS mode on the SEC2 Falcon, which then authenticates and runs the +run-time GSP binary (GSP-RM) in LS mode on the GSP Falcon. Similarly, as an +example, after reset on an Ampere, FWSEC runs on the GSP which then loads = the +devinit engine onto the PMU in LS mode. + +Root of trust establishment +--------------------------- +To establish a root of trust, the code running on a Falcon must be immutab= le and +hardwired into a read-only memory (ROM). This follows industry norms for +verification of firmware. This code is called the Boot ROM (BROM). The nov= a-core +driver on the CPU communicates with Falcon's Boot ROM through various Falc= on +registers prefixed with "BROM" (see regs.rs). + +After nova-core driver reads the necessary ucode from VBIOS, it programs t= he +BROM and DMA registers to trigger the Falcon to load the HS ucode from the= system +memory into the Falcon's IMEM/DMEM. Once the HS ucode is loaded, it is ver= ified +by the Falcon's Boot ROM. + +Once the verified HS code is running on a Falcon, it can verify and load o= ther +LS/NS ucode binaries onto other Falcons and start them. The process of sig= nature +verification is the same as HS; just in this case, the hardware (BROM) doe= sn't +compute the signature, but the HS ucode does. + +The root of trust is therefore established as follows: + Hardware (Boot ROM running on the Falcon) -> HS ucode -> LS/NS ucode. + +On an Ampere GPU, for example, the boot verification flow is: + Hardware (Boot ROM running on the SEC2) -> + HS ucode (Booter running on the SEC2) -> + LS ucode (GSP-RM running on the GSP) + +.. note:: + While the CPU can load HS ucode onto a Falcon microcontroller and hav= e it + verified by the hardware and run, the CPU itself typically does not l= oad + LS or NS ucode and run it. Loading of LS or NS ucode is done mainly b= y the + HS ucode. For example, on an Ampere GPU, after the Booter ucode runs = on the + SEC2 in HS mode and loads the GSP-RM binary onto the GSP, it needs to= run + the "SEC2-RTOS" ucode at runtime. This presents a problem: there is no + component to load the SEC2-RTOS ucode onto the SEC2. The CPU cannot l= oad + LS code, and GSP-RM must run in LS mode. To overcome this, the GSP is + temporarily made to run HS ucode (which is itself loaded by the CPU v= ia + the nova-core driver using a "GSP-provided sequencer") which then loa= ds + the SEC2-RTOS ucode onto the SEC2 in LS mode. The GSP then resumes + running its own GSP-RM LS ucode. + +Falcon memory subsystem and DMA engine +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Falcons have separate instruction and data memories (IMEM/DMEM) +and contains a small DMA engine called FBDMA (Framebuffer DMA) which does +DMA transfers to/from the IMEM/DMEM memory inside the Falcon via the FBIF +(Framebuffer Interface), to external memory. + +DMA transfers are possible from the Falcon's memory to both the system mem= ory +and the framebuffer memory (VRAM). + +To perform a DMA via the FBDMA, the FBIF is configured to decide how the m= emory +is accessed (also known as aperture type). In the nova-core driver, this is +determined by the `FalconFbifTarget` enum. + +The IO-PMP block (Input/Output Physical Memory Protection) unit in the Fal= con +controls access by the FBDMA to the external memory. + +Conceptual diagram (not exact) of the Falcon and its memory subsystem is a= s follows:: + + External Memory (Framebuffer / System DRAM) + ^ | + | | + | v + +-----------------------------------------------------+ + | | | + | +---------------+ | | + | | FBIF |-------+ | FALCON + | | (FrameBuffer | Memory Interface | PROCESSOR + | | InterFace) | | + | | Apertures | | + | | Configures | | + | | mem access | | + | +-------^-------+ | + | | | + | | FBDMA uses configured FBIF apertures | + | | to access External Memory + | | + | +-------v--------+ +---------------+ + | | FBDMA | cfg | RISC | + | | (FrameBuffer |<---->| CORE |----->. Direct Core Acce= ss + | | DMA Engine) | | | | + | | - Master dev. | | (can run both | | + | +-------^--------+ | Falcon and | | + | | cfg--->| RISC-V code) | | + | | / | | | + | | | +---------------+ | +------------+ + | | | | | BROM | + | | | <--->| (Boot ROM) | + | | / | +------------+ + | | v | + | +---------------+ | + | | IO-PMP | Controls access by FBDMA | + | | (IO Physical | and other IO Masters | + | | Memory Protect) | + | +-------^-------+ | + | | | + | | Protected Access Path for FBDMA | + | v | + | +---------------------------------------+ | + | | Memory | | + | | +---------------+ +------------+ | | + | | | IMEM | | DMEM | |<-----+ + | | | (Instruction | | (Data | | + | | | Memory) | | Memory) | | + | | +---------------+ +------------+ | + | +---------------------------------------+ + +-----------------------------------------------------+ diff --git a/Documentation/gpu/nova/index.rst b/Documentation/gpu/nova/inde= x.rst index e3650f53ff53113f31f63f67cf26116b5c070693..e39cb3163581ea4ff5b441b82e9= efa4282c946f8 100644 --- a/Documentation/gpu/nova/index.rst +++ b/Documentation/gpu/nova/index.rst @@ -31,3 +31,4 @@ vGPU manager VFIO driver and the nova-drm driver. core/vbios core/devinit core/fwsec + core/falcon --=20 2.50.0