All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
	Linux List Kernel Mailing <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andy Lutomirski <luto@kernel.org>,
	Nicolai Stange <nstange@suse.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	the arch/x86 maintainers <x86@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Jiri Kosina <jikos@kernel.org>, Miroslav Benes <mbenes@suse.cz>,
	Petr Mladek <pmladek@suse.com>,
	Joe Lawrence <joe.lawrence@redhat.com>,
	Shuah Khan <shuah@kernel.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Tim Chen <tim.c.chen@linux.intel.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Mimi Zohar <zohar@linux.ibm.com>, Juergen Gross <jgross@suse.com>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Nayna Jain <nayna@linux.ibm.com>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	Joerg Roedel <jroedel@suse.de>,
	"open list:KERNEL SELFTEST FRAMEWORK" 
	<linux-kselftest@vger.kernel.org>,
	stable <stable@vger.kernel.org>
Subject: Re: [RFC][PATCH 1/2] x86: Allow breakpoints to emulate call functions
Date: Thu, 2 May 2019 20:30:58 +0200	[thread overview]
Message-ID: <20190502183058.GD2650@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20190502181811.GY2623@hirez.programming.kicks-ass.net>

On Thu, May 02, 2019 at 08:18:11PM +0200, Peter Zijlstra wrote:

> ARGH; I knew it was too pretty :/ Yes, something like what you suggest
> will be needed, I'll go look at that once my brain recovers a bit from
> staring at entry code all day.

I forgot I can just run the thing, and it works!


---
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 7b23431be5cb..73b7bca8712f 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -203,7 +203,7 @@
 .Lend_\@:
 .endm
 
-.macro SAVE_ALL pt_regs_ax=%eax switch_stacks=0
+.macro SAVE_ALL pt_regs_ax=%eax switch_stacks=0 clear_csh=1
 	cld
 	PUSH_GS
 	pushl	%fs
@@ -225,7 +225,7 @@
 
 	/* Switch to kernel stack if necessary */
 .if \switch_stacks > 0
-	SWITCH_TO_KERNEL_STACK
+	SWITCH_TO_KERNEL_STACK \clear_csh
 .endif
 
 .endm
@@ -377,8 +377,9 @@
 
 #define CS_FROM_ENTRY_STACK	(1 << 31)
 #define CS_FROM_USER_CR3	(1 << 30)
+#define CS_FROM_INT3		(1 << 29)
 
-.macro SWITCH_TO_KERNEL_STACK
+.macro SWITCH_TO_KERNEL_STACK clear_csh=1
 
 	ALTERNATIVE     "", "jmp .Lend_\@", X86_FEATURE_XENPV
 
@@ -391,12 +392,13 @@
 	 * that register for the time this macro runs
 	 */
 
+	.if \clear_csh
 	/*
-	 * The high bits of the CS dword (__csh) are used for
-	 * CS_FROM_ENTRY_STACK and CS_FROM_USER_CR3. Clear them in case
-	 * hardware didn't do this for us.
+	 * The high bits of the CS dword (__csh) are used for CS_FROM_*. Clear
+	 * them in case hardware didn't do this for us.
 	 */
 	andl	$(0x0000ffff), PT_CS(%esp)
+	.endif
 
 	/* Are we on the entry stack? Bail out if not! */
 	movl	PER_CPU_VAR(cpu_entry_area), %ecx
@@ -1019,6 +1021,40 @@ ENTRY(entry_INT80_32)
 	/* Restore user state */
 	RESTORE_REGS pop=4			# skip orig_eax/error_code
 .Lirq_return:
+	testl $CS_FROM_INT3, 4(%esp)
+	jz .Lno_iret_fixup
+
+	/*
+	 * Undo the magic from ENTRY(int3), in particular consider the case
+	 * where regs->sp has been modified.
+	 *
+	 * Reconstruct the 3 entry IRET frame right after the (modified)
+	 * regs->sp without lowering %esp in between, such that an NMI in the
+	 * middle doesn't scribble our stack.
+	 */
+
+	pushl	%eax
+	pushl	%ecx
+	movl	5*4(%esp), %eax		# (modified) regs->sp
+
+	movl	4*4(%esp), %ecx		# flags
+	movl	%ecx, -4(%eax)
+
+	movl	3*4(%esp), %ecx		# cs
+	andl	$0x0000ffff, %ecx
+	movl	%ecx, -8(%eax)
+
+	movl	2*4(%esp), %ecx		# ip
+	movl	%ecx, -12(%eax)
+
+	movl	1*4(%esp), %ecx		# eax
+	movl	%ecx, -16(%eax)
+
+	popl	%ecx
+	lea	-16(%eax), %esp
+	popl	%eax
+
+.Lno_iret_fixup:
 	/*
 	 * ARCH_HAS_MEMBARRIER_SYNC_CORE rely on IRET core serialization
 	 * when returning from IPI handler and when returning from
@@ -1477,9 +1513,57 @@ END(nmi)
 
 ENTRY(int3)
 	ASM_CLAC
+
+	/*
+	 * The high bits of the CS dword (__csh) are used for CS_FROM_*. Clear
+	 * them in case hardware didn't do this for us.
+	 */
+	andl	$0x0000ffff, 4(%esp)
+
+#ifdef CONFIG_VM86
+	testl	$X86_EFLAGS_VM, 8(%esp)
+	jnz	.Lfrom_usermode_no_gap
+#endif
+	testl	$SEGMENT_RPL_MASK, 4(%esp)
+	jnz	.Lfrom_usermode_no_gap
+
+	/*
+	 * Here from kernel mode; so the (exception) stack looks like:
+	 *
+	 * 12(esp) - <previous context>
+	 *  8(esp) - flags
+	 *  4(esp) - cs
+	 *  0(esp) - ip
+	 *
+	 * Lets build a 5 entry IRET frame after that, such that struct pt_regs
+	 * is complete and in particular regs->sp is correct. This gives us
+	 * the original 3 enties as gap:
+	 *
+	 * 32(esp) - <previous context>
+	 * 28(esp) - orig_flags / gap
+	 * 24(esp) - orig_cs	/ gap
+	 * 20(esp) - orig_ip	/ gap
+	 * 16(esp) - ss
+	 * 12(esp) - sp
+	 *  8(esp) - flags
+	 *  4(esp) - cs
+	 *  0(esp) - ip
+	 */
+	pushl	%ss	  # ss
+	pushl	%esp      # sp (points at ss)
+	pushl	4*4(%esp) # flags
+	pushl	4*4(%esp) # cs
+	pushl	4*4(%esp) # ip
+
+	add	$16, 12(%esp) # point sp back at the previous context
+
+	orl	$CS_FROM_INT3, 4(%esp) # mark magic IRET
+
+.Lfrom_usermode_no_gap:
+
 	pushl	$-1				# mark this as an int
 
-	SAVE_ALL switch_stacks=1
+	SAVE_ALL switch_stacks=1 clear_csh=0
 	ENCODE_FRAME_POINTER
 	TRACE_IRQS_OFF
 	xorl	%edx, %edx			# zero error code


WARNING: multiple messages have this Message-ID (diff)
From: peterz at infradead.org (Peter Zijlstra)
Subject: [RFC][PATCH 1/2] x86: Allow breakpoints to emulate call functions
Date: Thu, 2 May 2019 20:30:58 +0200	[thread overview]
Message-ID: <20190502183058.GD2650@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20190502181811.GY2623@hirez.programming.kicks-ass.net>

On Thu, May 02, 2019 at 08:18:11PM +0200, Peter Zijlstra wrote:

> ARGH; I knew it was too pretty :/ Yes, something like what you suggest
> will be needed, I'll go look at that once my brain recovers a bit from
> staring at entry code all day.

I forgot I can just run the thing, and it works!


---
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 7b23431be5cb..73b7bca8712f 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -203,7 +203,7 @@
 .Lend_\@:
 .endm
 
-.macro SAVE_ALL pt_regs_ax=%eax switch_stacks=0
+.macro SAVE_ALL pt_regs_ax=%eax switch_stacks=0 clear_csh=1
 	cld
 	PUSH_GS
 	pushl	%fs
@@ -225,7 +225,7 @@
 
 	/* Switch to kernel stack if necessary */
 .if \switch_stacks > 0
-	SWITCH_TO_KERNEL_STACK
+	SWITCH_TO_KERNEL_STACK \clear_csh
 .endif
 
 .endm
@@ -377,8 +377,9 @@
 
 #define CS_FROM_ENTRY_STACK	(1 << 31)
 #define CS_FROM_USER_CR3	(1 << 30)
+#define CS_FROM_INT3		(1 << 29)
 
-.macro SWITCH_TO_KERNEL_STACK
+.macro SWITCH_TO_KERNEL_STACK clear_csh=1
 
 	ALTERNATIVE     "", "jmp .Lend_\@", X86_FEATURE_XENPV
 
@@ -391,12 +392,13 @@
 	 * that register for the time this macro runs
 	 */
 
+	.if \clear_csh
 	/*
-	 * The high bits of the CS dword (__csh) are used for
-	 * CS_FROM_ENTRY_STACK and CS_FROM_USER_CR3. Clear them in case
-	 * hardware didn't do this for us.
+	 * The high bits of the CS dword (__csh) are used for CS_FROM_*. Clear
+	 * them in case hardware didn't do this for us.
 	 */
 	andl	$(0x0000ffff), PT_CS(%esp)
+	.endif
 
 	/* Are we on the entry stack? Bail out if not! */
 	movl	PER_CPU_VAR(cpu_entry_area), %ecx
@@ -1019,6 +1021,40 @@ ENTRY(entry_INT80_32)
 	/* Restore user state */
 	RESTORE_REGS pop=4			# skip orig_eax/error_code
 .Lirq_return:
+	testl $CS_FROM_INT3, 4(%esp)
+	jz .Lno_iret_fixup
+
+	/*
+	 * Undo the magic from ENTRY(int3), in particular consider the case
+	 * where regs->sp has been modified.
+	 *
+	 * Reconstruct the 3 entry IRET frame right after the (modified)
+	 * regs->sp without lowering %esp in between, such that an NMI in the
+	 * middle doesn't scribble our stack.
+	 */
+
+	pushl	%eax
+	pushl	%ecx
+	movl	5*4(%esp), %eax		# (modified) regs->sp
+
+	movl	4*4(%esp), %ecx		# flags
+	movl	%ecx, -4(%eax)
+
+	movl	3*4(%esp), %ecx		# cs
+	andl	$0x0000ffff, %ecx
+	movl	%ecx, -8(%eax)
+
+	movl	2*4(%esp), %ecx		# ip
+	movl	%ecx, -12(%eax)
+
+	movl	1*4(%esp), %ecx		# eax
+	movl	%ecx, -16(%eax)
+
+	popl	%ecx
+	lea	-16(%eax), %esp
+	popl	%eax
+
+.Lno_iret_fixup:
 	/*
 	 * ARCH_HAS_MEMBARRIER_SYNC_CORE rely on IRET core serialization
 	 * when returning from IPI handler and when returning from
@@ -1477,9 +1513,57 @@ END(nmi)
 
 ENTRY(int3)
 	ASM_CLAC
+
+	/*
+	 * The high bits of the CS dword (__csh) are used for CS_FROM_*. Clear
+	 * them in case hardware didn't do this for us.
+	 */
+	andl	$0x0000ffff, 4(%esp)
+
+#ifdef CONFIG_VM86
+	testl	$X86_EFLAGS_VM, 8(%esp)
+	jnz	.Lfrom_usermode_no_gap
+#endif
+	testl	$SEGMENT_RPL_MASK, 4(%esp)
+	jnz	.Lfrom_usermode_no_gap
+
+	/*
+	 * Here from kernel mode; so the (exception) stack looks like:
+	 *
+	 * 12(esp) - <previous context>
+	 *  8(esp) - flags
+	 *  4(esp) - cs
+	 *  0(esp) - ip
+	 *
+	 * Lets build a 5 entry IRET frame after that, such that struct pt_regs
+	 * is complete and in particular regs->sp is correct. This gives us
+	 * the original 3 enties as gap:
+	 *
+	 * 32(esp) - <previous context>
+	 * 28(esp) - orig_flags / gap
+	 * 24(esp) - orig_cs	/ gap
+	 * 20(esp) - orig_ip	/ gap
+	 * 16(esp) - ss
+	 * 12(esp) - sp
+	 *  8(esp) - flags
+	 *  4(esp) - cs
+	 *  0(esp) - ip
+	 */
+	pushl	%ss	  # ss
+	pushl	%esp      # sp (points at ss)
+	pushl	4*4(%esp) # flags
+	pushl	4*4(%esp) # cs
+	pushl	4*4(%esp) # ip
+
+	add	$16, 12(%esp) # point sp back at the previous context
+
+	orl	$CS_FROM_INT3, 4(%esp) # mark magic IRET
+
+.Lfrom_usermode_no_gap:
+
 	pushl	$-1				# mark this as an int
 
-	SAVE_ALL switch_stacks=1
+	SAVE_ALL switch_stacks=1 clear_csh=0
 	ENCODE_FRAME_POINTER
 	TRACE_IRQS_OFF
 	xorl	%edx, %edx			# zero error code

WARNING: multiple messages have this Message-ID (diff)
From: peterz@infradead.org (Peter Zijlstra)
Subject: [RFC][PATCH 1/2] x86: Allow breakpoints to emulate call functions
Date: Thu, 2 May 2019 20:30:58 +0200	[thread overview]
Message-ID: <20190502183058.GD2650@hirez.programming.kicks-ass.net> (raw)
Message-ID: <20190502183058.eNW6AjY2JtwiF7p6hUwi50y5yHmAmu8opk3r9tEGTqA@z> (raw)
In-Reply-To: <20190502181811.GY2623@hirez.programming.kicks-ass.net>

On Thu, May 02, 2019@08:18:11PM +0200, Peter Zijlstra wrote:

> ARGH; I knew it was too pretty :/ Yes, something like what you suggest
> will be needed, I'll go look at that once my brain recovers a bit from
> staring at entry code all day.

I forgot I can just run the thing, and it works!


---
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 7b23431be5cb..73b7bca8712f 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -203,7 +203,7 @@
 .Lend_\@:
 .endm
 
-.macro SAVE_ALL pt_regs_ax=%eax switch_stacks=0
+.macro SAVE_ALL pt_regs_ax=%eax switch_stacks=0 clear_csh=1
 	cld
 	PUSH_GS
 	pushl	%fs
@@ -225,7 +225,7 @@
 
 	/* Switch to kernel stack if necessary */
 .if \switch_stacks > 0
-	SWITCH_TO_KERNEL_STACK
+	SWITCH_TO_KERNEL_STACK \clear_csh
 .endif
 
 .endm
@@ -377,8 +377,9 @@
 
 #define CS_FROM_ENTRY_STACK	(1 << 31)
 #define CS_FROM_USER_CR3	(1 << 30)
+#define CS_FROM_INT3		(1 << 29)
 
-.macro SWITCH_TO_KERNEL_STACK
+.macro SWITCH_TO_KERNEL_STACK clear_csh=1
 
 	ALTERNATIVE     "", "jmp .Lend_\@", X86_FEATURE_XENPV
 
@@ -391,12 +392,13 @@
 	 * that register for the time this macro runs
 	 */
 
+	.if \clear_csh
 	/*
-	 * The high bits of the CS dword (__csh) are used for
-	 * CS_FROM_ENTRY_STACK and CS_FROM_USER_CR3. Clear them in case
-	 * hardware didn't do this for us.
+	 * The high bits of the CS dword (__csh) are used for CS_FROM_*. Clear
+	 * them in case hardware didn't do this for us.
 	 */
 	andl	$(0x0000ffff), PT_CS(%esp)
+	.endif
 
 	/* Are we on the entry stack? Bail out if not! */
 	movl	PER_CPU_VAR(cpu_entry_area), %ecx
@@ -1019,6 +1021,40 @@ ENTRY(entry_INT80_32)
 	/* Restore user state */
 	RESTORE_REGS pop=4			# skip orig_eax/error_code
 .Lirq_return:
+	testl $CS_FROM_INT3, 4(%esp)
+	jz .Lno_iret_fixup
+
+	/*
+	 * Undo the magic from ENTRY(int3), in particular consider the case
+	 * where regs->sp has been modified.
+	 *
+	 * Reconstruct the 3 entry IRET frame right after the (modified)
+	 * regs->sp without lowering %esp in between, such that an NMI in the
+	 * middle doesn't scribble our stack.
+	 */
+
+	pushl	%eax
+	pushl	%ecx
+	movl	5*4(%esp), %eax		# (modified) regs->sp
+
+	movl	4*4(%esp), %ecx		# flags
+	movl	%ecx, -4(%eax)
+
+	movl	3*4(%esp), %ecx		# cs
+	andl	$0x0000ffff, %ecx
+	movl	%ecx, -8(%eax)
+
+	movl	2*4(%esp), %ecx		# ip
+	movl	%ecx, -12(%eax)
+
+	movl	1*4(%esp), %ecx		# eax
+	movl	%ecx, -16(%eax)
+
+	popl	%ecx
+	lea	-16(%eax), %esp
+	popl	%eax
+
+.Lno_iret_fixup:
 	/*
 	 * ARCH_HAS_MEMBARRIER_SYNC_CORE rely on IRET core serialization
 	 * when returning from IPI handler and when returning from
@@ -1477,9 +1513,57 @@ END(nmi)
 
 ENTRY(int3)
 	ASM_CLAC
+
+	/*
+	 * The high bits of the CS dword (__csh) are used for CS_FROM_*. Clear
+	 * them in case hardware didn't do this for us.
+	 */
+	andl	$0x0000ffff, 4(%esp)
+
+#ifdef CONFIG_VM86
+	testl	$X86_EFLAGS_VM, 8(%esp)
+	jnz	.Lfrom_usermode_no_gap
+#endif
+	testl	$SEGMENT_RPL_MASK, 4(%esp)
+	jnz	.Lfrom_usermode_no_gap
+
+	/*
+	 * Here from kernel mode; so the (exception) stack looks like:
+	 *
+	 * 12(esp) - <previous context>
+	 *  8(esp) - flags
+	 *  4(esp) - cs
+	 *  0(esp) - ip
+	 *
+	 * Lets build a 5 entry IRET frame after that, such that struct pt_regs
+	 * is complete and in particular regs->sp is correct. This gives us
+	 * the original 3 enties as gap:
+	 *
+	 * 32(esp) - <previous context>
+	 * 28(esp) - orig_flags / gap
+	 * 24(esp) - orig_cs	/ gap
+	 * 20(esp) - orig_ip	/ gap
+	 * 16(esp) - ss
+	 * 12(esp) - sp
+	 *  8(esp) - flags
+	 *  4(esp) - cs
+	 *  0(esp) - ip
+	 */
+	pushl	%ss	  # ss
+	pushl	%esp      # sp (points at ss)
+	pushl	4*4(%esp) # flags
+	pushl	4*4(%esp) # cs
+	pushl	4*4(%esp) # ip
+
+	add	$16, 12(%esp) # point sp back at the previous context
+
+	orl	$CS_FROM_INT3, 4(%esp) # mark magic IRET
+
+.Lfrom_usermode_no_gap:
+
 	pushl	$-1				# mark this as an int
 
-	SAVE_ALL switch_stacks=1
+	SAVE_ALL switch_stacks=1 clear_csh=0
 	ENCODE_FRAME_POINTER
 	TRACE_IRQS_OFF
 	xorl	%edx, %edx			# zero error code

  reply	other threads:[~2019-05-02 18:32 UTC|newest]

Thread overview: 307+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-01 20:28 [RFC][PATCH 0/2] ftrace/x86: Allow for breakpoint handlers to emulate call functions Steven Rostedt
2019-05-01 20:28 ` [RFC][PATCH 1/2] x86: Allow breakpoints " Steven Rostedt
2019-05-01 20:28   ` Steven Rostedt
2019-05-01 20:28   ` rostedt
2019-05-02  3:24   ` Steven Rostedt
2019-05-02  3:24     ` Steven Rostedt
2019-05-02  3:24     ` rostedt
2019-05-02 16:21     ` Peter Zijlstra
2019-05-02 16:21       ` Peter Zijlstra
2019-05-02 16:21       ` peterz
2019-05-02 16:29       ` Peter Zijlstra
2019-05-02 16:29         ` Peter Zijlstra
2019-05-02 16:29         ` peterz
2019-05-02 18:02       ` Linus Torvalds
2019-05-02 18:02         ` Linus Torvalds
2019-05-02 18:02         ` torvalds
2019-05-02 18:18         ` Peter Zijlstra
2019-05-02 18:18           ` Peter Zijlstra
2019-05-02 18:18           ` peterz
2019-05-02 18:30           ` Peter Zijlstra [this message]
2019-05-02 18:30             ` Peter Zijlstra
2019-05-02 18:30             ` peterz
2019-05-02 18:43           ` Linus Torvalds
2019-05-02 18:43             ` Linus Torvalds
2019-05-02 18:43             ` torvalds
2019-05-02 19:28             ` Jiri Kosina
2019-05-02 19:28               ` Jiri Kosina
2019-05-02 19:28               ` jikos
2019-05-02 20:25               ` Andy Lutomirski
2019-05-02 20:25                 ` Andy Lutomirski
2019-05-02 20:25                 ` luto
2019-05-02 20:21             ` Peter Zijlstra
2019-05-02 20:21               ` Peter Zijlstra
2019-05-02 20:21               ` peterz
2019-05-02 20:49               ` Linus Torvalds
2019-05-02 20:49                 ` Linus Torvalds
2019-05-02 20:49                 ` torvalds
2019-05-02 21:32                 ` Peter Zijlstra
2019-05-02 21:32                   ` Peter Zijlstra
2019-05-02 21:32                   ` peterz
2019-05-03 19:24                 ` Steven Rostedt
2019-05-03 19:24                   ` Steven Rostedt
2019-05-03 19:24                   ` rostedt
2019-05-03 21:46                   ` Linus Torvalds
2019-05-03 21:46                     ` Linus Torvalds
2019-05-03 21:46                     ` torvalds
2019-05-03 22:49                     ` Steven Rostedt
2019-05-03 22:49                       ` Steven Rostedt
2019-05-03 22:49                       ` rostedt
2019-05-03 23:07                       ` Linus Torvalds
2019-05-03 23:07                         ` Linus Torvalds
2019-05-03 23:07                         ` torvalds
2019-05-04  4:17                         ` Steven Rostedt
2019-05-04  4:17                           ` Steven Rostedt
2019-05-04  4:17                           ` rostedt
     [not found]                           ` <CAHk-=wiuSFbv_rELND-BLWcP0GSZ0yF=xOAEcf61GE3bU9d=yg@mail.gmail.com>
2019-05-04 18:59                             ` Linus Torvalds
2019-05-04 18:59                               ` Linus Torvalds
2019-05-04 18:59                               ` torvalds
2019-05-04 20:12                               ` Andy Lutomirski
2019-05-04 20:12                                 ` Andy Lutomirski
2019-05-04 20:12                                 ` luto
2019-05-04 20:28                                 ` Linus Torvalds
2019-05-04 20:28                                   ` Linus Torvalds
2019-05-04 20:28                                   ` torvalds
2019-05-04 20:36                                 ` Linus Torvalds
2019-05-04 20:36                                   ` Linus Torvalds
2019-05-04 20:36                                   ` torvalds
2019-05-03 22:55                     ` Andy Lutomirski
2019-05-03 22:55                       ` Andy Lutomirski
2019-05-03 22:55                       ` luto
2019-05-03 23:16                       ` Linus Torvalds
2019-05-03 23:16                         ` Linus Torvalds
2019-05-03 23:16                         ` torvalds
2019-05-03 23:32                         ` Andy Lutomirski
2019-05-03 23:32                           ` Andy Lutomirski
2019-05-03 23:32                           ` luto
2019-05-02 22:52               ` Steven Rostedt
2019-05-02 22:52                 ` Steven Rostedt
2019-05-02 22:52                 ` rostedt
2019-05-02 23:31                 ` Steven Rostedt
2019-05-02 23:31                   ` Steven Rostedt
2019-05-02 23:31                   ` rostedt
2019-05-02 23:50                   ` Steven Rostedt
2019-05-02 23:50                     ` Steven Rostedt
2019-05-02 23:50                     ` rostedt
2019-05-03  1:51                     ` [RFC][PATCH 1/2 v2] " Steven Rostedt
2019-05-03  1:51                       ` Steven Rostedt
2019-05-03  1:51                       ` rostedt
2019-05-03  9:29                     ` [RFC][PATCH 1/2] " Peter Zijlstra
2019-05-03  9:29                       ` Peter Zijlstra
2019-05-03  9:29                       ` peterz
2019-05-03 13:22                       ` Steven Rostedt
2019-05-03 13:22                         ` Steven Rostedt
2019-05-03 13:22                         ` rostedt
2019-05-03 16:20                         ` Andy Lutomirski
2019-05-03 16:20                           ` Andy Lutomirski
2019-05-03 16:20                           ` luto
2019-05-03 16:31                           ` Steven Rostedt
2019-05-03 16:31                             ` Steven Rostedt
2019-05-03 16:31                             ` rostedt
2019-05-03 16:35                             ` Peter Zijlstra
2019-05-03 16:35                               ` Peter Zijlstra
2019-05-03 16:35                               ` peterz
2019-05-03 16:44                               ` Andy Lutomirski
2019-05-03 16:44                                 ` Andy Lutomirski
2019-05-03 16:44                                 ` luto
2019-05-03 16:49                                 ` Steven Rostedt
2019-05-03 16:49                                   ` Steven Rostedt
2019-05-03 16:49                                   ` rostedt
2019-05-03 16:32                           ` Peter Zijlstra
2019-05-03 16:32                             ` Peter Zijlstra
2019-05-03 16:32                             ` peterz
2019-05-03 18:57                           ` Linus Torvalds
2019-05-03 18:57                             ` Linus Torvalds
2019-05-03 18:57                             ` torvalds
2019-05-06  8:19                             ` Peter Zijlstra
2019-05-06  8:19                               ` Peter Zijlstra
2019-05-06  8:19                               ` peterz
2019-05-06 13:56                               ` Steven Rostedt
2019-05-06 13:56                                 ` Steven Rostedt
2019-05-06 13:56                                 ` rostedt
2019-05-06 16:17                                 ` Linus Torvalds
2019-05-06 16:17                                   ` Linus Torvalds
2019-05-06 16:17                                   ` torvalds
2019-05-06 16:19                                   ` Linus Torvalds
2019-05-06 16:19                                     ` Linus Torvalds
2019-05-06 16:19                                     ` torvalds
2019-05-06 17:06                                   ` Steven Rostedt
2019-05-06 17:06                                     ` Steven Rostedt
2019-05-06 17:06                                     ` rostedt
2019-05-06 18:06                                     ` Linus Torvalds
2019-05-06 18:06                                       ` Linus Torvalds
2019-05-06 18:06                                       ` torvalds
2019-05-06 18:57                                       ` Steven Rostedt
2019-05-06 18:57                                         ` Steven Rostedt
2019-05-06 18:57                                         ` rostedt
2019-05-06 19:46                                         ` Linus Torvalds
2019-05-06 19:46                                           ` Linus Torvalds
2019-05-06 19:46                                           ` torvalds
2019-05-06 20:29                                           ` Steven Rostedt
2019-05-06 20:29                                             ` Steven Rostedt
2019-05-06 20:29                                             ` rostedt
2019-05-06 20:42                                             ` Linus Torvalds
2019-05-06 20:42                                               ` Linus Torvalds
2019-05-06 20:42                                               ` torvalds
2019-05-06 20:44                                               ` Linus Torvalds
2019-05-06 20:44                                                 ` Linus Torvalds
2019-05-06 20:44                                                 ` torvalds
2019-05-06 21:45                                               ` Steven Rostedt
2019-05-06 21:45                                                 ` Steven Rostedt
2019-05-06 21:45                                                 ` rostedt
2019-05-06 22:06                                                 ` Linus Torvalds
2019-05-06 22:06                                                   ` Linus Torvalds
2019-05-06 22:06                                                   ` torvalds
2019-05-06 22:31                                                   ` Linus Torvalds
2019-05-06 22:31                                                     ` Linus Torvalds
2019-05-06 22:31                                                     ` torvalds
2019-05-07  0:10                                                     ` Steven Rostedt
2019-05-07  0:10                                                       ` Steven Rostedt
2019-05-07  0:10                                                       ` rostedt
2019-05-07  1:06                                                       ` Linus Torvalds
2019-05-07  1:06                                                         ` Linus Torvalds
2019-05-07  1:06                                                         ` torvalds
2019-05-07  1:04                                                   ` Steven Rostedt
2019-05-07  1:04                                                     ` Steven Rostedt
2019-05-07  1:04                                                     ` rostedt
2019-05-07  1:34                                                     ` Steven Rostedt
2019-05-07  1:34                                                       ` Steven Rostedt
2019-05-07  1:34                                                       ` rostedt
2019-05-07  1:34                                                     ` Linus Torvalds
2019-05-07  1:34                                                       ` Linus Torvalds
2019-05-07  1:34                                                       ` torvalds
2019-05-07  1:53                                                       ` Steven Rostedt
2019-05-07  1:53                                                         ` Steven Rostedt
2019-05-07  1:53                                                         ` rostedt
2019-05-07  2:22                                                         ` Linus Torvalds
2019-05-07  2:22                                                           ` Linus Torvalds
2019-05-07  2:22                                                           ` torvalds
2019-05-07  2:58                                                           ` Steven Rostedt
2019-05-07  2:58                                                             ` Steven Rostedt
2019-05-07  2:58                                                             ` rostedt
2019-05-07  3:05                                                             ` Linus Torvalds
2019-05-07  3:05                                                               ` Linus Torvalds
2019-05-07  3:05                                                               ` torvalds
2019-05-07  3:21                                                               ` Steven Rostedt
2019-05-07  3:21                                                                 ` Steven Rostedt
2019-05-07  3:21                                                                 ` rostedt
2019-05-07  3:28                                                                 ` Linus Torvalds
2019-05-07  3:28                                                                   ` Linus Torvalds
2019-05-07  3:28                                                                   ` torvalds
2019-05-07 14:54                                                                   ` Linus Torvalds
2019-05-07 14:54                                                                     ` Linus Torvalds
2019-05-07 14:54                                                                     ` torvalds
2019-05-07 15:12                                                                     ` Steven Rostedt
2019-05-07 15:12                                                                       ` Steven Rostedt
2019-05-07 15:12                                                                       ` rostedt
2019-05-07 15:25                                                                       ` Steven Rostedt
2019-05-07 15:25                                                                         ` Steven Rostedt
2019-05-07 15:25                                                                         ` rostedt
2019-05-07 16:25                                                                         ` Steven Rostedt
2019-05-07 16:25                                                                           ` Steven Rostedt
2019-05-07 16:25                                                                           ` rostedt
2019-05-07 15:31                                                                       ` Linus Torvalds
2019-05-07 15:31                                                                         ` Linus Torvalds
2019-05-07 15:31                                                                         ` torvalds
2019-05-07 15:45                                                                         ` Steven Rostedt
2019-05-07 15:45                                                                           ` Steven Rostedt
2019-05-07 15:45                                                                           ` rostedt
2019-05-07 16:34                                                                         ` Peter Zijlstra
2019-05-07 16:34                                                                           ` Peter Zijlstra
2019-05-07 16:34                                                                           ` peterz
2019-05-07 17:08                                                                           ` Linus Torvalds
2019-05-07 17:08                                                                             ` Linus Torvalds
2019-05-07 17:08                                                                             ` torvalds
2019-05-07 17:21                                                                             ` Josh Poimboeuf
2019-05-07 17:21                                                                               ` Josh Poimboeuf
2019-05-07 17:21                                                                               ` jpoimboe
2019-05-07 21:24                                                                               ` Steven Rostedt
2019-05-07 21:24                                                                                 ` Steven Rostedt
2019-05-07 21:24                                                                                 ` rostedt
2019-05-08  4:50                                                                                 ` Linus Torvalds
2019-05-08  4:50                                                                                   ` Linus Torvalds
2019-05-08  4:50                                                                                   ` torvalds
2019-05-08 16:37                                                                                   ` Steven Rostedt
2019-05-08 16:37                                                                                     ` Steven Rostedt
2019-05-08 16:37                                                                                     ` rostedt
2019-05-07 17:38                                                                             ` Peter Zijlstra
2019-05-07 17:38                                                                               ` Peter Zijlstra
2019-05-07 17:38                                                                               ` peterz
2019-05-07  9:51                                                           ` Peter Zijlstra
2019-05-07  9:51                                                             ` Peter Zijlstra
2019-05-07  9:51                                                             ` peterz
2019-05-07 14:48                                                           ` Andy Lutomirski
2019-05-07 14:48                                                             ` Andy Lutomirski
2019-05-07 14:48                                                             ` luto
2019-05-07 14:57                                                             ` Linus Torvalds
2019-05-07 14:57                                                               ` Linus Torvalds
2019-05-07 14:57                                                               ` torvalds
2019-05-07 14:13                                                 ` Masami Hiramatsu
2019-05-07 14:13                                                   ` Masami Hiramatsu
2019-05-07 14:13                                                   ` mhiramat
2019-05-07 17:15                                                   ` Masami Hiramatsu
2019-05-07 17:15                                                     ` Masami Hiramatsu
2019-05-07 17:15                                                     ` mhiramat
2019-05-06 14:22                               ` Peter Zijlstra
2019-05-06 14:22                                 ` Peter Zijlstra
2019-05-06 14:22                                 ` peterz
2019-05-07  8:57                               ` Peter Zijlstra
2019-05-07  8:57                                 ` Peter Zijlstra
2019-05-07  8:57                                 ` peterz
2019-05-07  9:18                                 ` David Laight
2019-05-07  9:18                                   ` David Laight
2019-05-07  9:18                                   ` David.Laight
2019-05-07 11:30                                   ` Peter Zijlstra
2019-05-07 11:30                                     ` Peter Zijlstra
2019-05-07 11:30                                     ` peterz
2019-05-07 12:57                                     ` David Laight
2019-05-07 12:57                                       ` David Laight
2019-05-07 12:57                                       ` David.Laight
2019-05-07 13:14                                       ` Steven Rostedt
2019-05-07 13:14                                         ` Steven Rostedt
2019-05-07 13:14                                         ` rostedt
2019-05-07 14:50                                         ` David Laight
2019-05-07 14:50                                           ` David Laight
2019-05-07 14:50                                           ` David.Laight
2019-05-07 14:57                                           ` Steven Rostedt
2019-05-07 14:57                                             ` Steven Rostedt
2019-05-07 14:57                                             ` rostedt
2019-05-07 15:46                                             ` David Laight
2019-05-07 15:46                                               ` David Laight
2019-05-07 15:46                                               ` David.Laight
2019-05-07 13:32                                       ` Peter Zijlstra
2019-05-07 13:32                                         ` Peter Zijlstra
2019-05-07 13:32                                         ` peterz
2019-05-07  9:27                                 ` Peter Zijlstra
2019-05-07  9:27                                   ` Peter Zijlstra
2019-05-07  9:27                                   ` peterz
2019-05-07 12:27                                   ` Steven Rostedt
2019-05-07 12:27                                     ` Steven Rostedt
2019-05-07 12:27                                     ` rostedt
2019-05-07 12:41                                     ` Peter Zijlstra
2019-05-07 12:41                                       ` Peter Zijlstra
2019-05-07 12:41                                       ` peterz
2019-05-07 12:54                                       ` Steven Rostedt
2019-05-07 12:54                                         ` Steven Rostedt
2019-05-07 12:54                                         ` rostedt
2019-05-07 17:22                                         ` Masami Hiramatsu
2019-05-07 17:22                                           ` Masami Hiramatsu
2019-05-07 17:22                                           ` masami.hiramatsu
2019-05-07 14:28                                 ` Peter Zijlstra
2019-05-07 14:28                                   ` Peter Zijlstra
2019-05-07 14:28                                   ` peterz
2019-05-02 20:48         ` Steven Rostedt
2019-05-02 20:48           ` Steven Rostedt
2019-05-02 20:48           ` rostedt
2019-05-06 15:14         ` Josh Poimboeuf
2019-05-06 15:14           ` Josh Poimboeuf
2019-05-06 15:14           ` jpoimboe
2019-05-01 20:28 ` [RFC][PATCH 2/2] ftrace/x86: Emulate call function while updating in breakpoint handler Steven Rostedt
2019-05-01 20:28   ` Steven Rostedt
2019-05-01 20:28   ` rostedt
2019-05-03 10:22 ` [RFC][PATCH 1.5/2] x86: Add int3_emulate_call() selftest Peter Zijlstra
2019-05-03 10:22   ` Peter Zijlstra
2019-05-03 10:22   ` peterz
2019-05-03 18:46   ` Steven Rostedt
2019-05-03 18:46     ` Steven Rostedt
2019-05-03 18:46     ` rostedt

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=20190502183058.GD2650@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=bigeasy@linutronix.de \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=jgross@suse.com \
    --cc=jikos@kernel.org \
    --cc=joe.lawrence@redhat.com \
    --cc=jpoimboe@redhat.com \
    --cc=jroedel@suse.de \
    --cc=konrad.wilk@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mbenes@suse.cz \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=nayna@linux.ibm.com \
    --cc=ndesaulniers@google.com \
    --cc=nstange@suse.de \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=shuah@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tim.c.chen@linux.intel.com \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    --cc=yamada.masahiro@socionext.com \
    --cc=zohar@linux.ibm.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 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.