intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 09/65] drm/i915: pass dev_priv explicitly to BCLRPAT
Date: Thu, 6 Jun 2024 11:36:56 -0400	[thread overview]
Message-ID: <ZmHXmHguwHe7BK0r@intel.com> (raw)
In-Reply-To: <f04d0313032d5820a14cc504af390b4b1006fae6.1717514638.git.jani.nikula@intel.com>

On Tue, Jun 04, 2024 at 06:25:27PM +0300, Jani Nikula wrote:
> Avoid the implicit dev_priv local variable use, and pass dev_priv
> explicitly to the BCLRPAT register macro.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_crt.c     | 10 ++++++----
>  drivers/gpu/drm/i915/display/intel_display.c |  2 +-
>  drivers/gpu/drm/i915/i915_reg.h              |  2 +-
>  drivers/gpu/drm/i915/intel_gvt_mmio_table.c  |  8 ++++----
>  4 files changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c b/drivers/gpu/drm/i915/display/intel_crt.c
> index 15569cf96c9c..2660c4a53e6f 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -193,7 +193,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder,
>  		adpa |= ADPA_PIPE_SEL(crtc->pipe);
>  
>  	if (!HAS_PCH_SPLIT(dev_priv))
> -		intel_de_write(dev_priv, BCLRPAT(crtc->pipe), 0);
> +		intel_de_write(dev_priv, BCLRPAT(dev_priv, crtc->pipe), 0);
>  
>  	switch (mode) {
>  	case DRM_MODE_DPMS_ON:
> @@ -707,7 +707,8 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  
>  	drm_dbg_kms(&dev_priv->drm, "starting load-detect on CRT\n");
>  
> -	save_bclrpat = intel_de_read(dev_priv, BCLRPAT(cpu_transcoder));
> +	save_bclrpat = intel_de_read(dev_priv,
> +				     BCLRPAT(dev_priv, cpu_transcoder));
>  	save_vtotal = intel_de_read(dev_priv,
>  				    TRANS_VTOTAL(dev_priv, cpu_transcoder));
>  	vblank = intel_de_read(dev_priv,
> @@ -720,7 +721,7 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  	vblank_end = REG_FIELD_GET(VBLANK_END_MASK, vblank) + 1;
>  
>  	/* Set the border color to purple. */
> -	intel_de_write(dev_priv, BCLRPAT(cpu_transcoder), 0x500050);
> +	intel_de_write(dev_priv, BCLRPAT(dev_priv, cpu_transcoder), 0x500050);
>  
>  	if (DISPLAY_VER(dev_priv) != 2) {
>  		u32 transconf = intel_de_read(dev_priv, TRANSCONF(cpu_transcoder));
> @@ -800,7 +801,8 @@ intel_crt_load_detect(struct intel_crt *crt, enum pipe pipe)
>  	}
>  
>  	/* Restore previous settings */
> -	intel_de_write(dev_priv, BCLRPAT(cpu_transcoder), save_bclrpat);
> +	intel_de_write(dev_priv, BCLRPAT(dev_priv, cpu_transcoder),
> +		       save_bclrpat);
>  
>  	return status;
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 776e4450e4af..49f7ac0f7997 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1870,7 +1870,7 @@ static void i9xx_pfit_enable(const struct intel_crtc_state *crtc_state)
>  
>  	/* Border color in case we don't scale up to the full screen. Black by
>  	 * default, change to something else for debugging. */
> -	intel_de_write(dev_priv, BCLRPAT(crtc->pipe), 0);
> +	intel_de_write(dev_priv, BCLRPAT(dev_priv, crtc->pipe), 0);
>  }
>  
>  /* Prefer intel_encoder_is_combo() */
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index c47aae3f70cd..92d9e8cdf782 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -1223,7 +1223,7 @@
>  #define TRANS_VTOTAL(dev_priv, trans)	_MMIO_TRANS2(dev_priv, (trans), _TRANS_VTOTAL_A)
>  #define TRANS_VBLANK(dev_priv, trans)	_MMIO_TRANS2(dev_priv, (trans), _TRANS_VBLANK_A)
>  #define TRANS_VSYNC(dev_priv, trans)	_MMIO_TRANS2(dev_priv, (trans), _TRANS_VSYNC_A)
> -#define BCLRPAT(trans)		_MMIO_TRANS2(dev_priv, (trans), _BCLRPAT_A)
> +#define BCLRPAT(dev_priv, trans)		_MMIO_TRANS2(dev_priv, (trans), _BCLRPAT_A)
>  #define TRANS_VSYNCSHIFT(trans)	_MMIO_TRANS2(dev_priv, (trans), _TRANS_VSYNCSHIFT_A)
>  #define PIPESRC(pipe)		_MMIO_TRANS2(dev_priv, (pipe), _PIPEASRC)
>  #define TRANS_MULT(trans)	_MMIO_TRANS2(dev_priv, (trans), _TRANS_MULT_A)
> diff --git a/drivers/gpu/drm/i915/intel_gvt_mmio_table.c b/drivers/gpu/drm/i915/intel_gvt_mmio_table.c
> index e618a16eafac..5e1ef52922cc 100644
> --- a/drivers/gpu/drm/i915/intel_gvt_mmio_table.c
> +++ b/drivers/gpu/drm/i915/intel_gvt_mmio_table.c
> @@ -237,7 +237,7 @@ static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
>  	MMIO_D(TRANS_VTOTAL(dev_priv, TRANSCODER_A));
>  	MMIO_D(TRANS_VBLANK(dev_priv, TRANSCODER_A));
>  	MMIO_D(TRANS_VSYNC(dev_priv, TRANSCODER_A));
> -	MMIO_D(BCLRPAT(TRANSCODER_A));
> +	MMIO_D(BCLRPAT(dev_priv, TRANSCODER_A));
>  	MMIO_D(TRANS_VSYNCSHIFT(TRANSCODER_A));
>  	MMIO_D(PIPESRC(TRANSCODER_A));
>  	MMIO_D(TRANS_HTOTAL(dev_priv, TRANSCODER_B));
> @@ -246,7 +246,7 @@ static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
>  	MMIO_D(TRANS_VTOTAL(dev_priv, TRANSCODER_B));
>  	MMIO_D(TRANS_VBLANK(dev_priv, TRANSCODER_B));
>  	MMIO_D(TRANS_VSYNC(dev_priv, TRANSCODER_B));
> -	MMIO_D(BCLRPAT(TRANSCODER_B));
> +	MMIO_D(BCLRPAT(dev_priv, TRANSCODER_B));
>  	MMIO_D(TRANS_VSYNCSHIFT(TRANSCODER_B));
>  	MMIO_D(PIPESRC(TRANSCODER_B));
>  	MMIO_D(TRANS_HTOTAL(dev_priv, TRANSCODER_C));
> @@ -255,7 +255,7 @@ static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
>  	MMIO_D(TRANS_VTOTAL(dev_priv, TRANSCODER_C));
>  	MMIO_D(TRANS_VBLANK(dev_priv, TRANSCODER_C));
>  	MMIO_D(TRANS_VSYNC(dev_priv, TRANSCODER_C));
> -	MMIO_D(BCLRPAT(TRANSCODER_C));
> +	MMIO_D(BCLRPAT(dev_priv, TRANSCODER_C));
>  	MMIO_D(TRANS_VSYNCSHIFT(TRANSCODER_C));
>  	MMIO_D(PIPESRC(TRANSCODER_C));
>  	MMIO_D(TRANS_HTOTAL(dev_priv, TRANSCODER_EDP));
> @@ -264,7 +264,7 @@ static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
>  	MMIO_D(TRANS_VTOTAL(dev_priv, TRANSCODER_EDP));
>  	MMIO_D(TRANS_VBLANK(dev_priv, TRANSCODER_EDP));
>  	MMIO_D(TRANS_VSYNC(dev_priv, TRANSCODER_EDP));
> -	MMIO_D(BCLRPAT(TRANSCODER_EDP));
> +	MMIO_D(BCLRPAT(dev_priv, TRANSCODER_EDP));
>  	MMIO_D(TRANS_VSYNCSHIFT(TRANSCODER_EDP));
>  	MMIO_D(PIPE_DATA_M1(TRANSCODER_A));
>  	MMIO_D(PIPE_DATA_N1(TRANSCODER_A));
> -- 
> 2.39.2
> 

  reply	other threads:[~2024-06-06 15:37 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-04 15:25 [PATCH 00/65] drm/i915: finish the job of removing implicit dev_priv Jani Nikula
2024-06-04 15:25 ` [PATCH 01/65] drm/i915: pass dev_priv explicitly to DPLL Jani Nikula
2024-06-06 14:38   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 02/65] drm/i915: pass dev_priv explicitly to DPLL_MD Jani Nikula
2024-06-06 14:39   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 03/65] drm/i915: pass dev_priv explicitly to TRANS_HTOTAL Jani Nikula
2024-06-06 14:40   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 04/65] drm/i915: pass dev_priv explicitly to TRANS_HBLANK Jani Nikula
2024-06-06 14:40   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 05/65] drm/i915: pass dev_priv explicitly to TRANS_HSYNC Jani Nikula
2024-06-06 14:41   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 06/65] drm/i915: pass dev_priv explicitly to TRANS_VTOTAL Jani Nikula
2024-06-06 15:36   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 07/65] drm/i915: pass dev_priv explicitly to TRANS_VBLANK Jani Nikula
2024-06-06 15:36   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 08/65] drm/i915: pass dev_priv explicitly to TRANS_VSYNC Jani Nikula
2024-06-06 15:37   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 09/65] drm/i915: pass dev_priv explicitly to BCLRPAT Jani Nikula
2024-06-06 15:36   ` Rodrigo Vivi [this message]
2024-06-04 15:25 ` [PATCH 10/65] drm/i915: pass dev_priv explicitly to TRANS_VSYNCSHIFT Jani Nikula
2024-06-06 15:38   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 11/65] drm/i915: pass dev_priv explicitly to PIPESRC Jani Nikula
2024-06-06 15:37   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 12/65] drm/i915: pass dev_priv explicitly to TRANS_MULT Jani Nikula
2024-06-06 15:38   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 13/65] drm/i915: pass dev_priv explicitly to PORT_HOTPLUG_EN Jani Nikula
2024-06-06 15:39   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 14/65] drm/i915: pass dev_priv explicitly to PORT_HOTPLUG_STAT Jani Nikula
2024-06-06 15:40   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 15/65] drm/i915: pass dev_priv explicitly to PFIT_CONTROL Jani Nikula
2024-06-06 15:40   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 16/65] drm/i915: pass dev_priv explicitly to PFIT_PGM_RATIOS Jani Nikula
2024-06-06 15:41   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 17/65] drm/i915: pass dev_priv explicitly to PFIT_AUTO_RATIOS Jani Nikula
2024-06-06 15:40   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 18/65] drm/i915: pass dev_priv explicitly to TRANSCONF Jani Nikula
2024-06-06 15:42   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 19/65] drm/i915: pass dev_priv explicitly to PIPEDSL Jani Nikula
2024-06-06 15:42   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 20/65] drm/i915: pass dev_priv explicitly to PIPEFRAME Jani Nikula
2024-06-06 15:43   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 21/65] drm/i915: pass dev_priv explicitly to PIPEFRAMEPIXEL Jani Nikula
2024-06-06 15:43   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 22/65] drm/i915: pass dev_priv explicitly to PIPESTAT Jani Nikula
2024-06-06 15:44   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 23/65] drm/i915: pass dev_priv explicitly to PIPE_ARB_CTL Jani Nikula
2024-06-06 15:44   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 24/65] drm/i915: pass dev_priv explicitly to ICL_PIPESTATUS Jani Nikula
2024-06-06 15:44   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 25/65] drm/i915: pass dev_priv explicitly to DSPARB Jani Nikula
2024-06-06 15:47   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 26/65] drm/i915: pass dev_priv explicitly to DSPFW1 Jani Nikula
2024-06-06 15:48   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 27/65] drm/i915: pass dev_priv explicitly to DSPFW2 Jani Nikula
2024-06-06 15:48   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 28/65] drm/i915: pass dev_priv explicitly to DSPFW3 Jani Nikula
2024-06-06 15:49   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 29/65] drm/i915: pass dev_priv explicitly to PIPE_FRMCOUNT_G4X Jani Nikula
2024-06-06 16:01   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 30/65] drm/i915: pass dev_priv explicitly to PIPE_FLIPCOUNT_G4X Jani Nikula
2024-06-06 16:01   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 31/65] drm/i915: pass dev_priv explicitly to CHV_BLEND Jani Nikula
2024-06-06 16:01   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 32/65] drm/i915: pass dev_priv explicitly to CHV_CANVAS Jani Nikula
2024-06-06 16:02   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 33/65] drm/i915: pass dev_priv explicitly to SWF0 Jani Nikula
2024-06-06 16:03   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 34/65] drm/i915: pass dev_priv explicitly to SWF1 Jani Nikula
2024-06-06 16:03   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 35/65] drm/i915: pass dev_priv explicitly to SWF3 Jani Nikula
2024-06-06 16:03   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 36/65] drm/i915: pass dev_priv explicitly to _PIPEBDSL Jani Nikula
2024-06-06 16:04   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 37/65] drm/i915: pass dev_priv explicitly to _TRANSBCONF Jani Nikula
2024-06-06 16:05   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 38/65] drm/i915: pass dev_priv explicitly to _PIPEBSTAT Jani Nikula
2024-06-06 16:05   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 39/65] drm/i915: pass dev_priv explicitly to _PIPEB_FRMCOUNT_G4X Jani Nikula
2024-06-06 16:05   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 40/65] drm/i915: pass dev_priv explicitly to _PIPEB_FLIPCOUNT_G4X Jani Nikula
2024-06-06 16:07   ` Rodrigo Vivi
2024-06-04 15:25 ` [PATCH 41/65] drm/i915: pass dev_priv explicitly to _DSPBCNTR Jani Nikula
2024-06-06 16:07   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 42/65] drm/i915: pass dev_priv explicitly to _DSPBADDR Jani Nikula
2024-06-06 16:08   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 43/65] drm/i915: pass dev_priv explicitly to _DSPBSTRIDE Jani Nikula
2024-06-06 16:08   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 44/65] drm/i915: pass dev_priv explicitly to _DSPBPOS Jani Nikula
2024-06-06 16:08   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 45/65] drm/i915: pass dev_priv explicitly to _DSPBSIZE Jani Nikula
2024-06-06 16:09   ` Rodrigo Vivi
2024-06-07 10:46     ` Jani Nikula
2024-06-07 10:48       ` Jani Nikula
2024-06-04 15:26 ` [PATCH 46/65] drm/i915: pass dev_priv explicitly to _DSPBSURF Jani Nikula
2024-06-06 16:10   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 47/65] drm/i915: pass dev_priv explicitly to _DSPBTILEOFF Jani Nikula
2024-06-06 16:10   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 48/65] drm/i915: pass dev_priv explicitly to _DSPBOFFSET Jani Nikula
2024-06-06 16:10   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 49/65] drm/i915: pass dev_priv explicitly to _DSPBSURFLIVE Jani Nikula
2024-06-06 16:10   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 50/65] drm/i915: pass dev_priv explicitly to PIPE_DATA_M1 Jani Nikula
2024-06-06 16:11   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 51/65] drm/i915: pass dev_priv explicitly to PIPE_DATA_N1 Jani Nikula
2024-06-06 16:12   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 52/65] drm/i915: pass dev_priv explicitly to PIPE_DATA_M2 Jani Nikula
2024-06-06 16:12   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 53/65] drm/i915: pass dev_priv explicitly to PIPE_DATA_N2 Jani Nikula
2024-06-06 16:12   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 54/65] drm/i915: pass dev_priv explicitly to PIPE_LINK_M1 Jani Nikula
2024-06-06 16:13   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 55/65] drm/i915: pass dev_priv explicitly to PIPE_LINK_N1 Jani Nikula
2024-06-06 16:13   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 56/65] drm/i915: pass dev_priv explicitly to PIPE_LINK_M2 Jani Nikula
2024-06-06 16:15   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 57/65] drm/i915: pass dev_priv explicitly to PIPE_LINK_N2 Jani Nikula
2024-06-06 16:14   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 58/65] drm/i915: pass dev_priv explicitly to HSW_STEREO_3D_CTL Jani Nikula
2024-06-06 16:17   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 59/65] drm/i915: pass dev_priv explicitly to TRANS_DDI_FUNC_CTL Jani Nikula
2024-06-06 16:13   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 60/65] drm/i915: pass dev_priv explicitly to TRANS_DDI_FUNC_CTL2 Jani Nikula
2024-06-06 16:18   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 61/65] drm/i915: pass dev_priv explicitly to TGL_DP_TP_CTL Jani Nikula
2024-06-06 16:14   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 62/65] drm/i915: pass dev_priv explicitly to TGL_DP_TP_STATUS Jani Nikula
2024-06-06 16:15   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 63/65] drm/i915: pass dev_priv explicitly to TRANS_MSA_MISC Jani Nikula
2024-06-06 16:15   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 64/65] drm/i915: pass dev_priv explicitly to TRANS_SET_CONTEXT_LATENCY Jani Nikula
2024-06-06 16:18   ` Rodrigo Vivi
2024-06-04 15:26 ` [PATCH 65/65] drm/i915: pass dev_priv explicitly to MTL_CLKGATE_DIS_TRANS Jani Nikula
2024-06-06 16:19   ` Rodrigo Vivi
2024-06-04 18:13 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: finish the job of removing implicit dev_priv Patchwork
2024-06-04 18:20 ` ✓ Fi.CI.BAT: success " Patchwork
2024-06-04 22:01 ` ✗ Fi.CI.IGT: failure " Patchwork

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=ZmHXmHguwHe7BK0r@intel.com \
    --to=rodrigo.vivi@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).