All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Eliot Courtney" <ecourtney@nvidia.com>
To: "Alexandre Courbot" <acourbot@nvidia.com>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"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>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>
Cc: "John Hubbard" <jhubbard@nvidia.com>,
	"Alistair Popple" <apopple@nvidia.com>,
	"Joel Fernandes" <joelagnelf@nvidia.com>,
	"Timur Tabi" <ttabi@nvidia.com>, "Zhi Wang" <zhiw@nvidia.com>,
	"Eliot Courtney" <ecourtney@nvidia.com>,
	<dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>,
	<linux-riscv@lists.infradead.org>, <linux-doc@vger.kernel.org>,
	<rust-for-linux@vger.kernel.org>
Subject: Re: [PATCH 5/8] gpu: nova-core: convert FUSE registers to kernel register macro
Date: Thu, 19 Mar 2026 11:17:59 +0900	[thread overview]
Message-ID: <DH6ECIKZRESY.D4VBM1STGPH@nvidia.com> (raw)
In-Reply-To: <20260318-b4-nova-register-v1-5-22a358aa4c63@nvidia.com>

On Wed Mar 18, 2026 at 5:06 PM JST, Alexandre Courbot wrote:
> Convert all FUSE registers to use the kernel's register macro and update
> the code accordingly.
>
> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
> ---
>  drivers/gpu/nova-core/falcon/hal/ga102.rs | 20 +++++++++++------
>  drivers/gpu/nova-core/fb/hal/ga100.rs     |  3 ++-
>  drivers/gpu/nova-core/fb/hal/tu102.rs     |  3 ++-
>  drivers/gpu/nova-core/regs.rs             | 36 ++++++++++++++++++-------------
>  4 files changed, 39 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/nova-core/falcon/hal/ga102.rs b/drivers/gpu/nova-core/falcon/hal/ga102.rs
> index 8f62df10da0a..e3eb6189819f 100644
> --- a/drivers/gpu/nova-core/falcon/hal/ga102.rs
> +++ b/drivers/gpu/nova-core/falcon/hal/ga102.rs
> @@ -4,7 +4,11 @@
>  
>  use kernel::{
>      device,
> -    io::poll::read_poll_timeout,
> +    io::{
> +        poll::read_poll_timeout,
> +        register::Array,
> +        Io, //
> +    },
>      prelude::*,
>      time::Delta, //
>  };
> @@ -60,16 +64,20 @@ fn signature_reg_fuse_version_ga102(
>  
>      // `ucode_idx` is guaranteed to be in the range [0..15], making the `read` calls provable valid
>      // at build-time.
> -    let reg_fuse_version = if engine_id_mask & 0x0001 != 0 {
> -        regs::NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION::read(bar, ucode_idx).data()
> +    let reg_fuse_version: u16 = if engine_id_mask & 0x0001 != 0 {
> +        bar.read(regs::NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION::at(ucode_idx))
> +            .data()
>      } else if engine_id_mask & 0x0004 != 0 {
> -        regs::NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION::read(bar, ucode_idx).data()
> +        bar.read(regs::NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION::at(ucode_idx))
> +            .data()
>      } else if engine_id_mask & 0x0400 != 0 {
> -        regs::NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION::read(bar, ucode_idx).data()
> +        bar.read(regs::NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION::at(ucode_idx))
> +            .data()
>      } else {
>          dev_err!(dev, "unexpected engine_id_mask {:#x}\n", engine_id_mask);
>          return Err(EINVAL);
> -    };
> +    }
> +    .into();
>  
>      // TODO[NUMM]: replace with `last_set_bit` once it lands.
>      Ok(u16::BITS - reg_fuse_version.leading_zeros())
> diff --git a/drivers/gpu/nova-core/fb/hal/ga100.rs b/drivers/gpu/nova-core/fb/hal/ga100.rs
> index 629588c75778..1c03783cddef 100644
> --- a/drivers/gpu/nova-core/fb/hal/ga100.rs
> +++ b/drivers/gpu/nova-core/fb/hal/ga100.rs
> @@ -40,7 +40,8 @@ pub(super) fn write_sysmem_flush_page_ga100(bar: &Bar0, addr: u64) {
>  }
>  
>  pub(super) fn display_enabled_ga100(bar: &Bar0) -> bool {
> -    !regs::ga100::NV_FUSE_STATUS_OPT_DISPLAY::read(bar).display_disabled()
> +    !bar.read(regs::ga100::NV_FUSE_STATUS_OPT_DISPLAY)
> +        .display_disabled()
>  }
>  
>  /// Shift applied to the sysmem address before it is written into
> diff --git a/drivers/gpu/nova-core/fb/hal/tu102.rs b/drivers/gpu/nova-core/fb/hal/tu102.rs
> index 515d50872224..281bb796e198 100644
> --- a/drivers/gpu/nova-core/fb/hal/tu102.rs
> +++ b/drivers/gpu/nova-core/fb/hal/tu102.rs
> @@ -29,7 +29,8 @@ pub(super) fn write_sysmem_flush_page_gm107(bar: &Bar0, addr: u64) -> Result {
>  }
>  
>  pub(super) fn display_enabled_gm107(bar: &Bar0) -> bool {
> -    !regs::gm107::NV_FUSE_STATUS_OPT_DISPLAY::read(bar).display_disabled()
> +    !bar.read(regs::gm107::NV_FUSE_STATUS_OPT_DISPLAY)
> +        .display_disabled()
>  }
>  
>  pub(super) fn vidmem_size_gp102(bar: &Bar0) -> u64 {
> diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs
> index 4439464aae4d..9682a94b8b77 100644
> --- a/drivers/gpu/nova-core/regs.rs
> +++ b/drivers/gpu/nova-core/regs.rs
> @@ -294,17 +294,19 @@ pub(crate) fn vga_workspace_addr(self) -> Option<u64> {
>  
>  pub(crate) const NV_FUSE_OPT_FPF_SIZE: usize = 16;
>  
> -register!(NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION @ 0x00824100[NV_FUSE_OPT_FPF_SIZE] {
> -    15:0    data as u16;
> -});
> +nv_reg! {
> +    NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION[NV_FUSE_OPT_FPF_SIZE] @ 0x00824100 {
> +        15:0    data;
> +    }
>  
> -register!(NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION @ 0x00824140[NV_FUSE_OPT_FPF_SIZE] {
> -    15:0    data as u16;
> -});
> +    NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION[NV_FUSE_OPT_FPF_SIZE] @ 0x00824140 {
> +        15:0    data;
> +    }
>  
> -register!(NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION @ 0x008241c0[NV_FUSE_OPT_FPF_SIZE] {
> -    15:0    data as u16;
> -});
> +    NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION[NV_FUSE_OPT_FPF_SIZE] @ 0x008241c0 {
> +        15:0    data;
> +    }
> +}

What about using data => u16 here (like below with => bool), then we can
avoid the into()?.

Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>

>  
>  // PFALCON
>  
> @@ -517,15 +519,19 @@ pub(crate) fn reset_engine<E: FalconEngine>(bar: &Bar0) {
>  pub(crate) mod gm107 {
>      // FUSE
>  
> -    register!(NV_FUSE_STATUS_OPT_DISPLAY @ 0x00021c04 {
> -        0:0     display_disabled as bool;
> -    });
> +    nv_reg! {
> +        NV_FUSE_STATUS_OPT_DISPLAY @ 0x00021c04 {
> +            0:0     display_disabled => bool;
> +        }
> +    }
>  }
>  
>  pub(crate) mod ga100 {
>      // FUSE
>  
> -    register!(NV_FUSE_STATUS_OPT_DISPLAY @ 0x00820c04 {
> -        0:0     display_disabled as bool;
> -    });
> +    nv_reg! {
> +        NV_FUSE_STATUS_OPT_DISPLAY @ 0x00820c04 {
> +            0:0     display_disabled => bool;
> +        }
> +    }
>  }


WARNING: multiple messages have this Message-ID (diff)
From: "Eliot Courtney" <ecourtney@nvidia.com>
To: "Alexandre Courbot" <acourbot@nvidia.com>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"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>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <lossin@kernel.org>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>
Cc: "John Hubbard" <jhubbard@nvidia.com>,
	"Alistair Popple" <apopple@nvidia.com>,
	"Joel Fernandes" <joelagnelf@nvidia.com>,
	"Timur Tabi" <ttabi@nvidia.com>, "Zhi Wang" <zhiw@nvidia.com>,
	"Eliot Courtney" <ecourtney@nvidia.com>,
	<dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>,
	<linux-riscv@lists.infradead.org>, <linux-doc@vger.kernel.org>,
	<rust-for-linux@vger.kernel.org>
Subject: Re: [PATCH 5/8] gpu: nova-core: convert FUSE registers to kernel register macro
Date: Thu, 19 Mar 2026 11:17:59 +0900	[thread overview]
Message-ID: <DH6ECIKZRESY.D4VBM1STGPH@nvidia.com> (raw)
In-Reply-To: <20260318-b4-nova-register-v1-5-22a358aa4c63@nvidia.com>

On Wed Mar 18, 2026 at 5:06 PM JST, Alexandre Courbot wrote:
> Convert all FUSE registers to use the kernel's register macro and update
> the code accordingly.
>
> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
> ---
>  drivers/gpu/nova-core/falcon/hal/ga102.rs | 20 +++++++++++------
>  drivers/gpu/nova-core/fb/hal/ga100.rs     |  3 ++-
>  drivers/gpu/nova-core/fb/hal/tu102.rs     |  3 ++-
>  drivers/gpu/nova-core/regs.rs             | 36 ++++++++++++++++++-------------
>  4 files changed, 39 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/nova-core/falcon/hal/ga102.rs b/drivers/gpu/nova-core/falcon/hal/ga102.rs
> index 8f62df10da0a..e3eb6189819f 100644
> --- a/drivers/gpu/nova-core/falcon/hal/ga102.rs
> +++ b/drivers/gpu/nova-core/falcon/hal/ga102.rs
> @@ -4,7 +4,11 @@
>  
>  use kernel::{
>      device,
> -    io::poll::read_poll_timeout,
> +    io::{
> +        poll::read_poll_timeout,
> +        register::Array,
> +        Io, //
> +    },
>      prelude::*,
>      time::Delta, //
>  };
> @@ -60,16 +64,20 @@ fn signature_reg_fuse_version_ga102(
>  
>      // `ucode_idx` is guaranteed to be in the range [0..15], making the `read` calls provable valid
>      // at build-time.
> -    let reg_fuse_version = if engine_id_mask & 0x0001 != 0 {
> -        regs::NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION::read(bar, ucode_idx).data()
> +    let reg_fuse_version: u16 = if engine_id_mask & 0x0001 != 0 {
> +        bar.read(regs::NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION::at(ucode_idx))
> +            .data()
>      } else if engine_id_mask & 0x0004 != 0 {
> -        regs::NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION::read(bar, ucode_idx).data()
> +        bar.read(regs::NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION::at(ucode_idx))
> +            .data()
>      } else if engine_id_mask & 0x0400 != 0 {
> -        regs::NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION::read(bar, ucode_idx).data()
> +        bar.read(regs::NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION::at(ucode_idx))
> +            .data()
>      } else {
>          dev_err!(dev, "unexpected engine_id_mask {:#x}\n", engine_id_mask);
>          return Err(EINVAL);
> -    };
> +    }
> +    .into();
>  
>      // TODO[NUMM]: replace with `last_set_bit` once it lands.
>      Ok(u16::BITS - reg_fuse_version.leading_zeros())
> diff --git a/drivers/gpu/nova-core/fb/hal/ga100.rs b/drivers/gpu/nova-core/fb/hal/ga100.rs
> index 629588c75778..1c03783cddef 100644
> --- a/drivers/gpu/nova-core/fb/hal/ga100.rs
> +++ b/drivers/gpu/nova-core/fb/hal/ga100.rs
> @@ -40,7 +40,8 @@ pub(super) fn write_sysmem_flush_page_ga100(bar: &Bar0, addr: u64) {
>  }
>  
>  pub(super) fn display_enabled_ga100(bar: &Bar0) -> bool {
> -    !regs::ga100::NV_FUSE_STATUS_OPT_DISPLAY::read(bar).display_disabled()
> +    !bar.read(regs::ga100::NV_FUSE_STATUS_OPT_DISPLAY)
> +        .display_disabled()
>  }
>  
>  /// Shift applied to the sysmem address before it is written into
> diff --git a/drivers/gpu/nova-core/fb/hal/tu102.rs b/drivers/gpu/nova-core/fb/hal/tu102.rs
> index 515d50872224..281bb796e198 100644
> --- a/drivers/gpu/nova-core/fb/hal/tu102.rs
> +++ b/drivers/gpu/nova-core/fb/hal/tu102.rs
> @@ -29,7 +29,8 @@ pub(super) fn write_sysmem_flush_page_gm107(bar: &Bar0, addr: u64) -> Result {
>  }
>  
>  pub(super) fn display_enabled_gm107(bar: &Bar0) -> bool {
> -    !regs::gm107::NV_FUSE_STATUS_OPT_DISPLAY::read(bar).display_disabled()
> +    !bar.read(regs::gm107::NV_FUSE_STATUS_OPT_DISPLAY)
> +        .display_disabled()
>  }
>  
>  pub(super) fn vidmem_size_gp102(bar: &Bar0) -> u64 {
> diff --git a/drivers/gpu/nova-core/regs.rs b/drivers/gpu/nova-core/regs.rs
> index 4439464aae4d..9682a94b8b77 100644
> --- a/drivers/gpu/nova-core/regs.rs
> +++ b/drivers/gpu/nova-core/regs.rs
> @@ -294,17 +294,19 @@ pub(crate) fn vga_workspace_addr(self) -> Option<u64> {
>  
>  pub(crate) const NV_FUSE_OPT_FPF_SIZE: usize = 16;
>  
> -register!(NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION @ 0x00824100[NV_FUSE_OPT_FPF_SIZE] {
> -    15:0    data as u16;
> -});
> +nv_reg! {
> +    NV_FUSE_OPT_FPF_NVDEC_UCODE1_VERSION[NV_FUSE_OPT_FPF_SIZE] @ 0x00824100 {
> +        15:0    data;
> +    }
>  
> -register!(NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION @ 0x00824140[NV_FUSE_OPT_FPF_SIZE] {
> -    15:0    data as u16;
> -});
> +    NV_FUSE_OPT_FPF_SEC2_UCODE1_VERSION[NV_FUSE_OPT_FPF_SIZE] @ 0x00824140 {
> +        15:0    data;
> +    }
>  
> -register!(NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION @ 0x008241c0[NV_FUSE_OPT_FPF_SIZE] {
> -    15:0    data as u16;
> -});
> +    NV_FUSE_OPT_FPF_GSP_UCODE1_VERSION[NV_FUSE_OPT_FPF_SIZE] @ 0x008241c0 {
> +        15:0    data;
> +    }
> +}

What about using data => u16 here (like below with => bool), then we can
avoid the into()?.

Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>

>  
>  // PFALCON
>  
> @@ -517,15 +519,19 @@ pub(crate) fn reset_engine<E: FalconEngine>(bar: &Bar0) {
>  pub(crate) mod gm107 {
>      // FUSE
>  
> -    register!(NV_FUSE_STATUS_OPT_DISPLAY @ 0x00021c04 {
> -        0:0     display_disabled as bool;
> -    });
> +    nv_reg! {
> +        NV_FUSE_STATUS_OPT_DISPLAY @ 0x00021c04 {
> +            0:0     display_disabled => bool;
> +        }
> +    }
>  }
>  
>  pub(crate) mod ga100 {
>      // FUSE
>  
> -    register!(NV_FUSE_STATUS_OPT_DISPLAY @ 0x00820c04 {
> -        0:0     display_disabled as bool;
> -    });
> +    nv_reg! {
> +        NV_FUSE_STATUS_OPT_DISPLAY @ 0x00820c04 {
> +            0:0     display_disabled => bool;
> +        }
> +    }
>  }


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2026-03-19  2:18 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-18  8:05 [PATCH 0/8] gpu: nova-core: convert registers to use the kernel register macro Alexandre Courbot
2026-03-18  8:05 ` Alexandre Courbot
2026-03-18  8:05 ` [PATCH 1/8] gpu: nova-core: convert PMC registers to " Alexandre Courbot
2026-03-18  8:05   ` Alexandre Courbot
2026-03-18 13:28   ` Gary Guo
2026-03-18 13:28     ` Gary Guo
2026-03-19 14:39     ` Alexandre Courbot
2026-03-19 14:39       ` Alexandre Courbot
2026-03-19  1:42   ` Eliot Courtney
2026-03-19  1:42     ` Eliot Courtney
2026-03-19  2:07     ` Alexandre Courbot
2026-03-19  2:07       ` Alexandre Courbot
2026-03-19  2:16       ` Eliot Courtney
2026-03-19  2:16         ` Eliot Courtney
2026-03-19 14:18         ` Alexandre Courbot
2026-03-19 14:18           ` Alexandre Courbot
2026-03-18  8:06 ` [PATCH 2/8] gpu: nova-core: convert PBUS " Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  1:43   ` Eliot Courtney
2026-03-19  1:43     ` Eliot Courtney
2026-03-18  8:06 ` [PATCH 3/8] gpu: nova-core: convert PFB " Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  1:51   ` Eliot Courtney
2026-03-19  1:51     ` Eliot Courtney
2026-03-18  8:06 ` [PATCH 4/8] gpu: nova-core: convert GC6 " Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  2:07   ` Eliot Courtney
2026-03-19  2:07     ` Eliot Courtney
2026-03-19 14:19     ` Alexandre Courbot
2026-03-19 14:19       ` Alexandre Courbot
2026-03-18  8:06 ` [PATCH 5/8] gpu: nova-core: convert FUSE " Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  2:17   ` Eliot Courtney [this message]
2026-03-19  2:17     ` Eliot Courtney
2026-03-19 14:24     ` Alexandre Courbot
2026-03-19 14:24       ` Alexandre Courbot
2026-03-18  8:06 ` [PATCH 6/8] gpu: nova-core: convert PDISP " Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  2:18   ` Eliot Courtney
2026-03-19  2:18     ` Eliot Courtney
2026-03-18  8:06 ` [PATCH 7/8] gpu: nova-core: convert falcon " Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  5:35   ` Eliot Courtney
2026-03-19  5:35     ` Eliot Courtney
2026-03-19 14:34     ` Alexandre Courbot
2026-03-19 14:34       ` Alexandre Courbot
2026-03-18  8:06 ` [PATCH 8/8] Documentation: nova: remove register abstraction task Alexandre Courbot
2026-03-18  8:06   ` Alexandre Courbot
2026-03-19  2:20   ` Eliot Courtney
2026-03-19  2:20     ` Eliot Courtney

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=DH6ECIKZRESY.D4VBM1STGPH@nvidia.com \
    --to=ecourtney@nvidia.com \
    --cc=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=airlied@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=apopple@nvidia.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gary@garyguo.net \
    --cc=jhubbard@nvidia.com \
    --cc=joelagnelf@nvidia.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=lossin@kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tmgross@umich.edu \
    --cc=ttabi@nvidia.com \
    --cc=tzimmermann@suse.de \
    --cc=zhiw@nvidia.com \
    /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.