Re: [PATCH] gpu: nova-core: clarify FSP ordering in the chipset table

From: John Hubbard

Date: Thu Jun 11 2026 - 16:21:01 EST


On 6/10/26 8:00 PM, Timur Tabi wrote:
> On Wed, 2026-06-10 at 16:41 -0700, John Hubbard wrote:
>> -    /// Returns `true` if this chipset boots via FSP (Hopper and later), which requires the
>> FMC
>> -    /// firmware image.
>> +    /// Returns `true` if this chipset boots via FSP (Hopper and Blackwell, but not Ada),
>> which
>> +    /// requires the FMC firmware image.
>
> Actually, I was thinking that we would keep the "Hopper and later" terminology, and just add a
> clarification in define_chipset! that the chipid numbering for Ada vs Hopper is backwards, and
> that we consider Hopper to be after Ada.

OK, so here's a diff on top of this patch, to attempt that:

diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index b9451d0d5e15..0344995b3bb8 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -91,10 +91,10 @@ fn try_from(value: u32) -> Result<Self, Self::Error> {
GA104 = 0x174,
GA106 = 0x176,
GA107 = 0x177,
- // Chipsets are listed in chip-ID order, which does not track FSP
- // capability. Hopper (GH100) and Blackwell (GB10x/GB20x) boot the GSP
- // via FSP, but Ada (AD10x), whose chip IDs fall between them, does not.
- // See Chipset::uses_fsp().
+ // Chip IDs are in numerical order, which does not match FSP capability. Hopper (GH100) has a
+ // lower chip ID than Ada (AD10x), but Hopper and Blackwell boot the GSP via FSP while Ada uses
+ // the older SEC2 booter. We therefore consider Hopper to be after Ada, so "Hopper and later"
+ // means Hopper and Blackwell, not Ada.
// Hopper
GH100 = 0x180,
// Ada
@@ -141,8 +141,8 @@ pub(crate) const fn needs_fwsec_bootloader(self) -> bool {
matches!(self.arch(), Architecture::Turing) || matches!(self, Self::GA100)
}

- /// Returns `true` if this chipset boots via FSP (Hopper and Blackwell, but not Ada), which
- /// requires the FMC firmware image.
+ /// Returns `true` if this chipset boots via FSP (Hopper and later), which requires the FMC
+ /// firmware image.
pub(crate) const fn uses_fsp(self) -> bool {
matches!(
self.arch(),


thanks,
--
John Hubbard