* [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 [PATCH 1/4] rust: device: support `dev_printk` on all devices Gary Guo
@ 2026-01-20 18:11 ` Gary Guo
2026-01-21 6:52 ` Dirk Behme
2026-01-27 18:51 ` Igor Korotin
2026-01-20 18:11 ` [PATCH 3/4] gpu: nova-core: " Gary Guo
` (2 subsequent siblings)
3 siblings, 2 replies; 15+ messages in thread
From: Gary Guo @ 2026-01-20 18:11 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
Bjorn Helgaas, Krzysztof Wilczyński, Abdiel Janulgue,
Daniel Almeida, Robin Murphy, Dave Ertman, Ira Weiny,
Leon Romanovsky, Igor Korotin
Cc: rust-for-linux, linux-kernel, linux-pci
From: Gary Guo <gary@garyguo.net>
This is now handled by the macro itself.
Signed-off-by: Gary Guo <gary@garyguo.net>
---
samples/rust/rust_dma.rs | 2 +-
samples/rust/rust_driver_auxiliary.rs | 2 +-
samples/rust/rust_driver_faux.rs | 2 +-
samples/rust/rust_driver_i2c.rs | 4 ++--
samples/rust/rust_driver_pci.rs | 6 +++---
samples/rust/rust_driver_platform.rs | 2 +-
samples/rust/rust_i2c_client.rs | 10 ++--------
7 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/samples/rust/rust_dma.rs b/samples/rust/rust_dma.rs
index f53bce2a73e3..a9ac7937ebaf 100644
--- a/samples/rust/rust_dma.rs
+++ b/samples/rust/rust_dma.rs
@@ -57,7 +57,7 @@ impl pci::Driver for DmaSampleDriver {
fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
pin_init::pin_init_scope(move || {
- dev_info!(pdev.as_ref(), "Probe DMA test driver.\n");
+ dev_info!(pdev, "Probe DMA test driver.\n");
let mask = DmaMask::new::<64>();
diff --git a/samples/rust/rust_driver_auxiliary.rs b/samples/rust/rust_driver_auxiliary.rs
index f148124fe81f..c20961f16835 100644
--- a/samples/rust/rust_driver_auxiliary.rs
+++ b/samples/rust/rust_driver_auxiliary.rs
@@ -39,7 +39,7 @@ impl auxiliary::Driver for AuxiliaryDriver {
fn probe(adev: &auxiliary::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
dev_info!(
- adev.as_ref(),
+ adev,
"Probing auxiliary driver for auxiliary device with id={}\n",
adev.id()
);
diff --git a/samples/rust/rust_driver_faux.rs b/samples/rust/rust_driver_faux.rs
index 5330b77ea986..99876c8e3743 100644
--- a/samples/rust/rust_driver_faux.rs
+++ b/samples/rust/rust_driver_faux.rs
@@ -26,7 +26,7 @@ fn init(_module: &'static ThisModule) -> Result<Self> {
let reg = faux::Registration::new(c"rust-faux-sample-device", None)?;
- dev_info!(reg.as_ref(), "Hello from faux device!\n");
+ dev_info!(reg, "Hello from faux device!\n");
Ok(Self { _reg: reg })
}
diff --git a/samples/rust/rust_driver_i2c.rs b/samples/rust/rust_driver_i2c.rs
index 6be79f9e9fb5..e71b77196163 100644
--- a/samples/rust/rust_driver_i2c.rs
+++ b/samples/rust/rust_driver_i2c.rs
@@ -56,11 +56,11 @@ fn probe(
}
fn shutdown(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
- dev_info!(idev.as_ref(), "Shutdown Rust I2C driver sample.\n");
+ dev_info!(idev, "Shutdown Rust I2C driver sample.\n");
}
fn unbind(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
- dev_info!(idev.as_ref(), "Unbind Rust I2C driver sample.\n");
+ dev_info!(idev, "Unbind Rust I2C driver sample.\n");
}
}
diff --git a/samples/rust/rust_driver_pci.rs b/samples/rust/rust_driver_pci.rs
index ef04c6401e6a..d50828b642e5 100644
--- a/samples/rust/rust_driver_pci.rs
+++ b/samples/rust/rust_driver_pci.rs
@@ -75,7 +75,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
pin_init::pin_init_scope(move || {
let vendor = pdev.vendor_id();
dev_dbg!(
- pdev.as_ref(),
+ pdev,
"Probe Rust PCI driver sample (PCI ID: {}, 0x{:x}).\n",
vendor,
pdev.device_id()
@@ -91,7 +91,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
let bar = bar.access(pdev.as_ref())?;
dev_info!(
- pdev.as_ref(),
+ pdev,
"pci-testdev data-match count: {}\n",
Self::testdev(info, bar)?
);
@@ -112,7 +112,7 @@ fn unbind(pdev: &pci::Device<Core>, this: Pin<&Self>) {
#[pinned_drop]
impl PinnedDrop for SampleDriver {
fn drop(self: Pin<&mut Self>) {
- dev_dbg!(self.pdev.as_ref(), "Remove Rust PCI driver sample.\n");
+ dev_dbg!(self.pdev, "Remove Rust PCI driver sample.\n");
}
}
diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_driver_platform.rs
index 9537dc38c563..f2229d176fb9 100644
--- a/samples/rust/rust_driver_platform.rs
+++ b/samples/rust/rust_driver_platform.rs
@@ -180,7 +180,7 @@ fn properties_parse(dev: &device::Device) -> Result {
impl Drop for SampleDriver {
fn drop(&mut self) {
- dev_dbg!(self.pdev.as_ref(), "Remove Rust Platform driver sample.\n");
+ dev_dbg!(self.pdev, "Remove Rust Platform driver sample.\n");
}
}
diff --git a/samples/rust/rust_i2c_client.rs b/samples/rust/rust_i2c_client.rs
index 8d2c12e535b0..72da5499f150 100644
--- a/samples/rust/rust_i2c_client.rs
+++ b/samples/rust/rust_i2c_client.rs
@@ -113,10 +113,7 @@ fn probe(
pdev: &platform::Device<device::Core>,
_info: Option<&Self::IdInfo>,
) -> impl PinInit<Self, Error> {
- dev_info!(
- pdev.as_ref(),
- "Probe Rust I2C Client registration sample.\n"
- );
+ dev_info!(pdev, "Probe Rust I2C Client registration sample.\n");
kernel::try_pin_init!( Self {
parent_dev: pdev.into(),
@@ -130,10 +127,7 @@ fn probe(
}
fn unbind(pdev: &platform::Device<device::Core>, _this: Pin<&Self>) {
- dev_info!(
- pdev.as_ref(),
- "Unbind Rust I2C Client registration sample.\n"
- );
+ dev_info!(pdev, "Unbind Rust I2C Client registration sample.\n");
}
}
--
2.51.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 ` [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print Gary Guo
@ 2026-01-21 6:52 ` Dirk Behme
2026-01-23 17:44 ` Gary Guo
2026-01-27 18:51 ` Igor Korotin
1 sibling, 1 reply; 15+ messages in thread
From: Dirk Behme @ 2026-01-21 6:52 UTC (permalink / raw)
To: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, Abdiel Janulgue, Daniel Almeida,
Robin Murphy, Dave Ertman, Ira Weiny, Leon Romanovsky,
Igor Korotin
Cc: rust-for-linux, linux-kernel, linux-pci
Hi Gary
On 20/01/2026 19:11, Gary Guo wrote:
> From: Gary Guo <gary@garyguo.net>
>
> This is now handled by the macro itself.
>
> Signed-off-by: Gary Guo <gary@garyguo.net>
> ---
> samples/rust/rust_dma.rs | 2 +-
> samples/rust/rust_driver_auxiliary.rs | 2 +-
> samples/rust/rust_driver_faux.rs | 2 +-
> samples/rust/rust_driver_i2c.rs | 4 ++--
> samples/rust/rust_driver_pci.rs | 6 +++---
> samples/rust/rust_driver_platform.rs | 2 +-
> samples/rust/rust_i2c_client.rs | 10 ++--------
> 7 files changed, 11 insertions(+), 17 deletions(-)
>
> diff --git a/samples/rust/rust_dma.rs b/samples/rust/rust_dma.rs
> index f53bce2a73e3..a9ac7937ebaf 100644
> --- a/samples/rust/rust_dma.rs
> +++ b/samples/rust/rust_dma.rs
> @@ -57,7 +57,7 @@ impl pci::Driver for DmaSampleDriver {
>
> fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
> pin_init::pin_init_scope(move || {
> - dev_info!(pdev.as_ref(), "Probe DMA test driver.\n");
> + dev_info!(pdev, "Probe DMA test driver.\n");
>
> let mask = DmaMask::new::<64>();
>
> diff --git a/samples/rust/rust_driver_auxiliary.rs b/samples/rust/rust_driver_auxiliary.rs
> index f148124fe81f..c20961f16835 100644
> --- a/samples/rust/rust_driver_auxiliary.rs
> +++ b/samples/rust/rust_driver_auxiliary.rs
> @@ -39,7 +39,7 @@ impl auxiliary::Driver for AuxiliaryDriver {
>
> fn probe(adev: &auxiliary::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
> dev_info!(
> - adev.as_ref(),
> + adev,
> "Probing auxiliary driver for auxiliary device with id={}\n",
> adev.id()
> );
> diff --git a/samples/rust/rust_driver_faux.rs b/samples/rust/rust_driver_faux.rs
> index 5330b77ea986..99876c8e3743 100644
> --- a/samples/rust/rust_driver_faux.rs
> +++ b/samples/rust/rust_driver_faux.rs
> @@ -26,7 +26,7 @@ fn init(_module: &'static ThisModule) -> Result<Self> {
>
> let reg = faux::Registration::new(c"rust-faux-sample-device", None)?;
>
> - dev_info!(reg.as_ref(), "Hello from faux device!\n");
> + dev_info!(reg, "Hello from faux device!\n");
>
> Ok(Self { _reg: reg })
> }
> diff --git a/samples/rust/rust_driver_i2c.rs b/samples/rust/rust_driver_i2c.rs
> index 6be79f9e9fb5..e71b77196163 100644
> --- a/samples/rust/rust_driver_i2c.rs
> +++ b/samples/rust/rust_driver_i2c.rs
> @@ -56,11 +56,11 @@ fn probe(
> }
>
> fn shutdown(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
> - dev_info!(idev.as_ref(), "Shutdown Rust I2C driver sample.\n");
> + dev_info!(idev, "Shutdown Rust I2C driver sample.\n");
> }
>
> fn unbind(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
> - dev_info!(idev.as_ref(), "Unbind Rust I2C driver sample.\n");
> + dev_info!(idev, "Unbind Rust I2C driver sample.\n");
> }
> }
>
> diff --git a/samples/rust/rust_driver_pci.rs b/samples/rust/rust_driver_pci.rs
> index ef04c6401e6a..d50828b642e5 100644
> --- a/samples/rust/rust_driver_pci.rs
> +++ b/samples/rust/rust_driver_pci.rs
> @@ -75,7 +75,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
> pin_init::pin_init_scope(move || {
> let vendor = pdev.vendor_id();
> dev_dbg!(
> - pdev.as_ref(),
> + pdev,
> "Probe Rust PCI driver sample (PCI ID: {}, 0x{:x}).\n",
> vendor,
> pdev.device_id()
> @@ -91,7 +91,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
> let bar = bar.access(pdev.as_ref())?;
>
> dev_info!(
> - pdev.as_ref(),
> + pdev,
> "pci-testdev data-match count: {}\n",
> Self::testdev(info, bar)?
> );
> @@ -112,7 +112,7 @@ fn unbind(pdev: &pci::Device<Core>, this: Pin<&Self>) {
> #[pinned_drop]
> impl PinnedDrop for SampleDriver {
> fn drop(self: Pin<&mut Self>) {
> - dev_dbg!(self.pdev.as_ref(), "Remove Rust PCI driver sample.\n");
> + dev_dbg!(self.pdev, "Remove Rust PCI driver sample.\n");
> }
> }
>
> diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_driver_platform.rs
> index 9537dc38c563..f2229d176fb9 100644
> --- a/samples/rust/rust_driver_platform.rs
> +++ b/samples/rust/rust_driver_platform.rs
> @@ -180,7 +180,7 @@ fn properties_parse(dev: &device::Device) -> Result {
>
> impl Drop for SampleDriver {
> fn drop(&mut self) {
> - dev_dbg!(self.pdev.as_ref(), "Remove Rust Platform driver sample.\n");
> + dev_dbg!(self.pdev, "Remove Rust Platform driver sample.\n");
> }
> }
>
> diff --git a/samples/rust/rust_i2c_client.rs b/samples/rust/rust_i2c_client.rs
> index 8d2c12e535b0..72da5499f150 100644
> --- a/samples/rust/rust_i2c_client.rs
> +++ b/samples/rust/rust_i2c_client.rs
> @@ -113,10 +113,7 @@ fn probe(
> pdev: &platform::Device<device::Core>,
> _info: Option<&Self::IdInfo>,
> ) -> impl PinInit<Self, Error> {
> - dev_info!(
> - pdev.as_ref(),
> - "Probe Rust I2C Client registration sample.\n"
> - );
> + dev_info!(pdev, "Probe Rust I2C Client registration sample.\n");
>
> kernel::try_pin_init!( Self {
> parent_dev: pdev.into(),
> @@ -130,10 +127,7 @@ fn probe(
> }
>
> fn unbind(pdev: &platform::Device<device::Core>, _this: Pin<&Self>) {
> - dev_info!(
> - pdev.as_ref(),
> - "Unbind Rust I2C Client registration sample.\n"
> - );
> + dev_info!(pdev, "Unbind Rust I2C Client registration sample.\n");
> }
> }
At least in samples/rust we have several places where we added helper
variables for `dev`. For example in rust_driver_platform.rs [1] we have
let dev = pdev.as_ref();
dev_dbg!(dev, "Probe Rust Platform driver sample.\n");
Do we want to keep this?
I think there are places where this `dev` helper variable is used for
printing, only. And there are places, like in the `probe()` of
rust_driver_platform.rs, where the `dev` helper is additionally used
elsewhere:
... Self::properties_parse(dev)?;
Hmm, I'm somehow under the impression what to use when in the end
becomes slightly confusing in sum?
Best regards
Dirk
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/samples/rust/rust_driver_platform.rs#n106
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print
2026-01-21 6:52 ` Dirk Behme
@ 2026-01-23 17:44 ` Gary Guo
0 siblings, 0 replies; 15+ messages in thread
From: Gary Guo @ 2026-01-23 17:44 UTC (permalink / raw)
To: Dirk Behme, Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki,
Danilo Krummrich, Miguel Ojeda, Boqun Feng, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
Bjorn Helgaas, Krzysztof Wilczyński, Abdiel Janulgue,
Daniel Almeida, Robin Murphy, Dave Ertman, Ira Weiny,
Leon Romanovsky, Igor Korotin
Cc: rust-for-linux, linux-kernel, linux-pci
On Wed Jan 21, 2026 at 6:52 AM GMT, Dirk Behme wrote:
> Hi Gary
>
> On 20/01/2026 19:11, Gary Guo wrote:
>> From: Gary Guo <gary@garyguo.net>
>>
>> This is now handled by the macro itself.
>>
>> Signed-off-by: Gary Guo <gary@garyguo.net>
>> ---
>> samples/rust/rust_dma.rs | 2 +-
>> samples/rust/rust_driver_auxiliary.rs | 2 +-
>> samples/rust/rust_driver_faux.rs | 2 +-
>> samples/rust/rust_driver_i2c.rs | 4 ++--
>> samples/rust/rust_driver_pci.rs | 6 +++---
>> samples/rust/rust_driver_platform.rs | 2 +-
>> samples/rust/rust_i2c_client.rs | 10 ++--------
>> 7 files changed, 11 insertions(+), 17 deletions(-)
>>
>> diff --git a/samples/rust/rust_dma.rs b/samples/rust/rust_dma.rs
>> index f53bce2a73e3..a9ac7937ebaf 100644
>> --- a/samples/rust/rust_dma.rs
>> +++ b/samples/rust/rust_dma.rs
>> @@ -57,7 +57,7 @@ impl pci::Driver for DmaSampleDriver {
>>
>> fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
>> pin_init::pin_init_scope(move || {
>> - dev_info!(pdev.as_ref(), "Probe DMA test driver.\n");
>> + dev_info!(pdev, "Probe DMA test driver.\n");
>>
>> let mask = DmaMask::new::<64>();
>>
>> diff --git a/samples/rust/rust_driver_auxiliary.rs b/samples/rust/rust_driver_auxiliary.rs
>> index f148124fe81f..c20961f16835 100644
>> --- a/samples/rust/rust_driver_auxiliary.rs
>> +++ b/samples/rust/rust_driver_auxiliary.rs
>> @@ -39,7 +39,7 @@ impl auxiliary::Driver for AuxiliaryDriver {
>>
>> fn probe(adev: &auxiliary::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
>> dev_info!(
>> - adev.as_ref(),
>> + adev,
>> "Probing auxiliary driver for auxiliary device with id={}\n",
>> adev.id()
>> );
>> diff --git a/samples/rust/rust_driver_faux.rs b/samples/rust/rust_driver_faux.rs
>> index 5330b77ea986..99876c8e3743 100644
>> --- a/samples/rust/rust_driver_faux.rs
>> +++ b/samples/rust/rust_driver_faux.rs
>> @@ -26,7 +26,7 @@ fn init(_module: &'static ThisModule) -> Result<Self> {
>>
>> let reg = faux::Registration::new(c"rust-faux-sample-device", None)?;
>>
>> - dev_info!(reg.as_ref(), "Hello from faux device!\n");
>> + dev_info!(reg, "Hello from faux device!\n");
>>
>> Ok(Self { _reg: reg })
>> }
>> diff --git a/samples/rust/rust_driver_i2c.rs b/samples/rust/rust_driver_i2c.rs
>> index 6be79f9e9fb5..e71b77196163 100644
>> --- a/samples/rust/rust_driver_i2c.rs
>> +++ b/samples/rust/rust_driver_i2c.rs
>> @@ -56,11 +56,11 @@ fn probe(
>> }
>>
>> fn shutdown(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
>> - dev_info!(idev.as_ref(), "Shutdown Rust I2C driver sample.\n");
>> + dev_info!(idev, "Shutdown Rust I2C driver sample.\n");
>> }
>>
>> fn unbind(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
>> - dev_info!(idev.as_ref(), "Unbind Rust I2C driver sample.\n");
>> + dev_info!(idev, "Unbind Rust I2C driver sample.\n");
>> }
>> }
>>
>> diff --git a/samples/rust/rust_driver_pci.rs b/samples/rust/rust_driver_pci.rs
>> index ef04c6401e6a..d50828b642e5 100644
>> --- a/samples/rust/rust_driver_pci.rs
>> +++ b/samples/rust/rust_driver_pci.rs
>> @@ -75,7 +75,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
>> pin_init::pin_init_scope(move || {
>> let vendor = pdev.vendor_id();
>> dev_dbg!(
>> - pdev.as_ref(),
>> + pdev,
>> "Probe Rust PCI driver sample (PCI ID: {}, 0x{:x}).\n",
>> vendor,
>> pdev.device_id()
>> @@ -91,7 +91,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
>> let bar = bar.access(pdev.as_ref())?;
>>
>> dev_info!(
>> - pdev.as_ref(),
>> + pdev,
>> "pci-testdev data-match count: {}\n",
>> Self::testdev(info, bar)?
>> );
>> @@ -112,7 +112,7 @@ fn unbind(pdev: &pci::Device<Core>, this: Pin<&Self>) {
>> #[pinned_drop]
>> impl PinnedDrop for SampleDriver {
>> fn drop(self: Pin<&mut Self>) {
>> - dev_dbg!(self.pdev.as_ref(), "Remove Rust PCI driver sample.\n");
>> + dev_dbg!(self.pdev, "Remove Rust PCI driver sample.\n");
>> }
>> }
>>
>> diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_driver_platform.rs
>> index 9537dc38c563..f2229d176fb9 100644
>> --- a/samples/rust/rust_driver_platform.rs
>> +++ b/samples/rust/rust_driver_platform.rs
>> @@ -180,7 +180,7 @@ fn properties_parse(dev: &device::Device) -> Result {
>>
>> impl Drop for SampleDriver {
>> fn drop(&mut self) {
>> - dev_dbg!(self.pdev.as_ref(), "Remove Rust Platform driver sample.\n");
>> + dev_dbg!(self.pdev, "Remove Rust Platform driver sample.\n");
>> }
>> }
>>
>> diff --git a/samples/rust/rust_i2c_client.rs b/samples/rust/rust_i2c_client.rs
>> index 8d2c12e535b0..72da5499f150 100644
>> --- a/samples/rust/rust_i2c_client.rs
>> +++ b/samples/rust/rust_i2c_client.rs
>> @@ -113,10 +113,7 @@ fn probe(
>> pdev: &platform::Device<device::Core>,
>> _info: Option<&Self::IdInfo>,
>> ) -> impl PinInit<Self, Error> {
>> - dev_info!(
>> - pdev.as_ref(),
>> - "Probe Rust I2C Client registration sample.\n"
>> - );
>> + dev_info!(pdev, "Probe Rust I2C Client registration sample.\n");
>>
>> kernel::try_pin_init!( Self {
>> parent_dev: pdev.into(),
>> @@ -130,10 +127,7 @@ fn probe(
>> }
>>
>> fn unbind(pdev: &platform::Device<device::Core>, _this: Pin<&Self>) {
>> - dev_info!(
>> - pdev.as_ref(),
>> - "Unbind Rust I2C Client registration sample.\n"
>> - );
>> + dev_info!(pdev, "Unbind Rust I2C Client registration sample.\n");
>> }
>> }
>
>
> At least in samples/rust we have several places where we added helper
> variables for `dev`. For example in rust_driver_platform.rs [1] we have
>
> let dev = pdev.as_ref();
> dev_dbg!(dev, "Probe Rust Platform driver sample.\n");
>
> Do we want to keep this?
>
> I think there are places where this `dev` helper variable is used for
> printing, only. And there are places, like in the `probe()` of
> rust_driver_platform.rs, where the `dev` helper is additionally used
> elsewhere:
>
> ... Self::properties_parse(dev)?;
>
> Hmm, I'm somehow under the impression what to use when in the end
> becomes slightly confusing in sum?
Hi Dirk,
If you already need to be obtain `&Device`, then I would say either is fine.
The `AsRef` impl of devices are zero-cost operations anyway.
The motivation behind the patch is that in a lot of cases we only need `&Device`
specifically to print, which is something that I want to avoid.
Best,
Gary
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 ` [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print Gary Guo
2026-01-21 6:52 ` Dirk Behme
@ 2026-01-27 18:51 ` Igor Korotin
1 sibling, 0 replies; 15+ messages in thread
From: Igor Korotin @ 2026-01-27 18:51 UTC (permalink / raw)
To: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, Abdiel Janulgue, Daniel Almeida,
Robin Murphy, Dave Ertman, Ira Weiny, Leon Romanovsky,
Igor Korotin
Cc: rust-for-linux, linux-kernel, linux-pci
Hi
On 1/20/2026 6:11 PM, Gary Guo wrote:
> From: Gary Guo <gary@garyguo.net>
>
> This is now handled by the macro itself.
>
> Signed-off-by: Gary Guo <gary@garyguo.net>
> ---
> samples/rust/rust_dma.rs | 2 +-
> samples/rust/rust_driver_auxiliary.rs | 2 +-
> samples/rust/rust_driver_faux.rs | 2 +-
> samples/rust/rust_driver_i2c.rs | 4 ++--
> samples/rust/rust_driver_pci.rs | 6 +++---
> samples/rust/rust_driver_platform.rs | 2 +-
> samples/rust/rust_i2c_client.rs | 10 ++--------
> 7 files changed, 11 insertions(+), 17 deletions(-)
>
> diff --git a/samples/rust/rust_dma.rs b/samples/rust/rust_dma.rs
> index f53bce2a73e3..a9ac7937ebaf 100644
> --- a/samples/rust/rust_dma.rs
> +++ b/samples/rust/rust_dma.rs
> @@ -57,7 +57,7 @@ impl pci::Driver for DmaSampleDriver {
>
> fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
> pin_init::pin_init_scope(move || {
> - dev_info!(pdev.as_ref(), "Probe DMA test driver.\n");
> + dev_info!(pdev, "Probe DMA test driver.\n");
>
> let mask = DmaMask::new::<64>();
>
> diff --git a/samples/rust/rust_driver_auxiliary.rs b/samples/rust/rust_driver_auxiliary.rs
> index f148124fe81f..c20961f16835 100644
> --- a/samples/rust/rust_driver_auxiliary.rs
> +++ b/samples/rust/rust_driver_auxiliary.rs
> @@ -39,7 +39,7 @@ impl auxiliary::Driver for AuxiliaryDriver {
>
> fn probe(adev: &auxiliary::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
> dev_info!(
> - adev.as_ref(),
> + adev,
> "Probing auxiliary driver for auxiliary device with id={}\n",
> adev.id()
> );
> diff --git a/samples/rust/rust_driver_faux.rs b/samples/rust/rust_driver_faux.rs
> index 5330b77ea986..99876c8e3743 100644
> --- a/samples/rust/rust_driver_faux.rs
> +++ b/samples/rust/rust_driver_faux.rs
> @@ -26,7 +26,7 @@ fn init(_module: &'static ThisModule) -> Result<Self> {
>
> let reg = faux::Registration::new(c"rust-faux-sample-device", None)?;
>
> - dev_info!(reg.as_ref(), "Hello from faux device!\n");
> + dev_info!(reg, "Hello from faux device!\n");
>
> Ok(Self { _reg: reg })
> }
> diff --git a/samples/rust/rust_driver_i2c.rs b/samples/rust/rust_driver_i2c.rs
> index 6be79f9e9fb5..e71b77196163 100644
> --- a/samples/rust/rust_driver_i2c.rs
> +++ b/samples/rust/rust_driver_i2c.rs
> @@ -56,11 +56,11 @@ fn probe(
> }
>
> fn shutdown(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
> - dev_info!(idev.as_ref(), "Shutdown Rust I2C driver sample.\n");
> + dev_info!(idev, "Shutdown Rust I2C driver sample.\n");
> }
>
> fn unbind(idev: &i2c::I2cClient<Core>, _this: Pin<&Self>) {
> - dev_info!(idev.as_ref(), "Unbind Rust I2C driver sample.\n");
> + dev_info!(idev, "Unbind Rust I2C driver sample.\n");
> }
> }
>
> diff --git a/samples/rust/rust_driver_pci.rs b/samples/rust/rust_driver_pci.rs
> index ef04c6401e6a..d50828b642e5 100644
> --- a/samples/rust/rust_driver_pci.rs
> +++ b/samples/rust/rust_driver_pci.rs
> @@ -75,7 +75,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
> pin_init::pin_init_scope(move || {
> let vendor = pdev.vendor_id();
> dev_dbg!(
> - pdev.as_ref(),
> + pdev,
> "Probe Rust PCI driver sample (PCI ID: {}, 0x{:x}).\n",
> vendor,
> pdev.device_id()
> @@ -91,7 +91,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> impl PinInit<Self, Er
> let bar = bar.access(pdev.as_ref())?;
>
> dev_info!(
> - pdev.as_ref(),
> + pdev,
> "pci-testdev data-match count: {}\n",
> Self::testdev(info, bar)?
> );
> @@ -112,7 +112,7 @@ fn unbind(pdev: &pci::Device<Core>, this: Pin<&Self>) {
> #[pinned_drop]
> impl PinnedDrop for SampleDriver {
> fn drop(self: Pin<&mut Self>) {
> - dev_dbg!(self.pdev.as_ref(), "Remove Rust PCI driver sample.\n");
> + dev_dbg!(self.pdev, "Remove Rust PCI driver sample.\n");
> }
> }
>
> diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_driver_platform.rs
> index 9537dc38c563..f2229d176fb9 100644
> --- a/samples/rust/rust_driver_platform.rs
> +++ b/samples/rust/rust_driver_platform.rs
> @@ -180,7 +180,7 @@ fn properties_parse(dev: &device::Device) -> Result {
>
> impl Drop for SampleDriver {
> fn drop(&mut self) {
> - dev_dbg!(self.pdev.as_ref(), "Remove Rust Platform driver sample.\n");
> + dev_dbg!(self.pdev, "Remove Rust Platform driver sample.\n");
> }
> }
>
> diff --git a/samples/rust/rust_i2c_client.rs b/samples/rust/rust_i2c_client.rs
> index 8d2c12e535b0..72da5499f150 100644
> --- a/samples/rust/rust_i2c_client.rs
> +++ b/samples/rust/rust_i2c_client.rs
> @@ -113,10 +113,7 @@ fn probe(
> pdev: &platform::Device<device::Core>,
> _info: Option<&Self::IdInfo>,
> ) -> impl PinInit<Self, Error> {
> - dev_info!(
> - pdev.as_ref(),
> - "Probe Rust I2C Client registration sample.\n"
> - );
> + dev_info!(pdev, "Probe Rust I2C Client registration sample.\n");
>
> kernel::try_pin_init!( Self {
> parent_dev: pdev.into(),
> @@ -130,10 +127,7 @@ fn probe(
> }
>
> fn unbind(pdev: &platform::Device<device::Core>, _this: Pin<&Self>) {
> - dev_info!(
> - pdev.as_ref(),
> - "Unbind Rust I2C Client registration sample.\n"
> - );
> + dev_info!(pdev, "Unbind Rust I2C Client registration sample.\n");
> }
> }
>
Acked-by: Igor Korotin <igor.korotin.linux@gmail.com>
Thanks
Igor
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 3/4] gpu: nova-core: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 [PATCH 1/4] rust: device: support `dev_printk` on all devices Gary Guo
2026-01-20 18:11 ` [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print Gary Guo
@ 2026-01-20 18:11 ` Gary Guo
2026-01-20 18:11 ` [PATCH 4/4] gpu: tyr: " Gary Guo
2026-01-20 18:56 ` [PATCH 1/4] rust: device: support `dev_printk` on all devices Danilo Krummrich
3 siblings, 0 replies; 15+ messages in thread
From: Gary Guo @ 2026-01-20 18:11 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
Bjorn Helgaas, Krzysztof Wilczyński, Alexandre Courbot,
David Airlie, Simona Vetter, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, Alistair Popple, Joel Fernandes,
Lyude Paul, John Hubbard
Cc: rust-for-linux, linux-kernel, linux-pci, Timur Tabi, nouveau,
dri-devel, linux-riscv
From: Gary Guo <gary@garyguo.net>
This is now handled by the macro itself.
Signed-off-by: Gary Guo <gary@garyguo.net>
---
drivers/gpu/nova-core/driver.rs | 2 +-
drivers/gpu/nova-core/gpu.rs | 4 ++--
drivers/gpu/nova-core/gsp/boot.rs | 32 +++++++------------------------
3 files changed, 10 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/nova-core/driver.rs b/drivers/gpu/nova-core/driver.rs
index 5a4cc047bcfc..e39885c0d5ca 100644
--- a/drivers/gpu/nova-core/driver.rs
+++ b/drivers/gpu/nova-core/driver.rs
@@ -70,7 +70,7 @@ impl pci::Driver for NovaCore {
fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> impl PinInit<Self, Error> {
pin_init::pin_init_scope(move || {
- dev_dbg!(pdev.as_ref(), "Probe Nova Core GPU driver.\n");
+ dev_dbg!(pdev, "Probe Nova Core GPU driver.\n");
pdev.enable_device_mem()?;
pdev.set_master();
diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index 9b042ef1a308..60c85fffaeaf 100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -262,13 +262,13 @@ pub(crate) fn new<'a>(
) -> impl PinInit<Self, Error> + 'a {
try_pin_init!(Self {
spec: Spec::new(pdev.as_ref(), bar).inspect(|spec| {
- dev_info!(pdev.as_ref(),"NVIDIA ({})\n", spec);
+ dev_info!(pdev,"NVIDIA ({})\n", spec);
})?,
// We must wait for GFW_BOOT completion before doing any significant setup on the GPU.
_: {
gfw::wait_gfw_boot_completion(bar)
- .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete\n"))?;
+ .inspect_err(|_| dev_err!(pdev, "GFW boot did not complete\n"))?;
},
sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, spec.chipset)?,
diff --git a/drivers/gpu/nova-core/gsp/boot.rs b/drivers/gpu/nova-core/gsp/boot.rs
index 581b412554dc..1582e1a65274 100644
--- a/drivers/gpu/nova-core/gsp/boot.rs
+++ b/drivers/gpu/nova-core/gsp/boot.rs
@@ -170,15 +170,10 @@ pub(crate) fn boot(
Some(libos_handle as u32),
Some((libos_handle >> 32) as u32),
)?;
- dev_dbg!(
- pdev.as_ref(),
- "GSP MBOX0: {:#x}, MBOX1: {:#x}\n",
- mbox0,
- mbox1
- );
+ dev_dbg!(pdev, "GSP MBOX0: {:#x}, MBOX1: {:#x}\n", mbox0, mbox1);
dev_dbg!(
- pdev.as_ref(),
+ pdev,
"Using SEC2 to load and run the booter_load firmware...\n"
);
@@ -190,19 +185,10 @@ pub(crate) fn boot(
Some(wpr_handle as u32),
Some((wpr_handle >> 32) as u32),
)?;
- dev_dbg!(
- pdev.as_ref(),
- "SEC2 MBOX0: {:#x}, MBOX1{:#x}\n",
- mbox0,
- mbox1
- );
+ dev_dbg!(pdev, "SEC2 MBOX0: {:#x}, MBOX1{:#x}\n", mbox0, mbox1);
if mbox0 != 0 {
- dev_err!(
- pdev.as_ref(),
- "Booter-load failed with error {:#x}\n",
- mbox0
- );
+ dev_err!(pdev, "Booter-load failed with error {:#x}\n", mbox0);
return Err(ENODEV);
}
@@ -216,11 +202,7 @@ pub(crate) fn boot(
Delta::from_secs(5),
)?;
- dev_dbg!(
- pdev.as_ref(),
- "RISC-V active? {}\n",
- gsp_falcon.is_riscv_active(bar),
- );
+ dev_dbg!(pdev, "RISC-V active? {}\n", gsp_falcon.is_riscv_active(bar),);
// Create and run the GSP sequencer.
let seq_params = GspSequencerParams {
@@ -239,8 +221,8 @@ pub(crate) fn boot(
// Obtain and display basic GPU information.
let info = commands::get_gsp_info(&mut self.cmdq, bar)?;
match info.gpu_name() {
- Ok(name) => dev_info!(pdev.as_ref(), "GPU name: {}\n", name),
- Err(e) => dev_warn!(pdev.as_ref(), "GPU name unavailable: {:?}\n", e),
+ Ok(name) => dev_info!(pdev, "GPU name: {}\n", name),
+ Err(e) => dev_warn!(pdev, "GPU name unavailable: {:?}\n", e),
}
Ok(())
--
2.51.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 4/4] gpu: tyr: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 [PATCH 1/4] rust: device: support `dev_printk` on all devices Gary Guo
2026-01-20 18:11 ` [PATCH 2/4] rust: samples: remove redundant `.as_ref()` for `dev_*` print Gary Guo
2026-01-20 18:11 ` [PATCH 3/4] gpu: nova-core: " Gary Guo
@ 2026-01-20 18:11 ` Gary Guo
2026-01-21 12:25 ` Daniel Almeida
2026-01-26 9:17 ` Alice Ryhl
2026-01-20 18:56 ` [PATCH 1/4] rust: device: support `dev_printk` on all devices Danilo Krummrich
3 siblings, 2 replies; 15+ messages in thread
From: Gary Guo @ 2026-01-20 18:11 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron,
Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
Bjorn Helgaas, Krzysztof Wilczyński, Daniel Almeida,
David Airlie, Simona Vetter
Cc: rust-for-linux, linux-kernel, linux-pci, dri-devel
From: Gary Guo <gary@garyguo.net>
This is now handled by the macro itself.
Signed-off-by: Gary Guo <gary@garyguo.net>
---
drivers/gpu/drm/tyr/driver.rs | 2 +-
drivers/gpu/drm/tyr/gpu.rs | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs
index 2a45d0288825..fe991d8cbb4a 100644
--- a/drivers/gpu/drm/tyr/driver.rs
+++ b/drivers/gpu/drm/tyr/driver.rs
@@ -140,7 +140,7 @@ fn probe(
// We need this to be dev_info!() because dev_dbg!() does not work at
// all in Rust for now, and we need to see whether probe succeeded.
- dev_info!(pdev.as_ref(), "Tyr initialized correctly.\n");
+ dev_info!(pdev, "Tyr initialized correctly.\n");
Ok(driver)
}
}
diff --git a/drivers/gpu/drm/tyr/gpu.rs b/drivers/gpu/drm/tyr/gpu.rs
index bfbf2a1d80e6..04a0a5d5ef3a 100644
--- a/drivers/gpu/drm/tyr/gpu.rs
+++ b/drivers/gpu/drm/tyr/gpu.rs
@@ -98,7 +98,7 @@ pub(crate) fn log(&self, pdev: &platform::Device) {
};
dev_info!(
- pdev.as_ref(),
+ pdev,
"mali-{} id 0x{:x} major 0x{:x} minor 0x{:x} status 0x{:x}",
model_name,
self.gpu_id >> 16,
@@ -108,7 +108,7 @@ pub(crate) fn log(&self, pdev: &platform::Device) {
);
dev_info!(
- pdev.as_ref(),
+ pdev,
"Features: L2:{:#x} Tiler:{:#x} Mem:{:#x} MMU:{:#x} AS:{:#x}",
self.l2_features,
self.tiler_features,
@@ -118,7 +118,7 @@ pub(crate) fn log(&self, pdev: &platform::Device) {
);
dev_info!(
- pdev.as_ref(),
+ pdev,
"shader_present=0x{:016x} l2_present=0x{:016x} tiler_present=0x{:016x}",
self.shader_present,
self.l2_present,
--
2.51.2
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 4/4] gpu: tyr: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 ` [PATCH 4/4] gpu: tyr: " Gary Guo
@ 2026-01-21 12:25 ` Daniel Almeida
2026-01-26 9:17 ` Alice Ryhl
1 sibling, 0 replies; 15+ messages in thread
From: Daniel Almeida @ 2026-01-21 12:25 UTC (permalink / raw)
To: Gary Guo
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, David Airlie, Simona Vetter,
rust-for-linux, linux-kernel, linux-pci, dri-devel
> On 20 Jan 2026, at 15:11, Gary Guo <gary@kernel.org> wrote:
>
> From: Gary Guo <gary@garyguo.net>
>
> This is now handled by the macro itself.
>
> Signed-off-by: Gary Guo <gary@garyguo.net>
> ---
> drivers/gpu/drm/tyr/driver.rs | 2 +-
> drivers/gpu/drm/tyr/gpu.rs | 6 +++---
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/tyr/driver.rs b/drivers/gpu/drm/tyr/driver.rs
> index 2a45d0288825..fe991d8cbb4a 100644
> --- a/drivers/gpu/drm/tyr/driver.rs
> +++ b/drivers/gpu/drm/tyr/driver.rs
> @@ -140,7 +140,7 @@ fn probe(
>
> // We need this to be dev_info!() because dev_dbg!() does not work at
> // all in Rust for now, and we need to see whether probe succeeded.
> - dev_info!(pdev.as_ref(), "Tyr initialized correctly.\n");
> + dev_info!(pdev, "Tyr initialized correctly.\n");
> Ok(driver)
> }
> }
> diff --git a/drivers/gpu/drm/tyr/gpu.rs b/drivers/gpu/drm/tyr/gpu.rs
> index bfbf2a1d80e6..04a0a5d5ef3a 100644
> --- a/drivers/gpu/drm/tyr/gpu.rs
> +++ b/drivers/gpu/drm/tyr/gpu.rs
> @@ -98,7 +98,7 @@ pub(crate) fn log(&self, pdev: &platform::Device) {
> };
>
> dev_info!(
> - pdev.as_ref(),
> + pdev,
> "mali-{} id 0x{:x} major 0x{:x} minor 0x{:x} status 0x{:x}",
> model_name,
> self.gpu_id >> 16,
> @@ -108,7 +108,7 @@ pub(crate) fn log(&self, pdev: &platform::Device) {
> );
>
> dev_info!(
> - pdev.as_ref(),
> + pdev,
> "Features: L2:{:#x} Tiler:{:#x} Mem:{:#x} MMU:{:#x} AS:{:#x}",
> self.l2_features,
> self.tiler_features,
> @@ -118,7 +118,7 @@ pub(crate) fn log(&self, pdev: &platform::Device) {
> );
>
> dev_info!(
> - pdev.as_ref(),
> + pdev,
> "shader_present=0x{:016x} l2_present=0x{:016x} tiler_present=0x{:016x}",
> self.shader_present,
> self.l2_present,
> --
> 2.51.2
>
>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 4/4] gpu: tyr: remove redundant `.as_ref()` for `dev_*` print
2026-01-20 18:11 ` [PATCH 4/4] gpu: tyr: " Gary Guo
2026-01-21 12:25 ` Daniel Almeida
@ 2026-01-26 9:17 ` Alice Ryhl
2026-01-26 13:43 ` Danilo Krummrich
1 sibling, 1 reply; 15+ messages in thread
From: Alice Ryhl @ 2026-01-26 9:17 UTC (permalink / raw)
To: Gary Guo
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Miguel Ojeda, Boqun Feng, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, Daniel Almeida, David Airlie,
Simona Vetter, rust-for-linux, linux-kernel, linux-pci, dri-devel
On Tue, Jan 20, 2026 at 06:11:09PM +0000, Gary Guo wrote:
> From: Gary Guo <gary@garyguo.net>
>
> This is now handled by the macro itself.
>
> Signed-off-by: Gary Guo <gary@garyguo.net>
Acked-by: Alice Ryhl <aliceryhl@google.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 4/4] gpu: tyr: remove redundant `.as_ref()` for `dev_*` print
2026-01-26 9:17 ` Alice Ryhl
@ 2026-01-26 13:43 ` Danilo Krummrich
2026-01-26 15:06 ` Alice Ryhl
0 siblings, 1 reply; 15+ messages in thread
From: Danilo Krummrich @ 2026-01-26 13:43 UTC (permalink / raw)
To: Alice Ryhl
Cc: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Miguel Ojeda,
Boqun Feng, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Trevor Gross, Bjorn Helgaas, Krzysztof Wilczyński,
Daniel Almeida, David Airlie, Simona Vetter, rust-for-linux,
linux-kernel, linux-pci, dri-devel
On Mon Jan 26, 2026 at 10:17 AM CET, Alice Ryhl wrote:
> On Tue, Jan 20, 2026 at 06:11:09PM +0000, Gary Guo wrote:
>> From: Gary Guo <gary@garyguo.net>
>>
>> This is now handled by the macro itself.
>>
>> Signed-off-by: Gary Guo <gary@garyguo.net>
>
> Acked-by: Alice Ryhl <aliceryhl@google.com>
Given your ACK, do you want me to take this one through driver-core for this
cycle? For the nova-core one I will wait for -rc1 to be out and take it through
the drm-rust tree to avoid conflicts, Tyr should be less prone to conflicts
though.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 4/4] gpu: tyr: remove redundant `.as_ref()` for `dev_*` print
2026-01-26 13:43 ` Danilo Krummrich
@ 2026-01-26 15:06 ` Alice Ryhl
2026-01-26 17:02 ` Danilo Krummrich
0 siblings, 1 reply; 15+ messages in thread
From: Alice Ryhl @ 2026-01-26 15:06 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Miguel Ojeda,
Boqun Feng, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Trevor Gross, Bjorn Helgaas, Krzysztof Wilczyński,
Daniel Almeida, David Airlie, Simona Vetter, rust-for-linux,
linux-kernel, linux-pci, dri-devel
On Mon, Jan 26, 2026 at 2:43 PM Danilo Krummrich <dakr@kernel.org> wrote:
>
> On Mon Jan 26, 2026 at 10:17 AM CET, Alice Ryhl wrote:
> > On Tue, Jan 20, 2026 at 06:11:09PM +0000, Gary Guo wrote:
> >> From: Gary Guo <gary@garyguo.net>
> >>
> >> This is now handled by the macro itself.
> >>
> >> Signed-off-by: Gary Guo <gary@garyguo.net>
> >
> > Acked-by: Alice Ryhl <aliceryhl@google.com>
>
> Given your ACK, do you want me to take this one through driver-core for this
> cycle? For the nova-core one I will wait for -rc1 to be out and take it through
> the drm-rust tree to avoid conflicts, Tyr should be less prone to conflicts
> though.
I don't mind either way, but if there are no conflicts, it would be
nice to take it off our plate now.
Alice
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 4/4] gpu: tyr: remove redundant `.as_ref()` for `dev_*` print
2026-01-26 15:06 ` Alice Ryhl
@ 2026-01-26 17:02 ` Danilo Krummrich
0 siblings, 0 replies; 15+ messages in thread
From: Danilo Krummrich @ 2026-01-26 17:02 UTC (permalink / raw)
To: Alice Ryhl
Cc: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Miguel Ojeda,
Boqun Feng, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Trevor Gross, Bjorn Helgaas, Krzysztof Wilczyński,
Daniel Almeida, David Airlie, Simona Vetter, rust-for-linux,
linux-kernel, linux-pci, dri-devel
On Mon Jan 26, 2026 at 4:06 PM CET, Alice Ryhl wrote:
> I don't mind either way, but if there are no conflicts, it would be
> nice to take it off our plate now.
Applied to driver-core-testing, thanks!
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 1/4] rust: device: support `dev_printk` on all devices
2026-01-20 18:11 [PATCH 1/4] rust: device: support `dev_printk` on all devices Gary Guo
` (2 preceding siblings ...)
2026-01-20 18:11 ` [PATCH 4/4] gpu: tyr: " Gary Guo
@ 2026-01-20 18:56 ` Danilo Krummrich
2026-01-21 13:46 ` Gary Guo
3 siblings, 1 reply; 15+ messages in thread
From: Danilo Krummrich @ 2026-01-20 18:56 UTC (permalink / raw)
To: Gary Guo
Cc: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Miguel Ojeda,
Boqun Feng, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Alice Ryhl, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, rust-for-linux, linux-kernel,
linux-pci
On Tue Jan 20, 2026 at 7:11 PM CET, Gary Guo wrote:
> diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs
> index c7b5db9dcca1..94e0548e7687 100644
> --- a/rust/kernel/device.rs
> +++ b/rust/kernel/device.rs
> @@ -601,6 +601,13 @@ impl DeviceContext for Core {}
> impl DeviceContext for CoreInternal {}
> impl DeviceContext for Normal {}
>
> +impl<Ctx: DeviceContext> AsRef<Device<Ctx>> for Device<Ctx> {
> + #[inline]
> + fn as_ref(&self) -> &Device<Ctx> {
> + self
> + }
> +}
> +
> /// Convert device references to bus device references.
> ///
> /// Bus devices can implement this trait to allow abstractions to provide the bus device in
> @@ -720,7 +727,7 @@ macro_rules! impl_device_context_into_aref {
> macro_rules! dev_printk {
> ($method:ident, $dev:expr, $($f:tt)*) => {
> {
> - ($dev).$method($crate::prelude::fmt!($($f)*));
> + $crate::device::Device::$method($dev.as_ref(), $crate::prelude::fmt!($($f)*))
At a first glance I wasn't sure if we really want to rely on AsRef when hide it
in the macro. But on the other hand, if someone would implement AsRef on a class
or bus device to return some other (unrelated) &Device it would be wrong
anyways. So I think using AsRef is fine.
I think a lot of people will be very happy about this patch. :)
I will pick up patches 1 and 2 this cycle, patch 3 and 4 can go through the
corresponding subsystem tree next cycle.
> diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
> index bea76ca9c3da..3946ca919332 100644
> --- a/rust/kernel/pci.rs
> +++ b/rust/kernel/pci.rs
> @@ -351,7 +351,7 @@ impl Device {
> /// // Get an instance of `Vendor`.
> /// let vendor = pdev.vendor_id();
> /// dev_info!(
> - /// pdev.as_ref(),
> + /// pdev,
> /// "Device: Vendor={}, Device=0x{:x}\n",
> /// vendor,
> /// pdev.device_id()
> diff --git a/rust/kernel/pci/id.rs b/rust/kernel/pci/id.rs
> index c09125946d9e..e2d9e8804347 100644
> --- a/rust/kernel/pci/id.rs
> +++ b/rust/kernel/pci/id.rs
> @@ -22,7 +22,7 @@
> /// fn probe_device(pdev: &pci::Device<Core>) -> Result {
> /// let pci_class = pdev.pci_class();
> /// dev_info!(
> -/// pdev.as_ref(),
> +/// pdev,
> /// "Detected PCI class: {}\n",
> /// pci_class
> /// );
Can you please send a separate patch for those?
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 1/4] rust: device: support `dev_printk` on all devices
2026-01-20 18:56 ` [PATCH 1/4] rust: device: support `dev_printk` on all devices Danilo Krummrich
@ 2026-01-21 13:46 ` Gary Guo
2026-01-21 14:25 ` Danilo Krummrich
0 siblings, 1 reply; 15+ messages in thread
From: Gary Guo @ 2026-01-21 13:46 UTC (permalink / raw)
To: Danilo Krummrich, Gary Guo
Cc: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Miguel Ojeda,
Boqun Feng, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Alice Ryhl, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, rust-for-linux, linux-kernel,
linux-pci
On Tue Jan 20, 2026 at 6:56 PM GMT, Danilo Krummrich wrote:
> On Tue Jan 20, 2026 at 7:11 PM CET, Gary Guo wrote:
>> diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs
>> index c7b5db9dcca1..94e0548e7687 100644
>> --- a/rust/kernel/device.rs
>> +++ b/rust/kernel/device.rs
>> @@ -601,6 +601,13 @@ impl DeviceContext for Core {}
>> impl DeviceContext for CoreInternal {}
>> impl DeviceContext for Normal {}
>>
>> +impl<Ctx: DeviceContext> AsRef<Device<Ctx>> for Device<Ctx> {
>> + #[inline]
>> + fn as_ref(&self) -> &Device<Ctx> {
>> + self
>> + }
>> +}
>> +
>> /// Convert device references to bus device references.
>> ///
>> /// Bus devices can implement this trait to allow abstractions to provide the bus device in
>> @@ -720,7 +727,7 @@ macro_rules! impl_device_context_into_aref {
>> macro_rules! dev_printk {
>> ($method:ident, $dev:expr, $($f:tt)*) => {
>> {
>> - ($dev).$method($crate::prelude::fmt!($($f)*));
>> + $crate::device::Device::$method($dev.as_ref(), $crate::prelude::fmt!($($f)*))
>
> At a first glance I wasn't sure if we really want to rely on AsRef when hide it
> in the macro. But on the other hand, if someone would implement AsRef on a class
> or bus device to return some other (unrelated) &Device it would be wrong
> anyways. So I think using AsRef is fine.
>
> I think a lot of people will be very happy about this patch. :)
^ this is basically me getting annoyed by everything being `pdev.as_ref()` when
reviewing code and want to fix the pain :)
>
> I will pick up patches 1 and 2 this cycle, patch 3 and 4 can go through the
> corresponding subsystem tree next cycle.
>
>> diff --git a/rust/kernel/pci.rs b/rust/kernel/pci.rs
>> index bea76ca9c3da..3946ca919332 100644
>> --- a/rust/kernel/pci.rs
>> +++ b/rust/kernel/pci.rs
>> @@ -351,7 +351,7 @@ impl Device {
>> /// // Get an instance of `Vendor`.
>> /// let vendor = pdev.vendor_id();
>> /// dev_info!(
>> - /// pdev.as_ref(),
>> + /// pdev,
>> /// "Device: Vendor={}, Device=0x{:x}\n",
>> /// vendor,
>> /// pdev.device_id()
>> diff --git a/rust/kernel/pci/id.rs b/rust/kernel/pci/id.rs
>> index c09125946d9e..e2d9e8804347 100644
>> --- a/rust/kernel/pci/id.rs
>> +++ b/rust/kernel/pci/id.rs
>> @@ -22,7 +22,7 @@
>> /// fn probe_device(pdev: &pci::Device<Core>) -> Result {
>> /// let pci_class = pdev.pci_class();
>> /// dev_info!(
>> -/// pdev.as_ref(),
>> +/// pdev,
>> /// "Detected PCI class: {}\n",
>> /// pci_class
>> /// );
>
> Can you please send a separate patch for those?
I converted them as they're the users that benefit from this behaviour in the
kernel crate (i.e. "convert the users"). Do you want them separate so you can
take it via a different tree?
Best,
Gary
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH 1/4] rust: device: support `dev_printk` on all devices
2026-01-21 13:46 ` Gary Guo
@ 2026-01-21 14:25 ` Danilo Krummrich
0 siblings, 0 replies; 15+ messages in thread
From: Danilo Krummrich @ 2026-01-21 14:25 UTC (permalink / raw)
To: Gary Guo
Cc: Gary Guo, Greg Kroah-Hartman, Rafael J. Wysocki, Miguel Ojeda,
Boqun Feng, Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Alice Ryhl, Trevor Gross, Bjorn Helgaas,
Krzysztof Wilczyński, rust-for-linux, linux-kernel,
linux-pci
On Wed Jan 21, 2026 at 2:46 PM CET, Gary Guo wrote:
> I converted them as they're the users that benefit from this behaviour in the
> kernel crate (i.e. "convert the users"). Do you want them separate so you can
> take it via a different tree?
No it eventually goes through the same tree, but in general patches should be
split up per subsystem / component / driver if possible.
For instance, the split should go as follows:
1. DMA
- samples/rust/rust_dma.rs
2. DRIVER CORE
- samples/rust/rust_driver_auxiliary.rs
- samples/rust/rust_driver_faux.rs
- samples/rust/rust_driver_platform.rs
3. PCI
- rust/kernel/pci.rs
- samples/rust/rust_driver_pci.rs
4. I2C
- samples/rust/rust_driver_i2c.rs
- samples/rust/rust_i2c_client.rs
^ permalink raw reply [flat|nested] 15+ messages in thread