Re: [PATCH] gpu: nova-core: fix incorrect naming/framing of GSP-FMC firmware

Zhi Wang <[email protected]>
Newsgroups dev.linux.lists.nova-gpu,org.kernel.vger.linux-kernel,org.kernel.vger.rust-for-linux
Message-ID <20260826111408.34d47a7d@inno-dell>
On Tue, 25 Aug 2026 21:40:58 +0200
"Danilo Krummrich" <[email protected]> wrote:

> On Tue Aug 25, 2026 at 10:31 AM CEST, Alexandre Courbot wrote:
> > The GSP-FMC firmware code lived in `firmware/fsp.rs` and described
> > itself as running on the FSP. This is incorrect: GSP-FMC is loaded
> > by the FSP, but runs on the GSP as the loader and verifier of
> > GSP-RM. FSP secure-boots on its own before the driver even starts.
> >
> > Correct the naming and files used to contain the GSP-FMC code, by:
> >
> > - Renaming `firmware/fsp.rs` to `firmware/gsp_fmc.rs` (as GSP-FMC
> > is not the FSP firmware),
> > - Changing the prefix of some declarations in that file to `FMC` or
> >   `GspFmc` (interestingly some were already correct),
> > - Fixing a mismatch (FMC means "First Mutable Code") in `fsp.rst`.
> 
> Good catch,
> 
> Reviewed-by: Danilo Krummrich <[email protected]>
> 
> >       FSP (hardware root of trust, boots from ROM)
> > -          -> FMC (Falcon Microcontroller, verified by FSP)
> > +          -> FMC (First Mutable Code, verified by FSP)
> 
> That reminds me that I'd like to have a table in
> Documentation/gpu/nova/ listing and explaining all abbreviations.
> 

Thanks for catching this. I got this abbreviation from other patch
comments.

> In nouveau it's a huge mess and all the abbreviations became rather
> confusing.
> 

...

> We already have something is fsp.rst, but I think it is misleading
> and needs to be fixed as well.
> 

I just dig some docs, there are multiple FMCs for different
controllers, here should be GSP-FMC as well.

Alex, you can include the following diff for fixing the chart.

Moving forward, let me go through the fsp.rst and check with some docs
besides other patch comments as the source.

diff --git a/Documentation/gpu/nova/core/fsp.rst
b/Documentation/gpu/nova/core/fsp.rst index 52d618d22bb8..cddaafe69e6b
100644 --- a/Documentation/gpu/nova/core/fsp.rst
+++ b/Documentation/gpu/nova/core/fsp.rst
@@ -79,22 +79,23 @@ GSP-RM.
 
 The message flow is::
 
-     nova-core                          FSP
-        |                                |
-        |  1. Poll scratch register      |
-        |  (wait for FSP boot complete)  |
-        |                                |
-        |  2. COT message  ------------> |
-        |     (FMC addr, signatures,     |
-        |      boot params)              |
-        |                                |
-        |                                |--- Verify FMC signature
-        |                                |--- Boot FMC
-        |                                |--- FMC loads GSP-RM
-        |                                |
-        |  3. COT response <------------ |
-        |     (success/error)            |
-        |                                |
+     nova-core                          FSP                         GSP
+        |                                |                           |
+        |  1. Poll scratch register      |                           |
+        |  (wait for FSP boot complete)  |                           |
+        |                                |                           |
+        |  2. COT message  ------------> |                           |
+        |     (GSP-FMC addr, signatures, |                           |
+        |      boot params)              |                           |
+        |                                |                           |
+        |                                |--- Verify GSP-FMC         |
+        |                                |    signature              |
+        |                                |                           |
+        |                                |--- Trigger GSP-FMC boot ->|
+        |  3. COT response <------------ |
|--- GSP-FMC verifies
+        |     (command status only;      |                           |
   and starts GSP-RM
+        |      not GSP-ready)            |                           |
+        |                                |                           |
 
 FSP message format
 ==================


> 	nova-core                          FSP
> 	   |                                |
> 	   |  1. Poll scratch register      |
> 	   |  (wait for FSP boot complete)  |
> 	   |                                |
> 	   |  2. COT message  ------------> |
> 	   |     (FMC addr, signatures,     |
> 	   |      boot params)              |
> 	   |                                |
> 	   |                                |--- Verify FMC signature
> 	   |                                |--- Boot FMC
> 	   |                                |--- FMC loads GSP-RM
> 	   |                                |
> 	   |  3. COT response <------------ |
> 	   |     (success/error)            |
> 	   |                                |
> 
> This reads as if FMC runs on FSP and FMC (running on the FSP)
> subsequently loads GSP-RM. Maybe it should be fixed by this patch, as
> it is the exact same mistake this patch addresses.
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.