Timur Tabi
2025-Nov-08 05:02 UTC
[PATCH v6 1/4] gpu: nova-core: implement Display for Spec
On Fri, 2025-11-07 at 20:39 -0800, John Hubbard wrote:> Implement Display for Spec. This simplifies the dev_info!() code for > printing banners such as: > > ??? NVIDIA (Chipset: GA104, Architecture: Ampere, Revision: a.1) > > Cc: Alexandre Courbot <acourbot at nvidia.com> > Cc: Danilo Krummrich <dakr at kernel.org> > Cc: Timur Tabi <ttabi at nvidia.com> > Signed-off-by: John Hubbard <jhubbard at nvidia.com>I'm okay with the entire patch set, but I do have a few questions.> +impl fmt::Display for Spec { > +??? fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { > +??????? 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 { > @@ -206,13 +218,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);I believe that this is the only place where a `Spec` is actually printed. Does it really make sense to implement Display for a single usage? Do we generally want to implement Display for new types?
John Hubbard
2025-Nov-08 05:10 UTC
[PATCH v6 1/4] gpu: nova-core: implement Display for Spec
On 11/7/25 9:02 PM, Timur Tabi wrote:> On Fri, 2025-11-07 at 20:39 -0800, John Hubbard wrote: >> Implement Display for Spec. This simplifies the dev_info!() code for >> printing banners such as: >> >> ??? NVIDIA (Chipset: GA104, Architecture: Ampere, Revision: a.1) >> >> Cc: Alexandre Courbot <acourbot at nvidia.com> >> Cc: Danilo Krummrich <dakr at kernel.org> >> Cc: Timur Tabi <ttabi at nvidia.com> >> Signed-off-by: John Hubbard <jhubbard at nvidia.com> > > I'm okay with the entire patch set, but I do have a few questions.Great!> >> +impl fmt::Display for Spec { >> +??? fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { >> +??????? 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 { >> @@ -206,13 +218,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); > > I believe that this is the only place where a `Spec` is actually printed. Does it really make > sense to implement Display for a single usage? Do we generally want to implement Display for > new types? >I agree that it looks a little excessive, but I defer to reviewers who have a lot more Rust experience, and they requested this during a review of an earlier version. thanks, -- John Hubbard