On Sun Mar 1, 2026 at 11:03 PM JST, Alexandre Courbot wrote:
> Falcon memory blocks are 256 bytes in size. This is a hard constant on
> all models.
>
> This value was hardcoded, so turn it into a documented constant. It will
> also become useful with the PIO loading code.
>
> Signed-off-by: Alexandre Courbot <[email protected]>
> ---
>  drivers/gpu/nova-core/falcon.rs | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs
> index 8d444cf9d55c..31217cd3a795 100644
> --- a/drivers/gpu/nova-core/falcon.rs
> +++ b/drivers/gpu/nova-core/falcon.rs
> @@ -25,6 +25,7 @@
>      falcon::hal::LoadMethod,
>      gpu::Chipset,
>      num::{
> +        self,
>          FromSafeCast,
>          IntoSafeCast, //
>      },
> @@ -36,6 +37,9 @@
>  mod hal;
>  pub(crate) mod sec2;
>  
> +/// Alignment (in bytes) of falcon memory blocks.
> +pub(crate) const MEM_BLOCK_ALIGNMENT: usize = 256;
> +
>  // TODO[FPRI]: Replace with `ToPrimitive`.
>  macro_rules! impl_from_enum_to_u8 {
>      ($enum_type:ty) => {
> @@ -423,7 +427,7 @@ fn dma_wr(
>          target_mem: FalconMem,
>          load_offsets: FalconLoadTarget,
>      ) -> Result {
> -        const DMA_LEN: u32 = 256;
> +        const DMA_LEN: u32 = num::usize_into_u32::<{ MEM_BLOCK_ALIGNMENT 
> }>();
>  
>          // For IMEM, we want to use the start offset as a virtual address 
> tag for each page, since
>          // code addresses in the firmware (and the boot vector) are virtual.

Reviewed-by: Eliot Courtney <[email protected]>

Reply via email to