All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: Re: [RFC v2 06/20] drm/nouveau/kms: Search for encoders' connectors properly
Date: Fri, 21 Aug 2020 15:10:49 +0300	[thread overview]
Message-ID: <20200821121049.GR1793@kadam> (raw)
In-Reply-To: <20200820183012.288794-7-lyude@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 5356 bytes --]

Hi Lyude,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on drm-tip/drm-tip]
[also build test WARNING on tegra-drm/drm/tegra/for-next linus/master drm-exynos/exynos-drm-next v5.9-rc1 next-20200820]
[cannot apply to drm-intel/for-linux-next drm/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Lyude-Paul/drm-dp-i915-nouveau-Cleanup-nouveau-HPD-and-add-DP-features-from-i915/20200821-023327
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: i386-randconfig-m021-20200820 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/gpu/drm/nouveau/dispnv50/disp.c:608 nv50_audio_component_get_eld() error: uninitialized symbol 'nv_connector'.

# https://github.com/0day-ci/linux/commit/5c362c0faa9cf06f71364cff9168034cc04bb05c
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Lyude-Paul/drm-dp-i915-nouveau-Cleanup-nouveau-HPD-and-add-DP-features-from-i915/20200821-023327
git checkout 5c362c0faa9cf06f71364cff9168034cc04bb05c
vim +/nv_connector +608 drivers/gpu/drm/nouveau/dispnv50/disp.c

742db30c4ee6cd Takashi Iwai 2020-01-13  581  static int
61a41097e4bd4b Takashi Iwai 2020-04-16  582  nv50_audio_component_get_eld(struct device *kdev, int port, int dev_id,
742db30c4ee6cd Takashi Iwai 2020-01-13  583  			     bool *enabled, unsigned char *buf, int max_bytes)
742db30c4ee6cd Takashi Iwai 2020-01-13  584  {
742db30c4ee6cd Takashi Iwai 2020-01-13  585  	struct drm_device *drm_dev = dev_get_drvdata(kdev);
742db30c4ee6cd Takashi Iwai 2020-01-13  586  	struct nouveau_drm *drm = nouveau_drm(drm_dev);
742db30c4ee6cd Takashi Iwai 2020-01-13  587  	struct drm_encoder *encoder;
742db30c4ee6cd Takashi Iwai 2020-01-13  588  	struct nouveau_encoder *nv_encoder;
5c362c0faa9cf0 Lyude Paul   2020-08-20  589  	struct drm_connector *connector;
742db30c4ee6cd Takashi Iwai 2020-01-13  590  	struct nouveau_connector *nv_connector;
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

742db30c4ee6cd Takashi Iwai 2020-01-13  591  	struct nouveau_crtc *nv_crtc;
5c362c0faa9cf0 Lyude Paul   2020-08-20  592  	struct drm_connector_list_iter conn_iter;
742db30c4ee6cd Takashi Iwai 2020-01-13  593  	int ret = 0;
742db30c4ee6cd Takashi Iwai 2020-01-13  594  
742db30c4ee6cd Takashi Iwai 2020-01-13  595  	*enabled = false;
5c362c0faa9cf0 Lyude Paul   2020-08-20  596  
742db30c4ee6cd Takashi Iwai 2020-01-13  597  	drm_for_each_encoder(encoder, drm->dev) {
742db30c4ee6cd Takashi Iwai 2020-01-13  598  		nv_encoder = nouveau_encoder(encoder);
5c362c0faa9cf0 Lyude Paul   2020-08-20  599  
5c362c0faa9cf0 Lyude Paul   2020-08-20  600  		drm_connector_list_iter_begin(drm_dev, &conn_iter);
5c362c0faa9cf0 Lyude Paul   2020-08-20  601  		drm_for_each_connector_iter(connector, &conn_iter) {
5c362c0faa9cf0 Lyude Paul   2020-08-20  602  			if (connector->state->best_encoder == encoder) {
5c362c0faa9cf0 Lyude Paul   2020-08-20  603  				nv_connector = nouveau_connector(connector);
                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The nouveau_connector() function is a wrapper around container_of() so
it can't be NULL.

5c362c0faa9cf0 Lyude Paul   2020-08-20  604  				break;
5c362c0faa9cf0 Lyude Paul   2020-08-20  605  			}
5c362c0faa9cf0 Lyude Paul   2020-08-20  606  		}
5c362c0faa9cf0 Lyude Paul   2020-08-20  607  		drm_connector_list_iter_end(&conn_iter);
5c362c0faa9cf0 Lyude Paul   2020-08-20 @608  		if (!nv_connector)
                                                            ^^^^^^^^^^^^^
Uninitialized.


5c362c0faa9cf0 Lyude Paul   2020-08-20  609  			continue;
5c362c0faa9cf0 Lyude Paul   2020-08-20  610  
742db30c4ee6cd Takashi Iwai 2020-01-13  611  		nv_crtc = nouveau_crtc(encoder->crtc);
5c362c0faa9cf0 Lyude Paul   2020-08-20  612  		if (!nv_crtc || nv_encoder->or != port ||
61a41097e4bd4b Takashi Iwai 2020-04-16  613  		    nv_crtc->index != dev_id)
742db30c4ee6cd Takashi Iwai 2020-01-13  614  			continue;
0ad679d157aa69 Ben Skeggs   2020-05-29  615  		*enabled = nv_encoder->audio;
742db30c4ee6cd Takashi Iwai 2020-01-13  616  		if (*enabled) {
742db30c4ee6cd Takashi Iwai 2020-01-13  617  			ret = drm_eld_size(nv_connector->base.eld);
742db30c4ee6cd Takashi Iwai 2020-01-13  618  			memcpy(buf, nv_connector->base.eld,
742db30c4ee6cd Takashi Iwai 2020-01-13  619  			       min(max_bytes, ret));
742db30c4ee6cd Takashi Iwai 2020-01-13  620  		}
742db30c4ee6cd Takashi Iwai 2020-01-13  621  		break;
742db30c4ee6cd Takashi Iwai 2020-01-13  622  	}
5c362c0faa9cf0 Lyude Paul   2020-08-20  623  
742db30c4ee6cd Takashi Iwai 2020-01-13  624  	return ret;
742db30c4ee6cd Takashi Iwai 2020-01-13  625  }
742db30c4ee6cd Takashi Iwai 2020-01-13  626  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39208 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: Re: [RFC v2 06/20] drm/nouveau/kms: Search for encoders' connectors properly
Date: Fri, 21 Aug 2020 15:10:49 +0300	[thread overview]
Message-ID: <20200821121049.GR1793@kadam> (raw)
In-Reply-To: <20200820183012.288794-7-lyude@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 5356 bytes --]

Hi Lyude,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on drm-tip/drm-tip]
[also build test WARNING on tegra-drm/drm/tegra/for-next linus/master drm-exynos/exynos-drm-next v5.9-rc1 next-20200820]
[cannot apply to drm-intel/for-linux-next drm/drm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Lyude-Paul/drm-dp-i915-nouveau-Cleanup-nouveau-HPD-and-add-DP-features-from-i915/20200821-023327
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: i386-randconfig-m021-20200820 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/gpu/drm/nouveau/dispnv50/disp.c:608 nv50_audio_component_get_eld() error: uninitialized symbol 'nv_connector'.

# https://github.com/0day-ci/linux/commit/5c362c0faa9cf06f71364cff9168034cc04bb05c
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Lyude-Paul/drm-dp-i915-nouveau-Cleanup-nouveau-HPD-and-add-DP-features-from-i915/20200821-023327
git checkout 5c362c0faa9cf06f71364cff9168034cc04bb05c
vim +/nv_connector +608 drivers/gpu/drm/nouveau/dispnv50/disp.c

742db30c4ee6cd Takashi Iwai 2020-01-13  581  static int
61a41097e4bd4b Takashi Iwai 2020-04-16  582  nv50_audio_component_get_eld(struct device *kdev, int port, int dev_id,
742db30c4ee6cd Takashi Iwai 2020-01-13  583  			     bool *enabled, unsigned char *buf, int max_bytes)
742db30c4ee6cd Takashi Iwai 2020-01-13  584  {
742db30c4ee6cd Takashi Iwai 2020-01-13  585  	struct drm_device *drm_dev = dev_get_drvdata(kdev);
742db30c4ee6cd Takashi Iwai 2020-01-13  586  	struct nouveau_drm *drm = nouveau_drm(drm_dev);
742db30c4ee6cd Takashi Iwai 2020-01-13  587  	struct drm_encoder *encoder;
742db30c4ee6cd Takashi Iwai 2020-01-13  588  	struct nouveau_encoder *nv_encoder;
5c362c0faa9cf0 Lyude Paul   2020-08-20  589  	struct drm_connector *connector;
742db30c4ee6cd Takashi Iwai 2020-01-13  590  	struct nouveau_connector *nv_connector;
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

742db30c4ee6cd Takashi Iwai 2020-01-13  591  	struct nouveau_crtc *nv_crtc;
5c362c0faa9cf0 Lyude Paul   2020-08-20  592  	struct drm_connector_list_iter conn_iter;
742db30c4ee6cd Takashi Iwai 2020-01-13  593  	int ret = 0;
742db30c4ee6cd Takashi Iwai 2020-01-13  594  
742db30c4ee6cd Takashi Iwai 2020-01-13  595  	*enabled = false;
5c362c0faa9cf0 Lyude Paul   2020-08-20  596  
742db30c4ee6cd Takashi Iwai 2020-01-13  597  	drm_for_each_encoder(encoder, drm->dev) {
742db30c4ee6cd Takashi Iwai 2020-01-13  598  		nv_encoder = nouveau_encoder(encoder);
5c362c0faa9cf0 Lyude Paul   2020-08-20  599  
5c362c0faa9cf0 Lyude Paul   2020-08-20  600  		drm_connector_list_iter_begin(drm_dev, &conn_iter);
5c362c0faa9cf0 Lyude Paul   2020-08-20  601  		drm_for_each_connector_iter(connector, &conn_iter) {
5c362c0faa9cf0 Lyude Paul   2020-08-20  602  			if (connector->state->best_encoder == encoder) {
5c362c0faa9cf0 Lyude Paul   2020-08-20  603  				nv_connector = nouveau_connector(connector);
                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The nouveau_connector() function is a wrapper around container_of() so
it can't be NULL.

5c362c0faa9cf0 Lyude Paul   2020-08-20  604  				break;
5c362c0faa9cf0 Lyude Paul   2020-08-20  605  			}
5c362c0faa9cf0 Lyude Paul   2020-08-20  606  		}
5c362c0faa9cf0 Lyude Paul   2020-08-20  607  		drm_connector_list_iter_end(&conn_iter);
5c362c0faa9cf0 Lyude Paul   2020-08-20 @608  		if (!nv_connector)
                                                            ^^^^^^^^^^^^^
Uninitialized.


5c362c0faa9cf0 Lyude Paul   2020-08-20  609  			continue;
5c362c0faa9cf0 Lyude Paul   2020-08-20  610  
742db30c4ee6cd Takashi Iwai 2020-01-13  611  		nv_crtc = nouveau_crtc(encoder->crtc);
5c362c0faa9cf0 Lyude Paul   2020-08-20  612  		if (!nv_crtc || nv_encoder->or != port ||
61a41097e4bd4b Takashi Iwai 2020-04-16  613  		    nv_crtc->index != dev_id)
742db30c4ee6cd Takashi Iwai 2020-01-13  614  			continue;
0ad679d157aa69 Ben Skeggs   2020-05-29  615  		*enabled = nv_encoder->audio;
742db30c4ee6cd Takashi Iwai 2020-01-13  616  		if (*enabled) {
742db30c4ee6cd Takashi Iwai 2020-01-13  617  			ret = drm_eld_size(nv_connector->base.eld);
742db30c4ee6cd Takashi Iwai 2020-01-13  618  			memcpy(buf, nv_connector->base.eld,
742db30c4ee6cd Takashi Iwai 2020-01-13  619  			       min(max_bytes, ret));
742db30c4ee6cd Takashi Iwai 2020-01-13  620  		}
742db30c4ee6cd Takashi Iwai 2020-01-13  621  		break;
742db30c4ee6cd Takashi Iwai 2020-01-13  622  	}
5c362c0faa9cf0 Lyude Paul   2020-08-20  623  
742db30c4ee6cd Takashi Iwai 2020-01-13  624  	return ret;
742db30c4ee6cd Takashi Iwai 2020-01-13  625  }
742db30c4ee6cd Takashi Iwai 2020-01-13  626  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39208 bytes --]

  reply	other threads:[~2020-08-21 12:10 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-20 18:29 [Intel-gfx] [RFC v2 00/20] drm/dp, i915, nouveau: Cleanup nouveau HPD and add DP features from i915 Lyude Paul
2020-08-20 18:29 ` Lyude Paul
2020-08-20 18:29 ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 01/20] drm/nouveau/kms: Fix some indenting in nouveau_dp_detect() Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 02/20] drm/nouveau/kms/nv50-: Remove open-coded drm_dp_read_desc() Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 03/20] drm/nouveau/kms/nv50-: Just use drm_dp_dpcd_read() in nouveau_dp.c Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 04/20] drm/nouveau/kms/nv50-: Use macros for DP registers " Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 05/20] drm/nouveau/kms: Don't clear DP_MST_CTRL DPCD in nv50_mstm_new() Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 06/20] drm/nouveau/kms: Search for encoders' connectors properly Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-21 12:10   ` Dan Carpenter [this message]
2020-08-21 12:10     ` Dan Carpenter
2020-08-21 17:48   ` [Intel-gfx] [RFC v3] " Lyude Paul
2020-08-21 17:48     ` Lyude Paul
2020-08-21 17:48     ` Lyude Paul
2020-08-21 17:48     ` Lyude Paul
2020-08-20 18:29 ` [Intel-gfx] [RFC v2 07/20] drm/nouveau/kms/nv50-: Use drm_dp_dpcd_(readb|writeb)() in nv50_sor_disable() Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:29   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 08/20] drm/nouveau/kms/nv50-: Refactor and cleanup DP HPD handling Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-24 11:14   ` [Intel-gfx] " Dan Carpenter
2020-08-24 11:14     ` Dan Carpenter
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 09/20] drm/i915/dp: Extract drm_dp_has_mst() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 10/20] drm/nouveau/kms: Use new drm_dp_has_mst() helper for checking MST caps Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 11/20] drm/nouveau/kms: Move drm_dp_cec_unset_edid() into nouveau_connector_detect() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 12/20] drm/nouveau/kms: Only use hpd_work for reprobing in HPD paths Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 13/20] drm/i915/dp: Extract drm_dp_downstream_read_info() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-21 19:27   ` [Intel-gfx] " Sean Paul
2020-08-21 19:27     ` Sean Paul
2020-08-21 19:27     ` Sean Paul
2020-08-21 19:27     ` Sean Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 14/20] drm/nouveau/kms/nv50-: Use downstream DP clock limits for mode validation Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 15/20] drm/i915/dp: Extract drm_dp_has_sink_count() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 16/20] drm/i915/dp: Extract drm_dp_get_sink_count() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 17/20] drm/nouveau/kms/nv50-: Add support for DP_SINK_COUNT Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 18/20] drm/nouveau/kms: Don't change EDID when it hasn't actually changed Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 19/20] drm/i915/dp: Extract drm_dp_read_dpcd_caps() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30 ` [Intel-gfx] [RFC v2 20/20] drm/nouveau/kms: Start using drm_dp_read_dpcd_caps() Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 18:30   ` Lyude Paul
2020-08-20 19:11 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/dp, i915, nouveau: Cleanup nouveau HPD and add DP features from i915 (rev4) Patchwork
2020-08-20 19:12 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2020-08-20 19:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-08-21  5:16 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-08-21 17:57 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/dp, i915, nouveau: Cleanup nouveau HPD and add DP features from i915 (rev5) Patchwork
2020-08-21 17:58 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2020-08-21 18:13 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-08-21 20:38 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2020-08-21  8:09 [RFC v2 06/20] drm/nouveau/kms: Search for encoders' connectors properly kernel test robot

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=20200821121049.GR1793@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild@lists.01.org \
    /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.