* gpu: nova-core: arm32 build errors @ 2025-08-28 16:02 Miguel Ojeda 2025-08-28 17:54 ` Danilo Krummrich 0 siblings, 1 reply; 10+ messages in thread From: Miguel Ojeda @ 2025-08-28 16:02 UTC (permalink / raw) To: Danilo Krummrich, Alexandre Courbot, David Airlie, Simona Vetter Cc: nouveau, dri-devel, rust-for-linux, linux-kernel, Miguel Ojeda 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() { | +++++++ 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 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. Thanks! Cheers, Miguel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 16:02 gpu: nova-core: arm32 build errors Miguel Ojeda @ 2025-08-28 17:54 ` Danilo Krummrich 2025-08-28 19:24 ` Danilo Krummrich 0 siblings, 1 reply; 10+ messages in thread From: Danilo Krummrich @ 2025-08-28 17:54 UTC (permalink / raw) To: Miguel Ojeda Cc: Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel 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 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 17:54 ` Danilo Krummrich @ 2025-08-28 19:24 ` Danilo Krummrich 2025-08-28 19:31 ` Miguel Ojeda 0 siblings, 1 reply; 10+ messages in thread From: Danilo Krummrich @ 2025-08-28 19:24 UTC (permalink / raw) To: Miguel Ojeda Cc: Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On Thu Aug 28, 2025 at 7:54 PM CEST, Danilo Krummrich wrote: > On 8/28/25 6:02 PM, Miguel Ojeda wrote: >> 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. Maybe I spoke too soon, it's actually pretty painful to keep 32-bit compatibility, even though it would be nice for testing purposes. I'll paste the diff to fix it below, I think that makes it obvious why I say that. Instead, we should really just depend on CONFIG_64BIT (which implies ARCH_DMA_ADDR_T_64BIT). -- diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs index 50437c67c14a..e6a22834e317 100644 --- a/drivers/gpu/nova-core/falcon.rs +++ b/drivers/gpu/nova-core/falcon.rs @@ -466,7 +466,7 @@ fn dma_wr<F: FalconFirmware<Target = E>>( .set_base((dma_start >> 8) as u32) .write(bar, E::BASE); regs::NV_PFALCON_FALCON_DMATRFBASE1::default() - .set_base((dma_start >> 40) as u16) + .set_base((dma_start.checked_shr(40).unwrap_or(0)) as u16) .write(bar, E::BASE); let cmd = regs::NV_PFALCON_FALCON_DMATRFCMD::default() diff --git a/drivers/gpu/nova-core/fb/hal.rs b/drivers/gpu/nova-core/fb/hal.rs index 2f914948bb9a..710491ee445a 100644 --- a/drivers/gpu/nova-core/fb/hal.rs +++ b/drivers/gpu/nova-core/fb/hal.rs @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 +use kernel::bindings::dma_addr_t as DmaAddress; use kernel::prelude::*; use crate::driver::Bar0; @@ -11,12 +12,12 @@ pub(crate) trait FbHal { /// Returns the address of the currently-registered sysmem flush page. - fn read_sysmem_flush_page(&self, bar: &Bar0) -> u64; + fn read_sysmem_flush_page(&self, bar: &Bar0) -> DmaAddress; /// Register `addr` as the address of the sysmem flush page. /// /// This might fail if the address is too large for the receiving register. - fn write_sysmem_flush_page(&self, bar: &Bar0, addr: u64) -> Result; + fn write_sysmem_flush_page(&self, bar: &Bar0, addr: DmaAddress) -> Result; /// Returns `true` is display is supported. fn supports_display(&self, bar: &Bar0) -> bool; diff --git a/drivers/gpu/nova-core/fb/hal/ga100.rs b/drivers/gpu/nova-core/fb/hal/ga100.rs index 871c42bf033a..c4ae172b4ed4 100644 --- a/drivers/gpu/nova-core/fb/hal/ga100.rs +++ b/drivers/gpu/nova-core/fb/hal/ga100.rs @@ -2,6 +2,7 @@ struct Ga100; +use kernel::bindings::dma_addr_t as DmaAddress; use kernel::prelude::*; use crate::driver::Bar0; @@ -10,13 +11,22 @@ use super::tu102::FLUSH_SYSMEM_ADDR_SHIFT; -pub(super) fn read_sysmem_flush_page_ga100(bar: &Bar0) -> u64 { - u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::read(bar).adr_39_08()) << FLUSH_SYSMEM_ADDR_SHIFT +pub(super) fn read_sysmem_flush_page_ga100(bar: &Bar0) -> DmaAddress { + let addr = u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::read(bar).adr_39_08()) + << FLUSH_SYSMEM_ADDR_SHIFT | u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI::read(bar).adr_63_40()) - << FLUSH_SYSMEM_ADDR_SHIFT_HI + << FLUSH_SYSMEM_ADDR_SHIFT_HI; + + addr.try_into().unwrap_or_else(|_| { + kernel::warn_on!(true); + + 0 + }) } -pub(super) fn write_sysmem_flush_page_ga100(bar: &Bar0, addr: u64) { +pub(super) fn write_sysmem_flush_page_ga100(bar: &Bar0, addr: DmaAddress) { + let addr = Into::<u64>::into(addr); + regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI::default() .set_adr_63_40((addr >> FLUSH_SYSMEM_ADDR_SHIFT_HI) as u32) .write(bar); @@ -34,11 +44,11 @@ pub(super) fn display_enabled_ga100(bar: &Bar0) -> bool { const FLUSH_SYSMEM_ADDR_SHIFT_HI: u32 = 40; impl FbHal for Ga100 { - fn read_sysmem_flush_page(&self, bar: &Bar0) -> u64 { + fn read_sysmem_flush_page(&self, bar: &Bar0) -> DmaAddress { read_sysmem_flush_page_ga100(bar) } - fn write_sysmem_flush_page(&self, bar: &Bar0, addr: u64) -> Result { + fn write_sysmem_flush_page(&self, bar: &Bar0, addr: DmaAddress) -> Result { write_sysmem_flush_page_ga100(bar, addr); Ok(()) diff --git a/drivers/gpu/nova-core/fb/hal/ga102.rs b/drivers/gpu/nova-core/fb/hal/ga102.rs index a73b77e39715..271dfd522b3c 100644 --- a/drivers/gpu/nova-core/fb/hal/ga102.rs +++ b/drivers/gpu/nova-core/fb/hal/ga102.rs @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 +use kernel::bindings::dma_addr_t as DmaAddress; use kernel::prelude::*; use crate::driver::Bar0; @@ -13,11 +14,11 @@ fn vidmem_size_ga102(bar: &Bar0) -> u64 { struct Ga102; impl FbHal for Ga102 { - fn read_sysmem_flush_page(&self, bar: &Bar0) -> u64 { + fn read_sysmem_flush_page(&self, bar: &Bar0) -> DmaAddress { super::ga100::read_sysmem_flush_page_ga100(bar) } - fn write_sysmem_flush_page(&self, bar: &Bar0, addr: u64) -> Result { + fn write_sysmem_flush_page(&self, bar: &Bar0, addr: DmaAddress) -> Result { super::ga100::write_sysmem_flush_page_ga100(bar, addr); Ok(()) diff --git a/drivers/gpu/nova-core/fb/hal/tu102.rs b/drivers/gpu/nova-core/fb/hal/tu102.rs index b022c781caf4..157342411596 100644 --- a/drivers/gpu/nova-core/fb/hal/tu102.rs +++ b/drivers/gpu/nova-core/fb/hal/tu102.rs @@ -3,17 +3,28 @@ use crate::driver::Bar0; use crate::fb::hal::FbHal; use crate::regs; + +use kernel::bindings::dma_addr_t as DmaAddress; use kernel::prelude::*; /// Shift applied to the sysmem address before it is written into `NV_PFB_NISO_FLUSH_SYSMEM_ADDR`, /// to be used by HALs. pub(super) const FLUSH_SYSMEM_ADDR_SHIFT: u32 = 8; -pub(super) fn read_sysmem_flush_page_gm107(bar: &Bar0) -> u64 { - u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::read(bar).adr_39_08()) << FLUSH_SYSMEM_ADDR_SHIFT +pub(super) fn read_sysmem_flush_page_gm107(bar: &Bar0) -> DmaAddress { + let addr = u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::read(bar).adr_39_08()) + << FLUSH_SYSMEM_ADDR_SHIFT; + + addr.try_into().unwrap_or_else(|_| { + kernel::warn_on!(true); + + 0 + }) } -pub(super) fn write_sysmem_flush_page_gm107(bar: &Bar0, addr: u64) -> Result { +pub(super) fn write_sysmem_flush_page_gm107(bar: &Bar0, addr: DmaAddress) -> Result { + let addr = Into::<u64>::into(addr); + // Check that the address doesn't overflow the receiving 32-bit register. if addr >> (u32::BITS + FLUSH_SYSMEM_ADDR_SHIFT) == 0 { regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::default() @@ -37,11 +48,11 @@ pub(super) fn vidmem_size_gp102(bar: &Bar0) -> u64 { struct Tu102; impl FbHal for Tu102 { - fn read_sysmem_flush_page(&self, bar: &Bar0) -> u64 { + fn read_sysmem_flush_page(&self, bar: &Bar0) -> DmaAddress { read_sysmem_flush_page_gm107(bar) } - fn write_sysmem_flush_page(&self, bar: &Bar0, addr: u64) -> Result { + fn write_sysmem_flush_page(&self, bar: &Bar0, addr: DmaAddress) -> Result { write_sysmem_flush_page_gm107(bar, addr) } ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 19:24 ` Danilo Krummrich @ 2025-08-28 19:31 ` Miguel Ojeda 2025-08-28 19:36 ` Miguel Ojeda ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Miguel Ojeda @ 2025-08-28 19:31 UTC (permalink / raw) To: Danilo Krummrich Cc: Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On Thu, Aug 28, 2025 at 9:24 PM Danilo Krummrich <dakr@kernel.org> wrote: > > Maybe I spoke too soon, it's actually pretty painful to keep 32-bit > compatibility, even though it would be nice for testing purposes. > > I'll paste the diff to fix it below, I think that makes it obvious why I say > that. > > Instead, we should really just depend on CONFIG_64BIT (which implies > ARCH_DMA_ADDR_T_64BIT). Yeah, it isn't great. If it were just that, maybe it it is worth it (and a `DmaAddress` newtype, not just a typedef, could perhaps be nice anyway?), but if you think it will become increasingly painful later, then it may be best to focus on what matters. It is unlikely there is going to be actual users on a 32-bit platform, right? Cheers, Miguel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 19:31 ` Miguel Ojeda @ 2025-08-28 19:36 ` Miguel Ojeda 2025-08-28 19:58 ` Danilo Krummrich 2025-08-28 19:57 ` Danilo Krummrich 2025-08-28 21:45 ` John Hubbard 2 siblings, 1 reply; 10+ messages in thread From: Miguel Ojeda @ 2025-08-28 19:36 UTC (permalink / raw) To: Danilo Krummrich Cc: Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On Thu, Aug 28, 2025 at 9:31 PM Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> wrote: > > and a `DmaAddress` > newtype, not just a typedef, could perhaps be nice anyway? The one from your linked patch is not a newtype though, so I guess there is a reason for that. Cheers, Miguel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 19:36 ` Miguel Ojeda @ 2025-08-28 19:58 ` Danilo Krummrich 2025-08-28 21:27 ` Danilo Krummrich 0 siblings, 1 reply; 10+ messages in thread From: Danilo Krummrich @ 2025-08-28 19:58 UTC (permalink / raw) To: Miguel Ojeda Cc: Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On Thu Aug 28, 2025 at 9:36 PM CEST, Miguel Ojeda wrote: > On Thu, Aug 28, 2025 at 9:31 PM Miguel Ojeda > <miguel.ojeda.sandonis@gmail.com> wrote: >> >> and a `DmaAddress` >> newtype, not just a typedef, could perhaps be nice anyway? > > The one from your linked patch is not a newtype though, so I guess > there is a reason for that. No specific reason, I didn't see a lot of value in a newtype in the first place, depending on you answer in the other thread, may we just found some value. :) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 19:58 ` Danilo Krummrich @ 2025-08-28 21:27 ` Danilo Krummrich 0 siblings, 0 replies; 10+ messages in thread From: Danilo Krummrich @ 2025-08-28 21:27 UTC (permalink / raw) To: Miguel Ojeda Cc: Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On Thu Aug 28, 2025 at 9:58 PM CEST, Danilo Krummrich wrote: > On Thu Aug 28, 2025 at 9:36 PM CEST, Miguel Ojeda wrote: >> On Thu, Aug 28, 2025 at 9:31 PM Miguel Ojeda >> <miguel.ojeda.sandonis@gmail.com> wrote: >>> >>> and a `DmaAddress` >>> newtype, not just a typedef, could perhaps be nice anyway? >> >> The one from your linked patch is not a newtype though, so I guess >> there is a reason for that. > > No specific reason, I didn't see a lot of value in a newtype in the first > place, depending on you answer in the other thread, may we just found some > value. :) To expand a bit, the typdef is also for simplicity. Eventually, drivers will do some arithmetic on the DMA address, etc. So, if we have a new type, we'd probably want to provide methods for doing the most common arithmetic operations, because we don't want to convert to/from the corresponding primitive type all the time. At the same time we could take this further and also provide a DmaRange type, which also considers the size for those operations. DmaRange is actually something that I had in mind to implement subsequently, because I'm not too happy with CoherentAllocation::dma_handle_with_offset(), it's just too specific and insufficient. Given that, I thought there's not that much value in making DmaAddress a new type. (Mybe saying "no specific reason" was a slight understatement. :) So, if the idea was to have from/to helpers, we can also do them on DmaRange. However, given that also the above only helps in a limited way for the cases discussed in the other thread, I feel like the best option might still be to depend on 64-bit for Nova. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 19:31 ` Miguel Ojeda 2025-08-28 19:36 ` Miguel Ojeda @ 2025-08-28 19:57 ` Danilo Krummrich 2025-08-28 21:45 ` John Hubbard 2 siblings, 0 replies; 10+ messages in thread From: Danilo Krummrich @ 2025-08-28 19:57 UTC (permalink / raw) To: Miguel Ojeda Cc: Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On Thu Aug 28, 2025 at 9:31 PM CEST, Miguel Ojeda wrote: > On Thu, Aug 28, 2025 at 9:24 PM Danilo Krummrich <dakr@kernel.org> wrote: >> >> Maybe I spoke too soon, it's actually pretty painful to keep 32-bit >> compatibility, even though it would be nice for testing purposes. >> >> I'll paste the diff to fix it below, I think that makes it obvious why I say >> that. >> >> Instead, we should really just depend on CONFIG_64BIT (which implies >> ARCH_DMA_ADDR_T_64BIT). > > Yeah, it isn't great. > > If it were just that, maybe it it is worth it (and a `DmaAddress` > newtype, not just a typedef, could perhaps be nice anyway?) What do you have in mind what the newtype can do? I assume the idea is to make it provide methods {to,from}_u64, where to_u64() has to be fallible? This would be an improvement, but not really solve the issue entirely. The annoying part really is pub(super) fn read_sysmem_flush_page_ga100(bar: &Bar0) -> DmaAddress { let addr = u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::read(bar).adr_39_08()) << FLUSH_SYSMEM_ADDR_SHIFT | u64::from(regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI::read(bar).adr_63_40()) << FLUSH_SYSMEM_ADDR_SHIFT_HI; addr.try_into().unwrap_or_else(|_| { kernel::warn_on!(true); 0 }) } i.e. when we read a u64 from registers, but we know that what we've orignally written there is a DmaAddress, so we can assume that a cast to DmaAddress is fine. But this really depends on driver specific semantics. > but if > you think it will become increasingly painful later, then it may be > best to focus on what matters. We'll have a couple more such cases for sure; I think being able to assume that DmaAddress is always 64-bit will result in simpler and less distracting code. But if we can come up with a good idea to deal with this with a DmaAddress type; I'm open to that. > It is unlikely there is going to be actual users on a 32-bit platform, right? Yeah, I doubt that someone could think it's a great idea to run a Turing+ GPU on some 32-bit machine. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 19:31 ` Miguel Ojeda 2025-08-28 19:36 ` Miguel Ojeda 2025-08-28 19:57 ` Danilo Krummrich @ 2025-08-28 21:45 ` John Hubbard 2025-08-28 21:54 ` Danilo Krummrich 2 siblings, 1 reply; 10+ messages in thread From: John Hubbard @ 2025-08-28 21:45 UTC (permalink / raw) To: Miguel Ojeda, Danilo Krummrich Cc: Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On 8/28/25 12:31 PM, Miguel Ojeda wrote: > On Thu, Aug 28, 2025 at 9:24 PM Danilo Krummrich <dakr@kernel.org> wrote: >> >> Maybe I spoke too soon, it's actually pretty painful to keep 32-bit >> compatibility, even though it would be nice for testing purposes. >> >> I'll paste the diff to fix it below, I think that makes it obvious why I say >> that. >> >> Instead, we should really just depend on CONFIG_64BIT (which implies >> ARCH_DMA_ADDR_T_64BIT). Yes yes yes. :) > > Yeah, it isn't great. > > If it were just that, maybe it it is worth it (and a `DmaAddress` > newtype, not just a typedef, could perhaps be nice anyway?), but if > you think it will become increasingly painful later, then it may be Oh yes, this is just the tip of the iceberg. > best to focus on what matters. > > It is unlikely there is going to be actual users on a 32-bit platform, right? Completely not going to happen, actually. The Open RM driver dropped support for 32-bit platforms in *2018*, and Nova and Open RM have...a relationship. For example, they use the same identical firmware (GSP etc). And so it is inconceivable that we would attempt 32-bit support in Nova. So Nova should definitely depend upon 64-bit configs. thanks, -- John Hubbard ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: gpu: nova-core: arm32 build errors 2025-08-28 21:45 ` John Hubbard @ 2025-08-28 21:54 ` Danilo Krummrich 0 siblings, 0 replies; 10+ messages in thread From: Danilo Krummrich @ 2025-08-28 21:54 UTC (permalink / raw) To: John Hubbard Cc: Miguel Ojeda, Miguel Ojeda, Alexandre Courbot, David Airlie, Simona Vetter, nouveau, dri-devel, rust-for-linux, linux-kernel On 8/28/25 11:45 PM, John Hubbard wrote: > So Nova should definitely depend upon 64-bit configs. Yeah, I fully agree. But I think it would have been good to have a consumer for the generic APIs that has to deal with it, which I think was also Miguel's point. I will send a patch for Nova to depend on 64-bit. Independent of that, I think the code requires a few cleanups (e.g. avoiding `as` casts or using the DMA type). I will also further look into how we can help other drivers from the perspective of the DMA layer to deal with this, e.g. in the context of a DmaRage type, etc. - Danilo ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-08-28 21:54 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-08-28 16:02 gpu: nova-core: arm32 build errors Miguel Ojeda 2025-08-28 17:54 ` Danilo Krummrich 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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).