## Automatically generated incremental diff
## From:   linux-2.5.69-bk11
## To:     linux-2.5.69-bk12
## Robot:  $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $

diff -urN linux-2.5.69-bk11/Makefile linux-2.5.69-bk12/Makefile
--- linux-2.5.69-bk11/Makefile	2003-05-17 04:44:29.000000000 -0700
+++ linux-2.5.69-bk12/Makefile	2003-05-17 04:44:33.000000000 -0700
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 5
 SUBLEVEL = 69
-EXTRAVERSION = -bk11
+EXTRAVERSION = -bk12
 
 # *DOCUMENTATION*
 # To see a list of typical targets execute "make help"
diff -urN linux-2.5.69-bk11/arch/i386/kernel/entry.S linux-2.5.69-bk12/arch/i386/kernel/entry.S
--- linux-2.5.69-bk11/arch/i386/kernel/entry.S	2003-05-04 16:53:08.000000000 -0700
+++ linux-2.5.69-bk12/arch/i386/kernel/entry.S	2003-05-17 04:44:33.000000000 -0700
@@ -497,13 +497,19 @@
 	pushl $do_debug
 	jmp error_code
 
+/*
+ * NMI is doubly nasty. It can happen _while_ we're handling
+ * a debug fault, and the debug fault hasn't yet been able to
+ * clear up the stack. So we first check whether we got  an
+ * NMI on the sysenter entry path, but after that we need to
+ * check whether we got an NMI on the debug path where the debug
+ * fault happened on the sysenter path.
+ */
 ENTRY(nmi)
 	cmpl $sysenter_entry,(%esp)
 	je nmi_stack_fixup
-	cmpl $debug - 1,(%esp)
-	jle nmi_stack_correct
-	cmpl $debug_esp_fix_insn,(%esp)
-	jle nmi_debug_stack_fixup
+	cmpl $sysenter_entry,12(%esp)
+	je nmi_debug_stack_check
 nmi_stack_correct:
 	pushl %eax
 	SAVE_ALL
@@ -517,6 +523,13 @@
 nmi_stack_fixup:
 	FIX_STACK(12,nmi_stack_correct, 1)
 	jmp nmi_stack_correct
+nmi_debug_stack_check:
+	cmpw $__KERNEL_CS,16(%esp)
+	jne nmi_stack_correct
+	cmpl $debug - 1,(%esp)
+	jle nmi_stack_correct
+	cmpl $debug_esp_fix_insn,(%esp)
+	jle nmi_debug_stack_fixup
 nmi_debug_stack_fixup:
 	FIX_STACK(24,nmi_stack_correct, 1)
 	jmp nmi_stack_correct
