From: Danilo Krummrich <dakr@kernel.org>
To: Miguel Ojeda <ojeda@kernel.org>
Cc: Alexandre Courbot <acourbot@nvidia.com>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: gpu: nova-core: arm32 build errors
Date: Thu, 28 Aug 2025 19:54:45 +0200 [thread overview]
Message-ID: <b680c343-ba97-4eb4-b426-56e318dce492@kernel.org> (raw)
In-Reply-To: <20250828160247.37492-1-ojeda@kernel.org>
Hi Miguel,
Thanks for reporting!
On 8/28/25 6:02 PM, Miguel Ojeda wrote:
> Hi Danilo et al.,
>
> In Linus' tree and -next, for an arm32 LLVM defconfig plus Rust build, I see:
>
> error[E0308]: mismatched types
> --> drivers/gpu/nova-core/fb.rs:49:59
> |
> 49 | hal::fb_hal(chipset).write_sysmem_flush_page(bar, page.dma_handle())?;
> | ----------------------- ^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
> | |
> | arguments to this method are incorrect
> |
> note: method defined here
> --> drivers/gpu/nova-core/fb/hal.rs:19:8
> |
> 19 | fn write_sysmem_flush_page(&self, bar: &Bar0, addr: u64) -> Result;
> | ^^^^^^^^^^^^^^^^^^^^^^^
> help: you can convert a `u32` to a `u64`
> |
> 49 | hal::fb_hal(chipset).write_sysmem_flush_page(bar, page.dma_handle().into())?;
> | +++++++
>
>
> error[E0308]: mismatched types
> --> drivers/gpu/nova-core/fb.rs:65:47
> |
> 65 | if hal.read_sysmem_flush_page(bar) == self.page.dma_handle() {
> | ------------------------------- ^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
> | |
> | expected because this is `u64`
> |
> help: you can convert a `u32` to a `u64`
> |
> 65 | if hal.read_sysmem_flush_page(bar) == self.page.dma_handle().into() {
I think those should just use the DMA address type introduced in [1].
Unfortunately, for a fix we have to stick to bindings::dma_addr_t.
[1] https://lore.kernel.org/lkml/20250828133323.53311-3-dakr@kernel.org/
> | +++++++
>
>
> error: this arithmetic operation will overflow
> --> drivers/gpu/nova-core/falcon.rs:469:23
> |
> 469 | .set_base((dma_start >> 40) as u16)
> | ^^^^^^^^^^^^^^^^^ attempt to shift right by `40_i32`, which would overflow
> |
> = note: `#[deny(arithmetic_overflow)]` on by default
Should probably just be
val.checked_shr(shift).unwrap_or(0)
I'll send a patch to fix this up.
> Similar to another one I sent, I hope it helps -- it may be useful to make it
> build in 32-bit as a test for those kinds of platforms.
Agreed.
Thanks,
Danilo
next prev parent reply other threads:[~2025-08-28 17:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-28 16:02 gpu: nova-core: arm32 build errors Miguel Ojeda
2025-08-28 17:54 ` Danilo Krummrich [this message]
2025-08-28 19:24 ` Danilo Krummrich
2025-08-28 19:31 ` Miguel Ojeda
2025-08-28 19:36 ` Miguel Ojeda
2025-08-28 19:58 ` Danilo Krummrich
2025-08-28 21:27 ` Danilo Krummrich
2025-08-28 19:57 ` Danilo Krummrich
2025-08-28 21:45 ` John Hubbard
2025-08-28 21:54 ` 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=b680c343-ba97-4eb4-b426-56e318dce492@kernel.org \
--to=dakr@kernel.org \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
/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.