[PATCH 1/2] gpu: nova-core: impl From for u32 for enums used from register!

Alexandre Courbot acourbot at nvidia.com
Tue Jun 24 13:48:57 UTC 2025


On Tue Jun 24, 2025 at 10:23 PM JST, Danilo Krummrich wrote:
> Implement From for u32 for all enum types used within the register!()
> macro.
>
> This avoids a conflict with [1] as reported in [2].
>
> Cc: Alexandre Courbot <acourbot at nvidia.com>
> Cc: Miguel Ojeda <ojeda at kernel.org>
> Link: https://lore.kernel.org/r/20250615-ptr-as-ptr-v12-5-f43b024581e8@gmail.com [1]
> Link: https://lore.kernel.org/all/20250624173114.3be38990@canb.auug.org.au/ [2]
> Signed-off-by: Danilo Krummrich <dakr at kernel.org>

Reviewed-by: Alexandre Courbot <acourbot at nvidia.com>

Also confirmed that Ampere still successfully probed with this:

Tested-by: Alexandre Courbot <acourbot at nvidia.com>

One small comment and question below.

> ---
>  drivers/gpu/nova-core/falcon.rs | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs
> index 07be1c30668c..1affffb109ec 100644
> --- a/drivers/gpu/nova-core/falcon.rs
> +++ b/drivers/gpu/nova-core/falcon.rs
> @@ -20,6 +20,16 @@
>  mod hal;
>  pub(crate) mod sec2;
>  
> +macro_rules! impl_from_enum_to_u32 {
> +    ($enum_type:ty) => {
> +        impl From<$enum_type> for u32 {
> +            fn from(value: $enum_type) -> Self {
> +                value as u32
> +            }
> +        }
> +    };
> +}

We might need some equivalent in other modules as well in the future -
do you think we should move it to the root of the driver, and explain
its purpose with a comment?

I am also thinking that we might want to turn this into a derive macro
in the future, similar to `FromPrimitive` - so maybe a TODO item is
warranted for this. I haven't looked closely at the `FromPrimitive`
patchset yet but it would be neat if we could leverage it somehow.


More information about the Nouveau mailing list