kernel-testers.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Roland Dreier <rdreier-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
To: "Brandeburg,
	Jesse" <jesse.brandeburg-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "Rafael J. Wysocki" <rjw-KKrjLPT3xs0@public.gmane.org>,
	Eric Anholt <eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org>,
	Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Kernel Testers List
	<kernel-testers-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"drivers_video-dri@kernel-bugs.osdl.org"
	<drivers_video-dri-ztI5WcYan/vQLgFONoPN62D2FQJk+8+b@public.gmane.org>,
	Jesse Barnes <jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org>,
	intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org
Subject: Re: [Bug #12491] i915 lockdep warning
Date: Fri, 06 Feb 2009 17:48:09 -0800	[thread overview]
Message-ID: <adabptfc90m.fsf@cisco.com> (raw)
In-Reply-To: <F169D4F5E1F1974DBFAFABF47F60C10A1DFD867C-osO9UTpF0URzLByeVOV5+bfspsVTdybXVpNB7YpNyf8@public.gmane.org> (Jesse Brandeburg's message of "Fri, 6 Feb 2009 17:20:27 -0800")

[intel-gfx CC added]

 > I tested this on my 965 based system that showed the issue and it seemed resolved, at least no warnings in dmesg.  Lockdep was confirmed to still be enabled.

 > I can mark the bug fixed in korg bugzilla too.

Probably we just want to add a comment saying the patch works -- the bug
should stay open until we get the fix upstream I guess.

 > Thank you Roland for looking into this, good work!

Thanks for testing!  Patch with updated changelog (including your
tested-by) below.  Jesse [Barnes] and/or Eric please review and apply:

---

i915: Fix potential AB-BA deadlock in i915_gem_execbuffer()

Lockdep warns that i915_gem_execbuffer() can trigger a page fault (which
takes mmap_sem) while holding dev->struct_mutex, while drm_vm_open()
(which is called with mmap_sem already held) takes dev->struct_mutex.
So this is a potential AB-BA deadlock.

The way that i915_gem_execbuffer() triggers a page fault is by doing
copy_to_user() when returning new buffer offsets back to userspace;
however there is no reason to hold the struct_mutex when doing this
copy, since what is being copied is the contents of an array private to
i915_gem_execbuffer() anyway.  So we can fix the potential deadlock (and
get rid of the lockdep warning) by simply moving the copy_to_user()
outside of where struct_mutex is held.

This fixes <http://bugzilla.kernel.org/show_bug.cgi?id=12491>.

Reported-by: Jesse Brandeburg <jesse.brandeburg-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Tested-by: Jesse Brandeburg <jesse.brandeburg-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Signed-off-by: Roland Dreier <rolandd-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
---
 drivers/gpu/drm/i915/i915_gem.c |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index debad5c..23aad8c 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2610,15 +2610,6 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
 
 	i915_verify_inactive(dev, __FILE__, __LINE__);
 
-	/* Copy the new buffer offsets back to the user's exec list. */
-	ret = copy_to_user((struct drm_i915_relocation_entry __user *)
-			   (uintptr_t) args->buffers_ptr,
-			   exec_list,
-			   sizeof(*exec_list) * args->buffer_count);
-	if (ret)
-		DRM_ERROR("failed to copy %d exec entries "
-			  "back to user (%d)\n",
-			   args->buffer_count, ret);
 err:
 	for (i = 0; i < pinned; i++)
 		i915_gem_object_unpin(object_list[i]);
@@ -2628,6 +2619,18 @@ err:
 
 	mutex_unlock(&dev->struct_mutex);
 
+	if (!ret) {
+		/* Copy the new buffer offsets back to the user's exec list. */
+		ret = copy_to_user((struct drm_i915_relocation_entry __user *)
+				   (uintptr_t) args->buffers_ptr,
+				   exec_list,
+				   sizeof(*exec_list) * args->buffer_count);
+		if (ret)
+			DRM_ERROR("failed to copy %d exec entries "
+				  "back to user (%d)\n",
+				  args->buffer_count, ret);
+	}
+
 pre_mutex_err:
 	drm_free(object_list, sizeof(*object_list) * args->buffer_count,
 		 DRM_MEM_DRIVER);

  parent reply	other threads:[~2009-02-07  1:48 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-04 10:21 2.6.29-rc3-git6: Reported regressions from 2.6.28 Rafael J. Wysocki
2009-02-04 10:21 ` [Bug #12400] git-latest: kernel oops in IOMMU setup Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12416] Recent change to kernel spikes out ccache/distcc Rafael J. Wysocki
2009-02-05  1:57   ` Theodore Tso
     [not found]     ` <20090205015725.GF8945-3s7WtUTddSA@public.gmane.org>
2009-02-05  2:13       ` Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12415] WARNING: at drivers/net/wireless/iwlwifi/iwl-sta.c:689 Rafael J. Wysocki
2009-02-04 13:04   ` Christian Borntraeger
     [not found]     ` <200902041404.46539.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2009-02-05  1:39       ` Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12414] iwl4965 cannot use "ap auto" on latest 2.6.28/29? Rafael J. Wysocki
2009-02-04 19:15   ` Jeff Chua
     [not found]     ` <b6a2187b0902041115u130fcfe7ha1612e2e2fa1ec36-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-05  1:37       ` Rafael J. Wysocki
     [not found]         ` <200902050237.39394.rjw-KKrjLPT3xs0@public.gmane.org>
2009-02-05 14:34           ` Jeff Chua
2009-02-14 11:41   ` Jeff Chua
     [not found]     ` <b6a2187b0902140341y2a1da743o7b012e6386583a62-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-14 18:46       ` Jeff Chua
     [not found]         ` <b6a2187b0902141046r76f80b9ar6df6a0e2472ef61b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-14 20:10           ` Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12419] possible circular locking dependency on i915 dma Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12417] glx performance drop with: "x86: PAT: implement track/untrack of pfnmap regions for x86 - v3" Rafael J. Wysocki
2009-02-04 13:46   ` Ingo Molnar
     [not found]     ` <20090204134612.GB17024-X9Un+BFzKDI@public.gmane.org>
2009-02-04 16:02       ` Alexey Fisher
     [not found]         ` <4989BC16.4080602-M18mAb7Tlt0yCq4wW13eYl6hYfS7NtTn@public.gmane.org>
2009-02-04 16:42           ` Ingo Molnar
     [not found]             ` <20090204164257.GD25996-X9Un+BFzKDI@public.gmane.org>
2009-02-05  0:55               ` Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12418] Repeated ioctl(4, 0x40046445, ..) loop in glxgears Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12427] cpumask change causes sparc build bustage Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12490] ath5k related kernel panic in 2.6.29-rc1 Rafael J. Wysocki
2009-02-06 18:48   ` Bob Copeland
     [not found]     ` <20090206184156.M22909-aXfl/3sk2vNUbtYUoyoikg@public.gmane.org>
2009-02-06 23:55       ` Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12444] X hangs following switch from radeonfb console - Bisected Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12441] Xorg can't use dri on radeon X1950 AGP Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12491] i915 lockdep warning Rafael J. Wysocki
2009-02-04 22:37   ` Roland Dreier
     [not found]     ` <adar62dltg1.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2009-02-05  1:03       ` Rafael J. Wysocki
2009-02-06 22:46         ` Roland Dreier
2009-02-06 23:40           ` Jesse Barnes
     [not found]           ` <adar62bchfw.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2009-02-07  1:20             ` Brandeburg, Jesse
     [not found]               ` <F169D4F5E1F1974DBFAFABF47F60C10A1DFD867C-osO9UTpF0URzLByeVOV5+bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2009-02-07  1:48                 ` Roland Dreier [this message]
     [not found]                   ` <adabptfc90m.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2009-02-07 13:53                     ` Rafael J. Wysocki
2009-02-11  0:43                     ` Eric Anholt
2009-02-11 18:14                       ` Roland Dreier
2009-02-04 10:23 ` [Bug #12495] thinkpad problems during resume Rafael J. Wysocki
2009-02-04 13:06   ` Christian Borntraeger
     [not found]     ` <200902041406.50578.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2009-02-05  1:41       ` Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12496] swsusp cannot find resume device (sometimes) Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12494] Sony backlight regression from 2.6.28 to 29-rc Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12493] ACPI related kernel panic when booting 2.6.29-rc2 Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12499] Problem with using bluetooth adaper connected to usb port Rafael J. Wysocki
2009-02-04 10:23 ` [Bug #12497] new barrier warnings in 2.6.29-rc1 Rafael J. Wysocki
2009-02-06  8:12   ` Christoph Hellwig
2009-02-04 10:23 ` [Bug #12501] build bug in eeepc-laptop.c Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12502] pipe_read oops on sh Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12503] [slab corruption] BUG key_jar: Poison overwritten Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12505] 2.6.29-rc1 Firefox crashing on page load Rafael J. Wysocki
2009-02-04 15:23   ` Justin Mattock
     [not found]     ` <dd18b0c30902040723m70f87f7fp4af32702410036d7-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-04 16:46       ` Ingo Molnar
     [not found]         ` <20090204164623.GE25996-X9Un+BFzKDI@public.gmane.org>
2009-02-04 18:15           ` Justin Mattock
     [not found]             ` <dd18b0c30902041015m2213d94cx72d41bd225afa3e9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-05  1:08               ` Rafael J. Wysocki
     [not found]                 ` <200902050208.15776.rjw-KKrjLPT3xs0@public.gmane.org>
2009-02-05  1:37                   ` Justin Mattock
2009-02-04 10:24 ` [Bug #12509] lockdep report. fb_mmap vs sys_mmap2 Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12510] 2.6.29-rc2 dies on startup Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12508] "powerpc/pci: Reserve legacy regions on PCI" broke my G3 Rafael J. Wysocki
2009-02-04 21:44   ` Benjamin Herrenschmidt
2009-02-06 18:55     ` Mikael Pettersson
2009-02-04 10:24 ` [Bug #12506] Undefined symbols when CONFIG_MFD_PCF50633 is enabled Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12518] BUG: using smp_processor_id() in preemptible [00000000] code: dellWirelessCtl/ Rafael J. Wysocki
2009-02-04 15:58   ` Alex Riesen
2009-02-04 10:24 ` [Bug #12538] xfs_fsr fails on 2.6.29-rc kernels Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12551] end_request: I/O error, dev cciss/c0d0, sector 87435720 Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12511] WARNING: at drivers/dma/dmaengine.c:352 Rafael J. Wysocki
2009-02-04 16:03   ` Dan Williams
     [not found]     ` <e9c3a7c20902040803p12ffe0bcrced5249c4b667623-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-05  1:13       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12574] possible circular locking dependency detected Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12598] tg3 dead after resume Rafael J. Wysocki
2009-02-05  0:43   ` Parag Warudkar
2009-02-05  1:03     ` Jesse Barnes
2009-02-04 10:24 ` [Bug #12591] NULL pointer dereference in blk_queue_io_stat Rafael J. Wysocki
2009-02-04 12:53   ` Jens Axboe
     [not found]     ` <20090204125320.GH30821-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2009-02-05  1:21       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12571] Suspend-resume on Dell Latitude D410 newly broken in 2.6.29-rc* Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12601] virt-manager broken on 2.6.29-rc2 Rafael J. Wysocki
2009-02-04 23:26   ` Stephen Hemminger
2009-02-05  1:25     ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12599] dri /dev node disappeared with 2.6.29-rc1 Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12602] CRED changes causing setuid failures Rafael J. Wysocki
2009-02-04 18:09   ` David Smith
     [not found]     ` <4989D9C3.7060408-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-02-05  1:15       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12600] i915 lockdep warning Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12604] Commit 31a12666d8f0c22235297e1c1575f82061480029 slows down Berkeley DB Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12606] fb_mmap: circular locking dependency on hibernation Rafael J. Wysocki
2009-02-04 14:43   ` Andrey Borzenkov
     [not found]     ` <200902041743.08010.arvidjaar-JGs/UdohzUI@public.gmane.org>
2009-02-05  1:43       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12605] Suspend regression, hang after matroxfb Rafael J. Wysocki
2009-02-05 12:16   ` Eric Sesterhenn
2009-02-05 16:12     ` Rafael J. Wysocki
     [not found]       ` <200902051712.56407.rjw-KKrjLPT3xs0@public.gmane.org>
2009-02-08 12:39         ` Eric Sesterhenn
2009-02-04 10:24 ` [Bug #12609] v2.6.29-rc2 libata sff 32bit PIO regression Rafael J. Wysocki
2009-02-05 17:30   ` Hugh Dickins
     [not found]     ` <Pine.LNX.4.64.0902051723520.1445-XZxpfvf5U/bbmfIwyoSfiQ@public.gmane.org>
2009-02-05 22:54       ` Rafael J. Wysocki
     [not found]         ` <200902052354.16361.rjw-KKrjLPT3xs0@public.gmane.org>
2009-02-06 23:10           ` Larry Finger
     [not found]             ` <498CC380.1070705-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2009-02-06 23:58               ` Rafael J. Wysocki
2009-02-23 16:22                 ` Larry Finger
     [not found]                   ` <49A2CD3B.4090703-tQ5ms3gMjBLk1uMJSBkQmQ@public.gmane.org>
2009-02-23 22:13                     ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12610] sync-Regression in 2.6.28.2? Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12611] kernel BUG at kernel/cgroup.c:398! Rafael J. Wysocki
2009-02-05  1:02   ` Li Zefan
     [not found]     ` <498A3AB7.9060701-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-02-05  1:53       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12608] 2.6.29-rc powerpc G5 Xorg legacy_mem regression Rafael J. Wysocki
2009-02-04 23:48   ` Benjamin Herrenschmidt
2009-02-05 17:23     ` Hugh Dickins
     [not found]       ` <Pine.LNX.4.64.0902051713550.1445-XZxpfvf5U/bbmfIwyoSfiQ@public.gmane.org>
2009-02-05 21:05         ` Benjamin Herrenschmidt
2009-02-05 21:20           ` Hugh Dickins
2009-02-05 21:45           ` Dave Airlie
     [not found]             ` <21d7e9970902051345h76fb26c1hc0397f6262f70eae-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-06  6:01               ` Benjamin Herrenschmidt
2009-02-05 22:33           ` Jesse Barnes
     [not found]             ` <200902051433.23294.jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org>
2009-02-05 23:57               ` Benjamin Herrenschmidt
2009-02-06  5:40               ` Benjamin Herrenschmidt
2009-02-06 12:56                 ` Hugh Dickins
2009-02-06 16:49                   ` Jesse Barnes
     [not found]                     ` <200902060849.45851.jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org>
2009-02-06 22:17                       ` Hugh Dickins
     [not found]                         ` <Pine.LNX.4.64.0902062205540.5710-XZxpfvf5U/bbmfIwyoSfiQ@public.gmane.org>
2009-02-06 22:45                           ` Jesse Barnes
     [not found]                             ` <200902061445.11379.jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org>
2009-02-07  0:50                               ` Hugh Dickins
2009-02-07  1:47                                 ` Jesse Barnes
2009-02-07  3:05                               ` Benjamin Herrenschmidt
2009-02-07 23:15                                 ` Jesse Barnes
     [not found]                   ` <Pine.LNX.4.64.0902061248010.14011-XZxpfvf5U/bbmfIwyoSfiQ@public.gmane.org>
2009-02-07  2:51                     ` Benjamin Herrenschmidt
2009-02-04 10:24 ` [Bug #12616] boot hang: async vs. kexec Rafael J. Wysocki
2009-02-04 16:50   ` Randy Dunlap
     [not found]     ` <4989C74A.2020402-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2009-02-05  1:26       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12613] [Suspend regression][DRM, RADEON] Rafael J. Wysocki
2009-02-04 22:25   ` etienne
     [not found]     ` <498A15C3.30904-Bf/eaXMDFuuXqB7oj33eUg@public.gmane.org>
2009-02-05  1:18       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12615] boot hangs while bringing up gianfar ethernet Rafael J. Wysocki
2009-02-04 16:54   ` Ira Snyder
     [not found]     ` <20090204165410.GA21717-lulEs6mt1IksTUYHLfqkUA@public.gmane.org>
2009-02-05  1:23       ` Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12617] unable to compile e100 firmware into kernel Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12621] Resume broken on iBook Rafael J. Wysocki
2009-02-04 10:24 ` [Bug #12618] hackbench [pthread mode] regression with 2.6.29-rc3 Rafael J. Wysocki
  -- strict thread matches above, loose matches on Subject: below --
2009-02-23 21:45 2.6.29-rc6: Reported regressions from 2.6.28 Rafael J. Wysocki
2009-02-23 21:48 ` [Bug #12491] i915 lockdep warning Rafael J. Wysocki
2009-02-24  1:36   ` Roland Dreier
     [not found]     ` <adabpssvcn9.fsf-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2009-02-24  1:44       ` Rafael J. Wysocki
2009-02-14 20:35 2.6.29-rc5: Reported regressions from 2.6.28 Rafael J. Wysocki
2009-02-14 20:38 ` [Bug #12491] i915 lockdep warning Rafael J. Wysocki
2009-02-08 19:05 2.6.29-rc4: Reported regressions from 2.6.28 Rafael J. Wysocki
2009-02-08 19:21 ` [Bug #12491] i915 lockdep warning Rafael J. Wysocki
2009-01-19 21:28 2.6.29-rc2-git1: Reported regressions from 2.6.28 Rafael J. Wysocki
2009-01-19 21:32 ` [Bug #12491] i915 lockdep warning Rafael J. Wysocki

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=adabptfc90m.fsf@cisco.com \
    --to=rdreier-fyb4gu1cfyuavxtiumwx3w@public.gmane.org \
    --cc=drivers_video-dri-ztI5WcYan/vQLgFONoPN62D2FQJk+8+b@public.gmane.org \
    --cc=eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org \
    --cc=intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org \
    --cc=jesse.brandeburg-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=kernel-testers-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=rjw-KKrjLPT3xs0@public.gmane.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 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).