[PATCH] x86_64: Dump stack and prevent recursion on early fault
authorAndi Kleen <ak@suse.de>
Sat, 16 Apr 2005 22:25:00 +0000 (15:25 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 16 Apr 2005 22:25:00 +0000 (15:25 -0700)
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/kernel/head.S

index b6d8725c1f611f174bb9de741514c3dd014f39d8..9bd2e7a4b81e196d89856871397d6300c2e4d2bb 100644 (file)
@@ -200,14 +200,22 @@ init_rsp:
        .quad  init_thread_union+THREAD_SIZE-8
 
 ENTRY(early_idt_handler)
        .quad  init_thread_union+THREAD_SIZE-8
 
 ENTRY(early_idt_handler)
+       cmpl $2,early_recursion_flag(%rip)
+       jz  1f
+       incl early_recursion_flag(%rip)
        xorl %eax,%eax
        movq 8(%rsp),%rsi       # get rip
        movq (%rsp),%rdx
        movq %cr2,%rcx
        leaq early_idt_msg(%rip),%rdi
        call early_printk
        xorl %eax,%eax
        movq 8(%rsp),%rsi       # get rip
        movq (%rsp),%rdx
        movq %cr2,%rcx
        leaq early_idt_msg(%rip),%rdi
        call early_printk
+       cmpl $2,early_recursion_flag(%rip)
+       jz  1f
+       call dump_stack
 1:     hlt
        jmp 1b
 1:     hlt
        jmp 1b
+early_recursion_flag:
+       .long 0
 
 early_idt_msg:
        .asciz "PANIC: early exception rip %lx error %lx cr2 %lx\n"
 
 early_idt_msg:
        .asciz "PANIC: early exception rip %lx error %lx cr2 %lx\n"