<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/arch/x86/kernel/stacktrace.c, branch v2.6.32</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>x86: add save_stack_trace_bp() for tracing from a specific stack frame</title>
<updated>2009-06-12T21:01:05+00:00</updated>
<author>
<name>Vegard Nossum</name>
<email>vegard.nossum@gmail.com</email>
</author>
<published>2008-05-20T09:15:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=acc6be5405b90c9f0fb0eb8a74ec4d4b7b5bf48f'/>
<id>acc6be5405b90c9f0fb0eb8a74ec4d4b7b5bf48f</id>
<content type='text'>
This will help kmemcheck (and possibly other debugging tools) since we
can now simply pass regs-&gt;bp to the stack tracer instead of specifying
the number of stack frames to skip, which is unreliable if gcc decides
to inline functions, etc.

Note that this makes the API incomplete for other architectures, but I
expect that those can be updated lazily, e.g. when they need it.

Cc: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Vegard Nossum &lt;vegard.nossum@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This will help kmemcheck (and possibly other debugging tools) since we
can now simply pass regs-&gt;bp to the stack tracer instead of specifying
the number of stack frames to skip, which is unreliable if gcc decides
to inline functions, etc.

Note that this makes the API incomplete for other architectures, but I
expect that those can be updated lazily, e.g. when they need it.

Cc: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Vegard Nossum &lt;vegard.nossum@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86/stacktrace: return 0 instead of -1 for stack ops</title>
<updated>2009-05-15T03:19:09+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2009-05-15T03:19:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=29a679754b1a2581ee456eada6c2de7ce95068bb'/>
<id>29a679754b1a2581ee456eada6c2de7ce95068bb</id>
<content type='text'>
If we return -1 in the ops-&gt;stack for the stacktrace saving, we end up
breaking out of the loop if the stack we are tracing is in the exception
stack. This causes traces like:

          &lt;idle&gt;-0     [002] 34263.745825: raise_softirq_irqoff &lt;-__blk_complete_request
          &lt;idle&gt;-0     [002] 34263.745826:
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0

By returning "0" instead, the irq stack is saved as well, and we see:

          &lt;idle&gt;-0     [003]   883.280992: raise_softirq_irqoff &lt;-__hrtimer_star
t_range_ns
          &lt;idle&gt;-0     [003]   883.280992:
 &lt;= hrtimer_start_range_ns
 &lt;= tick_nohz_restart_sched_tick
 &lt;= cpu_idle
 &lt;= start_secondary
 &lt;=
 &lt;= 0
 &lt;= 0

[ Impact: record stacks from interrupts ]

Signed-off-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we return -1 in the ops-&gt;stack for the stacktrace saving, we end up
breaking out of the loop if the stack we are tracing is in the exception
stack. This causes traces like:

          &lt;idle&gt;-0     [002] 34263.745825: raise_softirq_irqoff &lt;-__blk_complete_request
          &lt;idle&gt;-0     [002] 34263.745826:
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0
 &lt;= 0

By returning "0" instead, the irq stack is saved as well, and we see:

          &lt;idle&gt;-0     [003]   883.280992: raise_softirq_irqoff &lt;-__hrtimer_star
t_range_ns
          &lt;idle&gt;-0     [003]   883.280992:
 &lt;= hrtimer_start_range_ns
 &lt;= tick_nohz_restart_sched_tick
 &lt;= cpu_idle
 &lt;= start_secondary
 &lt;=
 &lt;= 0
 &lt;= 0

[ Impact: record stacks from interrupts ]

Signed-off-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: update copyrights</title>
<updated>2009-01-31T03:21:18+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2009-01-31T01:03:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8f47e16348e8e25eedf639092a8a2f10a66aba34'/>
<id>8f47e16348e8e25eedf639092a8a2f10a66aba34</id>
<content type='text'>
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tracing/stack-tracer: fix style issues</title>
<updated>2008-11-23T10:53:48+00:00</updated>
<author>
<name>Török Edwin</name>
<email>edwintorok@gmail.com</email>
</author>
<published>2008-11-23T10:39:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8d7c6a96164651dbbab449ef0b5c20ae1f76a3a1'/>
<id>8d7c6a96164651dbbab449ef0b5c20ae1f76a3a1</id>
<content type='text'>
Impact: cleanup

Signed-off-by: Török Edwin &lt;edwintorok@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: cleanup

Signed-off-by: Török Edwin &lt;edwintorok@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tracing: add support for userspace stacktraces in tracing/iter_ctrl</title>
<updated>2008-11-23T08:25:15+00:00</updated>
<author>
<name>Török Edwin</name>
<email>edwintorok@gmail.com</email>
</author>
<published>2008-11-22T11:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=02b67518e2b1c490787dac7f35e1204e74fe21ba'/>
<id>02b67518e2b1c490787dac7f35e1204e74fe21ba</id>
<content type='text'>
Impact: add new (default-off) tracing visualization feature

Usage example:

 mount -t debugfs nodev /sys/kernel/debug
 cd /sys/kernel/debug/tracing
 echo userstacktrace &gt;iter_ctrl
 echo sched_switch &gt;current_tracer
 echo 1 &gt;tracing_enabled
 .... run application ...
 echo 0 &gt;tracing_enabled

Then read one of 'trace','latency_trace','trace_pipe'.

To get the best output you can compile your userspace programs with
frame pointers (at least glibc + the app you are tracing).

Signed-off-by: Török Edwin &lt;edwintorok@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: add new (default-off) tracing visualization feature

Usage example:

 mount -t debugfs nodev /sys/kernel/debug
 cd /sys/kernel/debug/tracing
 echo userstacktrace &gt;iter_ctrl
 echo sched_switch &gt;current_tracer
 echo 1 &gt;tracing_enabled
 .... run application ...
 echo 0 &gt;tracing_enabled

Then read one of 'trace','latency_trace','trace_pipe'.

To get the best output you can compile your userspace programs with
frame pointers (at least glibc + the app you are tracing).

Signed-off-by: Török Edwin &lt;edwintorok@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>stacktrace: fix modular build, export print_stack_trace and save_stack_trace</title>
<updated>2008-06-30T07:20:55+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2008-06-27T19:20:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8594698ebddeef5443b7da8258ae33b3eaca61d5'/>
<id>8594698ebddeef5443b7da8258ae33b3eaca61d5</id>
<content type='text'>
fix:

ERROR: "print_stack_trace" [kernel/backtracetest.ko] undefined!
ERROR: "save_stack_trace" [kernel/backtracetest.ko] undefined!

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;

and fix:

  Building modules, stage 2.
  MODPOST 376 modules
ERROR: "print_stack_trace" [kernel/backtracetest.ko] undefined!
make[1]: *** [__modpost] Error 1

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix:

ERROR: "print_stack_trace" [kernel/backtracetest.ko] undefined!
ERROR: "save_stack_trace" [kernel/backtracetest.ko] undefined!

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;

and fix:

  Building modules, stage 2.
  MODPOST 376 modules
ERROR: "print_stack_trace" [kernel/backtracetest.ko] undefined!
make[1]: *** [__modpost] Error 1

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: don't save unreliable stack trace entries</title>
<updated>2008-02-26T11:55:58+00:00</updated>
<author>
<name>Vegard Nossum</name>
<email>vegard.nossum@gmail.com</email>
</author>
<published>2008-02-22T18:23:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1650743cdc0db73478f72c57544ce79ea8f3dda6'/>
<id>1650743cdc0db73478f72c57544ce79ea8f3dda6</id>
<content type='text'>
Currently, there is no way for print_stack_trace() to determine whether
a given stack trace entry was deemed reliable or not, simply because
save_stack_trace() does not record this information. (Perhaps needless
to say, this makes the saved stack traces A LOT harder to read, and
probably with no other benefits, since debugging features that use
save_stack_trace() most likely also require frame pointers, etc.)

This patch reverts to the old behaviour of only recording the reliable trace
entries for saved stack traces.

Signed-off-by: Vegard Nossum &lt;vegardno@ifi.uio.no&gt;
Acked-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, there is no way for print_stack_trace() to determine whether
a given stack trace entry was deemed reliable or not, simply because
save_stack_trace() does not record this information. (Perhaps needless
to say, this makes the saved stack traces A LOT harder to read, and
probably with no other benefits, since debugging features that use
save_stack_trace() most likely also require frame pointers, etc.)

This patch reverts to the old behaviour of only recording the reliable trace
entries for saved stack traces.

Signed-off-by: Vegard Nossum &lt;vegardno@ifi.uio.no&gt;
Acked-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: remove unneded casts</title>
<updated>2008-01-30T12:33:23+00:00</updated>
<author>
<name>Jan Engelhardt</name>
<email>jengelh@computergmbh.de</email>
</author>
<published>2008-01-30T12:33:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ade1af77129dea6e335b525ed3be3b846bc1ec13'/>
<id>ade1af77129dea6e335b525ed3be3b846bc1ec13</id>
<content type='text'>
x86: remove unneeded casts

Signed-off-by: Jan Engelhardt &lt;jengelh@computergmbh.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
x86: remove unneeded casts

Signed-off-by: Jan Engelhardt &lt;jengelh@computergmbh.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: pull bp calculation earlier into the backtrace path</title>
<updated>2008-01-30T12:33:07+00:00</updated>
<author>
<name>Arjan van de Ven</name>
<email>arjan@linux.intel.com</email>
</author>
<published>2008-01-30T12:33:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5bc27dc2f55fd3043597b5a8de6536183f28a449'/>
<id>5bc27dc2f55fd3043597b5a8de6536183f28a449</id>
<content type='text'>
Right now, we take the stack pointer early during the backtrace path, but
only calculate bp several functions deep later, making it hard to reconcile
the stack and bp backtraces (as well as showing several internal backtrace
functions on the stack with bp based backtracing).

This patch moves the bp taking to the same place we take the stack pointer;
sadly this ripples through several layers of the back tracing stack,
but it's not all that bad in the end I hope.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Right now, we take the stack pointer early during the backtrace path, but
only calculate bp several functions deep later, making it hard to reconcile
the stack and bp backtraces (as well as showing several internal backtrace
functions on the stack with bp based backtracing).

This patch moves the bp taking to the same place we take the stack pointer;
sadly this ripples through several layers of the back tracing stack,
but it's not all that bad in the end I hope.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>x86: add the capability to print fuzzy backtraces</title>
<updated>2008-01-30T12:33:07+00:00</updated>
<author>
<name>Arjan van de Ven</name>
<email>arjan@linux.intel.com</email>
</author>
<published>2008-01-30T12:33:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bc850d6b374fffd08336996f4b4d3bbd6bf427f6'/>
<id>bc850d6b374fffd08336996f4b4d3bbd6bf427f6</id>
<content type='text'>
For enhancing the 32 bit EBP based backtracer, I need the capability
for the backtracer to tell it's customer that an entry is either
reliable or unreliable, and the backtrace printing code then needs to
print the unreliable ones slightly different.

This patch adds the basic capability, the next patch will add a user
of this capability.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For enhancing the 32 bit EBP based backtracer, I need the capability
for the backtracer to tell it's customer that an entry is either
reliable or unreliable, and the backtrace printing code then needs to
print the unreliable ones slightly different.

This patch adds the basic capability, the next patch will add a user
of this capability.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
</feed>
