mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 03:35:32 -04:00
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>
This commit is contained in:
committed by
Alexandre Courbot
parent
b3bdb42619
commit
a47e2cd4b1
@@ -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>>
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,9 @@ fn find_gsp_sigs_section(chipset: Chipset) -> &'static str {
|
||||
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",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,12 +86,23 @@ fn try_from(value: u32) -> Result<Self, Self::Error> {
|
||||
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 @@ pub(crate) const fn arch(self) -> Architecture {
|
||||
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 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
pub(crate) enum Architecture with TryFrom<Bounded<u32, 6>> {
|
||||
Turing = 0x16,
|
||||
Ampere = 0x17,
|
||||
Hopper = 0x18,
|
||||
Ada = 0x19,
|
||||
BlackwellGB10x = 0x1a,
|
||||
BlackwellGB20x = 0x1b,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,10 @@
|
||||
gsp::GspFirmware,
|
||||
FIRMWARE_VERSION, //
|
||||
},
|
||||
gpu::Chipset,
|
||||
gpu::{
|
||||
Architecture,
|
||||
Chipset, //
|
||||
},
|
||||
gsp::{
|
||||
commands,
|
||||
sequencer::{
|
||||
@@ -146,6 +149,14 @@ pub(crate) fn boot(
|
||||
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)?;
|
||||
|
||||
Reference in New Issue
Block a user