diff options
| author | John Hubbard <jhubbard@nvidia.com> | 2026-04-10 19:49:28 -0700 |
|---|---|---|
| committer | Alexandre Courbot <acourbot@nvidia.com> | 2026-04-30 10:02:55 +0900 |
| commit | a47e2cd4b1a9184330d43a4dba21e67548eda232 (patch) | |
| tree | 530d2422e1e4e58de01de7f9dd341e5857c5dfd2 | |
| parent | b3bdb42619c8fce6d6d5feb36ad33d184aaa4e3d (diff) | |
| download | linux-a47e2cd4b1a9184330d43a4dba21e67548eda232.tar.gz linux-a47e2cd4b1a9184330d43a4dba21e67548eda232.zip | |
gpu: nova-core: Hopper/Blackwell: basic GPU identification
Hopper (GH100) and Blackwell identification, including ELF
.fwsignature_* items.
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
Link: https://patch.msgid.link/20260411024953.473149-4-jhubbard@nvidia.com
[acourbot: add separators for both Blackwell architectures in Chipset
definition.]
[acourbot: make Gsp::boot() return `ENOTSUPP` on new architectures.]
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
| -rw-r--r-- | drivers/gpu/nova-core/falcon/hal.rs | 6 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/fb/hal.rs | 5 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/firmware/gsp.rs | 3 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/gpu.rs | 19 | ||||
| -rw-r--r-- | drivers/gpu/nova-core/gsp/boot.rs | 13 |
5 files changed, 43 insertions, 3 deletions
diff --git a/drivers/gpu/nova-core/falcon/hal.rs b/drivers/gpu/nova-core/falcon/hal.rs index f75b5c315d62..a524c8096b67 100644 --- a/drivers/gpu/nova-core/falcon/hal.rs +++ b/drivers/gpu/nova-core/falcon/hal.rs @@ -85,7 +85,11 @@ pub(super) fn falcon_hal<E: FalconEngine + 'static>( Architecture::Ampere if chipset == Chipset::GA100 => { KBox::new(tu102::Tu102::<E>::new(), GFP_KERNEL)? as KBox<dyn FalconHal<E>> } - Architecture::Ampere | Architecture::Ada => { + Architecture::Ampere + | Architecture::Ada + | Architecture::Hopper + | Architecture::BlackwellGB10x + | Architecture::BlackwellGB20x => { KBox::new(ga102::Ga102::<E>::new(), GFP_KERNEL)? as KBox<dyn FalconHal<E>> } }; diff --git a/drivers/gpu/nova-core/fb/hal.rs b/drivers/gpu/nova-core/fb/hal.rs index 6f928052d0c0..8b192a503363 100644 --- a/drivers/gpu/nova-core/fb/hal.rs +++ b/drivers/gpu/nova-core/fb/hal.rs @@ -39,6 +39,9 @@ pub(super) fn fb_hal(chipset: Chipset) -> &'static dyn FbHal { Architecture::Turing => tu102::TU102_HAL, Architecture::Ampere if chipset == Chipset::GA100 => ga100::GA100_HAL, Architecture::Ampere => ga102::GA102_HAL, - Architecture::Ada => ga102::GA102_HAL, + Architecture::Ada + | Architecture::Hopper + | Architecture::BlackwellGB10x + | Architecture::BlackwellGB20x => ga102::GA102_HAL, } } diff --git a/drivers/gpu/nova-core/firmware/gsp.rs b/drivers/gpu/nova-core/firmware/gsp.rs index 71b238b76349..e576bc8a9b1c 100644 --- a/drivers/gpu/nova-core/firmware/gsp.rs +++ b/drivers/gpu/nova-core/firmware/gsp.rs @@ -72,6 +72,9 @@ impl GspFirmware { Architecture::Ampere if chipset == Chipset::GA100 => ".fwsignature_ga100", Architecture::Ampere => ".fwsignature_ga10x", Architecture::Ada => ".fwsignature_ad10x", + Architecture::Hopper => ".fwsignature_gh10x", + Architecture::BlackwellGB10x => ".fwsignature_gb10x", + Architecture::BlackwellGB20x => ".fwsignature_gb20x", } } diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs index 0f6fe9a1b955..6a01b85f9489 100644 --- a/drivers/gpu/nova-core/gpu.rs +++ b/drivers/gpu/nova-core/gpu.rs @@ -86,12 +86,23 @@ define_chipset!({ GA104 = 0x174, GA106 = 0x176, GA107 = 0x177, + // Hopper + GH100 = 0x180, // Ada AD102 = 0x192, AD103 = 0x193, AD104 = 0x194, AD106 = 0x196, AD107 = 0x197, + // Blackwell GB10x + GB100 = 0x1a0, + GB102 = 0x1a2, + // Blackwell GB20x + GB202 = 0x1b2, + GB203 = 0x1b3, + GB205 = 0x1b5, + GB206 = 0x1b6, + GB207 = 0x1b7, }); impl Chipset { @@ -103,9 +114,14 @@ impl Chipset { Self::GA100 | Self::GA102 | Self::GA103 | Self::GA104 | Self::GA106 | Self::GA107 => { Architecture::Ampere } + Self::GH100 => Architecture::Hopper, Self::AD102 | Self::AD103 | Self::AD104 | Self::AD106 | Self::AD107 => { Architecture::Ada } + Self::GB100 | Self::GB102 => Architecture::BlackwellGB10x, + Self::GB202 | Self::GB203 | Self::GB205 | Self::GB206 | Self::GB207 => { + Architecture::BlackwellGB20x + } } } @@ -137,7 +153,10 @@ bounded_enum! { pub(crate) enum Architecture with TryFrom<Bounded<u32, 6>> { Turing = 0x16, Ampere = 0x17, + Hopper = 0x18, Ada = 0x19, + BlackwellGB10x = 0x1a, + BlackwellGB20x = 0x1b, } } diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/boot.rs index 5c56f0539dd7..df105ef4b371 100644 --- a/drivers/gpu/nova-core/gsp/boot.rs +++ b/drivers/gpu/nova-core/gsp/boot.rs @@ -31,7 +31,10 @@ use crate::{ gsp::GspFirmware, FIRMWARE_VERSION, // }, - gpu::Chipset, + gpu::{ + Architecture, + Chipset, // + }, gsp::{ commands, sequencer::{ @@ -146,6 +149,14 @@ impl super::Gsp { gsp_falcon: &Falcon<Gsp>, sec2_falcon: &Falcon<Sec2>, ) -> Result { + // The FSP boot process of Hopper+ is not supported for now. + if matches!( + chipset.arch(), + Architecture::Hopper | Architecture::BlackwellGB10x | Architecture::BlackwellGB20x + ) { + return Err(ENOTSUPP); + } + let dev = pdev.as_ref(); let bios = Vbios::new(dev, bar)?; |
