Subject: linux-next: build failure after merge of the rust tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 17 Nov 2025 19:04:17 +1100

Hi all,

After merging the rust tree, today's linux-next build (x86_64
allmodconfig) failed like this:

error[E0277]: `Chipset` doesn't implement `core::fmt::Display`
   --> drivers/gpu/nova-core/gpu.rs:233:13
    |
233 |             self.chipset,
    |             ^^^^^^^^^^^^ `Chipset` cannot be formatted with the default formatter
    |
    = help: the trait `core::fmt::Display` is not implemented for `Chipset`
    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
    = note: this error originates in the macro `$crate::format_args` which comes from the expansion of the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: `Revision` doesn't implement `core::fmt::Display`
   --> drivers/gpu/nova-core/gpu.rs:235:13
    |
235 |             self.revision
    |             ^^^^^^^^^^^^^ `Revision` cannot be formatted with the default formatter
    |
    = help: the trait `core::fmt::Display` is not implemented for `Revision`
    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
    = note: this error originates in the macro `$crate::format_args` which comes from the expansion of the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `MsgFunction: kernel::fmt::Display` is not satisfied
   --> drivers/gpu/nova-core/gsp/cmdq.rs:532:9
    |
532 | /         dev_dbg!(
533 | |             &self.dev,
534 | |             "GSP RPC: send: seq# {}, function={}, length=0x{:x}\n",
    | |                                               -- required by a bound introduced by this call
535 | |             self.seq,
536 | |             M::FUNCTION,
537 | |             dst.header.length(),
538 | |         );
    | |_________^ the trait `kernel::fmt::Display` is not implemented for `MsgFunction`
    |
    = help: the following other types implement trait `kernel::fmt::Display`:
              &T
              Arc<T>
              Arguments<'_>
              BStr
              Box<T, A>
              CStr
              Chipset
              Class
            and 22 others
    = note: required for `kernel::fmt::Adapter<&MsgFunction>` to implement `core::fmt::Display`
note: required by a bound in `core::fmt::rt::Argument::<'_>::new_display`
   --> /usr/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:113:27
    |
113 |     pub fn new_display<T: Display>(x: &T) -> Argument<'_> {
    |                           ^^^^^^^ required by this bound in `Argument::<'_>::new_display`
    = note: this error originates in the macro `::core::format_args` which comes from the expansion of the macro `dev_dbg` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0277`.

Caused by commit

  c5cf01ba8dfe ("rust: support formatting of foreign types")

(I think) interacting with commits

  38b7cc448a5b ("gpu: nova-core: implement Display for Spec")
  75f6b1de8133 ("gpu: nova-core: gsp: Add GSP command queue bindings and handling")

from the drm-rust tree.

I have applied the following patches for today.

From: Stephen Rothwell <[email-masked]>
Date: Mon, 17 Nov 2025 18:16:10 +1100
Subject: [PATCH] temp hack for "rust: support formatting of foreign types"

from the rust tree interacting with "gpu: nova-core: implement Display
for Spec" from the drm-rust tree.

Signed-off-by: Stephen Rothwell <[email-masked]>
---
 drivers/gpu/nova-core/gpu.rs | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index 19755af6ad04..be2055da1755 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -178,7 +178,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 /// Structure holding a basic description of the GPU: `Chipset` and `Revision`.
 pub(crate) struct Spec {
     chipset: Chipset,
-    revision: Revision,
+//  revision: Revision,
 }
 
 impl Spec {
@@ -220,7 +220,7 @@ impl TryFrom<regs::NV_PMC_BOOT_42> for Spec {
     fn try_from(boot42: regs::NV_PMC_BOOT_42) -> Result<Self> {
         Ok(Self {
             chipset: boot42.chipset()?,
-            revision: boot42.into(),
+//          revision: boot42.into(),
         })
     }
 }
@@ -229,10 +229,11 @@ 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
+            "Chipset"
+//          "Chipset: {}, Architecture: {:?}, Revision: {}",
+//          self.chipset,
+//          self.chipset.arch(),
+//          self.revision
         )
     }
 }
-- 
2.51.1

From: Stephen Rothwell <[email-masked]>
Date: Mon, 17 Nov 2025 18:25:53 +1100
Subject: [PATCH] temp hack 2 for "rust: support formatting of foreign types"

from the rust tree interacting with "gpu: nova-core: gsp: Add GSP command
queue bindings and handling" from the drm-rust tree.

Signed-off-by: Stephen Rothwell <[email-masked]>
---
 drivers/gpu/nova-core/gsp/cmdq.rs | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/cmdq.rs
index 6f946d14868a..ede05d1d82aa 100644
--- a/drivers/gpu/nova-core/gsp/cmdq.rs
+++ b/drivers/gpu/nova-core/gsp/cmdq.rs
@@ -529,13 +529,13 @@ pub(crate) fn send_command<M>(&mut self, bar: &Bar0, command: M) -> Result
                 dst.contents.1,
             ])));
 
-        dev_dbg!(
-            &self.dev,
-            "GSP RPC: send: seq# {}, function={}, length=0x{:x}\n",
-            self.seq,
-            M::FUNCTION,
-            dst.header.length(),
-        );
+//        dev_dbg!(
+//            &self.dev,
+//            "GSP RPC: send: seq# {}, function={}, length=0x{:x}\n",
+//            self.seq,
+//            M::FUNCTION,
+//            dst.header.length(),
+//        );
 
         // All set - update the write pointer and inform the GSP of the new command.
         let elem_count = dst.header.element_count();
-- 
2.51.1

-- 
Cheers,
Stephen Rothwell