diff options
author | Borislav Petkov <bp@suse.de> | 2013-05-09 06:02:29 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2013-05-13 16:42:44 -0400 |
commit | 4d067d8e056d76a3327f0517c7722db55e7888fc (patch) | |
tree | 995c147a839866f5d1c2c700c27214755054cd7d /arch/x86/kernel/traps.c | |
parent | f722406faae2d073cc1d01063d1123c35425939e (diff) |
x86: Extend #DF debugging aid to 64-bit
It is sometimes very helpful to be able to pinpoint the location which
causes a double fault before it turns into a triple fault and the
machine reboots. We have this for 32-bit already so extend it to 64-bit.
On 64-bit we get the register snapshot at #DF time and not from the
first exception which actually causes the #DF. It should be close
enough, though.
[ hpa: and definitely better than nothing, which is what we have now. ]
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: http://lkml.kernel.org/r/1368093749-31296-1-git-send-email-bp@alien8.de
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/kernel/traps.c')
-rw-r--r-- | arch/x86/kernel/traps.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 772e2a846dec..167d481c5fd3 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -254,6 +254,9 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code) | |||
254 | tsk->thread.error_code = error_code; | 254 | tsk->thread.error_code = error_code; |
255 | tsk->thread.trap_nr = X86_TRAP_DF; | 255 | tsk->thread.trap_nr = X86_TRAP_DF; |
256 | 256 | ||
257 | #ifdef CONFIG_DOUBLEFAULT | ||
258 | df_debug(regs, error_code); | ||
259 | #endif | ||
257 | /* | 260 | /* |
258 | * This is always a kernel trap and never fixable (and thus must | 261 | * This is always a kernel trap and never fixable (and thus must |
259 | * never return). | 262 | * never return). |