[PATCH 2/6] rust: io: mem: use non-relaxed I/O ops in examples

Alexandre Courbot posted 6 patches 5 days, 18 hours ago
There is a newer version of this series
[PATCH 2/6] rust: io: mem: use non-relaxed I/O ops in examples
Posted by Alexandre Courbot 5 days, 18 hours ago
The `_relaxed` I/O variant methods are about to be replaced by a wrapper
type exposing this access pattern with the regular methods of the `Io`
trait. Thus replace the examples to use the regular I/O methods.

Since these are examples, we want them to use the most standard ops
anyway, and the relaxed variants were but an addition that was
MMIO-specific.

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
---
 rust/kernel/io/mem.rs | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/rust/kernel/io/mem.rs b/rust/kernel/io/mem.rs
index 620022cff401..7dc78d547f7a 100644
--- a/rust/kernel/io/mem.rs
+++ b/rust/kernel/io/mem.rs
@@ -54,6 +54,7 @@ pub(crate) unsafe fn new(device: &'a Device<Bound>, resource: &'a Resource) -> S
     /// use kernel::{
     ///     bindings,
     ///     device::Core,
+    ///     io::Io,
     ///     of,
     ///     platform,
     /// };
@@ -78,9 +79,9 @@ pub(crate) unsafe fn new(device: &'a Device<Bound>, resource: &'a Resource) -> S
     ///       let io = iomem.access(pdev.as_ref())?;
     ///
     ///       // Read and write a 32-bit value at `offset`.
-    ///       let data = io.read32_relaxed(offset);
+    ///       let data = io.read32(offset);
     ///
-    ///       io.write32_relaxed(data, offset);
+    ///       io.write32(data, offset);
     ///
     ///       # Ok(SampleDriver)
     ///     }
@@ -117,6 +118,7 @@ pub fn iomap_exclusive_sized<const SIZE: usize>(
     /// use kernel::{
     ///     bindings,
     ///     device::Core,
+    ///     io::Io,
     ///     of,
     ///     platform,
     /// };
@@ -141,9 +143,9 @@ pub fn iomap_exclusive_sized<const SIZE: usize>(
     ///
     ///       let io = iomem.access(pdev.as_ref())?;
     ///
-    ///       let data = io.try_read32_relaxed(offset)?;
+    ///       let data = io.try_read32(offset)?;
     ///
-    ///       io.try_write32_relaxed(data, offset)?;
+    ///       io.try_write32(data, offset)?;
     ///
     ///       # Ok(SampleDriver)
     ///     }

-- 
2.52.0
Re: [PATCH 2/6] rust: io: mem: use non-relaxed I/O ops in examples
Posted by Daniel Almeida 3 days, 11 hours ago

> On 2 Feb 2026, at 05:13, Alexandre Courbot <acourbot@nvidia.com> wrote:
> 
> The `_relaxed` I/O variant methods are about to be replaced by a wrapper
> type exposing this access pattern with the regular methods of the `Io`
> trait. Thus replace the examples to use the regular I/O methods.
> 
> Since these are examples, we want them to use the most standard ops
> anyway, and the relaxed variants were but an addition that was
> MMIO-specific.
> 
> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
> ---
> rust/kernel/io/mem.rs | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/rust/kernel/io/mem.rs b/rust/kernel/io/mem.rs
> index 620022cff401..7dc78d547f7a 100644
> --- a/rust/kernel/io/mem.rs
> +++ b/rust/kernel/io/mem.rs
> @@ -54,6 +54,7 @@ pub(crate) unsafe fn new(device: &'a Device<Bound>, resource: &'a Resource) -> S
>     /// use kernel::{
>     ///     bindings,
>     ///     device::Core,
> +    ///     io::Io,
>     ///     of,
>     ///     platform,
>     /// };
> @@ -78,9 +79,9 @@ pub(crate) unsafe fn new(device: &'a Device<Bound>, resource: &'a Resource) -> S
>     ///       let io = iomem.access(pdev.as_ref())?;
>     ///
>     ///       // Read and write a 32-bit value at `offset`.
> -    ///       let data = io.read32_relaxed(offset);
> +    ///       let data = io.read32(offset);
>     ///
> -    ///       io.write32_relaxed(data, offset);
> +    ///       io.write32(data, offset);
>     ///
>     ///       # Ok(SampleDriver)
>     ///     }
> @@ -117,6 +118,7 @@ pub fn iomap_exclusive_sized<const SIZE: usize>(
>     /// use kernel::{
>     ///     bindings,
>     ///     device::Core,
> +    ///     io::Io,
>     ///     of,
>     ///     platform,
>     /// };
> @@ -141,9 +143,9 @@ pub fn iomap_exclusive_sized<const SIZE: usize>(
>     ///
>     ///       let io = iomem.access(pdev.as_ref())?;
>     ///
> -    ///       let data = io.try_read32_relaxed(offset)?;
> +    ///       let data = io.try_read32(offset)?;
>     ///
> -    ///       io.try_write32_relaxed(data, offset)?;
> +    ///       io.try_write32(data, offset)?;
>     ///
>     ///       # Ok(SampleDriver)
>     ///     }
> 
> -- 
> 2.52.0
> 
> 

Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>