From: "Alexandre Courbot" <acourbot@nvidia.com>
To: "Daniel Almeida" <daniel.almeida@collabora.com>
Cc: "Danilo Krummrich" <dakr@kernel.org>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Beata Michalska" <beata.michalska@arm.com>,
<nouveau@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>,
<rust-for-linux@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 07/19] gpu: nova-core: register: move OFFSET declaration to I/O impl block
Date: Mon, 28 Jul 2025 14:02:43 +0900 [thread overview]
Message-ID: <DBNFB659QQI7.29PSPMX9LKLV9@nvidia.com> (raw)
In-Reply-To: <856B6814-1782-4FB0-9DD1-BD46C8FE935C@collabora.com>
On Sat Jul 26, 2025 at 2:03 AM JST, Daniel Almeida wrote:
>
>
>> On 18 Jul 2025, at 04:26, Alexandre Courbot <acourbot@nvidia.com> wrote:
>>
>> The OFFSET const is an I/O property, and having to pass it to the
>> @common rule makes it impossible to make I/O optional, as we want to get
>> to eventually.
>>
>> Thus, move OFFSET to the I/O impl block so it is not needed by the
>> @common rule anymore.
>>
>> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
>> ---
>> drivers/gpu/nova-core/regs/macros.rs | 19 +++++++++----------
>> 1 file changed, 9 insertions(+), 10 deletions(-)
>>
>> diff --git a/drivers/gpu/nova-core/regs/macros.rs b/drivers/gpu/nova-core/regs/macros.rs
>> index 742afd3ae1a3c798817bbf815945889077ce10d0..4da897787c065e69657ce65327e3290af403a615 100644
>> --- a/drivers/gpu/nova-core/regs/macros.rs
>> +++ b/drivers/gpu/nova-core/regs/macros.rs
>> @@ -92,7 +92,7 @@ macro_rules! register {
>> $($fields:tt)*
>> }
>> ) => {
>> - register!(@common $name @ $offset $(, $comment)?);
>> + register!(@common $name $(, $comment)?);
>> register!(@field_accessors $name { $($fields)* });
>> register!(@io $name @ $offset);
>> };
>> @@ -103,7 +103,7 @@ macro_rules! register {
>> $($fields:tt)*
>> }
>> ) => {
>> - register!(@common $name @ $alias::OFFSET $(, $comment)?);
>> + register!(@common $name $(, $comment)?);
>> register!(@field_accessors $name { $($fields)* });
>> register!(@io $name @ $alias::OFFSET);
>> };
>> @@ -114,7 +114,7 @@ macro_rules! register {
>> $($fields:tt)*
>> }
>> ) => {
>> - register!(@common $name @ $offset $(, $comment)?);
>> + register!(@common $name $(, $comment)?);
>> register!(@field_accessors $name { $($fields)* });
>> register!(@io $name @ + $offset);
>> };
>> @@ -125,7 +125,7 @@ macro_rules! register {
>> $($fields:tt)*
>> }
>> ) => {
>> - register!(@common $name @ $alias::OFFSET $(, $comment)?);
>> + register!(@common $name $(, $comment)?);
>> register!(@field_accessors $name { $($fields)* });
>> register!(@io $name @ + $alias::OFFSET);
>> };
>> @@ -134,7 +134,7 @@ macro_rules! register {
>>
>> // Defines the wrapper `$name` type, as well as its relevant implementations (`Debug`, `BitOr`,
>> // and conversion to regular `u32`).
>> - (@common $name:ident @ $offset:expr $(, $comment:literal)?) => {
>> + (@common $name:ident $(, $comment:literal)?) => {
>> $(
>> #[doc=$comment]
>> )?
>> @@ -142,11 +142,6 @@ macro_rules! register {
>> #[derive(Clone, Copy, Default)]
>> pub(crate) struct $name(u32);
>>
>> - #[allow(dead_code)]
>> - impl $name {
>> - pub(crate) const OFFSET: usize = $offset;
>> - }
>> -
>> // TODO[REGA]: display the raw hex value, then the value of all the fields. This requires
>> // matching the fields, which will complexify the syntax considerably...
>> impl ::core::fmt::Debug for $name {
>> @@ -319,6 +314,8 @@ pub(crate) fn [<set_ $field>](mut self, value: $to_type) -> Self {
>> (@io $name:ident @ $offset:expr) => {
>> #[allow(dead_code)]
>> impl $name {
>> + pub(crate) const OFFSET: usize = $offset;
>> +
>
> Minor suggestion, have you ever though about somehow making this a const
> generic? This saves the space needed to store the actual constant in the
> binary.
>
> Again, not sure whether this is feasible.
A const generic would require a trait to hold it, and would make that
trait implementable several times for the same register, so I'm not
quite sure how that would work...
Besides, we want `OFFSET` to be available for external users to read (in
case they need the register's actual address for whatever reason), and I
don't think this is doable with a const generic.
next prev parent reply other threads:[~2025-07-28 5:02 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-18 7:26 [PATCH v2 00/19] gpu: nova-core: register!() macro improvements Alexandre Courbot
2025-07-18 7:26 ` [PATCH v2 01/19] gpu: nova-core: register: minor grammar and spelling fixes Alexandre Courbot
2025-07-25 16:14 ` Daniel Almeida
2025-07-25 20:43 ` John Hubbard
2025-07-28 4:59 ` Alexandre Courbot
2025-07-28 7:51 ` Steven Price
2025-07-28 11:43 ` Alexandre Courbot
2025-07-28 13:25 ` Steven Price
2025-07-29 13:47 ` Alexandre Courbot
2025-07-30 9:27 ` Steven Price
2025-07-30 12:47 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 02/19] gpu: nova-core: register: fix typo Alexandre Courbot
2025-07-18 19:05 ` Boqun Feng
2025-07-22 12:38 ` Alexandre Courbot
2025-07-25 16:18 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 03/19] gpu: nova-core: register: allow fields named `offset` Alexandre Courbot
2025-07-25 16:20 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 04/19] gpu: nova-core: register: improve documentation for basic registers Alexandre Courbot
2025-07-25 16:49 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 05/19] gpu: nova-core: register: simplify @leaf_accessor rule Alexandre Courbot
2025-07-25 16:53 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 06/19] gpu: nova-core: register: remove `try_` accessors for relative registers Alexandre Courbot
2025-07-25 16:55 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 07/19] gpu: nova-core: register: move OFFSET declaration to I/O impl block Alexandre Courbot
2025-07-25 17:03 ` Daniel Almeida
2025-07-28 5:02 ` Alexandre Courbot [this message]
2025-07-18 7:26 ` [PATCH v2 08/19] gpu: nova-core: register: fix documentation and indentation Alexandre Courbot
2025-07-25 17:04 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 09/19] gpu: nova-core: register: add missing doccomments for fixed registers I/O accessors Alexandre Courbot
2025-07-25 17:06 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 10/19] gpu: nova-core: register: add fields dispatcher internal rule Alexandre Courbot
2025-07-25 17:38 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 11/19] gpu: nova-core: register: improve `Debug` implementation Alexandre Courbot
2025-07-25 17:49 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 12/19] gpu: nova-core: register: generate correct `Default` implementation Alexandre Courbot
2025-07-25 17:53 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 13/19] gpu: nova-core: register: split @io rule into fixed and relative versions Alexandre Courbot
2025-07-25 17:58 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 14/19] gpu: nova-core: register: use #[inline(always)] for all methods Alexandre Courbot
2025-07-25 17:59 ` Daniel Almeida
2025-07-18 7:26 ` [PATCH v2 15/19] gpu: nova-core: register: redesign relative registers Alexandre Courbot
2025-07-25 18:56 ` Daniel Almeida
2025-07-28 5:07 ` Alexandre Courbot
2025-07-18 7:26 ` [PATCH v2 16/19] gpu: nova-core: falcon: add distinct base address for PFALCON2 Alexandre Courbot
2025-07-18 20:23 ` John Hubbard
2025-07-22 12:39 ` Alexandre Courbot
2025-07-18 7:26 ` [PATCH v2 17/19] gpu: nova-core: register: add support for register arrays Alexandre Courbot
2025-07-25 19:12 ` Daniel Almeida
2025-07-25 19:13 ` Daniel Almeida
2025-07-28 5:12 ` Alexandre Courbot
2025-07-18 7:26 ` [PATCH v2 18/19] gpu: nova-core: falcon: use register arrays for FUSE registers Alexandre Courbot
2025-07-18 7:26 ` [PATCH v2 19/19] gpu: nova-core: register: add support for relative array registers Alexandre Courbot
2025-08-14 22:52 ` [PATCH v2 00/19] gpu: nova-core: register!() macro improvements Lyude Paul
2025-08-15 4:44 ` Alexandre Courbot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DBNFB659QQI7.29PSPMX9LKLV9@nvidia.com \
--to=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=beata.michalska@arm.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.