20 Jun, 2011

1 commit

  • …-for-linus' and 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    tools/perf: Fix static build of perf tool
    tracing: Fix regression in printk_formats file

    * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    generic-ipi: Fix kexec boot crash by initializing call_single_queue before enabling interrupts

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    clocksource: Make watchdog robust vs. interruption
    timerfd: Fix wakeup of processes when timer is cancelled on clock change

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, MAINTAINERS: Add x86 MCE people
    x86, efi: Do not reserve boot services regions within reserved areas

    Linus Torvalds
     

19 Jun, 2011

1 commit


17 Jun, 2011

1 commit


16 Jun, 2011

2 commits

  • To build a statically linked version of the perf tool all needed
    libraries must be added in the correct order to get the symbols
    resolved. Currently this is broken when, e.g. python or newt
    support is enabled -- libpython needs libpthread which is an
    unconditional link dependency of the perf tool; libslang needs
    libm, another unconditional dependency. To solve the problem in
    the long run without the need to keep track of transitive
    library dependencies, simply make the linker look at the EXTLIBS
    multiple times until it has all symbols resolved.

    Signed-off-by: Mathias Krause
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Link: http://lkml.kernel.org/r/1308171818-20370-1-git-send-email-minipli@googlemail.com
    Signed-off-by: Ingo Molnar

    Mathias Krause
     
  • When generating the perf version from the kernel version using 'make
    kernelver' it is necessary to clear out any MAKEFLAGS otherwise they may
    trigger additional output which pollute the contents.

    Signed-off-by: Andy Whitcroft
    Signed-off-by: Michal Marek

    Andy Whitcroft
     

15 Jun, 2011

1 commit

  • Commit a26ac2455ffcf3(rcu: move TREE_RCU from softirq to kthread)
    introduced performance regression. In an AIM7 test, this commit degraded
    performance by about 40%.

    The commit runs rcu callbacks in a kthread instead of softirq. We observed
    high rate of context switch which is caused by this. Out test system has
    64 CPUs and HZ is 1000, so we saw more than 64k context switch per second
    which is caused by RCU's per-CPU kthread. A trace showed that most of
    the time the RCU per-CPU kthread doesn't actually handle any callbacks,
    but instead just does a very small amount of work handling grace periods.
    This means that RCU's per-CPU kthreads are making the scheduler do quite
    a bit of work in order to allow a very small amount of RCU-related
    processing to be done.

    Alex Shi's analysis determined that this slowdown is due to lock
    contention within the scheduler. Unfortunately, as Peter Zijlstra points
    out, the scheduler's real-time semantics require global action, which
    means that this contention is inherent in real-time scheduling. (Yes,
    perhaps someone will come up with a workaround -- otherwise, -rt is not
    going to do well on large SMP systems -- but this patch will work around
    this issue in the meantime. And "the meantime" might well be forever.)

    This patch therefore re-introduces softirq processing to RCU, but only
    for core RCU work. RCU callbacks are still executed in kthread context,
    so that only a small amount of RCU work runs in softirq context in the
    common case. This should minimize ksoftirqd execution, allowing us to
    skip boosting of ksoftirqd for CONFIG_RCU_BOOST=y kernels.

    Signed-off-by: Shaohua Li
    Tested-by: "Alex,Shi"
    Signed-off-by: Paul E. McKenney

    Shaohua Li
     

10 Jun, 2011

2 commits


08 Jun, 2011

1 commit

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

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf: Fix comments in include/linux/perf_event.h
    perf: Comment /proc/sys/kernel/perf_event_paranoid to be part of user ABI
    perf python: Fix argument name list of read_on_cpu()
    perf evlist: Don't die if sample_{id_all|type} is invalid
    perf python: Use exception to propagate errors
    perf evlist: Remove dependency on debug routines
    perf, cgroups: Fix up for new API

    Linus Torvalds
     

04 Jun, 2011

1 commit


03 Jun, 2011

4 commits

  • Mandatory arguments need to be present in the argument name list, as
    well as optional arguments, otherwise python barfs:

    # ./python/twatch.py
    Traceback (most recent call last):
    File "./python/twatch.py", line 41, in
    main()
    File "./python/twatch.py", line 32, in main
    event = evlist.read_on_cpu(cpu)
    RuntimeError: more argument specifiers than keyword list entries

    Hence, add cpu to the name list.

    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/r/1301588863-20210-1-git-send-email-fweisbec@gmail.com
    Signed-off-by: Frederic Weisbecker
    Signed-off-by: Arnaldo Carvalho de Melo

    Frederic Weisbecker
     
  • Fixes two more cases where the python binding would not load:

    . Not finding die(), which it shouldn't anyway, not good to just stop the
    world because some particular perf.data file is invalid, just propagate
    the error to the caller.

    . Not finding perf_sample_size: fix it by moving it from event.c to evsel,
    where it belongs, as most cases are moving to operate on an evsel object.o

    One of the fixed problems:

    [root@emilia ~]# python
    >>> import perf
    Traceback (most recent call last):
    File "", line 1, in
    ImportError: /home/acme/git/build/perf/python/perf.so: undefined symbol: perf_sample_size
    >>>
    [root@emilia ~]#

    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/n/tip-1hkj7b2cvgbfnoizsekjb6c9@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • We were using pr_debug to tell the user about not being able to parse a sample
    where we should really use the python way of reporting errors: exceptions.

    Fixes this problem:

    [root@emilia ~]# python
    >>> import perf
    Traceback (most recent call last):
    File "", line 1, in
    ImportError: /home/acme/git/build/perf/python/perf.so: undefined symbol: eprintf
    >>>
    [root@emilia ~]

    As we want to keep the objects linked in the python binding (and in the future
    in a shared library) minimal.

    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/n/tip-m9dba9kaluas0kq8r58z191c@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • So far we avoided having to link debug.o in the python binding, keep it
    that way by not using ui__warning() in evlist.c.

    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/n/tip-4wtew8hd3g7ejnlehtspys2t@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

02 Jun, 2011

3 commits

  • By ignoring the unset values of the minconfig in deciding
    what to test in the config_bisect can cause the problem
    config from being tested too.

    Just do not test the configs that are set in the minconfig.

    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • The command that is called that reboots the kernel may fail
    but the return code is not passed back to the ktest.pl script.
    This is because a ';' is used between the two commands and
    if the second command fails, only the first command's return
    code is returned. Using a '&&' between the two commands fixes
    this.

    Signed-off-by: Steven Rostedt

    Steven Rostedt
     
  • Because in perl the array size returned by $#arr, is the last
    index and not the actually size of the array, we end the config
    bisect early, thinking there is only one config left when there
    are in fact two. Thus the result has a 50% chance of picking
    the correct config that caused the problem.

    Signed-off-by: Steven Rostedt

    Steven Rostedt
     

30 May, 2011

1 commit


28 May, 2011

5 commits

  • We now just warn the user about the fact and go on providing just
    userspace samples.

    This fixes a problem when no vmlinux is explicetely passed by the user,
    thus symbol_conf.vmlinux_name is NULL, no suitable vmlinux is found, and
    then we get:

    aldebaran:~> perf top -p 7557
    [kernel.kallsyms] with build id 44d9a989eabbd79e486bc079d6b743d397c204e0
    not found, continuing without symbols
    The (null) file can't be used

    Reported-by: Ingo Molnar
    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/n/tip-cj2g81hn64wv2bipmqk4fy2m@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Reported-by: Ingo Molnar
    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/n/tip-cyl5zmi1nu35vyu7l5im2pyv@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/n/tip-weqbs0tkk2u0qp1xxdxxosfg@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • perf_evsel__alloc_fd allocates an array of file descriptors with the
    memory initialized to 0. The array has dimensions for cpus and threads.

    Later, __perf_evsel__open calls sys_perf_event_open for each cpu and thread
    dimensions. If the open fails for any of the cpus or threads then the fd's
    for this event are closed and the fd entry in the array is set to -1. Now,
    if the first attempt fails for the event (e.g., the event is not supported)
    the remaining dimensions (cpu > 0 and thread > 0) are not touched and left
    at the initialized value of 0.

    builtin-stat catches ENOENT and ENOSYS failures and allows the command to
    continue. The end result is that stat attempts to read from an fd of 0 which
    of course is stdin and so the command hangs until you type ctrl-D.

    Resolve by initializing the array to -1 since an fd < 0 is already
    handled.

    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1306511914-8016-1-git-send-email-dsahern@gmail.com
    Signed-off-by: David Ahern
    Signed-off-by: Arnaldo Carvalho de Melo

    David Ahern
     
  • Suggested-by: Ingo Molnar
    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/n/tip-i1p8vrhq7xveyui6t1sc914e@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

26 May, 2011

3 commits

  • Where /usr/include/linux/const.h is not present, e.g. RHEL5.

    Reported-by: Srikar Dronamraju
    Cc: Srikar Dronamraju
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/n/tip-ypcw2mu0w7dl1rrc6ncz3pee@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Perf uses /proc/modules to figure out where kernel modules are loaded.

    With the advent of kptr_restrict, non root users get zeroes for all module
    start addresses.

    So check if kptr_restrict is non zero and don't generate the syntethic
    PERF_RECORD_MMAP events for them.

    Warn the user about it in perf record and in perf report.

    In perf report the reference relocation symbol being zero means that
    kptr_restrict was set, thus /proc/kallsyms has only zeroed addresses, so don't
    use it to fixup symbol addresses when using a valid kallsyms (in the buildid
    cache) or vmlinux (in the vmlinux path) build-id located automatically or
    specified by the user.

    Provide an explanation about it in 'perf report' if kernel samples were taken,
    checking if a suitable vmlinux or kallsyms was found/specified.

    Restricted /proc/kallsyms don't go to the buildid cache anymore.

    Example:

    [acme@emilia ~]$ perf record -F 100000 sleep 1

    WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted, check
    /proc/sys/kernel/kptr_restrict.

    Samples in kernel functions may not be resolved if a suitable vmlinux file is
    not found in the buildid cache or in the vmlinux path.

    Samples in kernel modules won't be resolved at all.

    If some relocation was applied (e.g. kexec) symbols may be misresolved even
    with a suitable vmlinux or kallsyms file.

    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.005 MB perf.data (~231 samples) ]
    [acme@emilia ~]$

    [acme@emilia ~]$ perf report --stdio
    Kernel address maps (/proc/{kallsyms,modules}) were restricted,
    check /proc/sys/kernel/kptr_restrict before running 'perf record'.

    If some relocation was applied (e.g. kexec) symbols may be misresolved.

    Samples in kernel modules can't be resolved as well.

    # Events: 13 cycles
    #
    # Overhead Command Shared Object Symbol
    # ........ ....... ................. .....................
    #
    20.24% sleep [kernel.kallsyms] [k] page_fault
    20.04% sleep [kernel.kallsyms] [k] filemap_fault
    19.78% sleep [kernel.kallsyms] [k] __lru_cache_add
    19.69% sleep ld-2.12.so [.] memcpy
    14.71% sleep [kernel.kallsyms] [k] dput
    4.70% sleep [kernel.kallsyms] [k] flush_signal_handlers
    0.73% sleep [kernel.kallsyms] [k] perf_event_comm
    0.11% sleep [kernel.kallsyms] [k] native_write_msr_safe

    #
    # (For a higher level overview, try: perf report --sort comm,dso)
    #
    [acme@emilia ~]$

    This is because it found a suitable vmlinux (build-id checked) in
    /lib/modules/2.6.39-rc7+/build/vmlinux (use -v in perf report to see the long
    file name).

    If we remove that file from the vmlinux path:

    [root@emilia ~]# mv /lib/modules/2.6.39-rc7+/build/vmlinux \
    /lib/modules/2.6.39-rc7+/build/vmlinux.OFF
    [acme@emilia ~]$ perf report --stdio
    [kernel.kallsyms] with build id 57298cdbe0131f6871667ec0eaab4804dcf6f562
    not found, continuing without symbols

    Kernel address maps (/proc/{kallsyms,modules}) were restricted, check
    /proc/sys/kernel/kptr_restrict before running 'perf record'.

    As no suitable kallsyms nor vmlinux was found, kernel samples can't be
    resolved.

    Samples in kernel modules can't be resolved as well.

    # Events: 13 cycles
    #
    # Overhead Command Shared Object Symbol
    # ........ ....... ................. ......
    #
    80.31% sleep [kernel.kallsyms] [k] 0xffffffff8103425a
    19.69% sleep ld-2.12.so [.] memcpy

    #
    # (For a higher level overview, try: perf report --sort comm,dso)
    #
    [acme@emilia ~]$

    Reported-by: Stephane Eranian
    Suggested-by: David Miller
    Cc: Dave Jones
    Cc: David Miller
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Kees Cook
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Pekka Enberg
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Tom Zanussi
    Link: http://lkml.kernel.org/n/tip-mt512joaxxbhhp1odop04yit@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Signed-off-by: Jesper Juhl
    Cc: Tom Zanussi
    Cc: Arnaldo Carvalho de Melo
    Cc: trivial@kernel.org
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Link: http://lkml.kernel.org/r/alpine.LNX.2.00.1105261011290.17400@swampdragon.chaosbits.net
    Signed-off-by: Ingo Molnar

    Jesper Juhl
     

24 May, 2011

4 commits

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

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf tools: Fix sample type size calculation in 32 bits archs
    profile: Use vzalloc() rather than vmalloc() & memset()

    Linus Torvalds
     
  • The shift used here to count the number of bits set in
    the mask doesn't work above the low part for archs that
    are not 64 bits.

    Fix the constant used for the shift.

    This fixes a 32-bit perf top failure reported by Eric Dumazet:

    Can't parse sample, err = -14
    Can't parse sample, err = -14
    ...

    Reported-and-tested-by: Eric Dumazet
    Signed-off-by: Frederic Weisbecker
    Cc: Linus Torvalds
    Cc: Steven Rostedt
    Cc: Eric Dumazet
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Stephane Eranian

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

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf tools: Fix sample size bit operations
    perf tools: Fix ommitted mmap data update on remap
    watchdog: Change the default timeout and configure nmi watchdog period based on watchdog_thresh
    watchdog: Disable watchdog when thresh is zero
    watchdog: Only disable/enable watchdog if neccessary
    watchdog: Fix rounding bug in get_sample_period()
    perf tools: Propagate event parse error handling
    perf tools: Robustify dynamic sample content fetch
    perf tools: Pre-check sample size before parsing
    perf tools: Move evlist sample helpers to evlist area
    perf tools: Remove junk code in mmap size handling
    perf tools: Check we are able to read the event size on mmap

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)
    b43: fix comment typo reqest -> request
    Haavard Skinnemoen has left Atmel
    cris: typo in mach-fs Makefile
    Kconfig: fix copy/paste-ism for dell-wmi-aio driver
    doc: timers-howto: fix a typo ("unsgined")
    perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c
    md, raid5: Fix spelling error in comment ('Ofcourse' --> 'Of course').
    treewide: fix a few typos in comments
    regulator: change debug statement be consistent with the style of the rest
    Revert "arm: mach-u300/gpio: Fix mem_region resource size miscalculations"
    audit: acquire creds selectively to reduce atomic op overhead
    rtlwifi: don't touch with treewide double semicolon removal
    treewide: cleanup continuations and remove logging message whitespace
    ath9k_hw: don't touch with treewide double semicolon removal
    include/linux/leds-regulator.h: fix syntax in example code
    tty: fix typo in descripton of tty_termios_encode_baud_rate
    xtensa: remove obsolete BKL kernel option from defconfig
    m68k: fix comment typo 'occcured'
    arch:Kconfig.locks Remove unused config option.
    treewide: remove extra semicolons
    ...

    Linus Torvalds
     

23 May, 2011

3 commits

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-ktest:
    ktest: Allow options to be used by other options
    ktest: Create variables for the ktest config files
    ktest: Reboot after each patchcheck run
    ktest: Reboot to good kernel after every bisect run
    ktest: If test failed due to timeout, print that
    ktest: Fix post install command

    Linus Torvalds
     
  • What we want is to count the number of bits in the mask,
    not some other random operation written in the middle
    of the night.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1306148788-6179-2-git-send-email-fweisbec@gmail.com
    [ Fixed perf_event__names[] alignment which was nearby and hurting my eyes ... ]
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • Commit eac9eacee16 "perf tools: Check we are able to read the event
    size on mmap" brought a check to ensure we can read the size of the
    event before dereferencing it, and do a remap otherwise to move the
    buffer forward.

    However that remap was ommitting all the necessary work to
    update the new page offset, head, and to unmap previous pages,
    etc...

    To fix this, gather all the code that fetches the event in a
    seperate helper which does all the necessary checks about the
    header/event size and tells us anytime a remap is needed.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1306148788-6179-3-git-send-email-fweisbec@gmail.com
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     

22 May, 2011

7 commits