diff options
Diffstat (limited to 'arch/x86/kernel/dumpstack_64.c')
-rw-r--r-- | arch/x86/kernel/dumpstack_64.c | 53 |
1 files changed, 1 insertions, 52 deletions
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c index 36cf1a498227..310abf4542dc 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c | |||
@@ -140,56 +140,6 @@ unknown: | |||
140 | return -EINVAL; | 140 | return -EINVAL; |
141 | } | 141 | } |
142 | 142 | ||
143 | void show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs, | ||
144 | unsigned long *sp, char *log_lvl) | ||
145 | { | ||
146 | unsigned long *irq_stack_end; | ||
147 | unsigned long *irq_stack; | ||
148 | unsigned long *stack; | ||
149 | int i; | ||
150 | |||
151 | if (!try_get_task_stack(task)) | ||
152 | return; | ||
153 | |||
154 | irq_stack_end = (unsigned long *)this_cpu_read(irq_stack_ptr); | ||
155 | irq_stack = irq_stack_end - (IRQ_STACK_SIZE / sizeof(long)); | ||
156 | |||
157 | sp = sp ? : get_stack_pointer(task, regs); | ||
158 | |||
159 | stack = sp; | ||
160 | for (i = 0; i < kstack_depth_to_print; i++) { | ||
161 | unsigned long word; | ||
162 | |||
163 | if (stack >= irq_stack && stack <= irq_stack_end) { | ||
164 | if (stack == irq_stack_end) { | ||
165 | stack = (unsigned long *) (irq_stack_end[-1]); | ||
166 | pr_cont(" <EOI> "); | ||
167 | } | ||
168 | } else { | ||
169 | if (kstack_end(stack)) | ||
170 | break; | ||
171 | } | ||
172 | |||
173 | if (probe_kernel_address(stack, word)) | ||
174 | break; | ||
175 | |||
176 | if ((i % STACKSLOTS_PER_LINE) == 0) { | ||
177 | if (i != 0) | ||
178 | pr_cont("\n"); | ||
179 | printk("%s %016lx", log_lvl, word); | ||
180 | } else | ||
181 | pr_cont(" %016lx", word); | ||
182 | |||
183 | stack++; | ||
184 | touch_nmi_watchdog(); | ||
185 | } | ||
186 | |||
187 | pr_cont("\n"); | ||
188 | show_trace_log_lvl(task, regs, sp, log_lvl); | ||
189 | |||
190 | put_task_stack(task); | ||
191 | } | ||
192 | |||
193 | void show_regs(struct pt_regs *regs) | 143 | void show_regs(struct pt_regs *regs) |
194 | { | 144 | { |
195 | int i; | 145 | int i; |
@@ -207,8 +157,7 @@ void show_regs(struct pt_regs *regs) | |||
207 | unsigned char c; | 157 | unsigned char c; |
208 | u8 *ip; | 158 | u8 *ip; |
209 | 159 | ||
210 | printk(KERN_DEFAULT "Stack:\n"); | 160 | show_trace_log_lvl(current, regs, NULL, KERN_DEFAULT); |
211 | show_stack_log_lvl(current, regs, NULL, KERN_DEFAULT); | ||
212 | 161 | ||
213 | printk(KERN_DEFAULT "Code: "); | 162 | printk(KERN_DEFAULT "Code: "); |
214 | 163 | ||