1. 16 Dec, 2008 1 commit
  2. 12 Dec, 2008 12 commits
  3. 08 Dec, 2008 6 commits
  4. 05 Dec, 2008 5 commits
  5. 04 Dec, 2008 15 commits
    • Frederic Weisbecker's avatar
      tracing/function-graph-tracer: handle ftrace_printk entries · 1fd8f2a3
      Frederic Weisbecker authored
      Handle the TRACE_PRINT entries from the function grapg tracer
      and output them as a C comment just below the function that called
      it, as if it was a comment inside this function.
      
      Example with an ftrace_printk inside might_sleep() function:
      
      void __might_sleep(char *file, int line)
      {
      	static unsigned long prev_jiffy;	/* ratelimiting */
      
      	ftrace_printk("Hi I'm a comment in might_sleep() :-)");
      
      A chunk of a resulting trace:
      
       0)               |        _reiserfs_free_block() {
       0)               |          reiserfs_read_bitmap_block() {
       0)               |            __bread() {
       0)               |              __getblk() {
       0)               |                __find_get_block() {
       0)   0.698 us    |                  mark_page_accessed();
       0)   2.267 us    |                }
       0)               |                __might_sleep() {
       0)               |                  /* Hi I'm a comment in might_sleep() :-) */
       0)   1.321 us    |                }
       0)   5.872 us    |              }
       0)   7.313 us    |            }
       0)   8.718 us    |          }
      
      And this patch brings two minor fixes:
      
      - The newline after a switch-out task has disappeared
      - The "|" sign just before the cpu number on task-switch has been deleted.
      
       0)   0.616 us    |                pick_next_task_rt();
       0)   1.457 us    |                _spin_trylock();
       0)   0.653 us    |                _spin_unlock();
       0)   0.728 us    |                _spin_trylock();
       0)   0.631 us    |                _spin_unlock();
       0)   0.729 us    |                native_load_sp0();
       0)   0.593 us    |                native_load_tls();
       ------------------------------------------
       0)    cat-2834    =>   migrati-3
       ------------------------------------------
      
       0)               |    finish_task_switch() {
       0)   0.841 us    |      _spin_unlock_irq();
       0)   0.616 us    |      post_schedule_rt();
       0)   3.882 us    |    }
      Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Acked-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      1fd8f2a3
    • Liming Wang's avatar
      ftrace: avoid duplicated function when writing set_graph_function · faec2ec5
      Liming Wang authored
      Impact: fix a bug in function filter setting
      
      when writing function to set_graph_function, we should check whether it
      has existed in set_graph_function to avoid duplicating.
      Signed-off-by: default avatarLiming Wang <liming.wang@windriver.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      faec2ec5
    • Ingo Molnar's avatar
      tracing: fix typo and missing inline function · 6b253930
      Ingo Molnar authored
      Impact: fix build bugs
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      6b253930
    • Steven Rostedt's avatar
      ftrace: add ability to only trace swapper tasks · e32d8956
      Steven Rostedt authored
      Impact: new feature
      
      This patch lets the swapper tasks of all CPUS be filtered by the
      set_ftrace_pid file.
      
      If '0' is echoed into this file, then all the idle tasks (aka swapper)
      is flagged to be traced.  This affects all CPU idle tasks.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e32d8956
    • Steven Rostedt's avatar
      ftrace: use struct pid · 978f3a45
      Steven Rostedt authored
      Impact: clean up, extend PID filtering to PID namespaces
      
      Eric Biederman suggested using the struct pid for filtering on
      pids in the kernel. This patch is based off of a demonstration
      of an implementation that Eric sent me in an email.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      978f3a45
    • Steven Rostedt's avatar
      pid: fix the do_each_pid_task() macro · 5ef64761
      Steven Rostedt authored
      Impact: macro side-effects fix
      
      This patch adds parenthesis around 'pid' in the do_each_pid_task
      macro to allow callers to pass in more complex parameters.
      
      e.g.  do_each_pid_task(*pid, type, task)
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5ef64761
    • Steven Rostedt's avatar
      ftrace: trace single pid for function graph tracer · 804a6851
      Steven Rostedt authored
      Impact: New feature
      
      This patch makes the changes to set_ftrace_pid apply to the function
      graph tracer.
      
        # echo $$ > /debugfs/tracing/set_ftrace_pid
        # echo function_graph > /debugfs/tracing/current_tracer
      
      Will cause only the current task to be traced. Note, the trace flags are
      also inherited by child processes, so the children of the shell
      will also be traced.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      804a6851
    • Steven Rostedt's avatar
      ftrace: use task struct trace flag to filter on pid · 0ef8cde5
      Steven Rostedt authored
      Impact: clean up
      
      Use the new task struct trace flags to determine if a process should be
      traced or not.
      
      Note: this moves the searching of the pid to the slow path of setting
      the pid field. This needs to be converted to the pid name space.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      0ef8cde5
    • Steven Rostedt's avatar
      ftrace: graph of a single function · ea4e2bc4
      Steven Rostedt authored
      This patch adds the file:
      
         /debugfs/tracing/set_graph_function
      
      which can be used along with the function graph tracer.
      
      When this file is empty, the function graph tracer will act as
      usual. When the file has a function in it, the function graph
      tracer will only trace that function.
      
      For example:
      
       # echo blk_unplug > /debugfs/tracing/set_graph_function
       # cat /debugfs/tracing/trace
       [...]
       ------------------------------------------
       | 2)  make-19003  =>  kjournald-2219
       ------------------------------------------
      
       2)               |  blk_unplug() {
       2)               |    dm_unplug_all() {
       2)               |      dm_get_table() {
       2)      1.381 us |        _read_lock();
       2)      0.911 us |        dm_table_get();
       2)      1. 76 us |        _read_unlock();
       2) +   12.912 us |      }
       2)               |      dm_table_unplug_all() {
       2)               |        blk_unplug() {
       2)      0.778 us |          generic_unplug_device();
       2)      2.409 us |        }
       2)      5.992 us |      }
       2)      0.813 us |      dm_table_put();
       2) +   29. 90 us |    }
       2) +   34.532 us |  }
      
      You can add up to 32 functions into this file. Currently we limit it
      to 32, but this may change with later improvements.
      
      To add another function, use the append '>>':
      
        # echo sys_read >> /debugfs/tracing/set_graph_function
        # cat /debugfs/tracing/set_graph_function
        blk_unplug
        sys_read
      
      Using the '>' will clear out the function and write anew:
      
        # echo sys_write > /debug/tracing/set_graph_function
        # cat /debug/tracing/set_graph_function
        sys_write
      
      Note, if you have function graph running while doing this, the small
      time between clearing it and updating it will cause the graph to
      record all functions. This should not be an issue because after
      it sets the filter, only those functions will be recorded from then on.
      If you need to only record a particular function then set this
      file first before starting the function graph tracer. In the future
      this side effect may be corrected.
      
      The set_graph_function file is similar to the set_ftrace_filter but
      it does not take wild cards nor does it allow for more than one
      function to be set with a single write. There is no technical reason why
      this is the case, I just do not have the time yet to implement that.
      
      Note, dynamic ftrace must be enabled for this to appear because it
      uses the dynamic ftrace records to match the name to the mcount
      call sites.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      ea4e2bc4
    • Ingo Molnar's avatar
    • Ingo Molnar's avatar
      Merge commit 'v2.6.28-rc7' into tracing/core · b8307db2
      Ingo Molnar authored
      b8307db2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block · feaf3848
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
        block: fix setting of max_segment_size and seg_boundary mask
        block: internal dequeue shouldn't start timer
        block: set disk->node_id before it's being used
        When block layer fails to map iov, it calls bio_unmap_user to undo
      feaf3848
    • Linus Torvalds's avatar
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc · a7711327
      Linus Torvalds authored
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
        powerpc/83xx: Fix MCU support merge issue in mpc8349emitx.dts
        powerpc: Fix dma_map_sg() cache flushing on non coherent platforms
      a7711327
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.28' of git://linux-nfs.org/~bfields/linux · 2433c417
      Linus Torvalds authored
      * 'for-2.6.28' of git://linux-nfs.org/~bfields/linux:
        NLM: client-side nlm_lookup_host() should avoid matching on srcaddr
        nfsd: use of unitialized list head on error exit in nfs4recover.c
        Add a reference to sunrpc in svc_addsock
        nfsd: clean up grace period on early exit
      2433c417
    • Linus Torvalds's avatar
      iTCO_wdt: fix typo when setting TCO_EN bit · cd92a17e
      Linus Torvalds authored
      The code used '&= 0x00002000' when it tried to set the TCO_EN bit, which
      obviously didn't set that bit at all, but instead just reset all the
      other bits in the SMI_EN register.
      
      This bug seemingly caused various random behavior, with Frans Pop
      reporting that X.org just silently hung at startup and Rafael Wysocki
      reports the fan spinning with full speed.
      
      See
      	http://lkml.org/lkml/2008/12/3/178
      	http://bugzilla.kernel.org/show_bug.cgi?id=12162
      
      The problem seems to have been triggered by "[WATCHDOG] iTCO_wdt :
      problem with rebooting on new ICH9 based motherboards" (commit
      7cd5b08b), but the bogus code existed
      before that too (in the "supermicro_old_pre_stop()" function), it just
      apparently never showed up due to different logic.
      
      In that commit the broken code got moved around and now gets executed
      much more.
      Reported-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Tested-by: default avatarFrans Pop <elendil@planet.nl>
      Cc: Wim Van Sebroeck <wim@iguana.be>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      cd92a17e
  6. 03 Dec, 2008 1 commit
    • Steven Rostedt's avatar
      ftrace: fix race in function graph during fork · e8e1abe9
      Steven Rostedt authored
      Impact: graph tracer race/crash fix
      
      There is a nasy race in startup of a new process running the
      function graph tracer. In fork.c:
      
      	total_forks++;
      	spin_unlock(&current->sighand->siglock);
      	write_unlock_irq(&tasklist_lock);
      	ftrace_graph_init_task(p);
      	proc_fork_connector(p);
      	cgroup_post_fork(p);
      	return p;
      
      The new task is free to run as soon as the tasklist_lock is released.
      This is before the ftrace_graph_init_task. If the task does run
      it will be using the same ret_stack and curr_ret_stack as the parent.
      This will cause crashes that are difficult to debug.
      
      This patch moves the ftrace_graph_init_task to just after the alloc_pid
      code. This fixes the above race.
      Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      e8e1abe9