* [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.