linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org, "Thomas Gleixner" <tglx@linutronix.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"David Woodhouse" <dwmw@amazon.co.uk>
Subject: [PATCH 3.16 045/131] x86/speculation, KVM: Implement support for VIRT_SPEC_CTRL/LS_CFG
Date: Sat, 29 Sep 2018 22:43:07 +0100	[thread overview]
Message-ID: <lsq.1538257387.353802822@decadent.org.uk> (raw)
In-Reply-To: <lsq.1538257386.330095874@decadent.org.uk>

3.16.59-rc1 review patch.  If anyone has any objections, please let me know.

------------------

From: Thomas Gleixner <tglx@linutronix.de>

commit 47c61b3955cf712cadfc25635bf9bc174af030ea upstream.

Add the necessary logic for supporting the emulated VIRT_SPEC_CTRL MSR to
x86_virt_spec_ctrl().  If either X86_FEATURE_LS_CFG_SSBD or
X86_FEATURE_VIRT_SPEC_CTRL is set then use the new guest_virt_spec_ctrl
argument to check whether the state must be modified on the host. The
update reuses speculative_store_bypass_update() so the ZEN-specific sibling
coordination can be reused.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 arch/x86/include/asm/spec-ctrl.h |  6 ++++++
 arch/x86/kernel/cpu/bugs.c       | 30 ++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

--- a/arch/x86/include/asm/spec-ctrl.h
+++ b/arch/x86/include/asm/spec-ctrl.h
@@ -53,6 +53,12 @@ static inline u64 ssbd_tif_to_spec_ctrl(
 	return (tifn & _TIF_SSBD) >> (TIF_SSBD - SPEC_CTRL_SSBD_SHIFT);
 }
 
+static inline unsigned long ssbd_spec_ctrl_to_tif(u64 spec_ctrl)
+{
+	BUILD_BUG_ON(TIF_SSBD < SPEC_CTRL_SSBD_SHIFT);
+	return (spec_ctrl & SPEC_CTRL_SSBD) << (TIF_SSBD - SPEC_CTRL_SSBD_SHIFT);
+}
+
 static inline u64 ssbd_tif_to_amd_ls_cfg(u64 tifn)
 {
 	return (tifn & _TIF_SSBD) ? x86_amd_ls_cfg_ssbd_mask : 0ULL;
--- a/arch/x86/kernel/cpu/bugs.c
+++ b/arch/x86/kernel/cpu/bugs.c
@@ -223,6 +223,36 @@ x86_virt_spec_ctrl(u64 guest_spec_ctrl,
 			wrmsrl(MSR_IA32_SPEC_CTRL, msrval);
 		}
 	}
+
+	/*
+	 * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update
+	 * MSR_AMD64_L2_CFG or MSR_VIRT_SPEC_CTRL if supported.
+	 */
+	if (!static_cpu_has(X86_FEATURE_LS_CFG_SSBD) &&
+	    !static_cpu_has(X86_FEATURE_VIRT_SSBD))
+		return;
+
+	/*
+	 * If the host has SSBD mitigation enabled, force it in the host's
+	 * virtual MSR value. If its not permanently enabled, evaluate
+	 * current's TIF_SSBD thread flag.
+	 */
+	if (static_cpu_has(X86_FEATURE_SPEC_STORE_BYPASS_DISABLE))
+		hostval = SPEC_CTRL_SSBD;
+	else
+		hostval = ssbd_tif_to_spec_ctrl(ti->flags);
+
+	/* Sanitize the guest value */
+	guestval = guest_virt_spec_ctrl & SPEC_CTRL_SSBD;
+
+	if (hostval != guestval) {
+		unsigned long tif;
+
+		tif = setguest ? ssbd_spec_ctrl_to_tif(guestval) :
+				 ssbd_spec_ctrl_to_tif(hostval);
+
+		speculative_store_bypass_update(tif);
+	}
 }
 EXPORT_SYMBOL_GPL(x86_virt_spec_ctrl);
 


  parent reply	other threads:[~2018-09-29 21:48 UTC|newest]

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-29 21:43 [PATCH 3.16 000/131] 3.16.59-rc1 review Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 003/131] x86/bugs: Concentrate bug reporting into a separate function Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 065/131] arm: drop L_PTE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 073/131] m32r: drop _PAGE_FILE " Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 024/131] x86/speculation: Make "seccomp" the default mode for Speculative Store Bypass Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 063/131] arc: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 043/131] x86/bugs: Remove x86_spec_ctrl_set() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 107/131] x86/speculation/l1tf: Limit swap file size to MAX_PA/2 Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 059/131] mm: replace vma->sharead.linear with vma->shared Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 064/131] arm64: drop PTE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 044/131] x86/bugs: Rework spec_ctrl base and mask logic Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 021/131] seccomp: Use PR_SPEC_FORCE_DISABLE Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 025/131] x86/bugs: Rename _RDS to _SSBD Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 100/131] mm: Add vm_insert_pfn_prot() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 057/131] proc: drop handling non-linear mappings Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 114/131] x86/speculation/l1tf: Fix up pte->pfn conversion for PAE Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 068/131] c6x: drop pte_file() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 104/131] mm/pagewalk: remove pgd_entry() and pud_entry() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 125/131] mm/vmstat: Make NR_TLB_REMOTE_FLUSH_RECEIVED available even on UP Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 127/131] irda: Only insert new objects into the global database via setsockopt Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 016/131] x86/speculation: Add prctl for Speculative Store Bypass mitigation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 072/131] ia64: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 013/131] x86/speculation: Create spec-ctrl.h to avoid include hell Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 070/131] frv: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 131/131] exec: Limit arg stack to at most 75% of _STK_LIM Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 098/131] x86/speculation/l1tf: Make sure the first page is always reserved Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 031/131] x86/cpu: Make alternative_msr_write work for 32-bit code Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 069/131] cris: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 023/131] seccomp: Move speculation migitation control to arch code Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 012/131] x86/KVM/VMX: Expose SPEC_CTRL Bit(2) to the guest Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 089/131] xtensa: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 009/131] x86/bugs/intel: Set proper CPU features and setup RDS Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 055/131] mm: drop support of non-linear mapping from fault codepath Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 113/131] x86/speculation/l1tf: Fix off-by-one error when warning that system has too much RAM Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 029/131] x86/bugs: Make cpu_show_common() static Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 039/131] x86/speculation: Add virtualized speculative store bypass disable support Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 019/131] seccomp: Enable speculation flaw mitigations Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 083/131] sh: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 077/131] mips: " Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 011/131] x86/bugs/AMD: Add support to disable RDS on Fam[15,16,17]h if requested Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 062/131] alpha: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 042/131] x86/bugs: Expose x86_spec_ctrl_base directly Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 110/131] x86/speculation/l1tf: Extend 64bit swap file size limit Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 067/131] blackfin: drop pte_file() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 048/131] KVM/VMX: Expose SSBD properly to guests Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 037/131] x86/speculation: Handle HT correctly on AMD Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 033/131] x86/speculation: Use synthetic bits for IBRS/IBPB/STIBP Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 119/131] x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 026/131] proc: Use underscores for SSBD in 'status' Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 010/131] x86/bugs: Whitelist allowed SPEC_CTRL MSR values Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 038/131] x86/bugs, KVM: Extend speculation control for VIRT_SPEC_CTRL Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 095/131] x86/speculation/l1tf: Protect swap entries against L1TF Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 085/131] tile: drop pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 027/131] Documentation/spec_ctrl: Do some minor cleanups Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 097/131] x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 020/131] prctl: Add force disable speculation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 052/131] mm: replace remap_file_pages() syscall with emulation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 056/131] mm: drop vm_ops->remap_pages and generic_file_remap_pages() stub Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 008/131] x86/bugs: Provide boot parameters for the spec_store_bypass_disable mitigation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 081/131] s390: drop pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 058/131] rmap: drop support of non-linear mappings Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 074/131] m68k: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 014/131] prctl: Add speculation control prctls Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 106/131] x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings Ben Hutchings
2018-09-29 21:43 ` Ben Hutchings [this message]
2018-09-29 21:43 ` [PATCH 3.16 116/131] x86/speculation/l1tf: Invert all not present mappings Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 034/131] x86/cpufeatures: Disentangle MSR_SPEC_CTRL enumeration from IBRS Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 017/131] nospec: Allow getting/setting on non-current task Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 022/131] seccomp: Add filter flag to opt-out of SSB mitigation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 060/131] mm: remove rest usage of VM_NONLINEAR and pte_file() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 121/131] x86/mm/kmmio: Make the tracer robust against L1TF Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 115/131] x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 001/131] x86/nospec: Simplify alternative_msr_write() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 120/131] x86/mm/pat: Make set_memory_np() L1TF safe Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 015/131] x86/process: Allow runtime control of Speculative Store Bypass Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 091/131] x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 078/131] mn10300: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 075/131] metag: " Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 061/131] asm-generic: drop unused pte_file* helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 118/131] x86/speculation/l1tf: Protect NUMA-balance entries against L1TF Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 066/131] avr32: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 018/131] proc: Provide details on speculation flaw mitigations Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 051/131] x86/cpufeatures: Show KAISER in cpuinfo Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 109/131] x86/bugs: Move the l1tf function and define pr_fmt properly Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 099/131] x86/speculation/l1tf: Add sysfs reporting for l1tf Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 046/131] KVM: SVM: Implement VIRT_SPEC_CTRL support for SSBD Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 123/131] via-cuda: Use spinlock_irq_save/restore instead of enable/disable_irq Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 032/131] KVM: SVM: Move spec control call after restore of GS Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 086/131] um: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 082/131] score: " Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 079/131] openrisc: " Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 128/131] floppy: Do not copy a kernel pointer to user memory in FDGETPRM ioctl Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 124/131] x86/tools: Fix gcc-7 warning in relocs.c Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 030/131] x86/bugs: Fix the parameters alignment and missing void Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 006/131] x86/bugs: Expose /sys/../spec_store_bypass Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 096/131] x86: mm: Add PUD functions Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 050/131] x86/xen: Add call of speculative_store_bypass_ht_init() to PV paths Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 041/131] x86/bugs: Unify x86_spec_ctrl_{set_guest,restore_host} Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 005/131] x86/bugs, KVM: Support the combination of guest and host IBRS Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 117/131] x86/speculation/l1tf: Exempt zeroed PTEs from inversion Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 094/131] x86/speculation/l1tf: Change order of offset/type in swap entry Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 035/131] x86/cpufeatures: Disentangle SSBD enumeration Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 049/131] KVM: x86: SVM: Call x86_spec_ctrl_set_guest/host() with interrupts disabled Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 126/131] irda: Fix memory leak caused by repeated binds of irda socket Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 129/131] HID: debug: check length before copy_to_user() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 053/131] mm: fix regression in remap_file_pages() emulation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 028/131] x86/bugs: Fix __ssb_select_mitigation() return type Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 088/131] x86: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 101/131] mm: fix cache mode tracking in vm_insert_mixed() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 007/131] x86/cpufeatures: Add X86_FEATURE_RDS Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 076/131] microblaze: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 130/131] scsi: target: iscsi: Use hex2bin instead of a re-implementation Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 084/131] sparc: drop pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 087/131] unicore32: " Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 108/131] x86/init: fix build with CONFIG_SWAP=n Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 122/131] x86/speculation/l1tf: Suggest what to do on systems with too much RAM Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 040/131] x86/speculation: Rework speculative_store_bypass_update() Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 111/131] x86/speculation/l1tf: Protect PAE swap entries against L1TF Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 105/131] pagewalk: improve vma handling Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 080/131] parisc: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 054/131] mm: drop support of non-linear mapping from unmap/zap codepath Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 093/131] mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 1 Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 103/131] drm/drivers: add support for using the arch wc mapping API Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 071/131] hexagon: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 112/131] x86/speculation/l1tf: Fix overflow in l1tf_pfn_limit() on 32bit Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 004/131] x86/bugs: Read SPEC_CTRL MSR during boot and re-use reserved bits Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 092/131] x86/mm: Move swap offset/type up in PTE to work around erratum Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 036/131] x86/cpufeatures: Add FEATURE_ZEN Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 047/131] x86/bugs: Rename SSBD_NO to SSB_NO Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 102/131] x86/io: add interface to reserve io memtype for a resource range. (v1.1) Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 002/131] x86/bugs: Concentrate bug detection into a separate function Ben Hutchings
2018-09-29 21:43 ` [PATCH 3.16 090/131] powerpc: drop _PAGE_FILE and pte_file()-related helpers Ben Hutchings
2018-09-30 14:06 ` [PATCH 3.16 000/131] 3.16.59-rc1 review Guenter Roeck
2018-09-30 16:59   ` Ben Hutchings

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=lsq.1538257387.353802822@decadent.org.uk \
    --to=ben@decadent.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=dwmw@amazon.co.uk \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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).