Re: [PATCH v7 4/4] gpu: nova-core: add boot42 support for next-gen GPUs

From: Alexandre Courbot

Date: Thu Nov 13 2025 - 03:05:04 EST


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 <acourbot@xxxxxxxxxx>
> Cc: Danilo Krummrich <dakr@xxxxxxxxxx>
> Cc: Timur Tabi <ttabi@xxxxxxxxxx>
> Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx>

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.