05 Apr, 2010

2 commits

  • Tejun Heo
     
  • …/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf: Always build the powerpc perf_arch_fetch_caller_regs version
    perf: Always build the stub perf_arch_fetch_caller_regs version
    perf, probe-finder: Build fix on Debian
    perf/scripts: Tuple was set from long in both branches in python_process_event()
    perf: Fix 'perf sched record' deadlock
    perf, x86: Fix callgraphs of 32-bit processes on 64-bit kernels
    perf, x86: Fix AMD hotplug & constraint initialization
    x86: Move notify_cpu_starting() callback to a later stage
    x86,kgdb: Always initialize the hw breakpoint attribute
    perf: Use hot regs with software sched switch/migrate events
    perf: Correctly align perf event tracing buffer

    Linus Torvalds
     

01 Apr, 2010

1 commit

  • The trace event buffer used by perf to record raw sample events
    is typed as an array of char and may then not be aligned to 8
    by alloc_percpu().

    But we need it to be aligned to 8 in sparc64 because we cast
    this buffer into a random structure type built by the TRACE_EVENT()
    macro to store the traces. So if a random 64 bits field is accessed
    inside, it may be not under an expected good alignment.

    Use an array of long instead to force the appropriate alignment, and
    perform a compile time check to ensure the size in byte of the buffer
    is a multiple of sizeof(long) so that its actual size doesn't get
    shrinked under us.

    This fixes unaligned accesses reported while using perf lock
    in sparc 64.

    Suggested-by: David Miller
    Suggested-by: Tejun Heo
    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Steven Rostedt

    Frederic Weisbecker
     

30 Mar, 2010

3 commits

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     
  • In some error handling cases the lock is not unlocked. The return is
    converted to a goto, to share the unlock at the end of the function.

    A simplified version of the semantic patch that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)

    //
    @r exists@
    expression E1;
    identifier f;
    @@

    f (...) { }
    //

    Signed-off-by: Julia Lawall
    LKML-Reference:
    Signed-off-by: Steven Rostedt

    Julia Lawall
     
  • # echo 1 > events/enable
    # echo global > trace_clock

    ------------[ cut here ]------------
    WARNING: at kernel/lockdep.c:3162 check_flags+0xb2/0x190()
    ...
    ---[ end trace 3f86734a89416623 ]---
    possible reason: unannotated irqs-on.
    ...

    There's no reason to use the raw_local_irq_save() in trace_clock_global.
    The local_irq_save() version is fine, and does not cause the bug in lockdep.

    Acked-by: Peter Zijlstra
    Signed-off-by: Li Zefan
    LKML-Reference:
    Signed-off-by: Steven Rostedt

    Li Zefan
     

27 Mar, 2010

1 commit


19 Mar, 2010

2 commits

  • The ring buffer uses 4 byte alignment while recording events into the
    buffer, even on 64bit machines. This saves space when there are lots
    of events being recorded at 4 byte boundaries.

    The ring buffer has a zero copy method to write into the buffer, with
    the reserving of space and then committing it. This may cause problems
    when writing an 8 byte word into a 4 byte alignment (not 8). For x86 and
    PPC this is not an issue, but on some architectures this would cause an
    out-of-alignment exception.

    This patch uses CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS to determine
    if it is OK to use 4 byte alignments on 64 bit machines. If it is not,
    it forces the ring buffer event header to be 8 bytes and not 4,
    and will align the length of the data to be 8 byte aligned.
    This keeps the data payload at 8 byte alignments and will allow these
    machines to run without issue.

    The trick to this is that the header can be either 4 bytes or 8 bytes
    depending on the length of the data payload. The 4 byte header
    has a length field that supports up to 112 bytes. If the length of
    the data is more than 112, the length field is set to zero, and the actual
    length is stored in the next 4 bytes after the header.

    When CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set, the code forces
    zero in the 4 byte header forcing the length to be stored in the 4 byte
    array, even with a small data load. It also forces the length of the
    data load to be 8 byte aligned. The combination of these two guarantee
    that the data is always at 8 byte alignment.

    Tested-by: Frederic Weisbecker
    (on sparc64)
    Reported-by: Frederic Weisbecker
    Acked-by: David S. Miller
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • …/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (35 commits)
    perf: Fix unexported generic perf_arch_fetch_caller_regs
    perf record: Don't try to find buildids in a zero sized file
    perf: export perf_trace_regs and perf_arch_fetch_caller_regs
    perf, x86: Fix hw_perf_enable() event assignment
    perf, ppc: Fix compile error due to new cpu notifiers
    perf: Make the install relative to DESTDIR if specified
    kprobes: Calculate the index correctly when freeing the out-of-line execution slot
    perf tools: Fix sparse CPU numbering related bugs
    perf_event: Fix oops triggered by cpu offline/online
    perf: Drop the obsolete profile naming for trace events
    perf: Take a hot regs snapshot for trace events
    perf: Introduce new perf_fetch_caller_regs() for hot regs snapshot
    perf/x86-64: Use frame pointer to walk on irq and process stacks
    lockdep: Move lock events under lockdep recursion protection
    perf report: Print the map table just after samples for which no map was found
    perf report: Add multiple event support
    perf session: Change perf_session post processing functions to take histogram tree
    perf session: Add storage for seperating event types in report
    perf session: Change add_hist_entry to take the tree root instead of session
    perf record: Add ID and to recorded event data when recording multiple events
    ...

    Linus Torvalds
     

17 Mar, 2010

1 commit

  • perf_arch_fetch_caller_regs() is exported for the overriden x86
    version, but not for the generic weak version.

    As a general rule, weak functions should not have their symbol
    exported in the same file they are defined.

    So let's export it on trace_event_perf.c as it is used by trace
    events only.

    This fixes:

    ERROR: ".perf_arch_fetch_caller_regs" [fs/xfs/xfs.ko] undefined!
    ERROR: ".perf_arch_fetch_caller_regs" [arch/powerpc/platforms/cell/spufs/spufs.ko] undefined!

    -v2: And also only build it if trace events are enabled.
    -v3: Fix changelog mistake

    Reported-by: Stephen Rothwell
    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Xiao Guangrong
    Cc: Paul Mackerras
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     

14 Mar, 2010

2 commits

  • …/git/tip/linux-2.6-tip

    * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    locking: Make sparse work with inline spinlocks and rwlocks
    x86/mce: Fix RCU lockdep splats
    rcu: Increase RCU CPU stall timeouts if PROVE_RCU
    ftrace: Replace read_barrier_depends() with rcu_dereference_raw()
    rcu: Suppress RCU lockdep warnings during early boot
    rcu, ftrace: Fix RCU lockdep splat in ftrace_perf_buf_prepare()
    rcu: Suppress __mpol_dup() false positive from RCU lockdep
    rcu: Make rcu_read_lock_sched_held() handle !PREEMPT
    rcu: Add control variables to lockdep_rcu_dereference() diagnostics
    rcu, cgroup: Relax the check in task_subsys_state() as early boot is now handled by lockdep-RCU
    rcu: Use wrapper function instead of exporting tasklist_lock
    sched, rcu: Fix rcu_dereference() for RCU-lockdep
    rcu: Make task_subsys_state() RCU-lockdep checks handle boot-time use
    rcu: Fix holdoff for accelerated GPs for last non-dynticked CPU
    x86/gart: Unexport gart_iommu_aperture

    Fix trivial conflicts in kernel/trace/ftrace.c

    Linus Torvalds
     
  • …nel/git/tip/linux-2.6-tip

    * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    tracing: Do not record user stack trace from NMI context
    tracing: Disable buffer switching when starting or stopping trace
    tracing: Use same local variable when resetting the ring buffer
    function-graph: Init curr_ret_stack with ret_stack
    ring-buffer: Move disabled check into preempt disable section
    function-graph: Add tracing_thresh support to function_graph tracer
    tracing: Update the comm field in the right variable in update_max_tr
    function-graph: Use comment notation for func names of dangling '}'
    function-graph: Fix unused reference to ftrace_set_func()
    tracing: Fix warning in s_next of trace file ops
    tracing: Include irqflags headers from trace clock

    Linus Torvalds
     

13 Mar, 2010

5 commits

  • A bug was found with Li Zefan's ftrace_stress_test that caused applications
    to segfault during the test.

    Placing a tracing_off() in the segfault code, and examining several
    traces, I found that the following was always the case. The lock tracer
    was enabled (lockdep being required) and userstack was enabled. Testing
    this out, I just enabled the two, but that was not good enough. I needed
    to run something else that could trigger it. Running a load like hackbench
    did not work, but executing a new program would. The following would
    trigger the segfault within seconds:

    # echo 1 > /debug/tracing/options/userstacktrace
    # echo 1 > /debug/tracing/events/lock/enable
    # while :; do ls > /dev/null ; done

    Enabling the function graph tracer and looking at what was happening
    I finally noticed that all cashes happened just after an NMI.

    1) | copy_user_handle_tail() {
    1) | bad_area_nosemaphore() {
    1) | __bad_area_nosemaphore() {
    1) | no_context() {
    1) | fixup_exception() {
    1) 0.319 us | search_exception_tables();
    1) 0.873 us | }
    [...]
    1) 0.314 us | __rcu_read_unlock();
    1) 0.325 us | native_apic_mem_write();
    1) 0.943 us | }
    1) 0.304 us | rcu_nmi_exit();
    [...]
    1) 0.479 us | find_vma();
    1) | bad_area() {
    1) | __bad_area() {

    After capturing several traces of failures, all of them happened
    after an NMI. Curious about this, I added a trace_printk() to the NMI
    handler to read the regs->ip to see where the NMI happened. In which I
    found out it was here:

    ffffffff8135b660 :
    ffffffff8135b660: 48 83 ec 78 sub $0x78,%rsp
    ffffffff8135b664: e8 97 01 00 00 callq ffffffff8135b800

    What was happening is that the NMI would happen at the place that a page
    fault occurred. It would call rcu_read_lock() which was traced by
    the lock events, and the user_stack_trace would run. This would trigger
    a page fault inside the NMI. I do not see where the CR2 register is
    saved or restored in NMI handling. This means that it would corrupt
    the page fault handling that the NMI interrupted.

    The reason the while loop of ls helped trigger the bug, was that
    each execution of ls would cause lots of pages to be faulted in, and
    increase the chances of the race happening.

    The simple solution is to not allow user stack traces in NMI context.
    After this patch, I ran the above "ls" test for a couple of hours
    without any issues. Without this patch, the bug would trigger in less
    than a minute.

    Cc: stable@kernel.org
    Reported-by: Li Zefan
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • When the trace iterator is read, tracing_start() and tracing_stop()
    is called to stop tracing while the iterator is processing the trace
    output.

    These functions disable both the standard buffer and the max latency
    buffer. But if the wakeup tracer is running, it can switch these
    buffers between the two disables:

    buffer = global_trace.buffer;
    if (buffer)
    ring_buffer_record_disable(buffer);

    <<
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • In the ftrace code that resets the ring buffer it references the
    buffer with a local variable, but then uses the tr->buffer as the
    parameter to reset. If the wakeup tracer is running, which can
    switch the tr->buffer with the max saved buffer, this can break
    the requirement of disabling the buffer before the reset.

    buffer = tr->buffer;
    ring_buffer_record_disable(buffer);
    synchronize_sched();
    __tracing_reset(tr->buffer, cpu);

    If the tr->buffer is swapped, then the reset is not happening to the
    buffer that was disabled. This will cause the ring buffer to fail.

    Found with Li Zefan's ftrace_stress_test.

    Cc: stable@kernel.org
    Reported-by: Lai Jiangshan
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • If the graph tracer is active, and a task is forked but the allocating of
    the processes graph stack fails, it can cause crash later on.

    This is due to the temporary stack being NULL, but the curr_ret_stack
    variable is copied from the parent. If it is not -1, then in
    ftrace_graph_probe_sched_switch() the following:

    for (index = next->curr_ret_stack; index >= 0; index--)
    next->ret_stack[index].calltime += timestamp;

    Will cause a kernel OOPS.

    Found with Li Zefan's ftrace_stress_test.

    Cc: stable@kernel.org
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • The ring buffer resizing and resetting relies on a schedule RCU
    action. The buffers are disabled, a synchronize_sched() is called
    and then the resize or reset takes place.

    But this only works if the disabling of the buffers are within the
    preempt disabled section, otherwise a window exists that the buffers
    can be written to while a reset or resize takes place.

    Cc: stable@kernel.org
    Reported-by: Li Zefan
    Signed-off-by: Lai Jiangshan
    LKML-Reference:
    Signed-off-by: Steven Rostedt

    Lai Jiangshan
     

11 Mar, 2010

3 commits


10 Mar, 2010

2 commits

  • Drop the obsolete "profile" naming used by perf for trace events.
    Perf can now do more than simple events counting, so generalize
    the API naming.

    Signed-off-by: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Steven Rostedt
    Cc: Masami Hiramatsu
    Cc: Jason Baron

    Frederic Weisbecker
     
  • We are taking a wrong regs snapshot when a trace event triggers.
    Either we use get_irq_regs(), which gives us the interrupted
    registers if we are in an interrupt, or we use task_pt_regs()
    which gives us the state before we entered the kernel, assuming
    we are lucky enough to be no kernel thread, in which case
    task_pt_regs() returns the initial set of regs when the kernel
    thread was started.

    What we want is different. We need a hot snapshot of the regs,
    so that we can get the instruction pointer to record in the
    sample, the frame pointer for the callchain, and some other
    things.

    Let's use the new perf_fetch_caller_regs() for that.

    Comparison with perf record -e lock: -R -a -f -g
    Before:

    perf [kernel] [k] __do_softirq
    |
    --- __do_softirq
    |
    |--55.16%-- __open
    |
    --44.84%-- __write_nocancel

    After:

    perf [kernel] [k] perf_tp_event
    |
    --- perf_tp_event
    |
    |--41.07%-- lock_acquire
    | |
    | |--39.36%-- _raw_spin_lock
    | | |
    | | |--7.81%-- hrtimer_interrupt
    | | | smp_apic_timer_interrupt
    | | | apic_timer_interrupt

    The old case was producing unreliable callchains. Now having
    right frame and instruction pointers, we have the trace we
    want.

    Also syscalls and kprobe events already have the right regs,
    let's use them instead of wasting a retrieval.

    v2: Follow the rename perf_save_regs() -> perf_fetch_caller_regs()

    Signed-off-by: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: H. Peter Anvin
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Steven Rostedt
    Cc: Arnaldo Carvalho de Melo
    Cc: Masami Hiramatsu
    Cc: Jason Baron
    Cc: Archs

    Frederic Weisbecker
     

08 Mar, 2010

1 commit


06 Mar, 2010

4 commits

  • Add support for tracing_thresh to the function_graph tracer. This
    version of this feature isolates the checks into new entry and
    return functions, to avoid adding more conditional code into the
    main function_graph paths.

    When the tracing_thresh is set and the function graph tracer is
    enabled, only the functions that took longer than the time in
    microseconds that was set in tracing_thresh are recorded. To do this
    efficiently, only the function exits are recorded:

    [tracing]# echo 100 > tracing_thresh
    [tracing]# echo function_graph > current_tracer
    [tracing]# cat trace
    # tracer: function_graph
    #
    # CPU DURATION FUNCTION CALLS
    # | | | | | | |
    1) ! 119.214 us | } /* smp_apic_timer_interrupt */
    1)
    Signed-off-by: Tim Bird
    LKML-Reference:
    Signed-off-by: Steven Rostedt

    Tim Bird
     
  • The latency output showed:

    # | task: -3 (uid:0 nice:0 policy:1 rt_prio:99)

    The comm is missing in the "task:" and it looks like a minus 3 is
    the output. The correct display should be:

    # | task: migration/0-3 (uid:0 nice:0 policy:1 rt_prio:99)

    The problem is that the comm is being stored in the wrong data
    structure. The max_tr.data[cpu] is what stores the comm, not the
    tr->data[cpu].

    Before this patch the max_tr.data[cpu]->comm was zeroed and the /debug/trace
    ended up showing just the '-' sign followed by the pid.

    Also remove a needless initialization of max_data.

    Signed-off-by: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Steven Rostedt

    Arnaldo Carvalho de Melo
     
  • When a '}' does not have a matching function start, the name is printed
    within parenthesis. But this makes it confusing between ending '}'
    and function starts. This patch makes the function name appear in C comment
    notation.

    Old view:
    3) 1.281 us | } (might_fault)
    3) 3.620 us | } (filldir)
    3) 5.251 us | } (call_filldir)
    3) | call_filldir() {
    3) | filldir() {

    New view:
    3) 1.281 us | } /* might_fault */
    3) 3.620 us | } /* filldir */
    3) 5.251 us | } /* call_filldir */
    3) | call_filldir() {
    3) | filldir() {

    Requested-by: Ingo Molnar
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • The declaration of ftrace_set_func() is at the start of the ftrace.c file
    and wrapped with a #ifdef CONFIG_FUNCTION_GRAPH condition. If function
    graph tracing is enabled but CONFIG_DYNAMIC_FTRACE is not, a warning
    about that function being declared static and unused is given.

    This really should have been placed within the CONFIG_FUNCTION_GRAPH
    condition that uses ftrace_set_func().

    Moving the declaration down fixes the warning and makes the code cleaner.

    Reported-by: Peter Zijlstra
    Signed-off-by: Steven Rostedt

    Steven Rostedt
     

04 Mar, 2010

2 commits


03 Mar, 2010

2 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
    percpu: add __percpu sparse annotations to what's left
    percpu: add __percpu sparse annotations to fs
    percpu: add __percpu sparse annotations to core kernel subsystems
    local_t: Remove leftover local.h
    this_cpu: Remove pageset_notifier
    this_cpu: Page allocator conversion
    percpu, x86: Generic inc / dec percpu instructions
    local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c
    module: Use this_cpu_xx to dynamically allocate counters
    local_t: Remove cpu_local_xx macros
    percpu: refactor the code in pcpu_[de]populate_chunk()
    percpu: remove compile warnings caused by __verify_pcpu_ptr()
    percpu: make accessors check for percpu pointer in sparse
    percpu: add __percpu for sparse.
    percpu: make access macros universal
    percpu: remove per_cpu__ prefix.

    Linus Torvalds
     
  • This warning in s_next() can be triggered by lseek():
    [] ? s_next+0x77/0x80
    [] warn_slowpath_common+0x81/0xa0
    [] ? s_next+0x77/0x80
    [] warn_slowpath_null+0x1a/0x20
    [] s_next+0x77/0x80
    [] traverse+0x117/0x200
    [] seq_lseek+0xa3/0x120
    [] ? seq_lseek+0x0/0x120
    [] vfs_llseek+0x41/0x50
    [] sys_llseek+0x66/0xa0
    [] sysenter_do_call+0x12/0x26

    The iterator "leftover" variable is zeroed in the opening of the trace
    file. But lseek can call s_start() which will call s_next() without
    reseting the "leftover" variable back to zero, which might trigger
    the WARN_ON_ONCE(iter->leftover) that is in s_next().

    Cc: stable@kernel.org
    Signed-off-by: Lai Jiangshan
    LKML-Reference:
    Signed-off-by: Steven Rostedt

    Lai Jiangshan
     

02 Mar, 2010

1 commit

  • * 'for-2.6.34' of git://git.kernel.dk/linux-2.6-block: (38 commits)
    block: don't access jiffies when initialising io_context
    cfq: remove 8 bytes of padding from cfq_rb_root on 64 bit builds
    block: fix for "Consolidate phys_segment and hw_segment limits"
    cfq-iosched: quantum check tweak
    blktrace: perform cleanup after setup error
    blkdev: fix merge_bvec_fn return value checks
    cfq-iosched: requests "in flight" vs "in driver" clarification
    cciss: Fix problem with scatter gather elements in the scsi half of the driver
    cciss: eliminate unnecessary pointer use in cciss scsi code
    cciss: do not use void pointer for scsi hba data
    cciss: factor out scatter gather chain block mapping code
    cciss: fix scatter gather chain block dma direction kludge
    cciss: simplify scatter gather code
    cciss: factor out scatter gather chain block allocation and freeing
    cciss: detect bad alignment of scsi commands at build time
    cciss: clarify command list padding calculation
    cfq-iosched: rethink seeky detection for SSDs
    cfq-iosched: rework seeky detection
    block: remove padding from io_context on 64bit builds
    block: Consolidate phys_segment and hw_segment limits
    ...

    Linus Torvalds
     

01 Mar, 2010

3 commits

  • Currently even if BLKTRACESETUP ioctl has failed user must call
    BLKTRACETEARDOWN to be shure what all staff was cleaned, which
    is contr-intuitive.
    Let's setup ioctl make necessery cleanup by it self.

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Jens Axboe

    Dmitry Monakhov
     
  • trace_clock.c includes spinlock.h, which ends up including
    asm/system.h, which in turn includes linux/irqflags.h in x86.

    So the definition of raw_local_irq_save is luckily covered there,
    but this is not the case in parisc:

    tip/kernel/trace/trace_clock.c:86: error: implicit declaration of function 'raw_local_irq_save'
    tip/kernel/trace/trace_clock.c:112: error: implicit declaration of function 'raw_local_irq_restore'

    We need to include linux/irqflags.h directly from trace_clock.c
    to avoid such build error.

    Signed-off-by: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Robert Richter
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • …git/tip/linux-2.6-tip

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (172 commits)
    perf_event, amd: Fix spinlock initialization
    perf_event: Fix preempt warning in perf_clock()
    perf tools: Flush maps on COMM events
    perf_events, x86: Split PMU definitions into separate files
    perf annotate: Handle samples not at objdump output addr boundaries
    perf_events, x86: Remove superflous MSR writes
    perf_events: Simplify code by removing cpu argument to hw_perf_group_sched_in()
    perf_events, x86: AMD event scheduling
    perf_events: Add new start/stop PMU callbacks
    perf_events: Report the MMAP pgoff value in bytes
    perf annotate: Defer allocating sym_priv->hist array
    perf symbols: Improve debugging information about symtab origins
    perf top: Use a macro instead of a constant variable
    perf symbols: Check the right return variable
    perf/scripts: Tag syscall_name helper as not yet available
    perf/scripts: Add perf-trace-python Documentation
    perf/scripts: Remove unnecessary PyTuple resizes
    perf/scripts: Add syscall tracing scripts
    perf/scripts: Add Python scripting engine
    perf/scripts: Remove check-perf-trace from listed scripts
    ...

    Fix trivial conflict in tools/perf/util/probe-event.c

    Linus Torvalds
     

27 Feb, 2010

3 commits


26 Feb, 2010

2 commits