i386: print better early fault info
Ingo Molnar [Wed, 17 Oct 2007 16:04:41 +0000 (18:04 +0200)]
improve early fault output.

old format:

 Int 14: CR2 010001e3  err 00000002  EIP c011f2f9  CS 00000060  flags 00010046
 Stack: c073695e c0791c10 00000000 ffffffff 00000000 01000000 00001000 c0791c10

new format:

 BUG: Int 14: CR2 010001e3
      EDI c1000000  ESI c0693c10  EBP c0637f9c  ESP c0637f08
      EBX 00000000  EDX 0000000e  ECX 00000000  EAX 010001e3
      err 00000002  EIP c0123119   CS 00000060  flg 00010046
 Stack: c064d589 c0693000 00000000 c0637f60 00c001e3 01000000 00038000 00000163
        00000000 00000163 00000000 ffffffff 00038000 00000000 00000000 00001000
        00001000 00000000 c0637f88 c06509be c0a2ae60 00001000 00001000 00000000

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

arch/x86/kernel/head_32.S

index 0fa8a97..3967796 100644 (file)
@@ -452,6 +452,7 @@ early_page_fault:
 early_fault:
        cld
 #ifdef CONFIG_PRINTK
+       pusha
        movl $(__KERNEL_DS),%eax
        movl %eax,%ds
        movl %eax,%es
@@ -543,8 +544,15 @@ int_msg:
        .asciz "Unknown interrupt or fault at EIP %p %p %p\n"
 
 fault_msg:
-       .ascii "Int %d: CR2 %p  err %p  EIP %p  CS %p  flags %p\n"
-       .asciz "Stack: %p %p %p %p %p %p %p %p\n"
+       .ascii                                                          \
+/* fault info: */      "BUG: Int %d: CR2 %p\n"                         \
+/* pusha regs: */      "     EDI %p  ESI %p  EBP %p  ESP %p\n"         \
+                       "     EBX %p  EDX %p  ECX %p  EAX %p\n"         \
+/* fault frame: */     "     err %p  EIP %p   CS %p  flg %p\n"         \
+                                                                       \
+                       "Stack: %p %p %p %p %p %p %p %p\n"              \
+                       "       %p %p %p %p %p %p %p %p\n"              \
+                       "       %p %p %p %p %p %p %p %p\n"
 
 #include "../../x86/xen/xen-head.S"