All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user
@ 2015-04-01 14:50 Denys Vlasenko
  2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Denys Vlasenko @ 2015-04-01 14:50 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Denys Vlasenko, Linus Torvalds, Steven Rostedt, Borislav Petkov,
	H. Peter Anvin, Andy Lutomirski, Oleg Nesterov,
	Frederic Weisbecker, Alexei Starovoitov, Will Drewry, Kees Cook,
	x86, linux-kernel

No code changes.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Acked-by: Borislav Petkov <bp@suse.de>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@kernel.org>
CC: Borislav Petkov <bp@alien8.de>
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: Andy Lutomirski <luto@amacapital.net>
CC: Oleg Nesterov <oleg@redhat.com>
CC: Frederic Weisbecker <fweisbec@gmail.com>
CC: Alexei Starovoitov <ast@plumgrid.com>
CC: Will Drewry <wad@chromium.org>
CC: Kees Cook <keescook@chromium.org>
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
---

Changes since v1: added comments as requested by Steven Rostedt

 arch/x86/kernel/entry_64.S | 28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index e498542..175393d 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -1355,19 +1355,7 @@ ENTRY(error_exit)
 	CFI_ENDPROC
 END(error_exit)
 
-/*
- * Test if a given stack is an NMI stack or not.
- */
-	.macro test_in_nmi reg stack nmi_ret normal_ret
-	cmpq %\reg, \stack
-	ja \normal_ret
-	subq $EXCEPTION_STKSZ, %\reg
-	cmpq %\reg, \stack
-	jb \normal_ret
-	jmp \nmi_ret
-	.endm
-
-	/* runs on exception stack */
+/* Runs on exception stack */
 ENTRY(nmi)
 	INTR_FRAME
 	PARAVIRT_ADJUST_EXCEPTION_FRAME
@@ -1428,8 +1416,18 @@ ENTRY(nmi)
 	 * We check the variable because the first NMI could be in a
 	 * breakpoint routine using a breakpoint stack.
 	 */
-	lea 6*8(%rsp), %rdx
-	test_in_nmi rdx, 4*8(%rsp), nested_nmi, first_nmi
+	lea	6*8(%rsp), %rdx
+	/* Compare the NMI stack (rdx) with the stack we came from (4*8(%rsp)) */
+	cmpq	%rdx, 4*8(%rsp)
+	/* If the stack pointer is above the NMI stack, this is a normal NMI */
+	ja	first_nmi
+	subq	$EXCEPTION_STKSZ, %rdx
+	cmpq	%rdx, 4*8(%rsp)
+	/* If it is below the NMI stack, it is a normal NMI */
+	jb	first_nmi
+	/* Ah, it is within the NMI stack, treat it as nested */
+	jmp	nested_nmi
+
 	CFI_REMEMBER_STATE
 
 nested_nmi:
-- 
1.8.1.4


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

* [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20
  2015-04-01 14:50 [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Denys Vlasenko
@ 2015-04-01 14:50 ` Denys Vlasenko
  2015-04-01 16:46   ` Borislav Petkov
                     ` (2 more replies)
  2015-04-01 15:45 ` [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Steven Rostedt
  2015-04-02 12:33 ` [tip:x86/asm] x86/asm/entry/64: Fold the 'test_in_nmi' " tip-bot for Denys Vlasenko
  2 siblings, 3 replies; 7+ messages in thread
From: Denys Vlasenko @ 2015-04-01 14:50 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Denys Vlasenko, Linus Torvalds, Steven Rostedt, Borislav Petkov,
	H. Peter Anvin, Andy Lutomirski, Oleg Nesterov,
	Frederic Weisbecker, Alexei Starovoitov, Will Drewry, Kees Cook,
	x86, linux-kernel

No code changes.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Linus Torvalds <torvalds@linux-foundation.org>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@kernel.org>
CC: Borislav Petkov <bp@alien8.de>
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: Andy Lutomirski <luto@amacapital.net>
CC: Oleg Nesterov <oleg@redhat.com>
CC: Frederic Weisbecker <fweisbec@gmail.com>
CC: Alexei Starovoitov <ast@plumgrid.com>
CC: Will Drewry <wad@chromium.org>
CC: Kees Cook <keescook@chromium.org>
CC: x86@kernel.org
CC: linux-kernel@vger.kernel.org
---
 arch/x86/boot/compressed/head_64.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 90c1521..b0c0d16 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -165,7 +165,7 @@ ENTRY(startup_32)
 	/* After gdt is loaded */
 	xorl	%eax, %eax
 	lldt	%ax
-	movl    $0x20, %eax
+	movl    $__BOOT_TSS, %eax
 	ltr	%ax
 
 	/*
-- 
1.8.1.4


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

* Re: [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user
  2015-04-01 14:50 [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Denys Vlasenko
  2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
@ 2015-04-01 15:45 ` Steven Rostedt
  2015-04-02 12:33 ` [tip:x86/asm] x86/asm/entry/64: Fold the 'test_in_nmi' " tip-bot for Denys Vlasenko
  2 siblings, 0 replies; 7+ messages in thread
From: Steven Rostedt @ 2015-04-01 15:45 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Ingo Molnar, Linus Torvalds, Borislav Petkov, H. Peter Anvin,
	Andy Lutomirski, Oleg Nesterov, Frederic Weisbecker,
	Alexei Starovoitov, Will Drewry, Kees Cook, x86, linux-kernel

On Wed,  1 Apr 2015 16:50:57 +0200
Denys Vlasenko <dvlasenk@redhat.com> wrote:

> -	/* runs on exception stack */
> +/* Runs on exception stack */
>  ENTRY(nmi)
>  	INTR_FRAME
>  	PARAVIRT_ADJUST_EXCEPTION_FRAME
> @@ -1428,8 +1416,18 @@ ENTRY(nmi)
>  	 * We check the variable because the first NMI could be in a
>  	 * breakpoint routine using a breakpoint stack.
>  	 */
> -	lea 6*8(%rsp), %rdx
> -	test_in_nmi rdx, 4*8(%rsp), nested_nmi, first_nmi
> +	lea	6*8(%rsp), %rdx
> +	/* Compare the NMI stack (rdx) with the stack we came from (4*8(%rsp)) */
> +	cmpq	%rdx, 4*8(%rsp)
> +	/* If the stack pointer is above the NMI stack, this is a normal NMI */
> +	ja	first_nmi
> +	subq	$EXCEPTION_STKSZ, %rdx
> +	cmpq	%rdx, 4*8(%rsp)
> +	/* If it is below the NMI stack, it is a normal NMI */
> +	jb	first_nmi
> +	/* Ah, it is within the NMI stack, treat it as nested */
> +	jmp	nested_nmi

I guess we can get rid of the jmp nested_nmi, as it just jumps to the
next instruction. Although, I would keep the comment.

-- Steve

> +
>  	CFI_REMEMBER_STATE
>  
>  nested_nmi:


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

* Re: [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20
  2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
@ 2015-04-01 16:46   ` Borislav Petkov
  2015-04-01 17:01   ` Steven Rostedt
  2015-04-02 12:33   ` [tip:x86/asm] x86/asm/boot/64: Use __BOOT_TSS instead of literal $0x20 tip-bot for Denys Vlasenko
  2 siblings, 0 replies; 7+ messages in thread
From: Borislav Petkov @ 2015-04-01 16:46 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Ingo Molnar, Linus Torvalds, Steven Rostedt, H. Peter Anvin,
	Andy Lutomirski, Oleg Nesterov, Frederic Weisbecker,
	Alexei Starovoitov, Will Drewry, Kees Cook, x86, linux-kernel

On Wed, Apr 01, 2015 at 04:50:58PM +0200, Denys Vlasenko wrote:
> No code changes.
> 
> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
> CC: Linus Torvalds <torvalds@linux-foundation.org>
> CC: Steven Rostedt <rostedt@goodmis.org>
> CC: Ingo Molnar <mingo@kernel.org>
> CC: Borislav Petkov <bp@alien8.de>
> CC: "H. Peter Anvin" <hpa@zytor.com>
> CC: Andy Lutomirski <luto@amacapital.net>
> CC: Oleg Nesterov <oleg@redhat.com>
> CC: Frederic Weisbecker <fweisbec@gmail.com>
> CC: Alexei Starovoitov <ast@plumgrid.com>
> CC: Will Drewry <wad@chromium.org>
> CC: Kees Cook <keescook@chromium.org>
> CC: x86@kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
>  arch/x86/boot/compressed/head_64.S | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
> index 90c1521..b0c0d16 100644
> --- a/arch/x86/boot/compressed/head_64.S
> +++ b/arch/x86/boot/compressed/head_64.S
> @@ -165,7 +165,7 @@ ENTRY(startup_32)
>  	/* After gdt is loaded */
>  	xorl	%eax, %eax
>  	lldt	%ax
> -	movl    $0x20, %eax
> +	movl    $__BOOT_TSS, %eax
>  	ltr	%ax

Acked-by: Borislav Petkov <bp@suse.de>

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--

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

* Re: [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20
  2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
  2015-04-01 16:46   ` Borislav Petkov
@ 2015-04-01 17:01   ` Steven Rostedt
  2015-04-02 12:33   ` [tip:x86/asm] x86/asm/boot/64: Use __BOOT_TSS instead of literal $0x20 tip-bot for Denys Vlasenko
  2 siblings, 0 replies; 7+ messages in thread
From: Steven Rostedt @ 2015-04-01 17:01 UTC (permalink / raw)
  To: Denys Vlasenko
  Cc: Ingo Molnar, Linus Torvalds, Borislav Petkov, H. Peter Anvin,
	Andy Lutomirski, Oleg Nesterov, Frederic Weisbecker,
	Alexei Starovoitov, Will Drewry, Kees Cook, x86, linux-kernel

On Wed,  1 Apr 2015 16:50:58 +0200
Denys Vlasenko <dvlasenk@redhat.com> wrote:

> No code changes.
> 


> diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
> index 90c1521..b0c0d16 100644
> --- a/arch/x86/boot/compressed/head_64.S
> +++ b/arch/x86/boot/compressed/head_64.S
> @@ -165,7 +165,7 @@ ENTRY(startup_32)
>  	/* After gdt is loaded */
>  	xorl	%eax, %eax
>  	lldt	%ax
> -	movl    $0x20, %eax
> +	movl    $__BOOT_TSS, %eax

        __BOOT_TSS = (GDT_ENTRY_BOOT_TSS * 8)
GDT_ENTRY_BOOT_TSS = (GDT_ENTRY_BOOT_CS + 2)
 GDT_ENTRY_BOOT_CS = 2

(2 + 2) * 8 = 4 * 8 = 32 = 0x20

Reviewed-by: Steven Rostedt <rostedt@goodmis.org>

-- Steve

>  	ltr	%ax
>  
>  	/*


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

* [tip:x86/asm] x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user
  2015-04-01 14:50 [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Denys Vlasenko
  2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
  2015-04-01 15:45 ` [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Steven Rostedt
@ 2015-04-02 12:33 ` tip-bot for Denys Vlasenko
  2 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Denys Vlasenko @ 2015-04-02 12:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: bp, rostedt, dvlasenk, keescook, fweisbec, ast, wad, luto, mingo,
	bp, linux-kernel, hpa, oleg, torvalds, tglx

Commit-ID:  0784b36448a2a85b95b6eb21a69b9045c896c065
Gitweb:     http://git.kernel.org/tip/0784b36448a2a85b95b6eb21a69b9045c896c065
Author:     Denys Vlasenko <dvlasenk@redhat.com>
AuthorDate: Wed, 1 Apr 2015 16:50:57 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 2 Apr 2015 12:00:10 +0200

x86/asm/entry/64: Fold the 'test_in_nmi' macro into its only user

No code changes.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Acked-by: Borislav Petkov <bp@suse.de>
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Will Drewry <wad@chromium.org>
Link: http://lkml.kernel.org/r/1427899858-7165-1-git-send-email-dvlasenk@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/entry_64.S | 28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index 03c52e2..386375d 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -1355,19 +1355,7 @@ ENTRY(error_exit)
 	CFI_ENDPROC
 END(error_exit)
 
-/*
- * Test if a given stack is an NMI stack or not.
- */
-	.macro test_in_nmi reg stack nmi_ret normal_ret
-	cmpq %\reg, \stack
-	ja \normal_ret
-	subq $EXCEPTION_STKSZ, %\reg
-	cmpq %\reg, \stack
-	jb \normal_ret
-	jmp \nmi_ret
-	.endm
-
-	/* runs on exception stack */
+/* Runs on exception stack */
 ENTRY(nmi)
 	INTR_FRAME
 	PARAVIRT_ADJUST_EXCEPTION_FRAME
@@ -1428,8 +1416,18 @@ ENTRY(nmi)
 	 * We check the variable because the first NMI could be in a
 	 * breakpoint routine using a breakpoint stack.
 	 */
-	lea 6*8(%rsp), %rdx
-	test_in_nmi rdx, 4*8(%rsp), nested_nmi, first_nmi
+	lea	6*8(%rsp), %rdx
+	/* Compare the NMI stack (rdx) with the stack we came from (4*8(%rsp)) */
+	cmpq	%rdx, 4*8(%rsp)
+	/* If the stack pointer is above the NMI stack, this is a normal NMI */
+	ja	first_nmi
+	subq	$EXCEPTION_STKSZ, %rdx
+	cmpq	%rdx, 4*8(%rsp)
+	/* If it is below the NMI stack, it is a normal NMI */
+	jb	first_nmi
+	/* Ah, it is within the NMI stack, treat it as nested */
+	jmp	nested_nmi
+
 	CFI_REMEMBER_STATE
 
 nested_nmi:

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

* [tip:x86/asm] x86/asm/boot/64: Use __BOOT_TSS instead of literal $0x20
  2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
  2015-04-01 16:46   ` Borislav Petkov
  2015-04-01 17:01   ` Steven Rostedt
@ 2015-04-02 12:33   ` tip-bot for Denys Vlasenko
  2 siblings, 0 replies; 7+ messages in thread
From: tip-bot for Denys Vlasenko @ 2015-04-02 12:33 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: bp, luto, tglx, bp, wad, mingo, hpa, torvalds, fweisbec, rostedt,
	keescook, linux-kernel, oleg, ast, dvlasenk

Commit-ID:  40e4f2d177f748a83e7639554ea7d11568a9fa1f
Gitweb:     http://git.kernel.org/tip/40e4f2d177f748a83e7639554ea7d11568a9fa1f
Author:     Denys Vlasenko <dvlasenk@redhat.com>
AuthorDate: Wed, 1 Apr 2015 16:50:58 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 2 Apr 2015 12:00:20 +0200

x86/asm/boot/64: Use __BOOT_TSS instead of literal $0x20

__BOOT_TSS = (GDT_ENTRY_BOOT_TSS * 8)
GDT_ENTRY_BOOT_TSS = (GDT_ENTRY_BOOT_CS + 2)
GDT_ENTRY_BOOT_CS = 2

(2 + 2) * 8 = 4 * 8 = 32 = 0x20

No code changes.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Borislav Petkov <bp@suse.de>
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Will Drewry <wad@chromium.org>
Link: http://lkml.kernel.org/r/1427899858-7165-2-git-send-email-dvlasenk@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/boot/compressed/head_64.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index 90c1521..b0c0d16 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -165,7 +165,7 @@ ENTRY(startup_32)
 	/* After gdt is loaded */
 	xorl	%eax, %eax
 	lldt	%ax
-	movl    $0x20, %eax
+	movl    $__BOOT_TSS, %eax
 	ltr	%ax
 
 	/*

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

end of thread, other threads:[~2015-04-02 12:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-01 14:50 [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Denys Vlasenko
2015-04-01 14:50 ` [PATCH] x86/asm/head/64: Use __BOOT_TSS instead of literal 0x20 Denys Vlasenko
2015-04-01 16:46   ` Borislav Petkov
2015-04-01 17:01   ` Steven Rostedt
2015-04-02 12:33   ` [tip:x86/asm] x86/asm/boot/64: Use __BOOT_TSS instead of literal $0x20 tip-bot for Denys Vlasenko
2015-04-01 15:45 ` [PATCH] x86/asm/entry/64: fold test_in_nmi macro into its only user Steven Rostedt
2015-04-02 12:33 ` [tip:x86/asm] x86/asm/entry/64: Fold the 'test_in_nmi' " tip-bot for Denys Vlasenko

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.