projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
db2c4c7
)
perf/x86-64: Use frame pointer to walk on irq and process stacks
author
Frederic Weisbecker
<
[email protected]
>
Wed, 3 Mar 2010 06:38:37 +0000
(07:38 +0100)
committer
Frederic Weisbecker
<
[email protected]
>
Wed, 10 Mar 2010 13:26:40 +0000
(14:26 +0100)
We were using the frame pointer based stack walker on every
contexts in x86-32, but not in x86-64 where we only use the
seven-league boots on the exception stacks.
Use it also on irq and process stacks. This utterly accelerate
the captures.
Signed-off-by: Frederic Weisbecker <
[email protected]
>
Cc: Ingo Molnar <
[email protected]
>
Cc: Peter Zijlstra <
[email protected]
>
Cc: Paul Mackerras <
[email protected]
>
Cc: Arnaldo Carvalho de Melo <
[email protected]
>
arch/x86/kernel/dumpstack_64.c
patch
|
blob
|
history
diff --git
a/arch/x86/kernel/dumpstack_64.c
b/arch/x86/kernel/dumpstack_64.c
index d5e2a2ebb6272d73c55af7b696cab37f5fa3bef5..272c9f1f05f31bf20492dfb6be35bed716be26b1 100644
(file)
--- a/
arch/x86/kernel/dumpstack_64.c
+++ b/
arch/x86/kernel/dumpstack_64.c
@@
-208,7
+208,7
@@
void dump_trace(struct task_struct *task, struct pt_regs *regs,
if (in_irq_stack(stack, irq_stack, irq_stack_end)) {
if (ops->stack(data, "IRQ") < 0)
break;
- bp =
print_context
_stack(tinfo, stack, bp,
+ bp =
ops->walk
_stack(tinfo, stack, bp,
ops, data, irq_stack_end, &graph);
/*
* We link to the next stack (which would be
@@
-229,7
+229,7
@@
void dump_trace(struct task_struct *task, struct pt_regs *regs,
/*
* This handles the process stack:
*/
- bp =
print_context
_stack(tinfo, stack, bp, ops, data, NULL, &graph);
+ bp =
ops->walk
_stack(tinfo, stack, bp, ops, data, NULL, &graph);
put_cpu();
}
EXPORT_SYMBOL(dump_trace);