Re: [PATCH 11/27] gpu: nova-core: regs: add msgq v2 BAR0 register declarations

Zhi Wang <[email protected]>
Newsgroups dev.linux.lists.nova-gpu,org.kernel.vger.linux-kernel
Message-ID <20260820133929.6f8ec632@inno-dell>
On Tue, 18 Aug 2026 20:52:04 -0700
John Hubbard <[email protected]> wrote:

Looking good to me.

Reviewed-by: Zhi Wang <[email protected]>

Z.

> Msgq v2 moves the four ring pointers out of the in-memory headers and
> into BAR0. NV_PGSP_QUEUE_HEAD already exists as the v0 doorbell, so
> add NV_PGSP_QUEUE_TAIL, NV_PGSP_MSGQ_HEAD, and NV_PGSP_MSGQ_TAIL at
> the queue-0 offsets.
> 
> Nova only uses queue 0, so the registers are scalars rather than
> 8-element arrays. A comment records the full hardware layout for
> future multi-queue work.
> 
> Assisted-by: Cursor:claude-opus-5
> Signed-off-by: John Hubbard <[email protected]>
> ---
>  drivers/gpu/nova-core/gsp/regs.rs | 30 ++++++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/drivers/gpu/nova-core/gsp/regs.rs
> b/drivers/gpu/nova-core/gsp/regs.rs index 9a48aa87e7fb..d2e40ed13123
> 100644 --- a/drivers/gpu/nova-core/gsp/regs.rs
> +++ b/drivers/gpu/nova-core/gsp/regs.rs
> @@ -5,6 +5,18 @@
>  use crate::regs::NV_PBUS_SW_SCRATCH;
>  
>  // PGSP
> +//
> +// The msgq v2 wire protocol replaces the in-memory ring pointers
> with four +// BAR0 registers per queue:
> +//
> +//     NV_PGSP_QUEUE_HEAD[i] @ 0x00110c00 + i*8  (CPU TX write,
> doorbell) +//     NV_PGSP_QUEUE_TAIL[i] @ 0x00110c04 + i*8  (GSP TX
> read) +//     NV_PGSP_MSGQ_HEAD[i]  @ 0x00110c80 + i*8  (GSP RX write)
> +//     NV_PGSP_MSGQ_TAIL[i]  @ 0x00110c84 + i*8  (CPU RX read)
> +//
> +// Nova only uses queue 0, so the four registers are declared as
> single +// scalars at the i=0 offsets. NV_PGSP_QUEUE_HEAD is also
> used as the v0 +// doorbell, which is why it predates the others.
>  
>  register! {
>      pub(super) NV_PGSP_QUEUE_HEAD(u32) @ 0x00110c00 {
> @@ -12,6 +24,24 @@
>      }
>  }
>  
> +register! {
> +    pub(super) NV_PGSP_QUEUE_TAIL(u32) @ 0x00110c04 {
> +        31:0    address;
> +    }
> +}
> +
> +register! {
> +    pub(super) NV_PGSP_MSGQ_HEAD(u32) @ 0x00110c80 {
> +        31:0    address;
> +    }
> +}
> +
> +register! {
> +    pub(super) NV_PGSP_MSGQ_TAIL(u32) @ 0x00110c84 {
> +        31:0    address;
> +    }
> +}
> +
>  // PBUS
>  
>  register! {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.