From: "Danilo Krummrich" <dakr@kernel.org>
To: "John Hubbard" <jhubbard@nvidia.com>
Cc: "Alexandre Courbot" <acourbot@nvidia.com>,
"Joel Fernandes" <joelagnelf@nvidia.com>,
"Timur Tabi" <ttabi@nvidia.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Edwin Peer" <epeer@nvidia.com>, "Zhi Wang" <zhiw@nvidia.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs
Date: Sat, 25 Oct 2025 12:01:35 +0200 [thread overview]
Message-ID: <DDRBEHGSMDFM.X7RQC8XCC7C8@kernel.org> (raw)
In-Reply-To: <20251025001459.491983-3-jhubbard@nvidia.com>
On Sat Oct 25, 2025 at 2:14 AM CEST, John Hubbard wrote:
> + // "next-gen" GPUs (some time after Blackwell) will zero out boot0, and put the architecture
> + // details in boot42 instead. Avoid reading boot42 unless we are in that case.
> + let boot42 = if boot0.is_next_gen() {
> + Some(regs::NV_PMC_BOOT_42::read(bar))
> + } else {
> + None
> + };
> +
> try_pin_init!(Self {
> chipset: {
> - let chipset = boot0.chipset()?;
> + // Some brief notes about boot0 and boot42, in chronological order:
> + //
> + // NV04 through Volta:
> + //
> + // Not supported by Nova. boot0 is necessary and sufficient to identify these
> + // GPUs. boot42 may not even exist on some of these GPUs.
> + //
> + // Turing through Blackwell:
> + //
> + // Supported by both Nouveau and Nova. boot0 is still necessary and sufficient
> + // to identify these GPUs. boot42 exists on these GPUs but we don't need to use
> + // it.
> + //
> + // Future "next-gen" GPUs:
> + //
> + // Only supported by Nova. Boot42 has the architecture details, boot0 is zeroed
> + // out.
> +
> + // NV04, the very first NVIDIA GPU to be supported on Linux, is identified by a
> + // specific bit pattern in boot0. Although Nova does not support NV04 (see above),
> + // it is possible to confuse NV04 with a "next-gen" GPU. Therefore, return early if
> + // we specifically detect NV04, thus simplifying the remaining selection logic.
> + if boot0.is_nv04() {
> + Err(ENODEV)?
> + }
> +
> + // Now that we know it is something more recent than NV04, use boot42 if we
> + // previously determined that boot42 was both valid and relevant, and boot0
> + // otherwise.
> + let (chipset, major_rev, minor_rev) = if let Some(boot42) = boot42 {
> + (
> + boot42.chipset()?,
> + boot42.major_revision(),
> + boot42.minor_revision(),
> + )
> + } else {
> + // Current/older GPU: use BOOT0
> + (
> + boot0.chipset()?,
> + boot0.major_revision(),
> + boot0.minor_revision(),
> + )
> + };
Why open code all of the above in the struct Gpu constructor? This could all
happen within Spec::new().
If we *really* don't want to store the Spec, but only the Chipset, you can also
do:
try_pin_init!(Self {
chipset: {
let spec = Spec::new(bar);
dev_info!(pdev.as_ref(), "{}\n", spec);
spec.chipset
},
[...],
}
next prev parent reply other threads:[~2025-10-25 10:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-25 0:14 [PATCH 0/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
2025-10-25 0:14 ` [PATCH 1/2] gpu: nova: remove Spec and Revision types John Hubbard
2025-10-25 10:01 ` Danilo Krummrich
2025-10-25 17:27 ` John Hubbard
2025-10-25 0:14 ` [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
2025-10-25 10:01 ` Danilo Krummrich [this message]
2025-10-25 17:32 ` John Hubbard
2025-10-27 21:21 ` Joel Fernandes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DDRBEHGSMDFM.X7RQC8XCC7C8@kernel.org \
--to=dakr@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=apopple@nvidia.com \
--cc=bhelgaas@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=epeer@nvidia.com \
--cc=gary@garyguo.net \
--cc=jhubbard@nvidia.com \
--cc=joelagnelf@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=tmgross@umich.edu \
--cc=ttabi@nvidia.com \
--cc=zhiw@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.