John Hubbard
2025-Oct-16 19:39 UTC
[PATCH v7.1 2/4] gpu: nova-core: bitfield: Move bitfield-specific code from register! into new macro
On 10/16/25 12:34 PM, Danilo Krummrich wrote:> On Thu Oct 16, 2025 at 9:28 PM CEST, Joel Fernandes wrote: >>> On Oct 16, 2025, at 1:48?PM, Yury Norov <yury.norov at gmail.com> wrote: >>> ?On Thu, Oct 16, 2025 at 11:13:21AM -0400, Joel Fernandes wrote:...> While I'm not super opinionated for general bitfields, for the register!() > infrastructure I very much prefer the hi:lo notation, as this is the common > notation in datasheets and TRMs. > > However, if we use hi:lo, we should use it decending, i.e.: >Sure, descending works.> bitfield! { > struct ControlReg { > 7:5 state as u8 => State; > 3:0 mode as u8 ?=> Mode;And hi:lo matches our HW reference manuals. And if you're dealing with bitfields, you are often also dealing with HW, so this is a reasonable place in the SW to use hi:lo. Looks good to me. thanks, -- John Hubbard
Alexandre Courbot
2025-Oct-17 02:43 UTC
[PATCH v7.1 2/4] gpu: nova-core: bitfield: Move bitfield-specific code from register! into new macro
On Fri Oct 17, 2025 at 4:39 AM JST, John Hubbard wrote:> On 10/16/25 12:34 PM, Danilo Krummrich wrote: >> On Thu Oct 16, 2025 at 9:28 PM CEST, Joel Fernandes wrote: >>>> On Oct 16, 2025, at 1:48?PM, Yury Norov <yury.norov at gmail.com> wrote: >>>> ?On Thu, Oct 16, 2025 at 11:13:21AM -0400, Joel Fernandes wrote: > ... >> While I'm not super opinionated for general bitfields, for the register!() >> infrastructure I very much prefer the hi:lo notation, as this is the common >> notation in datasheets and TRMs. >> >> However, if we use hi:lo, we should use it decending, i.e.: >> > > Sure, descending works. > >> bitfield! { >> struct ControlReg { >> 7:5 state as u8 => State; >> 3:0 mode as u8 ?=> Mode; > > And hi:lo matches our HW reference manuals. And if you're dealing > with bitfields, you are often also dealing with HW, so this is > a reasonable place in the SW to use hi:lo.Definitely agree here. The use of `:` is what makes the difference with the GENMASK macro, which separates its argument with a regular comma. There is no room for mistaking these with anything else.
John Hubbard
2025-Oct-20 22:50 UTC
[PATCH v7.1 2/4] gpu: nova-core: bitfield: Move bitfield-specific code from register! into new macro
On 10/16/25 12:39 PM, John Hubbard wrote:> On 10/16/25 12:34 PM, Danilo Krummrich wrote: >> On Thu Oct 16, 2025 at 9:28 PM CEST, Joel Fernandes wrote: >>>> On Oct 16, 2025, at 1:48?PM, Yury Norov <yury.norov at gmail.com> wrote: >>>> ?On Thu, Oct 16, 2025 at 11:13:21AM -0400, Joel Fernandes wrote: > ... >> While I'm not super opinionated for general bitfields, for the register!() >> infrastructure I very much prefer the hi:lo notation, as this is the common >> notation in datasheets and TRMs. >> >> However, if we use hi:lo, we should use it decending, i.e.:(restored from the email thread): bitfield! { struct ControlReg { 7:5 state as u8 => State; 3:0 mode as u8 ?=> Mode; } }>>> > Sure, descending works.Oops! I need to correct myself. After reviewing most of Joel Fernandes' latest patchset ([PATCH 0/7] Pre-requisite patches for mm and irq in nova-core) [1], I remember that the HW documentation is written in ascending order. For one example (out of countless hundreds or thousands), please see [2]. Considering that I actually pushed this file up to github just a few years ago, it's rather silly of me to forget this basic truth. :) We really want to stay close to the HW documentation, and so, all other things being (nearly) equal, this means that we should prefer ascending field order, if that's OK with everyone. [1] https://lore.kernel.org/20251020185539.49986-1-joelagnelf at nvidia.com [2] https://github.com/NVIDIA/open-gpu-doc/blob/master/manuals/ampere/ga102/dev_ce.ref.txt thanks, -- John Hubbard