All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Gary Guo" <gary@garyguo.net>
Cc: dri-devel@lists.freedesktop.org,
	"Alexandre Courbot" <acourbot@nvidia.com>,
	ojeda@kernel.org, linux-pci@vger.kernel.org,
	"Danilo Krummrich" <dakr@kernel.org>
Subject: Re: [PATCH v6 07/20] rust: io: implement `Mmio` as view type
Date: Mon, 06 Jul 2026 12:59:27 +0000	[thread overview]
Message-ID: <20260706125927.DEF411F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260706-io_projection-v6-7-72cd5d055d54@garyguo.net>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Infallible 64-bit I/O accessors (`read64`, `write64`) and typed 64-bit registers cannot be used on MMIO regions, and custom view types are unsupported by standard offsets.
--

commit 09225b49c257719774237bd1b25407607dd9df87
Author: Gary Guo <gary@garyguo.net>

rust: io: implement Mmio as view type

Implement Mmio as view type and convert RelaxedMmio to view type as
well. I/O implementations of MmioOwned are changed to delegate to the
Mmio view type.

> diff --git a/rust/kernel/io.rs b/rust/kernel/io.rs
> index f93be7f780694..8110b49aa4307 100644
> --- a/rust/kernel/io.rs
> +++ b/rust/kernel/io.rs
[ ... ]
> @@ -847,17 +915,12 @@ unsafe fn io_write(self, value: $ty, address: usize) {
>  }
>  
>  // MMIO regions support 8, 16, and 32-bit accesses.
> -impl_mmio_io_capable!(MmioOwned, u8, readb, writeb);
> -impl_mmio_io_capable!(MmioOwned, u16, readw, writew);
> -impl_mmio_io_capable!(MmioOwned, u32, readl, writel);
> +impl_mmio_io_capable!(Mmio, u8, readb, writeb);
> +impl_mmio_io_capable!(Mmio, u16, readw, writew);
> +impl_mmio_io_capable!(Mmio, u32, readl, writel);
>  // MMIO regions on 64-bit systems also support 64-bit accesses.
> -impl_mmio_io_capable!(
> -    MmioOwned,
> -    #[cfg(CONFIG_64BIT)]
> -    u64,
> -    readq,
> -    writeq
> -);
> +#[cfg(CONFIG_64BIT)]
> +impl_mmio_io_capable!(Mmio, u64, readq, writeq);

[Severity: High]
Does this actually allow infallible 64-bit I/O accesses when the target is
Region<SIZE>?

Region<SIZE> has a MIN_ALIGN of 4, so infallible 64-bit accessors like
read64() and write64() will fail the compile-time assertion in
io_view_assert():

    const_assert!(
        Alignment::of::<U>().as_usize() <= IO::Target::MIN_ALIGN.as_usize()
    );

For U = u64, the alignment is 8 on 64-bit architectures, which fails the
assertion since 8 <= 4 is false.

Additionally, while this patch introduces Mmio as a generic view type, can
users create a custom target type (e.g. with align(8)) to work around this?

Looking at impl_usize_ioloc in rust/kernel/io.rs and the IoLoc implementation
in rust/kernel/io/register.rs, both usize offsets and typed registers are
strictly implemented only for IoLoc<Region<SIZE>, T>.

Because standard offsets and registers are restricted to Region<SIZE>, a custom
view type cannot be used with them. Does this leave 64-bit infallible accesses
and 64-bit typed registers unusable on MMIO regions?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260706-io_projection-v6-0-72cd5d055d54@garyguo.net?part=7

  reply	other threads:[~2026-07-06 12:59 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-06 12:44 [PATCH v6 00/20] rust: I/O type generalization and projection Gary Guo
2026-07-06 12:44 ` [PATCH v6 01/20] rust: io: add dynamically-sized `Region` type Gary Guo
2026-07-06 12:54   ` sashiko-bot
2026-07-07 17:14   ` Daniel Almeida
2026-07-07 20:02     ` Gary Guo
2026-07-08 10:34       ` Miguel Ojeda
2026-07-06 12:44 ` [PATCH v6 02/20] rust: io: add missing safety requirement in `IoCapable` methods Gary Guo
2026-07-06 13:00   ` sashiko-bot
2026-07-07 18:40   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 03/20] rust: io: restrict untyped IO access and `register!` to `Region` Gary Guo
2026-07-06 13:03   ` sashiko-bot
2026-07-08  0:23   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 04/20] rust: io: implement `Io` on reference types instead Gary Guo
2026-07-06 12:53   ` sashiko-bot
2026-07-08 11:58   ` Daniel Almeida
2026-07-08 12:05     ` Gary Guo
2026-07-06 12:44 ` [PATCH v6 05/20] rust: io: generalize `MmioRaw` to pointer to arbitrary type Gary Guo
2026-07-06 12:56   ` sashiko-bot
2026-07-08 12:22   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 06/20] rust: io: rename `Mmio` to `MmioOwned` Gary Guo
2026-07-06 12:57   ` sashiko-bot
2026-07-08 12:26   ` Daniel Almeida
2026-07-08 12:35   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 07/20] rust: io: implement `Mmio` as view type Gary Guo
2026-07-06 12:59   ` sashiko-bot [this message]
2026-07-08 13:10   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 08/20] rust: pci: io: make `ConfigSpace` a view Gary Guo
2026-07-06 12:51   ` sashiko-bot
2026-07-08 13:28   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 09/20] rust: io: use view types instead of addresses for `Io` Gary Guo
2026-07-06 12:57   ` sashiko-bot
2026-07-08 14:36   ` Daniel Almeida
2026-07-08 15:25     ` Miguel Ojeda
2026-07-06 12:44 ` [PATCH v6 10/20] pwm: th1520: remove unnecessary `deref` Gary Guo
2026-07-06 12:48   ` sashiko-bot
2026-07-08 14:37   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 11/20] rust: io: remove `MmioOwned` Gary Guo
2026-07-06 12:54   ` sashiko-bot
2026-07-08 14:48   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 12/20] rust: io: move `Io` methods to extension trait Gary Guo
2026-07-06 12:51   ` sashiko-bot
2026-07-08 15:15   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 13/20] rust: io: add projection macro and methods Gary Guo
2026-07-06 12:58   ` sashiko-bot
2026-07-08 17:58   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 14/20] rust: io: add I/O backend for system memory with volatile access Gary Guo
2026-07-06 13:01   ` sashiko-bot
2026-07-11  1:26   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 15/20] rust: io: implement a view type for `Coherent` Gary Guo
2026-07-06 13:03   ` sashiko-bot
2026-07-11  1:32   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 16/20] rust: io: add `read_val` and `write_val` functions on `Io` Gary Guo
2026-07-06 12:59   ` sashiko-bot
2026-07-11  1:56   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 17/20] gpu: nova-core: use I/O projection for cleaner encapsulation Gary Guo
2026-07-06 13:07   ` sashiko-bot
2026-07-06 12:44 ` [PATCH v6 18/20] rust: dma: drop `dma_read!` and `dma_write!` API Gary Guo
2026-07-06 13:10   ` sashiko-bot
2026-07-11  2:04   ` Daniel Almeida
2026-07-06 12:44 ` [PATCH v6 19/20] rust: io: add copying methods Gary Guo
2026-07-06 13:09   ` sashiko-bot
2026-07-07 12:17   ` Alexandre Courbot
2026-07-06 12:44 ` [PATCH v6 20/20] rust: io: implement `IoSysMap` Gary Guo
2026-07-06 12:59   ` sashiko-bot
2026-07-11 16:10 ` [PATCH v6 00/20] rust: I/O type generalization and projection Danilo Krummrich
2026-07-13 22:46   ` Danilo Krummrich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260706125927.DEF411F00A3A@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gary@garyguo.net \
    --cc=linux-pci@vger.kernel.org \
    --cc=ojeda@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.