public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Misc x86 cleanups
@ 2016-05-05  2:44 Brian Gerst
  2016-05-05  2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05  2:44 UTC (permalink / raw)
  To: x86, linux-kernel
  Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
	Borislav Petkov

Here are a few cleanups from the recent x86 entry code rewrite.

[PATCH 1/3] x86: Don't save/restore EFLAGS on task switch
[PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code
[PATCH 3/3] x86-32: Remove asmlinkage_protect

 arch/x86/entry/entry_32.S        |  7 -------
 arch/x86/entry/entry_64.S        |  3 ---
 arch/x86/include/asm/linkage.h   | 34 ----------------------------------
 arch/x86/include/asm/switch_to.h |  4 +---
 4 files changed, 1 insertion(+), 47 deletions(-)

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch
  2016-05-05  2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
@ 2016-05-05  2:44 ` Brian Gerst
  2016-05-05  3:27   ` Andy Lutomirski
  2016-05-05  9:36   ` [tip:x86/asm] x86/entry, sched/x86: " tip-bot for Brian Gerst
  2016-05-05  2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
  2016-05-05  2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
  2 siblings, 2 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05  2:44 UTC (permalink / raw)
  To: x86, linux-kernel
  Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
	Borislav Petkov

Now that NT is filtered by the SYSENTER entry code, it is safe to skip saving and
restoring flags on task switch.  Also remove a leftover reset of flags on 64-bit
fork.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
 arch/x86/entry/entry_32.S        | 4 ----
 arch/x86/entry/entry_64.S        | 3 ---
 arch/x86/include/asm/switch_to.h | 4 +---
 3 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 10868aa..c84d99b 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -209,8 +209,6 @@ ENTRY(ret_from_fork)
 	call	schedule_tail
 	GET_THREAD_INFO(%ebp)
 	popl	%eax
-	pushl	$0x0202				# Reset kernel eflags
-	popfl
 
 	/* When we fork, we trace the syscall return in the child, too. */
 	movl    %esp, %eax
@@ -223,8 +221,6 @@ ENTRY(ret_from_kernel_thread)
 	call	schedule_tail
 	GET_THREAD_INFO(%ebp)
 	popl	%eax
-	pushl	$0x0202				# Reset kernel eflags
-	popfl
 	movl	PT_EBP(%esp), %eax
 	call	*PT_EBX(%esp)
 	movl	$0, PT_EAX(%esp)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 6344629..9ee0da1 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -372,9 +372,6 @@ END(ptregs_\func)
 ENTRY(ret_from_fork)
 	LOCK ; btr $TIF_FORK, TI_flags(%r8)
 
-	pushq	$0x0002
-	popfq					/* reset kernel eflags */
-
 	call	schedule_tail			/* rdi: 'prev' task parameter */
 
 	testb	$3, CS(%rsp)			/* from kernel_thread? */
diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
index 751bf4b..8f321a1 100644
--- a/arch/x86/include/asm/switch_to.h
+++ b/arch/x86/include/asm/switch_to.h
@@ -39,8 +39,7 @@ do {									\
 	 */								\
 	unsigned long ebx, ecx, edx, esi, edi;				\
 									\
-	asm volatile("pushfl\n\t"		/* save    flags */	\
-		     "pushl %%ebp\n\t"		/* save    EBP   */	\
+	asm volatile("pushl %%ebp\n\t"		/* save    EBP   */	\
 		     "movl %%esp,%[prev_sp]\n\t"	/* save    ESP   */ \
 		     "movl %[next_sp],%%esp\n\t"	/* restore ESP   */ \
 		     "movl $1f,%[prev_ip]\n\t"	/* save    EIP   */	\
@@ -49,7 +48,6 @@ do {									\
 		     "jmp __switch_to\n"	/* regparm call  */	\
 		     "1:\t"						\
 		     "popl %%ebp\n\t"		/* restore EBP   */	\
-		     "popfl\n"			/* restore flags */	\
 									\
 		     /* output parameters */				\
 		     : [prev_sp] "=m" (prev->thread.sp),		\
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code
  2016-05-05  2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
  2016-05-05  2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
@ 2016-05-05  2:44 ` Brian Gerst
  2016-05-05  3:27   ` Andy Lutomirski
  2016-05-05  9:37   ` [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() " tip-bot for Brian Gerst
  2016-05-05  2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
  2 siblings, 2 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05  2:44 UTC (permalink / raw)
  To: x86, linux-kernel
  Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
	Borislav Petkov

The entry code used to cache the thread_info pointer in the EBP register, but
all the code that used it has been moved to C.  Remove the unused code to
get the pointer.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
 arch/x86/entry/entry_32.S | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index c84d99b..983e5d3 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -207,7 +207,6 @@
 ENTRY(ret_from_fork)
 	pushl	%eax
 	call	schedule_tail
-	GET_THREAD_INFO(%ebp)
 	popl	%eax
 
 	/* When we fork, we trace the syscall return in the child, too. */
@@ -219,7 +218,6 @@ END(ret_from_fork)
 ENTRY(ret_from_kernel_thread)
 	pushl	%eax
 	call	schedule_tail
-	GET_THREAD_INFO(%ebp)
 	popl	%eax
 	movl	PT_EBP(%esp), %eax
 	call	*PT_EBX(%esp)
@@ -247,7 +245,6 @@ ENDPROC(ret_from_kernel_thread)
 ret_from_exception:
 	preempt_stop(CLBR_ANY)
 ret_from_intr:
-	GET_THREAD_INFO(%ebp)
 #ifdef CONFIG_VM86
 	movl	PT_EFLAGS(%esp), %eax		# mix EFLAGS and CS
 	movb	PT_CS(%esp), %al
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] x86-32: Remove asmlinkage_protect
  2016-05-05  2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
  2016-05-05  2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
  2016-05-05  2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
@ 2016-05-05  2:44 ` Brian Gerst
  2016-05-05  3:29   ` Andy Lutomirski
  2016-05-05  9:37   ` [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect() tip-bot for Brian Gerst
  2 siblings, 2 replies; 10+ messages in thread
From: Brian Gerst @ 2016-05-05  2:44 UTC (permalink / raw)
  To: x86, linux-kernel
  Cc: Ingo Molnar, H. Peter Anvin, Denys Vlasenko, Andy Lutomirski,
	Borislav Petkov

Now that syscalls are called from C code, which copies the args to new stack
slots instead of overlaying pt_regs, asmlinkage_protect is no longer needed.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
---
 arch/x86/include/asm/linkage.h | 34 ----------------------------------
 1 file changed, 34 deletions(-)

diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
index 79327e9..0ccb26d 100644
--- a/arch/x86/include/asm/linkage.h
+++ b/arch/x86/include/asm/linkage.h
@@ -8,40 +8,6 @@
 
 #ifdef CONFIG_X86_32
 #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
-
-/*
- * Make sure the compiler doesn't do anything stupid with the
- * arguments on the stack - they are owned by the *caller*, not
- * the callee. This just fools gcc into not spilling into them,
- * and keeps it from doing tailcall recursion and/or using the
- * stack slots for temporaries, since they are live and "used"
- * all the way to the end of the function.
- *
- * NOTE! On x86-64, all the arguments are in registers, so this
- * only matters on a 32-bit kernel.
- */
-#define asmlinkage_protect(n, ret, args...) \
-	__asmlinkage_protect##n(ret, ##args)
-#define __asmlinkage_protect_n(ret, args...) \
-	__asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args)
-#define __asmlinkage_protect0(ret) \
-	__asmlinkage_protect_n(ret)
-#define __asmlinkage_protect1(ret, arg1) \
-	__asmlinkage_protect_n(ret, "m" (arg1))
-#define __asmlinkage_protect2(ret, arg1, arg2) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2))
-#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3))
-#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
-			      "m" (arg4))
-#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
-			      "m" (arg4), "m" (arg5))
-#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
-			      "m" (arg4), "m" (arg5), "m" (arg6))
-
 #endif /* CONFIG_X86_32 */
 
 #ifdef __ASSEMBLY__
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch
  2016-05-05  2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
@ 2016-05-05  3:27   ` Andy Lutomirski
  2016-05-05  9:36   ` [tip:x86/asm] x86/entry, sched/x86: " tip-bot for Brian Gerst
  1 sibling, 0 replies; 10+ messages in thread
From: Andy Lutomirski @ 2016-05-05  3:27 UTC (permalink / raw)
  To: Brian Gerst
  Cc: X86 ML, linux-kernel@vger.kernel.org, Ingo Molnar, H. Peter Anvin,
	Denys Vlasenko, Borislav Petkov

On Wed, May 4, 2016 at 7:44 PM, Brian Gerst <brgerst@gmail.com> wrote:
> Now that NT is filtered by the SYSENTER entry code, it is safe to skip saving and
> restoring flags on task switch.  Also remove a leftover reset of flags on 64-bit
> fork.

Acked-by: Andy Lutomirski <luto@kernel.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code
  2016-05-05  2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
@ 2016-05-05  3:27   ` Andy Lutomirski
  2016-05-05  9:37   ` [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() " tip-bot for Brian Gerst
  1 sibling, 0 replies; 10+ messages in thread
From: Andy Lutomirski @ 2016-05-05  3:27 UTC (permalink / raw)
  To: Brian Gerst
  Cc: X86 ML, linux-kernel@vger.kernel.org, Ingo Molnar, H. Peter Anvin,
	Denys Vlasenko, Borislav Petkov

On Wed, May 4, 2016 at 7:44 PM, Brian Gerst <brgerst@gmail.com> wrote:
> The entry code used to cache the thread_info pointer in the EBP register, but
> all the code that used it has been moved to C.  Remove the unused code to
> get the pointer.

Acked-by: Andy Lutomirski <luto@kernel.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] x86-32: Remove asmlinkage_protect
  2016-05-05  2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
@ 2016-05-05  3:29   ` Andy Lutomirski
  2016-05-05  9:37   ` [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect() tip-bot for Brian Gerst
  1 sibling, 0 replies; 10+ messages in thread
From: Andy Lutomirski @ 2016-05-05  3:29 UTC (permalink / raw)
  To: Brian Gerst
  Cc: X86 ML, linux-kernel@vger.kernel.org, Ingo Molnar, H. Peter Anvin,
	Denys Vlasenko, Borislav Petkov

On Wed, May 4, 2016 at 7:44 PM, Brian Gerst <brgerst@gmail.com> wrote:
> Now that syscalls are called from C code, which copies the args to new stack
> slots instead of overlaying pt_regs, asmlinkage_protect is no longer needed.

Acked-by: Andy Lutomirski <luto@kernel.org>

asmlinkage_protect was pretty gross...

--Andy

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [tip:x86/asm] x86/entry, sched/x86: Don't save/restore EFLAGS on task switch
  2016-05-05  2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
  2016-05-05  3:27   ` Andy Lutomirski
@ 2016-05-05  9:36   ` tip-bot for Brian Gerst
  1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Brian Gerst @ 2016-05-05  9:36 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: linux-kernel, hpa, torvalds, tglx, peterz, bp, luto, luto,
	dvlasenk, bp, brgerst, mingo

Commit-ID:  092c74e420952c7cb68141731f2b562245b51eeb
Gitweb:     http://git.kernel.org/tip/092c74e420952c7cb68141731f2b562245b51eeb
Author:     Brian Gerst <brgerst@gmail.com>
AuthorDate: Wed, 4 May 2016 22:44:36 -0400
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 5 May 2016 08:37:30 +0200

x86/entry, sched/x86: Don't save/restore EFLAGS on task switch

Now that NT is filtered by the SYSENTER entry code, it is safe to skip saving and
restoring flags on task switch.  Also remove a leftover reset of flags on 64-bit
fork.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1462416278-11974-2-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/entry/entry_32.S        | 4 ----
 arch/x86/entry/entry_64.S        | 3 ---
 arch/x86/include/asm/switch_to.h | 4 +---
 3 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index 10868aa..c84d99b 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -209,8 +209,6 @@ ENTRY(ret_from_fork)
 	call	schedule_tail
 	GET_THREAD_INFO(%ebp)
 	popl	%eax
-	pushl	$0x0202				# Reset kernel eflags
-	popfl
 
 	/* When we fork, we trace the syscall return in the child, too. */
 	movl    %esp, %eax
@@ -223,8 +221,6 @@ ENTRY(ret_from_kernel_thread)
 	call	schedule_tail
 	GET_THREAD_INFO(%ebp)
 	popl	%eax
-	pushl	$0x0202				# Reset kernel eflags
-	popfl
 	movl	PT_EBP(%esp), %eax
 	call	*PT_EBX(%esp)
 	movl	$0, PT_EAX(%esp)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 6344629..9ee0da1 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -372,9 +372,6 @@ END(ptregs_\func)
 ENTRY(ret_from_fork)
 	LOCK ; btr $TIF_FORK, TI_flags(%r8)
 
-	pushq	$0x0002
-	popfq					/* reset kernel eflags */
-
 	call	schedule_tail			/* rdi: 'prev' task parameter */
 
 	testb	$3, CS(%rsp)			/* from kernel_thread? */
diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h
index 751bf4b..8f321a1 100644
--- a/arch/x86/include/asm/switch_to.h
+++ b/arch/x86/include/asm/switch_to.h
@@ -39,8 +39,7 @@ do {									\
 	 */								\
 	unsigned long ebx, ecx, edx, esi, edi;				\
 									\
-	asm volatile("pushfl\n\t"		/* save    flags */	\
-		     "pushl %%ebp\n\t"		/* save    EBP   */	\
+	asm volatile("pushl %%ebp\n\t"		/* save    EBP   */	\
 		     "movl %%esp,%[prev_sp]\n\t"	/* save    ESP   */ \
 		     "movl %[next_sp],%%esp\n\t"	/* restore ESP   */ \
 		     "movl $1f,%[prev_ip]\n\t"	/* save    EIP   */	\
@@ -49,7 +48,6 @@ do {									\
 		     "jmp __switch_to\n"	/* regparm call  */	\
 		     "1:\t"						\
 		     "popl %%ebp\n\t"		/* restore EBP   */	\
-		     "popfl\n"			/* restore flags */	\
 									\
 		     /* output parameters */				\
 		     : [prev_sp] "=m" (prev->thread.sp),		\

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() from entry code
  2016-05-05  2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
  2016-05-05  3:27   ` Andy Lutomirski
@ 2016-05-05  9:37   ` tip-bot for Brian Gerst
  1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Brian Gerst @ 2016-05-05  9:37 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: bp, torvalds, tglx, mingo, luto, brgerst, hpa, luto, dvlasenk,
	peterz, bp, linux-kernel

Commit-ID:  1e17880371f85d3d866962e04ba3567c0654a125
Gitweb:     http://git.kernel.org/tip/1e17880371f85d3d866962e04ba3567c0654a125
Author:     Brian Gerst <brgerst@gmail.com>
AuthorDate: Wed, 4 May 2016 22:44:37 -0400
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 5 May 2016 08:37:30 +0200

x86/entry/32: Remove GET_THREAD_INFO() from entry code

The entry code used to cache the thread_info pointer in the EBP register,
but all the code that used it has been moved to C.  Remove the unused
code to get the pointer.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1462416278-11974-3-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/entry/entry_32.S | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
index c84d99b..983e5d3 100644
--- a/arch/x86/entry/entry_32.S
+++ b/arch/x86/entry/entry_32.S
@@ -207,7 +207,6 @@
 ENTRY(ret_from_fork)
 	pushl	%eax
 	call	schedule_tail
-	GET_THREAD_INFO(%ebp)
 	popl	%eax
 
 	/* When we fork, we trace the syscall return in the child, too. */
@@ -219,7 +218,6 @@ END(ret_from_fork)
 ENTRY(ret_from_kernel_thread)
 	pushl	%eax
 	call	schedule_tail
-	GET_THREAD_INFO(%ebp)
 	popl	%eax
 	movl	PT_EBP(%esp), %eax
 	call	*PT_EBX(%esp)
@@ -247,7 +245,6 @@ ENDPROC(ret_from_kernel_thread)
 ret_from_exception:
 	preempt_stop(CLBR_ANY)
 ret_from_intr:
-	GET_THREAD_INFO(%ebp)
 #ifdef CONFIG_VM86
 	movl	PT_EFLAGS(%esp), %eax		# mix EFLAGS and CS
 	movb	PT_CS(%esp), %al

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect()
  2016-05-05  2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
  2016-05-05  3:29   ` Andy Lutomirski
@ 2016-05-05  9:37   ` tip-bot for Brian Gerst
  1 sibling, 0 replies; 10+ messages in thread
From: tip-bot for Brian Gerst @ 2016-05-05  9:37 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: luto, dvlasenk, bp, peterz, linux-kernel, brgerst, luto, bp,
	torvalds, tglx, hpa, mingo

Commit-ID:  0676b4e0a1940a6b7ae3156bd212ca9032a29c30
Gitweb:     http://git.kernel.org/tip/0676b4e0a1940a6b7ae3156bd212ca9032a29c30
Author:     Brian Gerst <brgerst@gmail.com>
AuthorDate: Wed, 4 May 2016 22:44:38 -0400
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 5 May 2016 08:37:31 +0200

x86/entry/32: Remove asmlinkage_protect()

Now that syscalls are called from C code, which copies the args to
new stack slots instead of overlaying pt_regs, asmlinkage_protect()
is no longer needed.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Acked-by: Andy Lutomirski <luto@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@suse.de>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1462416278-11974-4-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/asm/linkage.h | 34 ----------------------------------
 1 file changed, 34 deletions(-)

diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h
index 79327e9..0ccb26d 100644
--- a/arch/x86/include/asm/linkage.h
+++ b/arch/x86/include/asm/linkage.h
@@ -8,40 +8,6 @@
 
 #ifdef CONFIG_X86_32
 #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
-
-/*
- * Make sure the compiler doesn't do anything stupid with the
- * arguments on the stack - they are owned by the *caller*, not
- * the callee. This just fools gcc into not spilling into them,
- * and keeps it from doing tailcall recursion and/or using the
- * stack slots for temporaries, since they are live and "used"
- * all the way to the end of the function.
- *
- * NOTE! On x86-64, all the arguments are in registers, so this
- * only matters on a 32-bit kernel.
- */
-#define asmlinkage_protect(n, ret, args...) \
-	__asmlinkage_protect##n(ret, ##args)
-#define __asmlinkage_protect_n(ret, args...) \
-	__asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args)
-#define __asmlinkage_protect0(ret) \
-	__asmlinkage_protect_n(ret)
-#define __asmlinkage_protect1(ret, arg1) \
-	__asmlinkage_protect_n(ret, "m" (arg1))
-#define __asmlinkage_protect2(ret, arg1, arg2) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2))
-#define __asmlinkage_protect3(ret, arg1, arg2, arg3) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3))
-#define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
-			      "m" (arg4))
-#define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
-			      "m" (arg4), "m" (arg5))
-#define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \
-	__asmlinkage_protect_n(ret, "m" (arg1), "m" (arg2), "m" (arg3), \
-			      "m" (arg4), "m" (arg5), "m" (arg6))
-
 #endif /* CONFIG_X86_32 */
 
 #ifdef __ASSEMBLY__

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-05-05  9:38 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-05  2:44 [PATCH 0/3] Misc x86 cleanups Brian Gerst
2016-05-05  2:44 ` [PATCH 1/3] x86: Don't save/restore EFLAGS on task switch Brian Gerst
2016-05-05  3:27   ` Andy Lutomirski
2016-05-05  9:36   ` [tip:x86/asm] x86/entry, sched/x86: " tip-bot for Brian Gerst
2016-05-05  2:44 ` [PATCH 2/3] x86-32: Remove GET_THREAD_INFO from entry code Brian Gerst
2016-05-05  3:27   ` Andy Lutomirski
2016-05-05  9:37   ` [tip:x86/asm] x86/entry/32: Remove GET_THREAD_INFO() " tip-bot for Brian Gerst
2016-05-05  2:44 ` [PATCH 3/3] x86-32: Remove asmlinkage_protect Brian Gerst
2016-05-05  3:29   ` Andy Lutomirski
2016-05-05  9:37   ` [tip:x86/asm] x86/entry/32: Remove asmlinkage_protect() tip-bot for Brian Gerst

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox