* [PATCH 0/2] gpu: nova: add boot42 support for next-gen GPUs
@ 2025-10-25 0:14 John Hubbard
2025-10-25 0:14 ` [PATCH 1/2] gpu: nova: remove Spec and Revision types John Hubbard
2025-10-25 0:14 ` [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
0 siblings, 2 replies; 8+ messages in thread
From: John Hubbard @ 2025-10-25 0:14 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML, John Hubbard
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 be zeroed out.
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.
Also, remove a couple of types: Spec and Revision. That deletes a net
total of 33 lines of code and simplifies that area of code. It also
simplifies the subsequent boot42 support diffs.
This is based on today's drm-rust-next, which in turn is based on
Linux 6.18-rc2.
John Hubbard (2):
gpu: nova: remove Spec and Revision types
gpu: nova: add boot42 support for next-gen GPUs
drivers/gpu/nova-core/gpu.rs | 120 ++++++++++++++++++++--------------
drivers/gpu/nova-core/regs.rs | 28 ++++++++
2 files changed, 98 insertions(+), 50 deletions(-)
base-commit: d3917368ebc5cd89d7d08eab4673e5c4c73ff42f
--
2.51.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] gpu: nova: remove Spec and Revision types
2025-10-25 0:14 [PATCH 0/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
@ 2025-10-25 0:14 ` John Hubbard
2025-10-25 10:01 ` Danilo Krummrich
2025-10-25 0:14 ` [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
1 sibling, 1 reply; 8+ messages in thread
From: John Hubbard @ 2025-10-25 0:14 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML, John Hubbard
In the fullness of time, it has become clear that these two types are
not actually needed for anything, after all. Remove them both, and use
boot0.chipset directly, instead.
This deletes a net total of 33 lines of code and simplifies the code as
well.
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
drivers/gpu/nova-core/gpu.rs | 67 +++++++++---------------------------
1 file changed, 17 insertions(+), 50 deletions(-)
diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index af20e2daea24..a8a993424771 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -129,48 +129,10 @@ fn try_from(value: u8) -> Result<Self> {
}
}
-pub(crate) struct Revision {
- major: u8,
- minor: u8,
-}
-
-impl Revision {
- fn from_boot0(boot0: regs::NV_PMC_BOOT_0) -> Self {
- Self {
- major: boot0.major_revision(),
- minor: boot0.minor_revision(),
- }
- }
-}
-
-impl fmt::Display for Revision {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- write!(f, "{:x}.{:x}", self.major, self.minor)
- }
-}
-
-/// Structure holding the metadata of the GPU.
-pub(crate) struct Spec {
- chipset: Chipset,
- /// The revision of the chipset.
- revision: Revision,
-}
-
-impl Spec {
- fn new(bar: &Bar0) -> Result<Spec> {
- let boot0 = regs::NV_PMC_BOOT_0::read(bar);
-
- Ok(Self {
- chipset: boot0.chipset()?,
- revision: Revision::from_boot0(boot0),
- })
- }
-}
-
/// Structure holding the resources required to operate the GPU.
#[pin_data]
pub(crate) struct Gpu {
- spec: Spec,
+ chipset: Chipset,
/// MMIO mapping of PCI BAR 0
bar: Arc<Devres<Bar0>>,
/// System memory page required for flushing all pending GPU-side memory writes done through
@@ -191,16 +153,21 @@ pub(crate) fn new<'a>(
devres_bar: Arc<Devres<Bar0>>,
bar: &'a Bar0,
) -> impl PinInit<Self, Error> + 'a {
+ let boot0 = regs::NV_PMC_BOOT_0::read(bar);
+
try_pin_init!(Self {
- spec: Spec::new(bar).inspect(|spec| {
+ chipset: {
+ let chipset = boot0.chipset()?;
dev_info!(
pdev.as_ref(),
- "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {})\n",
- spec.chipset,
- spec.chipset.arch(),
- spec.revision
+ "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {:x}.{:x})\n",
+ chipset,
+ chipset.arch(),
+ boot0.major_revision(),
+ boot0.minor_revision()
);
- })?,
+ chipset
+ },
// We must wait for GFW_BOOT completion before doing any significant setup on the GPU.
_: {
@@ -208,21 +175,21 @@ pub(crate) fn new<'a>(
.inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete"))?;
},
- sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, spec.chipset)?,
+ sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, boot0.chipset()?)?,
gsp_falcon: Falcon::new(
pdev.as_ref(),
- spec.chipset,
+ boot0.chipset()?,
bar,
- spec.chipset > Chipset::GA100,
+ boot0.chipset()? > Chipset::GA100,
)
.inspect(|falcon| falcon.clear_swgen0_intr(bar))?,
- sec2_falcon: Falcon::new(pdev.as_ref(), spec.chipset, bar, true)?,
+ sec2_falcon: Falcon::new(pdev.as_ref(), boot0.chipset()?, bar, true)?,
gsp <- Gsp::new(),
- _: { gsp.boot(pdev, bar, spec.chipset, gsp_falcon, sec2_falcon)? },
+ _: { gsp.boot(pdev, bar, boot0.chipset()?, gsp_falcon, sec2_falcon)? },
bar: devres_bar,
})
--
2.51.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs
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 0:14 ` John Hubbard
2025-10-25 10:01 ` Danilo Krummrich
1 sibling, 1 reply; 8+ messages in thread
From: John Hubbard @ 2025-10-25 0:14 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML, John Hubbard
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 be zeroed out.
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.
Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
drivers/gpu/nova-core/gpu.rs | 69 +++++++++++++++++++++++++++++++----
drivers/gpu/nova-core/regs.rs | 28 ++++++++++++++
2 files changed, 89 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index a8a993424771..a00036721247 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -155,16 +155,67 @@ pub(crate) fn new<'a>(
) -> impl PinInit<Self, Error> + 'a {
let boot0 = regs::NV_PMC_BOOT_0::read(bar);
+ // "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(),
+ )
+ };
+
dev_info!(
pdev.as_ref(),
"NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {:x}.{:x})\n",
chipset,
chipset.arch(),
- boot0.major_revision(),
- boot0.minor_revision()
+ major_rev,
+ minor_rev
);
chipset
},
@@ -175,21 +226,23 @@ pub(crate) fn new<'a>(
.inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete"))?;
},
- sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, boot0.chipset()?)?,
+ sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, *chipset)?,
gsp_falcon: Falcon::new(
pdev.as_ref(),
- boot0.chipset()?,
+ *chipset,
bar,
- boot0.chipset()? > Chipset::GA100,
+ *chipset > Chipset::GA100,
)
.inspect(|falcon| falcon.clear_swgen0_intr(bar))?,
- sec2_falcon: Falcon::new(pdev.as_ref(), boot0.chipset()?, bar, true)?,
+ sec2_falcon: Falcon::new(pdev.as_ref(), *chipset, bar, true)?,
gsp <- Gsp::new(),
- _: { gsp.boot(pdev, bar, boot0.chipset()?, gsp_falcon, sec2_falcon)? },
+ _: {
+ gsp.boot(pdev, bar, *chipset, gsp_falcon, sec2_falcon)?
+ },
bar: devres_bar,
})
diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs
index 206dab2e1335..bcd0834c500b 100644
--- a/drivers/gpu/nova-core/regs.rs
+++ b/drivers/gpu/nova-core/regs.rs
@@ -25,6 +25,19 @@
});
impl NV_PMC_BOOT_0 {
+ pub(crate) fn is_nv04(self) -> bool {
+ // The very first supported GPU was NV04, and it is identified by a specific bit pattern in
+ // boot0. This provides a way to check for that, which in turn is required in order to avoid
+ // confusing future "next-gen" GPUs with NV04.
+ self.architecture_0() == 0 && (self.0 & 0xff00fff0) == 0x20004000
+ }
+
+ pub(crate) fn is_next_gen(self) -> bool {
+ // "next-gen" GPUs (some time after Blackwell) will set `architecture_0` to 0, and put the
+ // architecture details in boot42 instead.
+ self.architecture_0() == 0 && !self.is_nv04()
+ }
+
/// Combines `architecture_0` and `architecture_1` to obtain the architecture of the chip.
pub(crate) fn architecture(self) -> Result<Architecture> {
Architecture::try_from(
@@ -43,6 +56,21 @@ pub(crate) fn chipset(self) -> Result<Chipset> {
}
}
+register!(NV_PMC_BOOT_42 @ 0x00000108, "Extended architecture information" {
+ 7:0 implementation as u8, "Implementation version of the architecture";
+ 15:8 architecture as u8, "Architecture value";
+ 19:16 minor_revision as u8, "Minor revision of the chip";
+ 23:20 major_revision as u8, "Major revision of the chip";
+});
+
+impl NV_PMC_BOOT_42 {
+ pub(crate) fn chipset(self) -> Result<Chipset> {
+ let arch = Architecture::try_from(self.architecture())?;
+ let chipset_value = ((arch as u32) << 8) | u32::from(self.implementation());
+ Chipset::try_from(chipset_value)
+ }
+}
+
// PBUS
register!(NV_PBUS_SW_SCRATCH @ 0x00001400[64] {});
--
2.51.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] gpu: nova: remove Spec and Revision types
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
0 siblings, 1 reply; 8+ messages in thread
From: Danilo Krummrich @ 2025-10-25 10:01 UTC (permalink / raw)
To: John Hubbard
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML
On Sat Oct 25, 2025 at 2:14 AM CEST, John Hubbard wrote:
> In the fullness of time, it has become clear that these two types are
> not actually needed for anything, after all. Remove them both, and use
> boot0.chipset directly, instead.
What has become clear is that we don't use the spec field in struct Gpu so far,
which is not a surprise given that all efforts focus on the initialization path.
But even if we forsee that we do not have a reason to store the spec field in
struct Gpu, it doesn't mean that the structure itself is useless, see more
below.
> /// Structure holding the resources required to operate the GPU.
> #[pin_data]
> pub(crate) struct Gpu {
> - spec: Spec,
> + chipset: Chipset,
> /// MMIO mapping of PCI BAR 0
> bar: Arc<Devres<Bar0>>,
> /// System memory page required for flushing all pending GPU-side memory writes done through
> @@ -191,16 +153,21 @@ pub(crate) fn new<'a>(
> devres_bar: Arc<Devres<Bar0>>,
> bar: &'a Bar0,
> ) -> impl PinInit<Self, Error> + 'a {
> + let boot0 = regs::NV_PMC_BOOT_0::read(bar);
> +
> try_pin_init!(Self {
> - spec: Spec::new(bar).inspect(|spec| {
> + chipset: {
> + let chipset = boot0.chipset()?;
> dev_info!(
> pdev.as_ref(),
> - "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {})\n",
> - spec.chipset,
> - spec.chipset.arch(),
> - spec.revision
> + "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {:x}.{:x})\n",
> + chipset,
> + chipset.arch(),
> + boot0.major_revision(),
> + boot0.minor_revision()
Now you have to open code reading the register, get the Chipset instance and
manually format the revision, which was previously done through a Display impl
of Revision. And the subsequent patch introduces even more open coded logic in
the constructor of struct Gpu.
Instead of removing Spec, we should improve it by giving it its own Display
impl, such that this code can become:
dev_info!(pdev.as_ref(), "{}\n", spec);
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs
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
2025-10-25 17:32 ` John Hubbard
0 siblings, 1 reply; 8+ messages in thread
From: Danilo Krummrich @ 2025-10-25 10:01 UTC (permalink / raw)
To: John Hubbard
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML
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
},
[...],
}
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] gpu: nova: remove Spec and Revision types
2025-10-25 10:01 ` Danilo Krummrich
@ 2025-10-25 17:27 ` John Hubbard
0 siblings, 0 replies; 8+ messages in thread
From: John Hubbard @ 2025-10-25 17:27 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML
On 10/25/25 3:01 AM, Danilo Krummrich wrote:
> On Sat Oct 25, 2025 at 2:14 AM CEST, John Hubbard wrote:
...
> Now you have to open code reading the register, get the Chipset instance and
> manually format the revision, which was previously done through a Display impl
> of Revision. And the subsequent patch introduces even more open coded logic in
> the constructor of struct Gpu.
>
> Instead of removing Spec, we should improve it by giving it its own Display
> impl, such that this code can become:
>
Sure, I'll do it that way.
thanks,
--
John Hubbard
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs
2025-10-25 10:01 ` Danilo Krummrich
@ 2025-10-25 17:32 ` John Hubbard
2025-10-27 21:21 ` Joel Fernandes
0 siblings, 1 reply; 8+ messages in thread
From: John Hubbard @ 2025-10-25 17:32 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Alexandre Courbot, Joel Fernandes, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML
On 10/25/25 3:01 AM, Danilo Krummrich wrote:
> On Sat Oct 25, 2025 at 2:14 AM CEST, John Hubbard wrote:
...> Why open code all of the above in the struct Gpu constructor? This
could all
> happen within Spec::new().
>
OK, yes, that does help avoid cluttering up Gpu::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
Right.
thanks,
--
John Hubbard
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] gpu: nova: add boot42 support for next-gen GPUs
2025-10-25 17:32 ` John Hubbard
@ 2025-10-27 21:21 ` Joel Fernandes
0 siblings, 0 replies; 8+ messages in thread
From: Joel Fernandes @ 2025-10-27 21:21 UTC (permalink / raw)
To: John Hubbard
Cc: Danilo Krummrich, Alexandre Courbot, Timur Tabi, Alistair Popple,
Edwin Peer, Zhi Wang, David Airlie, Simona Vetter, Bjorn Helgaas,
Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, nouveau, rust-for-linux, LKML
On Sat, Oct 25, 2025 at 10:32:35AM -0700, John Hubbard wrote:
> On 10/25/25 3:01 AM, Danilo Krummrich wrote:
> > On Sat Oct 25, 2025 at 2:14 AM CEST, John Hubbard wrote:
> ...> Why open code all of the above in the struct Gpu constructor? This
> could all
> > happen within Spec::new().
> >
>
> OK, yes, that does help avoid cluttering up Gpu::new().
+1.
Also, it bloats up the dev_info! print in Gpu::new() to those.
Spec can encapsulate the boot0 vs boot42 code, and any further changes.
But otherwise, the boot0 vs boot42 code in the patchset look good to me.
thanks,
- Joel
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-10-27 21:21 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2025-10-25 17:32 ` John Hubbard
2025-10-27 21:21 ` Joel Fernandes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).