Steven Rostedt 
							
						 
					 
					
						
						
						
						
							
						
						
							4fe8c3048c 
							
						 
					 
					
						
						
							
							ftrace: printk and trace irqsoff and wakeups  
						
						... 
						
						
						
						printk called from wakeup critical timings and irqs off can
cause deadlocks since printk might do a wakeup itself. If the
call to printk happens with the runqueue lock held, it can
deadlock.
This patch protects the printk from being called in trace irqs off
with a test to see if the runqueue for the current CPU is locked.
If it is locked, the printk is skipped.
The wakeup always holds the runqueue lock, so the printk is
simply removed.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 21:13:02 +02:00 
						 
				 
			
				
					
						
							
							
								Ingo Molnar 
							
						 
					 
					
						
						
						
						
							
						
						
							8ac0fca4cc 
							
						 
					 
					
						
						
							
							ftrace: sched tracer fix  
						
						... 
						
						
						
						Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 21:04:28 +02:00 
						 
				 
			
				
					
						
							
							
								Ingo Molnar 
							
						 
					 
					
						
						
						
						
							
						
						
							57422797dc 
							
						 
					 
					
						
						
							
							ftrace: add wakeup events to sched tracer  
						
						... 
						
						
						
						Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 21:04:06 +02:00 
						 
				 
			
				
					
						
							
							
								Ingo Molnar 
							
						 
					 
					
						
						
						
						
							
						
						
							e309b41dd6 
							
						 
					 
					
						
						
							
							ftrace: remove notrace  
						
						... 
						
						
						
						now that we have a kbuild method for notrace, no need to pollute the
C code with the annotations.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 20:58:28 +02:00 
						 
				 
			
				
					
						
							
							
								Steven Rostedt 
							
						 
					 
					
						
						
						
						
							
						
						
							6fb44b717c 
							
						 
					 
					
						
						
							
							ftrace: add trace_function api for other tracers to use  
						
						... 
						
						
						
						A new check was added in the ftrace function that wont trace if the CPU
trace buffer is disabled.  Unfortunately, other tracers used ftrace() to
write to the buffer after they disabled it. The new disable check makes
these calls into a nop.
This patch changes the __ftrace that is called without the check into a
new api for the other tracers to use, called "trace_function". The other
tracers use this interface instead when the trace CPU buffer is already
disabled.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 20:55:55 +02:00 
						 
				 
			
				
					
						
							
							
								Ingo Molnar 
							
						 
					 
					
						
						
						
						
							
						
						
							750ed1a407 
							
						 
					 
					
						
						
							
							ftrace: timestamp syncing, prepare  
						
						... 
						
						
						
						rename and uninline now() to ftrace_now().
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 20:42:31 +02:00 
						 
				 
			
				
					
						
							
							
								Ingo Molnar 
							
						 
					 
					
						
						
						
						
							
						
						
							c7aafc5497 
							
						 
					 
					
						
						
							
							ftrace: cleanups  
						
						... 
						
						
						
						factor out code and clean it up.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 20:40:46 +02:00 
						 
				 
			
				
					
						
							
							
								Steven Rostedt 
							
						 
					 
					
						
						
						
						
							
						
						
							60a11774b3 
							
						 
					 
					
						
						
							
							ftrace: add self-tests  
						
						... 
						
						
						
						Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 20:40:36 +02:00 
						 
				 
			
				
					
						
							
							
								Steven Rostedt 
							
						 
					 
					
						
						
						
						
							
						
						
							352ad25aa4 
							
						 
					 
					
						
						
							
							ftrace: tracer for scheduler wakeup latency  
						
						... 
						
						
						
						This patch adds the tracer that tracks the wakeup latency of the
highest priority waking task.
  "wakeup" is added to /debugfs/tracing/available_tracers
Also added to /debugfs/tracing
  tracing_max_latency
     holds the current max latency for the wakeup
  wakeup_thresh
     if set to other than zero, a log will be recorded
     for every wakeup that takes longer than the number
     entered in here (usecs for all counters)
     (deletes previous trace)
Examples:
  (with ftrace_enabled = 0)
============
preemption latency trace v1.1.5 on 2.6.24-rc8
Signed-off-by: Ingo Molnar <mingo@elte.hu>
--------------------------------------------------------------------
 latency: 26 us, #2/2, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)
    -----------------
    | task: migration/0-3 (uid:0 nice:-5 policy:1 rt_prio:99)
    -----------------
                 _------=> CPU#
                / _-----=> irqs-off
               | / _----=> need-resched
               || / _---=> hardirq/softirq
               ||| / _--=> preempt-depth
               |||| /
               |||||     delay
   cmd     pid ||||| time  |   caller
      \   /    |||||   \   |   /
   quilt-8551  0d..3    0us+: wake_up_process+0x15/0x17 <ffffffff80233e80> (sched_exec+0xc9/0x100 <ffffffff80235343>)
   quilt-8551  0d..4   26us : sched_switch_callback+0x73/0x81 <ffffffff80338d2f> (schedule+0x483/0x6d5 <ffffffff8048b3ee>)
vim:ft=help
============
  (with ftrace_enabled = 1)
============
preemption latency trace v1.1.5 on 2.6.24-rc8
--------------------------------------------------------------------
 latency: 36 us, #45/45, CPU#0 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)
    -----------------
    | task: migration/1-5 (uid:0 nice:-5 policy:1 rt_prio:99)
    -----------------
                 _------=> CPU#
                / _-----=> irqs-off
               | / _----=> need-resched
               || / _---=> hardirq/softirq
               ||| / _--=> preempt-depth
               |||| /
               |||||     delay
   cmd     pid ||||| time  |   caller
      \   /    |||||   \   |   /
    bash-10653 1d..3    0us : wake_up_process+0x15/0x17 <ffffffff80233e80> (sched_exec+0xc9/0x100 <ffffffff80235343>)
    bash-10653 1d..3    1us : try_to_wake_up+0x271/0x2e7 <ffffffff80233dcf> (sub_preempt_count+0xc/0x7a <ffffffff8023309e>)
    bash-10653 1d..2    2us : try_to_wake_up+0x296/0x2e7 <ffffffff80233df4> (update_rq_clock+0x9/0x20 <ffffffff802303f3>)
    bash-10653 1d..2    2us : update_rq_clock+0x1e/0x20 <ffffffff80230408> (__update_rq_clock+0xc/0x90 <ffffffff80230366>)
    bash-10653 1d..2    3us : __update_rq_clock+0x1b/0x90 <ffffffff80230375> (sched_clock+0x9/0x29 <ffffffff80214529>)
    bash-10653 1d..2    4us : try_to_wake_up+0x2a6/0x2e7 <ffffffff80233e04> (activate_task+0xc/0x3f <ffffffff8022ffca>)
    bash-10653 1d..2    4us : activate_task+0x2d/0x3f <ffffffff8022ffeb> (enqueue_task+0xe/0x66 <ffffffff8022ff66>)
    bash-10653 1d..2    5us : enqueue_task+0x5b/0x66 <ffffffff8022ffb3> (enqueue_task_rt+0x9/0x3c <ffffffff80233351>)
    bash-10653 1d..2    6us : try_to_wake_up+0x2ba/0x2e7 <ffffffff80233e18> (check_preempt_wakeup+0x12/0x99 <ffffffff80234f84>)
[...]
    bash-10653 1d..5   33us : tracing_record_cmdline+0xcf/0xd4 <ffffffff80338aad> (_spin_unlock+0x9/0x33 <ffffffff8048d3ec>)
    bash-10653 1d..5   34us : _spin_unlock+0x19/0x33 <ffffffff8048d3fc> (sub_preempt_count+0xc/0x7a <ffffffff8023309e>)
    bash-10653 1d..4   35us : wakeup_sched_switch+0x65/0x2ff <ffffffff80339f66> (_spin_lock_irqsave+0xc/0xa9 <ffffffff8048d08b>)
    bash-10653 1d..4   35us : _spin_lock_irqsave+0x19/0xa9 <ffffffff8048d098> (add_preempt_count+0xe/0x77 <ffffffff8023311a>)
    bash-10653 1d..4   36us : sched_switch_callback+0x73/0x81 <ffffffff80338d2f> (schedule+0x483/0x6d5 <ffffffff8048b3ee>)
vim:ft=help
============
The [...] was added here to not waste your email box space.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> 
						
					 
					
						2008-05-23 20:32:36 +02:00