x86: Document the NMI handler about not using paranoid_exit
authorSteven Rostedt <srostedt@redhat.com>
Thu, 8 Dec 2011 17:32:27 +0000 (12:32 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 21 Dec 2011 20:38:53 +0000 (15:38 -0500)
Linus cleaned up the NMI handler but it still needs some comments to
explain why it uses save_paranoid but not paranoid_exit. Just to keep
others from adding that in the future, document why it's not used.

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
arch/x86/kernel/entry_64.S

index 3819ea9073390ad13afe93711c7c51e4759a64d9..d1d5434e7f6a918dd0a52eafeadd9b2239cde262 100644 (file)
@@ -1480,9 +1480,16 @@ END(error_exit)
 ENTRY(nmi)
        INTR_FRAME
        PARAVIRT_ADJUST_EXCEPTION_FRAME
-       pushq_cfi $-1
+       pushq_cfi $-1           /* ORIG_RAX: no syscall to restart */
        subq $ORIG_RAX-R15, %rsp
        CFI_ADJUST_CFA_OFFSET ORIG_RAX-R15
+       /*
+        * Use save_paranoid to handle SWAPGS, but no need to use paranoid_exit
+        * as we should not be calling schedule in NMI context.
+        * Even with normal interrupts enabled. An NMI should not be
+        * setting NEED_RESCHED or anything that normal interrupts and
+        * exceptions might do.
+        */
        call save_paranoid
        DEFAULT_FRAME 0
        /* paranoidentry do_nmi, 0; without TRACE_IRQS_OFF */