54 lines
1.7 KiB
Diff
54 lines
1.7 KiB
Diff
From: Andy Lutomirski <luto@kernel.org>
|
|
Date: Wed, 15 Jul 2015 10:29:34 -0700
|
|
Subject: [5/9] x86/nmi/64: Remove asm code that saves CR2
|
|
Origin: https://git.kernel.org/linus/0e181bb58143cb4a2e8f01c281b0816cd0e4798e
|
|
|
|
Now that do_nmi saves CR2, we don't need to save it in asm.
|
|
|
|
Signed-off-by: Andy Lutomirski <luto@kernel.org>
|
|
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
|
|
Acked-by: Borislav Petkov <bp@suse.de>
|
|
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Thomas Gleixner <tglx@linutronix.de>
|
|
Cc: stable@vger.kernel.org
|
|
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
|
[bwh: Backported to 4.0: adjust filename, context]
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
arch/x86/kernel/entry_64.S | 18 ------------------
|
|
1 file changed, 18 deletions(-)
|
|
|
|
--- a/arch/x86/kernel/entry_64.S
|
|
+++ b/arch/x86/kernel/entry_64.S
|
|
@@ -1621,29 +1621,11 @@ end_repeat_nmi:
|
|
call paranoid_entry
|
|
DEFAULT_FRAME 0
|
|
|
|
- /*
|
|
- * Save off the CR2 register. If we take a page fault in the NMI then
|
|
- * it could corrupt the CR2 value. If the NMI preempts a page fault
|
|
- * handler before it was able to read the CR2 register, and then the
|
|
- * NMI itself takes a page fault, the page fault that was preempted
|
|
- * will read the information from the NMI page fault and not the
|
|
- * origin fault. Save it off and restore it if it changes.
|
|
- * Use the r12 callee-saved register.
|
|
- */
|
|
- movq %cr2, %r12
|
|
-
|
|
/* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */
|
|
movq %rsp,%rdi
|
|
movq $-1,%rsi
|
|
call do_nmi
|
|
|
|
- /* Did the NMI take a page fault? Restore cr2 if it did */
|
|
- movq %cr2, %rcx
|
|
- cmpq %rcx, %r12
|
|
- je 1f
|
|
- movq %r12, %cr2
|
|
-1:
|
|
-
|
|
testl %ebx,%ebx /* swapgs needed? */
|
|
jnz nmi_restore
|
|
nmi_swapgs:
|