rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] gpu: nova: add boot42 support for next-gen GPUs
@ 2025-10-28  2:39 John Hubbard
  2025-10-28  2:39 ` [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type John Hubbard
  2025-10-28  2:39 ` [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs John Hubbard
  0 siblings, 2 replies; 7+ messages in thread
From: John Hubbard @ 2025-10-28  2:39 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

Changes in v2:

1) Restored the Spec type, and used that to encapsulate the subsequent
   boot42 enhancements. Thanks to Danilo Krummrich's feedback for that
   improvement.

v1 cover letter:

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 the Revision type, because Revision is no longer valuable
as a stand-alone type, because we only ever want the full information
that Spec provides.

This is based on today's drm-rust-next, which in turn is based on
Linux 6.18-rc2.

John Hubbard (2):
  gpu: nova-core: merge the Revision type into the Spec type
  gpu: nova-core: add boot42 support for next-gen GPUs

 drivers/gpu/nova-core/gpu.rs  | 104 +++++++++++++++++++++++-----------
 drivers/gpu/nova-core/regs.rs |  27 +++++++++
 2 files changed, 99 insertions(+), 32 deletions(-)


base-commit: ca16b15e78f4dee1631c0a68693f5e7d9b3bb3ec
-- 
2.51.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type
  2025-10-28  2:39 [PATCH v2 0/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
@ 2025-10-28  2:39 ` John Hubbard
  2025-10-28 12:25   ` Danilo Krummrich
  2025-10-28  2:39 ` [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs John Hubbard
  1 sibling, 1 reply; 7+ messages in thread
From: John Hubbard @ 2025-10-28  2:39 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

Revision is no longer valuable as a stand-alone type, because we only
ever want the full information that Spec provides. Therefore, enhance
Spec's Display, and remove Revision entirely.

This also simplifies the dev_info!() code for printing banners such as:

    NVIDIA (Chipset: GA104, Architecture: Ampere, Revision: a.1)

Signed-off-by: John Hubbard <jhubbard@nvidia.com>
---
 drivers/gpu/nova-core/gpu.rs | 50 ++++++++++++++----------------------
 1 file changed, 19 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index 9d182bffe8b4..0ba1cdc42ba3 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -129,31 +129,11 @@ 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.
+/// Structure holding a basic description of the GPU: Architecture, Chipset and Revision.
 pub(crate) struct Spec {
     chipset: Chipset,
-    /// The revision of the chipset.
-    revision: Revision,
+    major_revision: u8,
+    minor_revision: u8,
 }
 
 impl Spec {
@@ -162,11 +142,25 @@ fn new(bar: &Bar0) -> Result<Spec> {
 
         Ok(Self {
             chipset: boot0.chipset()?,
-            revision: Revision::from_boot0(boot0),
+            major_revision: boot0.major_revision(),
+            minor_revision: boot0.minor_revision(),
         })
     }
 }
 
+impl fmt::Display for Spec {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(
+            f,
+            "Chipset: {}, Architecture: {:?}, Revision: {:x}.{:x}",
+            self.chipset,
+            self.chipset.arch(),
+            self.major_revision,
+            self.minor_revision
+        )
+    }
+}
+
 /// Structure holding the resources required to operate the GPU.
 #[pin_data]
 pub(crate) struct Gpu {
@@ -193,13 +187,7 @@ pub(crate) fn new<'a>(
     ) -> impl PinInit<Self, Error> + 'a {
         try_pin_init!(Self {
             spec: Spec::new(bar).inspect(|spec| {
-                dev_info!(
-                    pdev.as_ref(),
-                    "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {})\n",
-                    spec.chipset,
-                    spec.chipset.arch(),
-                    spec.revision
-                );
+                dev_info!(pdev.as_ref(),"NVIDIA ({})\n", spec);
             })?,
 
             // We must wait for GFW_BOOT completion before doing any significant setup on the GPU.
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs
  2025-10-28  2:39 [PATCH v2 0/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
  2025-10-28  2:39 ` [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type John Hubbard
@ 2025-10-28  2:39 ` John Hubbard
  2025-10-28 11:42   ` Alexandre Courbot
  1 sibling, 1 reply; 7+ messages in thread
From: John Hubbard @ 2025-10-28  2:39 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  | 58 +++++++++++++++++++++++++++++++++--
 drivers/gpu/nova-core/regs.rs | 27 ++++++++++++++++
 2 files changed, 82 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index 0ba1cdc42ba3..666a938c8e97 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -140,10 +140,62 @@ impl Spec {
     fn new(bar: &Bar0) -> Result<Spec> {
         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
+        };
+
+        // 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_revision, minor_revision) = 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(),
+            )
+        };
+
         Ok(Self {
-            chipset: boot0.chipset()?,
-            major_revision: boot0.major_revision(),
-            minor_revision: boot0.minor_revision(),
+            chipset,
+            major_revision,
+            minor_revision,
         })
     }
 }
diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs
index 206dab2e1335..ed3a2c39edbc 100644
--- a/drivers/gpu/nova-core/regs.rs
+++ b/drivers/gpu/nova-core/regs.rs
@@ -25,6 +25,18 @@
 });
 
 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 +55,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] 7+ messages in thread

* Re: [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs
  2025-10-28  2:39 ` [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs John Hubbard
@ 2025-10-28 11:42   ` Alexandre Courbot
  2025-10-28 17:22     ` John Hubbard
  0 siblings, 1 reply; 7+ messages in thread
From: Alexandre Courbot @ 2025-10-28 11:42 UTC (permalink / raw)
  To: John Hubbard, 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, Nouveau

On Tue Oct 28, 2025 at 11:39 AM JST, John Hubbard wrote:
<snip>
> +        // 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_revision, minor_revision) = 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(),
> +            )
> +        };
> +
>          Ok(Self {
> -            chipset: boot0.chipset()?,
> -            major_revision: boot0.major_revision(),
> -            minor_revision: boot0.minor_revision(),
> +            chipset,
> +            major_revision,
> +            minor_revision,
>          })

Can we implement `TryFrom<NV_PMC_BOOT_0> for Spec` (and same for
`NV_PMC_BOOT_42`)? That way this code can become:

    boot42.map(Spec::try_from).unwrap_or_else(|| Spec::try_from(boot0))

(untested ; but hopefully not too incorrect)


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type
  2025-10-28  2:39 ` [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type John Hubbard
@ 2025-10-28 12:25   ` Danilo Krummrich
  2025-10-28 17:25     ` John Hubbard
  0 siblings, 1 reply; 7+ messages in thread
From: Danilo Krummrich @ 2025-10-28 12:25 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 Tue Oct 28, 2025 at 3:39 AM CET, John Hubbard wrote:
> -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.
> +/// Structure holding a basic description of the GPU: Architecture, Chipset and Revision.
>  pub(crate) struct Spec {
>      chipset: Chipset,
> -    /// The revision of the chipset.
> -    revision: Revision,
> +    major_revision: u8,
> +    minor_revision: u8,
>  }

Why not keep the Revision type and its Display impl as well?

>  
>  impl Spec {
> @@ -162,11 +142,25 @@ fn new(bar: &Bar0) -> Result<Spec> {
>  
>          Ok(Self {
>              chipset: boot0.chipset()?,
> -            revision: Revision::from_boot0(boot0),
> +            major_revision: boot0.major_revision(),
> +            minor_revision: boot0.minor_revision(),
>          })
>      }
>  }
>  
> +impl fmt::Display for Spec {
> +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
> +        write!(
> +            f,
> +            "Chipset: {}, Architecture: {:?}, Revision: {:x}.{:x}",
> +            self.chipset,
> +            self.chipset.arch(),
> +            self.major_revision,
> +            self.minor_revision
> +        )

This could just be:

	write!(
	    f,
	    "Chipset: {}, Architecture: {:?}, Revision: {}",
	    self.chipset,
	    self.chipset.arch(),
	    self.revision,
	)

> +    }
> +}
> +
>  /// Structure holding the resources required to operate the GPU.
>  #[pin_data]
>  pub(crate) struct Gpu {
> @@ -193,13 +187,7 @@ pub(crate) fn new<'a>(
>      ) -> impl PinInit<Self, Error> + 'a {
>          try_pin_init!(Self {
>              spec: Spec::new(bar).inspect(|spec| {
> -                dev_info!(
> -                    pdev.as_ref(),
> -                    "NVIDIA (Chipset: {}, Architecture: {:?}, Revision: {})\n",
> -                    spec.chipset,
> -                    spec.chipset.arch(),
> -                    spec.revision
> -                );
> +                dev_info!(pdev.as_ref(),"NVIDIA ({})\n", spec);
>              })?,
>  
>              // We must wait for GFW_BOOT completion before doing any significant setup on the GPU.
> -- 
> 2.51.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs
  2025-10-28 11:42   ` Alexandre Courbot
@ 2025-10-28 17:22     ` John Hubbard
  0 siblings, 0 replies; 7+ messages in thread
From: John Hubbard @ 2025-10-28 17:22 UTC (permalink / raw)
  To: Alexandre Courbot, Danilo Krummrich
  Cc: 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, Nouveau

On 10/28/25 4:42 AM, Alexandre Courbot wrote:
> On Tue Oct 28, 2025 at 11:39 AM JST, John Hubbard wrote:
> <snip>
>> +        // 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_revision, minor_revision) = 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(),
>> +            )
>> +        };
>> +
>>           Ok(Self {
>> -            chipset: boot0.chipset()?,
>> -            major_revision: boot0.major_revision(),
>> -            minor_revision: boot0.minor_revision(),
>> +            chipset,
>> +            major_revision,
>> +            minor_revision,
>>           })
> 
> Can we implement `TryFrom<NV_PMC_BOOT_0> for Spec` (and same for
> `NV_PMC_BOOT_42`)? That way this code can become:
> 
>      boot42.map(Spec::try_from).unwrap_or_else(|| Spec::try_from(boot0))
> 
> (untested ; but hopefully not too incorrect)
> 

OK, interesting technique. I'll do that.

thanks,
John Hubbard

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type
  2025-10-28 12:25   ` Danilo Krummrich
@ 2025-10-28 17:25     ` John Hubbard
  0 siblings, 0 replies; 7+ messages in thread
From: John Hubbard @ 2025-10-28 17:25 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/28/25 5:25 AM, Danilo Krummrich wrote:
> On Tue Oct 28, 2025 at 3:39 AM CET, John Hubbard wrote:
>> -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.
>> +/// Structure holding a basic description of the GPU: Architecture, Chipset and Revision.
>>   pub(crate) struct Spec {
>>       chipset: Chipset,
>> -    /// The revision of the chipset.
>> -    revision: Revision,
>> +    major_revision: u8,
>> +    minor_revision: u8,
>>   }
> 
> Why not keep the Revision type and its Display impl as well?

I just felt like it's not quite pulling its weight. But clearly
that feeling is not widely shared, so I'll put it back in. :)

> 
>>   
>>   impl Spec {
>> @@ -162,11 +142,25 @@ fn new(bar: &Bar0) -> Result<Spec> {
>>   
>>           Ok(Self {
>>               chipset: boot0.chipset()?,
>> -            revision: Revision::from_boot0(boot0),
>> +            major_revision: boot0.major_revision(),
>> +            minor_revision: boot0.minor_revision(),
>>           })
>>       }
>>   }
>>   
>> +impl fmt::Display for Spec {
>> +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
>> +        write!(
>> +            f,
>> +            "Chipset: {}, Architecture: {:?}, Revision: {:x}.{:x}",
>> +            self.chipset,
>> +            self.chipset.arch(),
>> +            self.major_revision,
>> +            self.minor_revision
>> +        )
> 
> This could just be:
> 
> 	write!(
> 	    f,
> 	    "Chipset: {}, Architecture: {:?}, Revision: {}",
> 	    self.chipset,
> 	    self.chipset.arch(),
> 	    self.revision,
> 	)
> 

Yes. That is nicer.

thanks,
John Hubbard


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-10-28 17:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-28  2:39 [PATCH v2 0/2] gpu: nova: add boot42 support for next-gen GPUs John Hubbard
2025-10-28  2:39 ` [PATCH v2 1/2] gpu: nova-core: merge the Revision type into the Spec type John Hubbard
2025-10-28 12:25   ` Danilo Krummrich
2025-10-28 17:25     ` John Hubbard
2025-10-28  2:39 ` [PATCH v2 2/2] gpu: nova-core: add boot42 support for next-gen GPUs John Hubbard
2025-10-28 11:42   ` Alexandre Courbot
2025-10-28 17:22     ` John Hubbard

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).