From: Alice Ryhl <aliceryhl@google.com>
To: Deborah Brouwer <deborah.brouwer@collabora.com>
Cc: Daniel Almeida <daniel.almeida@collabora.com>,
Danilo Krummrich <dakr@kernel.org>,
David Airlie <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>, Benno Lossin <lossin@kernel.org>,
Gary Guo <gary@garyguo.net>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
rust-for-linux@vger.kernel.org, boris.brezillon@collabora.com,
samitolvanen@google.com, acourbot@nvidia.com,
alvin.sun@linux.dev, laura.nao@collabora.com,
work@onurozkan.dev, beata.michalska@arm.com,
steven.price@arm.com, lyude@redhat.com
Subject: Re: [PATCH v6 4/7] drm/tyr: add GPU virtual memory (VM) support
Date: Fri, 10 Jul 2026 14:27:42 +0000 [thread overview]
Message-ID: <alEBXhTk2th3aENc@google.com> (raw)
In-Reply-To: <20260709-fw-boot-b4-v6-4-ca391e1a4108@collabora.com>
On Thu, Jul 09, 2026 at 02:36:44PM -0700, Deborah Brouwer wrote:
> From: Boris Brezillon <boris.brezillon@collabora.com>
>
> Add GPU virtual address space management using the DRM GPUVM framework.
> Each virtual memory (VM) space is backed by ARM64 LPAE Stage 1 page tables
> and can be mapped into hardware address space (AS) slots for GPU execution.
>
> The implementation provides memory isolation and virtual address
> allocation. VMs support mapping GEM buffer objects with configurable
> protection flags (readonly, noexec, uncached) and handle both 4KB and 2MB
> page sizes. A new_dummy_object() helper is provided to create a dummy GEM
> object for use as a GPUVM root.
>
> The vm module integrates with the MMU for address space activation and
> provides map/unmap/remap operations with page table synchronization.
>
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> Co-developed-by: Daniel Almeida <daniel.almeida@collabora.com>
> Signed-off-by: Daniel Almeida <daniel.almeida@collabora.com>
> Co-developed-by: Deborah Brouwer <deborah.brouwer@collabora.com>
> Signed-off-by: Deborah Brouwer <deborah.brouwer@collabora.com>
I'm seeing some build failures on 32-bit arm:
error[E0308]: mismatched types
--> /home/runner/work/linux/linux/linux/drivers/gpu/drm/tyr/vm.rs:572:45
|
572 | let mut sgt_entry_length: u64 = sgt_entry.dma_len();
| --- ^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
| |
| expected due to this
|
help: you can convert a `u32` to a `u64`
|
572 | let mut sgt_entry_length: u64 = sgt_entry.dma_len().into();
| +++++++
error[E0308]: mismatched types
--> /home/runner/work/linux/linux/linux/drivers/gpu/drm/tyr/vm.rs:581:26
|
581 | paddr += skip;
| ^^^^ expected `u32`, found `u64`
error[E0277]: cannot add-assign `u64` to `u32`
--> /home/runner/work/linux/linux/linux/drivers/gpu/drm/tyr/vm.rs:581:23
|
581 | paddr += skip;
| ^^ no implementation for `u32 += u64`
|
= help: the trait `core::ops::AddAssign<u64>` is not implemented for `u32`
help: `u32` implements trait `core::ops::AddAssign<Rhs>`
--> /home/runner/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/internal_macros.rs:61:9
|
61 | impl const $imp<&$u> for $t {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `core::ops::AddAssign<&u32>`
|
::: /home/runner/work/linux/linux/linux/rust/zerocopy/src/byteorder.rs:316:9
|
316 | impl<O: ByteOrder> core::ops::$trait_assign<$name<O>> for $native {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `core::ops::AddAssign<zerocopy::byteorder::U32<O>>`
...
720 | / define_type!(
721 | | A,
722 | | "A 32-bit unsigned integer",
723 | | U32,
... |
735 | | [U64, U128]
736 | | );
| |_- in this macro invocation
|
::: /home/runner/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/arith.rs:786:9
|
786 | impl const AddAssign for $t {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `core::ops::AddAssign`
CC drivers/base/firmware_loader/builtin/main.o
...
799 | add_assign_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f16 f32 f64 f128 }
| ----------------------------------------------------------------------------------------- in this macro invocation
= note: this error originates in the macro `impl_ops_traits` which comes from the expansion of the macro `add_assign_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0308]: mismatched types
--> /home/runner/work/linux/linux/linux/drivers/gpu/drm/tyr/vm.rs:596:65
|
596 | let segment_mapped = match pt_map(context.pt, iova, paddr, len, prot) {
| ------ ^^^^^ expected `u64`, found `u32`
| |
| arguments to this function are incorrect
|
note: function defined here
--> /home/runner/work/linux/linux/linux/drivers/gpu/drm/tyr/vm.rs:731:4
|
731 | fn pt_map(
| ^^^^^^
...
734 | paddr: u64,
| ----------
help: you can convert a `u32` to a `u64`
|
596 | let segment_mapped = match pt_map(context.pt, iova, paddr.into(), len, prot) {
| +++++++
CC net/core/tso.o
error: aborting due to 4 previous errors
next prev parent reply other threads:[~2026-07-10 14:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-09 21:36 [PATCH v6 0/7] drm/tyr: firmware loading and MCU boot support Deborah Brouwer
2026-07-09 21:36 ` [PATCH v6 1/7] drm/tyr: add resources to RegistrationData Deborah Brouwer
2026-07-09 21:36 ` [PATCH v6 2/7] drm/tyr: add a generic slot manager Deborah Brouwer
2026-07-10 13:23 ` Alice Ryhl
2026-07-09 21:36 ` [PATCH v6 3/7] drm/tyr: add Memory Management Unit (MMU) support Deborah Brouwer
2026-07-10 13:45 ` Alice Ryhl
2026-07-09 21:36 ` [PATCH v6 4/7] drm/tyr: add GPU virtual memory (VM) support Deborah Brouwer
2026-07-10 14:15 ` Alice Ryhl
2026-07-14 3:12 ` Deborah Brouwer
2026-07-10 14:27 ` Alice Ryhl [this message]
2026-07-09 21:36 ` [PATCH v6 5/7] drm/tyr: add a kernel buffer object Deborah Brouwer
2026-07-09 21:36 ` [PATCH v6 6/7] drm/tyr: add parser for firmware binary Deborah Brouwer
2026-07-09 21:36 ` [PATCH v6 7/7] drm/tyr: add Microcontroller Unit (MCU) booting Deborah Brouwer
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=alEBXhTk2th3aENc@google.com \
--to=aliceryhl@google.com \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=alvin.sun@linux.dev \
--cc=beata.michalska@arm.com \
--cc=boris.brezillon@collabora.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=deborah.brouwer@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gary@garyguo.net \
--cc=laura.nao@collabora.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=lyude@redhat.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=samitolvanen@google.com \
--cc=simona@ffwll.ch \
--cc=steven.price@arm.com \
--cc=work@onurozkan.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.