Re: [PATCH 0/8] rust: io: register: allow paths for relative register bases

"Gary Guo" <[email protected]> Tue, 21 Jul 2026 15:34:50 +0100
Newsgroups dev.linux.lists.nova-gpu,dev.linux.lists.driver-core,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-kernel,org.kernel.vger.rust-for-linux
Message-ID <[email protected]>
On Tue Jul 21, 2026 at 12:00 PM BST, Alexandre Courbot wrote:
> The register! macro currently accepts an identifier as the base of a
> relative register. This requires base types declared in other modules to
> be imported into the module containing the register declaration, rather
> than allowing a qualified path to be used directly, which is arbitrarily
> limiting.
>
> This series allows path to be used as relative register bases. Since a
> `path` fragment cannot be followed by `+` in declarative macros, the
> `Base + Offset` and `Base + Alias` forms are replaced with `Base:
> Offset` and `Base: Alias`, inducing a syntax change.
>
> The first two patches clean up the macro's internal dispatch and
> arguments in preparation for the change. Patches 3-6 gradually add
> support for the new syntax and update docs and examples, while
> preserving the old syntax. Patch 7 updates Nova to use the new syntax,
> and patch 8 removes support for the now unused old syntax.
>
> The series is structured this way so the Nova update and deprecated
> syntax removal can be merged separately, as otherwise the whole series
> would need to go through drm-rust.

I would like to avoid adding new features to relative registers as I aspire to
get rid of them entirely with typed registers.

I'll work on a prototype.

Best,
Gary

>
> Outside of the syntax update, no functional change is intended.
>
> Signed-off-by: Alexandre Courbot <[email protected]>
> ---
> Alexandre Courbot (8):
>       rust: io: register: dispatch fixed array shortcut internally
>       rust: io: register: remove unused rule arguments
>       rust: io: register: use path fragment for alias destination
>       rust: io: register: use path fragment in relative internal rules
>       rust: io: register: allow paths for relative register bases
>       rust: io: register: use new relative base syntax in doc and examples
>       gpu: nova-core: convert relative registers to new syntax
>       rust: io: register: remove deprecated relative register rule
>
>  drivers/gpu/nova-core/regs.rs | 74 +++++++++++++++++++++---------------------
>  rust/kernel/io/register.rs    | 75 +++++++++++++++++++++----------------------
>  2 files changed, 74 insertions(+), 75 deletions(-)
> ---
> base-commit: 22e77d81d0a9ab3aee1c5538b3f2f8a66930bfa7
> change-id: 20260418-registers_fix-7a67ebef9ba0
>
> Best regards,
> --  
> Alexandre Courbot <[email protected]>