On Wed Nov 12, 2025 at 1:30 PM JST, John Hubbard wrote:
> NVIDIA GPUs are moving away from using NV_PMC_BOOT_0 to contain
> architecture and revision details, and will instead use NV_PMC_BOOT_42
> in the future. NV_PMC_BOOT_0 will contain a specific set of values
> that will mean "go read NV_PMC_BOOT_42 instead".
>
> Change the selection logic in Nova so that it will claim Turing and
> later GPUs. This will work for the foreseeable future, without any
> further code changes here, because all NVIDIA GPUs are considered, from
> the oldest supported on Linux (NV04), through the future GPUs.
>
> Add some comment documentation to explain, chronologically, how boot0
> and boot42 change with the GPU eras, and how that affects the selection
> logic.
>
> Cc: Alexandre Courbot <[email protected]>
> Cc: Danilo Krummrich <[email protected]>
> Cc: Timur Tabi <[email protected]>
> Signed-off-by: John Hubbard <[email protected]>

Love it, it's super simple now. :)

<snip>
> diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs
> index 8c9af3c59708..81097e83c276 100644
> --- a/drivers/gpu/nova-core/regs.rs
> +++ b/drivers/gpu/nova-core/regs.rs
> @@ -41,14 +41,24 @@
>  });
>  
>  impl NV_PMC_BOOT_0 {
> -    /// Combines `architecture_0` and `architecture_1` to obtain the 
> architecture of the chip.
> -    pub(crate) fn architecture(self) -> Result<Architecture> {
> -        Architecture::try_from(
> -            self.architecture_0() | (self.architecture_1() << 
> Self::ARCHITECTURE_0_RANGE.len()),
> -        )
> +    pub(crate) fn is_older_than_fermi(self) -> bool {
> +        // From https://github.com/NVIDIA/open-gpu-doc/tree/master/manuals :
> +        const NV_PMC_BOOT_0_ARCHITECTURE_GF100: u8 = 0xc;
> +
> +        // Older chips left arch1 zeroed out. That, combined with an arch0 
> value that is less than
> +        // GF100, means "older than Fermi".
> +        self.architecture_1() == 0 && self.architecture_0() < 
> NV_PMC_BOOT_0_ARCHITECTURE_GF100

We could also keep `architecture` (making it private) and just test for
`self.architecture < NV_PMC_BOOT_0_ARCHITECTURE_GF100`. John, I can do
that when applying the series if you think that makes sense.

Considering that the series has been extensively reviewed during the
previous iterations, I think we can safely apply it for 6.19, so will
proceed once I have an answer.

Reply via email to