Alexandre Courbot
2025-Oct-26 14:39 UTC
[PATCH 7/7] gpu: nova-core: justify remaining uses of `as`
There are a few remaining cases where we *do* want to use `as`,
because we specifically want to strip the data that does not fit into
the destination type. Comment these uses to clear confusion about the
intent.
Signed-off-by: Alexandre Courbot <acourbot at nvidia.com>
---
drivers/gpu/nova-core/falcon.rs | 4 ++++
drivers/gpu/nova-core/fb/hal/ga100.rs | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs
index a44df1ac8873..701c08d0cb2a 100644
--- a/drivers/gpu/nova-core/falcon.rs
+++ b/drivers/gpu/nova-core/falcon.rs
@@ -479,9 +479,13 @@ fn dma_wr<F: FalconFirmware<Target = E>>(
// Set up the base source DMA address.
regs::NV_PFALCON_FALCON_DMATRFBASE::default()
+ // `as u32` is used on purpose since we do want to strip the upper
bits, which will be
+ // written to `NV_PFALCON_FALCON_DMATRFBASE1`.
.set_base((dma_start >> 8) as u32)
.write(bar, &E::ID);
regs::NV_PFALCON_FALCON_DMATRFBASE1::default()
+ // `as u16` is used on purpose since the remaining bits are
guaranteed to fit within a
+ // `u16`.
.set_base((dma_start >> 40) as u16)
.write(bar, &E::ID);
diff --git a/drivers/gpu/nova-core/fb/hal/ga100.rs
b/drivers/gpu/nova-core/fb/hal/ga100.rs
index 871c42bf033a..6a59c96febc1 100644
--- a/drivers/gpu/nova-core/fb/hal/ga100.rs
+++ b/drivers/gpu/nova-core/fb/hal/ga100.rs
@@ -18,9 +18,13 @@ pub(super) fn read_sysmem_flush_page_ga100(bar: &Bar0)
-> u64 {
pub(super) fn write_sysmem_flush_page_ga100(bar: &Bar0, addr: u64) {
regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI::default()
+ // `as u32` is used on purpose since the remaining bits are guaranteed
to fit within a
+ // `u32`.
.set_adr_63_40((addr >> FLUSH_SYSMEM_ADDR_SHIFT_HI) as u32)
.write(bar);
regs::NV_PFB_NISO_FLUSH_SYSMEM_ADDR::default()
+ // `as u32` is used on purpose since we want to strip the upper bits
that have been written
+ // to `NV_PFB_NISO_FLUSH_SYSMEM_ADDR_HI`.
.set_adr_39_08((addr >> FLUSH_SYSMEM_ADDR_SHIFT) as u32)
.write(bar);
}
--
2.51.0
Miguel Ojeda
2025-Oct-26 16:11 UTC
[PATCH 7/7] gpu: nova-core: justify remaining uses of `as`
On Sun, Oct 26, 2025 at 3:40?PM Alexandre Courbot <acourbot at nvidia.com> wrote:> > + // `as u32` is used on purpose since we do want to strip the upper bits, which will be > + // written to `NV_PFALCON_FALCON_DMATRFBASE1`. > .set_base((dma_start >> 8) as u32) > .write(bar, &E::ID);We are not very consistent on this yet, but I would suggest using `// CAST:`. We are working on getting `// PANIC:` in Clippy, and we could get others like this one eventually. Cheers, Miguel
Alexandre Courbot
2025-Oct-27 12:07 UTC
[PATCH 7/7] gpu: nova-core: justify remaining uses of `as`
On Mon Oct 27, 2025 at 1:11 AM JST, Miguel Ojeda wrote:> On Sun, Oct 26, 2025 at 3:40?PM Alexandre Courbot <acourbot at nvidia.com> wrote: >> >> + // `as u32` is used on purpose since we do want to strip the upper bits, which will be >> + // written to `NV_PFALCON_FALCON_DMATRFBASE1`. >> .set_base((dma_start >> 8) as u32) >> .write(bar, &E::ID); > > We are not very consistent on this yet, but I would suggest using `// > CAST:`. We are working on getting `// PANIC:` in Clippy, and we could > get others like this one eventually.Sounds great, will do!