All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Peter Zijlstra <peterz@infradead.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"minchan.kim@gmail.com" <minchan.kim@gmail.com>,
	cl@linux-foundation.org,
	"hugh.dickins" <hugh.dickins@tiscali.co.uk>,
	Nick Piggin <nickpiggin@yahoo.com.au>,
	Ingo Molnar <mingo@elte.hu>,
	Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: [RFC][PATCH 7/8] mm,x86: speculative pagefault support
Date: Mon, 04 Jan 2010 19:24:36 +0100	[thread overview]
Message-ID: <20100104182813.815259559@chello.nl> (raw)
In-Reply-To: 20100104182429.833180340@chello.nl

[-- Attachment #1: mm-foo-9.patch --]
[-- Type: text/plain, Size: 2806 bytes --]

Implement the x86 architecture support for speculative pagefaults.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 arch/x86/mm/fault.c |   31 +++++++++++--------------------
 arch/x86/mm/gup.c   |   10 ++++++++++
 2 files changed, 21 insertions(+), 20 deletions(-)

Index: linux-2.6/arch/x86/mm/fault.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/fault.c
+++ linux-2.6/arch/x86/mm/fault.c
@@ -777,30 +777,13 @@ bad_area_access_error(struct pt_regs *re
 	__bad_area(regs, error_code, address, SEGV_ACCERR);
 }
 
-/* TODO: fixup for "mm-invoke-oom-killer-from-page-fault.patch" */
-static void
-out_of_memory(struct pt_regs *regs, unsigned long error_code,
-	      unsigned long address)
-{
-	/*
-	 * We ran out of memory, call the OOM killer, and return the userspace
-	 * (which will retry the fault, or kill us if we got oom-killed):
-	 */
-	up_read(&current->mm->mmap_sem);
-
-	pagefault_out_of_memory();
-}
-
 static void
 do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
 	  unsigned int fault)
 {
 	struct task_struct *tsk = current;
-	struct mm_struct *mm = tsk->mm;
 	int code = BUS_ADRERR;
 
-	up_read(&mm->mmap_sem);
-
 	/* Kernel mode? Handle exceptions or die: */
 	if (!(error_code & PF_USER))
 		no_context(regs, error_code, address);
@@ -829,7 +812,7 @@ mm_fault_error(struct pt_regs *regs, uns
 	       unsigned long address, unsigned int fault)
 {
 	if (fault & VM_FAULT_OOM) {
-		out_of_memory(regs, error_code, address);
+		pagefault_out_of_memory();
 	} else {
 		if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON))
 			do_sigbus(regs, error_code, address, fault);
@@ -1040,6 +1023,14 @@ do_page_fault(struct pt_regs *regs, unsi
 		return;
 	}
 
+	if (error_code & PF_USER) {
+		fault = handle_speculative_fault(mm, address,
+				error_code & PF_WRITE ? FAULT_FLAG_WRITE : 0);
+
+		if (!(fault & VM_FAULT_RETRY))
+			goto done;
+	}
+
 	/*
 	 * When running in the kernel we expect faults to occur only to
 	 * addresses in user space.  All other faults represent errors in
@@ -1119,6 +1110,8 @@ good_area:
 	 */
 	fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0);
 
+	up_read(&mm->mmap_sem);
+done:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		mm_fault_error(regs, error_code, address, fault);
 		return;
@@ -1135,6 +1128,4 @@ good_area:
 	}
 
 	check_v8086_mode(regs, address, tsk);
-
-	up_read(&mm->mmap_sem);
 }
Index: linux-2.6/arch/x86/mm/gup.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/gup.c
+++ linux-2.6/arch/x86/mm/gup.c
@@ -373,3 +373,13 @@ slow_irqon:
 		return ret;
 	}
 }
+
+void pin_page_tables(void)
+{
+	local_irq_disable();
+}
+
+void unpin_page_tables(void)
+{
+	local_irq_enable();
+}

-- 


WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Peter Zijlstra <peterz@infradead.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"minchan.kim@gmail.com" <minchan.kim@gmail.com>,
	cl@linux-foundation.org,
	"hugh.dickins" <hugh.dickins@tiscali.co.uk>,
	Nick Piggin <nickpiggin@yahoo.com.au>,
	Ingo Molnar <mingo@elte.hu>,
	Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Subject: [RFC][PATCH 7/8] mm,x86: speculative pagefault support
Date: Mon, 04 Jan 2010 19:24:36 +0100	[thread overview]
Message-ID: <20100104182813.815259559@chello.nl> (raw)
In-Reply-To: 20100104182429.833180340@chello.nl

[-- Attachment #1: mm-foo-9.patch --]
[-- Type: text/plain, Size: 3031 bytes --]

Implement the x86 architecture support for speculative pagefaults.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
---
 arch/x86/mm/fault.c |   31 +++++++++++--------------------
 arch/x86/mm/gup.c   |   10 ++++++++++
 2 files changed, 21 insertions(+), 20 deletions(-)

Index: linux-2.6/arch/x86/mm/fault.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/fault.c
+++ linux-2.6/arch/x86/mm/fault.c
@@ -777,30 +777,13 @@ bad_area_access_error(struct pt_regs *re
 	__bad_area(regs, error_code, address, SEGV_ACCERR);
 }
 
-/* TODO: fixup for "mm-invoke-oom-killer-from-page-fault.patch" */
-static void
-out_of_memory(struct pt_regs *regs, unsigned long error_code,
-	      unsigned long address)
-{
-	/*
-	 * We ran out of memory, call the OOM killer, and return the userspace
-	 * (which will retry the fault, or kill us if we got oom-killed):
-	 */
-	up_read(&current->mm->mmap_sem);
-
-	pagefault_out_of_memory();
-}
-
 static void
 do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
 	  unsigned int fault)
 {
 	struct task_struct *tsk = current;
-	struct mm_struct *mm = tsk->mm;
 	int code = BUS_ADRERR;
 
-	up_read(&mm->mmap_sem);
-
 	/* Kernel mode? Handle exceptions or die: */
 	if (!(error_code & PF_USER))
 		no_context(regs, error_code, address);
@@ -829,7 +812,7 @@ mm_fault_error(struct pt_regs *regs, uns
 	       unsigned long address, unsigned int fault)
 {
 	if (fault & VM_FAULT_OOM) {
-		out_of_memory(regs, error_code, address);
+		pagefault_out_of_memory();
 	} else {
 		if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON))
 			do_sigbus(regs, error_code, address, fault);
@@ -1040,6 +1023,14 @@ do_page_fault(struct pt_regs *regs, unsi
 		return;
 	}
 
+	if (error_code & PF_USER) {
+		fault = handle_speculative_fault(mm, address,
+				error_code & PF_WRITE ? FAULT_FLAG_WRITE : 0);
+
+		if (!(fault & VM_FAULT_RETRY))
+			goto done;
+	}
+
 	/*
 	 * When running in the kernel we expect faults to occur only to
 	 * addresses in user space.  All other faults represent errors in
@@ -1119,6 +1110,8 @@ good_area:
 	 */
 	fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0);
 
+	up_read(&mm->mmap_sem);
+done:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		mm_fault_error(regs, error_code, address, fault);
 		return;
@@ -1135,6 +1128,4 @@ good_area:
 	}
 
 	check_v8086_mode(regs, address, tsk);
-
-	up_read(&mm->mmap_sem);
 }
Index: linux-2.6/arch/x86/mm/gup.c
===================================================================
--- linux-2.6.orig/arch/x86/mm/gup.c
+++ linux-2.6/arch/x86/mm/gup.c
@@ -373,3 +373,13 @@ slow_irqon:
 		return ret;
 	}
 }
+
+void pin_page_tables(void)
+{
+	local_irq_disable();
+}
+
+void unpin_page_tables(void)
+{
+	local_irq_enable();
+}

-- 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2010-01-04 20:49 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-04 18:24 [RFC][PATCH 0/8] Speculative pagefault -v3 Peter Zijlstra
2010-01-04 18:24 ` Peter Zijlstra
2010-01-04 18:24 ` [RFC][PATCH 1/8] mm: Remove pte reference from fault path Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-04 18:24 ` [RFC][PATCH 2/8] mm: Speculative pagefault infrastructure Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-04 18:24 ` [RFC][PATCH 3/8] mm: Add vma sequence count Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-04 18:24 ` [RFC][PATCH 4/8] mm: RCU free vmas Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-05  2:43   ` Paul E. McKenney
2010-01-05  2:43     ` Paul E. McKenney
2010-01-05  8:28     ` Peter Zijlstra
2010-01-05  8:28       ` Peter Zijlstra
2010-01-05 16:05       ` Paul E. McKenney
2010-01-05 16:05         ` Paul E. McKenney
2010-01-04 18:24 ` [RFC][PATCH 5/8] mm: Speculative pte_map_lock() Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-04 18:24 ` [RFC][PATCH 6/8] mm: handle_speculative_fault() Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-05  0:25   ` KAMEZAWA Hiroyuki
2010-01-05  0:25     ` KAMEZAWA Hiroyuki
2010-01-05  3:13     ` Linus Torvalds
2010-01-05  3:13       ` Linus Torvalds
2010-01-05  8:17       ` Peter Zijlstra
2010-01-05  8:17         ` Peter Zijlstra
2010-01-05  8:57       ` Peter Zijlstra
2010-01-05  8:57         ` Peter Zijlstra
2010-01-05 15:34         ` Linus Torvalds
2010-01-05 15:34           ` Linus Torvalds
2010-01-05 15:40           ` Al Viro
2010-01-05 15:40             ` Al Viro
2010-01-05 16:10             ` Linus Torvalds
2010-01-05 16:10               ` Linus Torvalds
2010-01-06 15:41               ` Peter Zijlstra
2010-01-06 15:41                 ` Peter Zijlstra
2010-01-05  9:37       ` Peter Zijlstra
2010-01-05  9:37         ` Peter Zijlstra
2010-01-05 23:35         ` Linus Torvalds
2010-01-05 23:35           ` Linus Torvalds
2010-01-05  4:29     ` Minchan Kim
2010-01-05  4:29       ` Minchan Kim
2010-01-05  4:43       ` KAMEZAWA Hiroyuki
2010-01-05  4:43         ` KAMEZAWA Hiroyuki
2010-01-05  5:10         ` Linus Torvalds
2010-01-05  5:10           ` Linus Torvalds
2010-01-05  5:30           ` KAMEZAWA Hiroyuki
2010-01-05  5:30             ` KAMEZAWA Hiroyuki
2010-01-05  7:39             ` KAMEZAWA Hiroyuki
2010-01-05 15:26               ` Linus Torvalds
2010-01-05 15:26                 ` Linus Torvalds
2010-01-05 16:14                 ` Linus Torvalds
2010-01-05 16:14                   ` Linus Torvalds
2010-01-05 17:25                   ` Andi Kleen
2010-01-05 17:25                     ` Andi Kleen
2010-01-05 17:47                     ` Christoph Lameter
2010-01-05 17:47                       ` Christoph Lameter
2010-01-05 18:00                       ` Andi Kleen
2010-01-05 18:00                         ` Andi Kleen
2010-01-05 17:55                     ` Linus Torvalds
2010-01-05 17:55                       ` Linus Torvalds
2010-01-05 18:13                       ` Christoph Lameter
2010-01-05 18:13                         ` Christoph Lameter
2010-01-05 18:25                         ` Linus Torvalds
2010-01-05 18:25                           ` Linus Torvalds
2010-01-05 18:46                           ` Christoph Lameter
2010-01-05 18:46                             ` Christoph Lameter
2010-01-05 18:56                             ` Linus Torvalds
2010-01-05 18:56                               ` Linus Torvalds
2010-01-05 19:15                               ` Christoph Lameter
2010-01-05 19:15                                 ` Christoph Lameter
2010-01-05 19:28                                 ` Linus Torvalds
2010-01-05 19:28                                   ` Linus Torvalds
2010-01-05 18:55                           ` Paul E. McKenney
2010-01-05 18:55                             ` Paul E. McKenney
2010-01-05 19:08                             ` Linus Torvalds
2010-01-05 19:08                               ` Linus Torvalds
2010-01-05 19:23                               ` Paul E. McKenney
2010-01-05 19:23                                 ` Paul E. McKenney
2010-01-05 20:29                           ` Peter Zijlstra
2010-01-05 20:29                             ` Peter Zijlstra
2010-01-05 20:46                             ` Linus Torvalds
2010-01-05 20:46                               ` Linus Torvalds
2010-01-05 21:00                               ` Linus Torvalds
2010-01-05 21:00                                 ` Linus Torvalds
2010-01-05 23:29                             ` Paul E. McKenney
2010-01-05 23:29                               ` Paul E. McKenney
2010-01-06  0:22                 ` KAMEZAWA Hiroyuki
2010-01-06  0:22                   ` KAMEZAWA Hiroyuki
2010-01-06  1:37                   ` Linus Torvalds
2010-01-06  1:37                     ` Linus Torvalds
2010-01-06  2:52                     ` KAMEZAWA Hiroyuki
2010-01-06  2:52                       ` KAMEZAWA Hiroyuki
2010-01-06  3:27                       ` Linus Torvalds
2010-01-06  3:27                         ` Linus Torvalds
2010-01-06  3:56                         ` KAMEZAWA Hiroyuki
2010-01-06  3:56                           ` KAMEZAWA Hiroyuki
2010-01-06  4:20                           ` Linus Torvalds
2010-01-06  4:20                             ` Linus Torvalds
2010-01-06  7:06                             ` KAMEZAWA Hiroyuki
2010-01-06  7:49                               ` Minchan Kim
2010-01-06  7:49                                 ` Minchan Kim
2010-01-06  9:39                               ` Linus Torvalds
2010-01-06  9:39                                 ` Linus Torvalds
2010-01-07  1:00                                 ` KAMEZAWA Hiroyuki
2010-01-07  1:00                                   ` KAMEZAWA Hiroyuki
2010-01-08 16:53                             ` Peter Zijlstra
2010-01-08 16:53                               ` Peter Zijlstra
2010-01-08 17:22                               ` Linus Torvalds
2010-01-08 17:22                                 ` Linus Torvalds
2010-01-08 17:43                                 ` Christoph Lameter
2010-01-08 17:43                                   ` Christoph Lameter
2010-01-08 17:52                                   ` Linus Torvalds
2010-01-08 17:52                                     ` Linus Torvalds
2010-01-08 18:33                                     ` Christoph Lameter
2010-01-08 18:33                                       ` Christoph Lameter
2010-01-08 18:46                                   ` Andi Kleen
2010-01-08 18:46                                     ` Andi Kleen
2010-01-08 18:56                                     ` Christoph Lameter
2010-01-08 18:56                                       ` Christoph Lameter
2010-01-08 19:10                                       ` Andi Kleen
2010-01-08 19:10                                         ` Andi Kleen
2010-01-08 19:11                                       ` Linus Torvalds
2010-01-08 19:11                                         ` Linus Torvalds
2010-01-08 19:28                                         ` Andi Kleen
2010-01-08 19:28                                           ` Andi Kleen
2010-01-08 19:39                                           ` Linus Torvalds
2010-01-08 19:39                                             ` Linus Torvalds
2010-01-08 19:42                                             ` Linus Torvalds
2010-01-08 19:42                                               ` Linus Torvalds
2010-01-08 21:36                                   ` Linus Torvalds
2010-01-08 21:36                                     ` Linus Torvalds
2010-01-08 21:46                                     ` Christoph Lameter
2010-01-08 21:46                                       ` Christoph Lameter
2010-01-08 22:43                                       ` Linus Torvalds
2010-01-08 22:43                                       ` Linus Torvalds
2010-01-08 22:43                                         ` Linus Torvalds
2010-01-09 14:47                               ` Ed Tomlinson
2010-01-09 14:47                                 ` Ed Tomlinson
2010-01-10  5:27                                 ` Nitin Gupta
2010-01-10  5:27                                   ` Nitin Gupta
2010-01-05 15:14             ` Christoph Lameter
2010-01-05 15:14               ` Christoph Lameter
2010-01-05  8:18           ` Peter Zijlstra
2010-01-05  8:18             ` Peter Zijlstra
2010-01-05  6:00         ` Minchan Kim
2010-01-05  6:00           ` Minchan Kim
2010-01-05  4:48       ` Linus Torvalds
2010-01-05  4:48         ` Linus Torvalds
2010-01-05  6:09         ` Minchan Kim
2010-01-05  6:09           ` Minchan Kim
2010-01-05  6:09           ` KAMEZAWA Hiroyuki
2010-01-05  6:09             ` KAMEZAWA Hiroyuki
2010-01-05  6:24             ` Minchan Kim
2010-01-05  6:24               ` Minchan Kim
2010-01-05  8:35           ` Peter Zijlstra
2010-01-05  8:35             ` Peter Zijlstra
2010-01-05 13:45   ` Arjan van de Ven
2010-01-05 13:45     ` Arjan van de Ven
2010-01-05 14:15     ` Andi Kleen
2010-01-05 14:15       ` Andi Kleen
2010-01-05 15:17     ` Christoph Lameter
2010-01-05 15:17       ` Christoph Lameter
2010-01-06  3:22       ` Arjan van de Ven
2010-01-06  3:22         ` Arjan van de Ven
2010-01-07 16:11         ` Christoph Lameter
2010-01-07 16:11           ` Christoph Lameter
2010-01-07 16:19           ` Linus Torvalds
2010-01-07 16:19             ` Linus Torvalds
2010-01-07 16:31             ` Linus Torvalds
2010-01-07 16:31               ` Linus Torvalds
2010-01-07 16:34             ` Paul E. McKenney
2010-01-07 16:34               ` Paul E. McKenney
2010-01-07 16:36             ` Christoph Lameter
2010-01-07 16:36               ` Christoph Lameter
2010-01-08  4:49               ` Arjan van de Ven
2010-01-08  4:49                 ` Arjan van de Ven
2010-01-08  5:00                 ` Linus Torvalds
2010-01-08  5:00                   ` Linus Torvalds
2010-01-08 15:51                 ` Christoph Lameter
2010-01-08 15:51                   ` Christoph Lameter
2010-01-09 15:55                   ` Arjan van de Ven
2010-01-09 15:55                     ` Arjan van de Ven
2010-01-07 17:22             ` Peter Zijlstra
2010-01-07 17:22               ` Peter Zijlstra
2010-01-07 17:36               ` Linus Torvalds
2010-01-07 17:36                 ` Linus Torvalds
2010-01-07 17:49                 ` Linus Torvalds
2010-01-07 17:49                   ` Linus Torvalds
2010-01-07 18:00                   ` Peter Zijlstra
2010-01-07 18:00                     ` Peter Zijlstra
2010-01-07 18:15                     ` Linus Torvalds
2010-01-07 18:15                       ` Linus Torvalds
2010-01-07 21:49                       ` Peter Zijlstra
2010-01-07 21:49                         ` Peter Zijlstra
2010-01-07 18:44                   ` Linus Torvalds
2010-01-07 18:44                     ` Linus Torvalds
2010-01-07 19:20                     ` Paul E. McKenney
2010-01-07 19:20                       ` Paul E. McKenney
2010-01-07 20:06                       ` Linus Torvalds
2010-01-07 20:06                         ` Linus Torvalds
2010-01-07 20:25                         ` Paul E. McKenney
2010-01-07 20:25                           ` Paul E. McKenney
2010-01-07 19:24                     ` Christoph Lameter
2010-01-07 19:24                       ` Christoph Lameter
2010-01-07 20:08                       ` Linus Torvalds
2010-01-07 20:08                         ` Linus Torvalds
2010-01-07 20:13                         ` Linus Torvalds
2010-01-07 20:13                           ` Linus Torvalds
2010-01-07 21:44                     ` Peter Zijlstra
2010-01-07 21:44                       ` Peter Zijlstra
2010-01-07 22:33                       ` Linus Torvalds
2010-01-07 22:33                         ` Linus Torvalds
2010-01-08  0:23                         ` KAMEZAWA Hiroyuki
2010-01-08  0:23                           ` KAMEZAWA Hiroyuki
2010-01-08  0:25                           ` KAMEZAWA Hiroyuki
2010-01-08  0:25                             ` KAMEZAWA Hiroyuki
2010-01-08  0:39                           ` Linus Torvalds
2010-01-08  0:39                             ` Linus Torvalds
2010-01-08  0:41                             ` Linus Torvalds
2010-01-08  0:41                               ` Linus Torvalds
2010-01-07 23:51                 ` Rik van Riel
2010-01-07 23:51                   ` Rik van Riel
2010-01-04 18:24 ` Peter Zijlstra [this message]
2010-01-04 18:24   ` [RFC][PATCH 7/8] mm,x86: speculative pagefault support Peter Zijlstra
2010-01-04 18:24 ` [RFC][PATCH 8/8] mm: Optimize pte_map_lock() Peter Zijlstra
2010-01-04 18:24   ` Peter Zijlstra
2010-01-04 21:41 ` [RFC][PATCH 0/8] Speculative pagefault -v3 Rik van Riel
2010-01-04 21:41   ` Rik van Riel
2010-01-04 21:46   ` Peter Zijlstra
2010-01-04 21:46     ` Peter Zijlstra
2010-01-04 23:20     ` Rik van Riel
2010-01-04 23:20       ` Rik van Riel
2010-01-04 21:59   ` Christoph Lameter
2010-01-04 21:59     ` Christoph Lameter
2010-01-05  0:28     ` KAMEZAWA Hiroyuki
2010-01-05  0:28       ` KAMEZAWA Hiroyuki
2010-01-05  2:26 ` Minchan Kim
2010-01-05  2:26   ` Minchan Kim

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=20100104182813.815259559@chello.nl \
    --to=a.p.zijlstra@chello.nl \
    --cc=cl@linux-foundation.org \
    --cc=hugh.dickins@tiscali.co.uk \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=mingo@elte.hu \
    --cc=nickpiggin@yahoo.com.au \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=torvalds@linux-foundation.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.