diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2008-09-16 14:27:30 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-09-17 05:53:03 -0400 |
commit | 90f7d25c6b672137344f447a30a9159945ffea72 (patch) | |
tree | 0d935db3030faab95cbeaa714346aa89d55bb6c7 /arch/x86/kernel/process_32.c | |
parent | b05f78f5c713eda2c34e495d92495ee4f1c3b5e1 (diff) |
x86: print DMI information in the oops trace
in order to diagnose hard system specific issues, it's useful to
have the system name in the oops (as provided by DMI)
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/process_32.c')
-rw-r--r-- | arch/x86/kernel/process_32.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 0c3927accb00..7b9ee9f09639 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/tick.h> | 37 | #include <linux/tick.h> |
38 | #include <linux/percpu.h> | 38 | #include <linux/percpu.h> |
39 | #include <linux/prctl.h> | 39 | #include <linux/prctl.h> |
40 | #include <linux/dmi.h> | ||
40 | 41 | ||
41 | #include <asm/uaccess.h> | 42 | #include <asm/uaccess.h> |
42 | #include <asm/pgtable.h> | 43 | #include <asm/pgtable.h> |
@@ -160,6 +161,7 @@ void __show_registers(struct pt_regs *regs, int all) | |||
160 | unsigned long d0, d1, d2, d3, d6, d7; | 161 | unsigned long d0, d1, d2, d3, d6, d7; |
161 | unsigned long sp; | 162 | unsigned long sp; |
162 | unsigned short ss, gs; | 163 | unsigned short ss, gs; |
164 | const char *board; | ||
163 | 165 | ||
164 | if (user_mode_vm(regs)) { | 166 | if (user_mode_vm(regs)) { |
165 | sp = regs->sp; | 167 | sp = regs->sp; |
@@ -172,11 +174,15 @@ void __show_registers(struct pt_regs *regs, int all) | |||
172 | } | 174 | } |
173 | 175 | ||
174 | printk("\n"); | 176 | printk("\n"); |
175 | printk("Pid: %d, comm: %s %s (%s %.*s)\n", | 177 | |
178 | board = dmi_get_system_info(DMI_PRODUCT_NAME); | ||
179 | if (!board) | ||
180 | board = ""; | ||
181 | printk("Pid: %d, comm: %s %s (%s %.*s) %s\n", | ||
176 | task_pid_nr(current), current->comm, | 182 | task_pid_nr(current), current->comm, |
177 | print_tainted(), init_utsname()->release, | 183 | print_tainted(), init_utsname()->release, |
178 | (int)strcspn(init_utsname()->version, " "), | 184 | (int)strcspn(init_utsname()->version, " "), |
179 | init_utsname()->version); | 185 | init_utsname()->version, board); |
180 | 186 | ||
181 | printk("EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n", | 187 | printk("EIP: %04x:[<%08lx>] EFLAGS: %08lx CPU: %d\n", |
182 | (u16)regs->cs, regs->ip, regs->flags, | 188 | (u16)regs->cs, regs->ip, regs->flags, |