1. 13 11月, 2008 1 次提交
    • F
      tracing/function-return-tracer: make the function return tracer lockless · 62d59d17
      Frederic Weisbecker 提交于
      Impact: remove spinlocks and irq disabling in function return tracer.
      
      I've tried to figure out all of the race condition that could happen
      when the tracer pushes or pops a return address trace to/from the
      current thread_info.
      
      Theory:
      
      _ One thread can only execute on one cpu at a time. So this code
        doesn't need to be SMP-safe. Just drop the spinlock.
      
      _ The only race could happen between the current thread and an
        interrupt. If an interrupt is raised, it will increase the index of
        the return stack storage and then execute until the end of the
        tracing to finally free the index it used. We don't need to disable
        irqs.
      
      This is theorical. In practice, I've tested it with a two-core SMP and
      had no problem at all. Perhaps -tip testing could confirm it.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      62d59d17
  2. 12 11月, 2008 23 次提交
    • I
      Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and... · cb9382e5
      Ingo Molnar 提交于
      Merge branches 'tracing/fastboot', 'tracing/function-return-tracer' and 'tracing/ring-buffer' into tracing/core
      cb9382e5
    • S
      ring-buffer: fix deadlock from reader_lock in read_start · 642edba5
      Steven Rostedt 提交于
      Impact: deadlock fix in ring_buffer_read_start
      
      The ring_buffer_iter_reset was called from ring_buffer_read_start
      where both grabbed the reader_lock.
      
      This patch separates out the internals of ring_buffer_iter_reset
      to its own function so that both APIs may grab the reader_lock.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      642edba5
    • F
      tracing/fastboot: Use the ring-buffer timestamp for initcall entries · 74239072
      Frederic Weisbecker 提交于
      Impact: Split the boot tracer entries in two parts: call and return
      
      Now that we are using the sched tracer from the boot tracer, we want
      to use the same timestamp than the ring-buffer to have consistent time
      captures between sched events and initcall events.
      
      So we get rid of the old time capture by the boot tracer and split the
      initcall events in two parts: call and return. This way we have the
      ring buffer timestamp of both.
      
      An example trace:
      
      [   27.904149584] calling  net_ns_init+0x0/0x1c0 @ 1
      [   27.904429624] initcall net_ns_init+0x0/0x1c0 returned 0 after 0 msecs
      [   27.904575926] calling  reboot_init+0x0/0x20 @ 1
      [   27.904655399] initcall reboot_init+0x0/0x20 returned 0 after 0 msecs
      [   27.904800228] calling  sysctl_init+0x0/0x30 @ 1
      [   27.905142914] initcall sysctl_init+0x0/0x30 returned 0 after 0 msecs
      [   27.905287211] calling  ksysfs_init+0x0/0xb0 @ 1
       ##### CPU 0 buffer started ####
                  init-1     [000]    27.905395:      1:120:R   + [001]    11:115:S
       ##### CPU 1 buffer started ####
                <idle>-0     [001]    27.905425:      0:140:R ==> [001]    11:115:R
                  init-1     [000]    27.905426:      1:120:D ==> [000]     0:140:R
                <idle>-0     [000]    27.905431:      0:140:R   + [000]     4:115:S
                <idle>-0     [000]    27.905451:      0:140:R ==> [000]     4:115:R
           ksoftirqd/0-4     [000]    27.905456:      4:115:S ==> [000]     0:140:R
                 udevd-11    [001]    27.905458:     11:115:R   + [001]    14:115:R
                <idle>-0     [000]    27.905459:      0:140:R   + [000]     4:115:S
                <idle>-0     [000]    27.905462:      0:140:R ==> [000]     4:115:R
                 udevd-11    [001]    27.905462:     11:115:R ==> [001]    14:115:R
           ksoftirqd/0-4     [000]    27.905467:      4:115:S ==> [000]     0:140:R
                <idle>-0     [000]    27.905470:      0:140:R   + [000]     4:115:S
                <idle>-0     [000]    27.905473:      0:140:R ==> [000]     4:115:R
           ksoftirqd/0-4     [000]    27.905476:      4:115:S ==> [000]     0:140:R
                <idle>-0     [000]    27.905479:      0:140:R   + [000]     4:115:S
                <idle>-0     [000]    27.905482:      0:140:R ==> [000]     4:115:R
           ksoftirqd/0-4     [000]    27.905486:      4:115:S ==> [000]     0:140:R
                 udevd-14    [001]    27.905499:     14:120:X ==> [001]    11:115:R
                 udevd-11    [001]    27.905506:     11:115:R   + [000]     1:120:D
                <idle>-0     [000]    27.905515:      0:140:R ==> [000]     1:120:R
                 udevd-11    [001]    27.905517:     11:115:S ==> [001]     0:140:R
      [   27.905557107] initcall ksysfs_init+0x0/0xb0 returned 0 after 3906 msecs
      [   27.905705736] calling  init_jiffies_clocksource+0x0/0x10 @ 1
      [   27.905779239] initcall init_jiffies_clocksource+0x0/0x10 returned 0 after 0 msecs
      [   27.906769814] calling  pm_init+0x0/0x30 @ 1
      [   27.906853627] initcall pm_init+0x0/0x30 returned 0 after 0 msecs
      [   27.906997803] calling  pm_disk_init+0x0/0x20 @ 1
      [   27.907076946] initcall pm_disk_init+0x0/0x20 returned 0 after 0 msecs
      [   27.907222556] calling  swsusp_header_init+0x0/0x30 @ 1
      [   27.907294325] initcall swsusp_header_init+0x0/0x30 returned 0 after 0 msecs
      [   27.907439620] calling  stop_machine_init+0x0/0x50 @ 1
                  init-1     [000]    27.907485:      1:120:R   + [000]     2:115:S
                  init-1     [000]    27.907490:      1:120:D ==> [000]     2:115:R
              kthreadd-2     [000]    27.907507:      2:115:R   + [001]    15:115:R
                <idle>-0     [001]    27.907517:      0:140:R ==> [001]    15:115:R
              kthreadd-2     [000]    27.907517:      2:115:D ==> [000]     0:140:R
                <idle>-0     [000]    27.907521:      0:140:R   + [000]     4:115:S
                <idle>-0     [000]    27.907524:      0:140:R ==> [000]     4:115:R
                 udevd-15    [001]    27.907527:     15:115:D   + [000]     2:115:D
           ksoftirqd/0-4     [000]    27.907537:      4:115:S ==> [000]     2:115:R
                 udevd-15    [001]    27.907537:     15:115:D ==> [001]     0:140:R
              kthreadd-2     [000]    27.907546:      2:115:R   + [000]     1:120:D
              kthreadd-2     [000]    27.907550:      2:115:S ==> [000]     1:120:R
                  init-1     [000]    27.907584:      1:120:R   + [000]    15:  0:D
                  init-1     [000]    27.907589:      1:120:R   + [000]     2:115:S
                  init-1     [000]    27.907593:      1:120:D ==> [000]    15:  0:R
                 udevd-15    [000]    27.907601:     15:  0:S ==> [000]     2:115:R
       ##### CPU 0 buffer started ####
              kthreadd-2     [000]    27.907616:      2:115:R   + [001]    16:115:R
       ##### CPU 1 buffer started ####
                <idle>-0     [001]    27.907620:      0:140:R ==> [001]    16:115:R
              kthreadd-2     [000]    27.907621:      2:115:D ==> [000]     0:140:R
                 udevd-16    [001]    27.907625:     16:115:D   + [000]     2:115:D
                <idle>-0     [000]    27.907628:      0:140:R   + [000]     4:115:S
                 udevd-16    [001]    27.907629:     16:115:D ==> [001]     0:140:R
                <idle>-0     [000]    27.907631:      0:140:R ==> [000]     4:115:R
           ksoftirqd/0-4     [000]    27.907636:      4:115:S ==> [000]     2:115:R
              kthreadd-2     [000]    27.907644:      2:115:R   + [000]     1:120:D
              kthreadd-2     [000]    27.907647:      2:115:S ==> [000]     1:120:R
                  init-1     [000]    27.907657:      1:120:R   + [001]    16:  0:D
                <idle>-0     [001]    27.907666:      0:140:R ==> [001]    16:  0:R
      [   27.907703862] initcall stop_machine_init+0x0/0x50 returned 0 after 0 msecs
      [   27.907850704] calling  filelock_init+0x0/0x30 @ 1
      [   27.907926573] initcall filelock_init+0x0/0x30 returned 0 after 0 msecs
      [   27.908071327] calling  init_script_binfmt+0x0/0x10 @ 1
      [   27.908165195] initcall init_script_binfmt+0x0/0x10 returned 0 after 0 msecs
      [   27.908309461] calling  init_elf_binfmt+0x0/0x10 @ 1
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      74239072
    • F
      tracing/fastboot: move boot tracer structs and funcs into their own header. · 3f5ec136
      Frederic Weisbecker 提交于
      Impact: Cleanups on the boot tracer and ftrace
      
      This patch bring some cleanups about the boot tracer headers. The
      functions and structures of this tracer have nothing related to ftrace
      and should have so their own header file.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3f5ec136
    • I
      60a011c7
    • I
      Merge branches 'tracing/ftrace' and 'tracing/urgent' into tracing/core · d06bbd66
      Ingo Molnar 提交于
      Conflicts:
      	kernel/trace/ring_buffer.c
      d06bbd66
    • S
      ring-buffer: clean up warn ons · 3e89c7bb
      Steven Rostedt 提交于
      Impact: Restructure WARN_ONs in ring_buffer.c
      
      The current WARN_ON macros in ring_buffer.c are quite ugly.
      
      This patch cleans them up and uses a single RB_WARN_ON that returns
      the value of the condition. This allows the caller to abort the
      function if the condition is true.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3e89c7bb
    • I
      Merge branch 'devel' of... · c1e7abbc
      Ingo Molnar 提交于
      Merge branch 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent
      c1e7abbc
    • S
      ring-buffer: buffer record on/off switch · a3583244
      Steven Rostedt 提交于
      Impact: enable/disable ring buffer recording API added
      
      Several kernel developers have requested that there be a way to stop
      recording into the ring buffers with a simple switch that can also
      be enabled from userspace. This patch addes a new kernel API to the
      ring buffers called:
      
       tracing_on()
       tracing_off()
      
      When tracing_off() is called, all ring buffers will not be able to record
      into their buffers.
      
      tracing_on() will enable the ring buffers again.
      
      These two act like an on/off switch. That is, there is no counting of the
      number of times tracing_off or tracing_on has been called.
      
      A new file is added to the debugfs/tracing directory called
      
        tracing_on
      
      This allows for userspace applications to also flip the switch.
      
        echo 0 > debugfs/tracing/tracing_on
      
      disables the tracing.
      
        echo 1 > /debugfs/tracing/tracing_on
      
      enables it.
      
      Note, this does not disable or enable any tracers. It only sets or clears
      a flag that needs to be set in order for the ring buffers to write to
      their buffers. It is a global flag, and affects all ring buffers.
      
      The buffers start out with tracing_on enabled.
      
      There are now three flags that control recording into the buffers:
      
       tracing_on: which affects all ring buffer tracers.
      
       buffer->record_disabled: which affects an allocated buffer, which may be set
           if an anomaly is detected, and tracing is disabled.
      
       cpu_buffer->record_disabled: which is set by tracing_stop() or if an
           anomaly is detected. tracing_start can not reenable this if
           an anomaly occurred.
      
      The userspace debugfs/tracing/tracing_enabled is implemented with
      tracing_stop() but the user space code can not enable it if the kernel
      called tracing_stop().
      
      Userspace can enable the tracing_on even if the kernel disabled it.
      It is just a switch used to stop tracing if a condition was hit.
      tracing_on is not for protecting critical areas in the kernel nor is
      it for stopping tracing if an anomaly occurred. This is because userspace
      can reenable it at any time.
      
      Side effect: With this patch, I discovered a dead variable in ftrace.c
        called tracing_on. This patch removes it.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      a3583244
    • L
      Merge branch 'timers-fixes-for-linus' of... · f21f237c
      Linus Torvalds 提交于
      Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        timers: handle HRTIMER_CB_IRQSAFE_UNLOCKED correctly from softirq context
        nohz: disable tick_nohz_kick_tick() for now
        irq: call __irq_enter() before calling the tick_idle_check
        x86: HPET: enter hpet_interrupt_handler with interrupts disabled
        x86: HPET: read from HPET_Tn_CMP() not HPET_T0_CMP
        x86: HPET: convert WARN_ON to WARN_ON_ONCE
      f21f237c
    • L
      Merge branch 'sched-fixes-for-linus' of... · 2f96cb57
      Linus Torvalds 提交于
      Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        sched: release buddies on yield
        fix for account_group_exec_runtime(), make sure ->signal can't be freed under rq->lock
        sched: clean up debug info
      2f96cb57
    • L
      Merge branch 'tracing-fixes-for-linus' of... · 09eb3b5b
      Linus Torvalds 提交于
      Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/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:
        ring-buffer: prevent infinite looping on time stamping
        ftrace: disable tracing on resize
        ftrace: fix breakage in bin_fmt results
        ftrace: ftrace.txt version update
        ftrace: update txt document
      09eb3b5b
    • S
      ring-buffer: add reader lock · f83c9d0f
      Steven Rostedt 提交于
      Impact: serialize reader accesses to individual CPU ring buffers
      
      The code in the ring buffer expects only one reader at a time, but currently
      it puts that requirement on the caller. This is not strong enough, and this
      patch adds a "reader_lock" that serializes the access to the reader API
      of the ring buffer.
      Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f83c9d0f
    • L
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 04ca2c17
      Linus Torvalds 提交于
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        [XFS] XFS: Check for valid transaction headers in recovery
        [XFS] handle memory allocation failures during log initialisation
        [XFS] Account for allocated blocks when expanding directories
        [XFS] Wait for all I/O on truncate to zero file size
        [XFS] Fix use-after-free with log and quotas
      04ca2c17
    • L
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 · ad1164b7
      Linus Torvalds 提交于
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2: (21 commits)
        ocfs2: Check search result in ocfs2_xattr_block_get()
        ocfs2: fix printk related build warnings in xattr.c
        ocfs2: truncate outstanding block after direct io failure
        ocfs2/xattr: Proper hash collision handle in bucket division
        ocfs2: return 0 in page_mkwrite to let VFS retry.
        ocfs2: Set journal descriptor to NULL after journal shutdown
        ocfs2: Fix check of return value of ocfs2_start_trans() in xattr.c.
        ocfs2: Let inode be really deleted when ocfs2_mknod_locked() fails
        ocfs2: Fix checking of return value of new_inode()
        ocfs2: Fix check of return value of ocfs2_start_trans()
        ocfs2: Fix some typos in xattr annotations.
        ocfs2: Remove unused ocfs2_restore_xattr_block().
        ocfs2: Don't repeat ocfs2_xattr_block_find()
        ocfs2: Specify appropriate journal access for new xattr buckets.
        ocfs2: Check errors from ocfs2_xattr_update_xattr_search()
        ocfs2: Don't return -EFAULT from a corrupt xattr entry.
        ocfs2: Check xattr block signatures properly.
        ocfs2: add handler_map array bounds checking
        ocfs2: remove duplicate definition in xattr
        ocfs2: fix function declaration and definition in xattr
        ...
      ad1164b7
    • A
      telephony: trivial: fix up email address · 0906dd9d
      Alan Cox 提交于
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0906dd9d
    • A
      8eb04cf3
    • L
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 · 853041f0
      Linus Torvalds 提交于
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (35 commits)
        V4L/DVB (9516): cx18: Move DVB buffer transfer handling from irq handler to work_queue
        V4L/DVB (9557): gspca: Small changes for the sensor HV7131B in zc3xx.
        V4L/DVB (9556): gspca: Bad init sequence for sensor HV7131B in zc3xx.
        V4L/DVB (9549): gspca: Fix a typo in one of gspca chips name.
        V4L/DVB (9515): cx18: Use correct Mailbox IRQ Ack values and misc IRQ handling cleanup
        V4L/DVB (9493): kconfig patch
        V4L/DVB (9527): af9015: fix compile warnings
        V4L/DVB (9524): af9013: fix bug in status reading
        V4L/DVB (9511): cx18: Mark CX18_CPU_DE_RELEASE_MDL as a slow API call
        V4L/DVB (9510): cx18: Fix write retries for registers that always change - part 2.
        V4L/DVB (9506): ivtv/cx18: fix test whether modules should be loaded or not.
        V4L/DVB (9499): cx88-mpeg: final fix for analogue only compilation + de-alloc fix
        V4L/DVB (9496): cx88-blackbird: bugfix: cx88-blackbird-mpeg-users
        V4L/DVB (9495): cx88-blackbird: bugfix: cx88-blackbird-poll-fix
        V4L/DVB (9494): anysee: initialize anysee_usb_mutex statically
        V4L/DVB (9492): unplug oops from dvb_frontend_init...
        V4L/DVB (9486): ivtv/ivtvfb: no longer experimental
        V4L/DVB (9485): ivtv: remove incorrect V4L1 & tvaudio dependency
        V4L/DVB (9482): Documentation, especially regarding audio and informational links
        V4L/DVB (9475): cx18: Disable write retries for registers that always change - part 1.
        ...
      853041f0
    • L
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc · e892873c
      Linus Torvalds 提交于
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:
        powerpc: Update desktop/server defconfigs
        powerpc: Fix msr check in compat_sys_swapcontext
        powerpc: Repair device bindings documentation
        powerpc: Updated Freescale PPC related defconfigs
        powerpc: Update QE/CPM2 usb_ctlr structures for USB support
        powerpc/86xx: Correct SOC bus-frequency in GE Fanuc SBC610 DTS
        powerpc: Fix Book-E watchdog timer interval setting
        powerpc/fsl-booke: Fix synchronization bug w/local tlb invalidates
      e892873c
    • L
      Merge branch 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 · eda1be63
      Linus Torvalds 提交于
      * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
        drm/i915: Move legacy breadcrumb out of the reserved status page area
        drm/i915: Filter pci devices based on PCI_CLASS_DISPLAY_VGA
        drm/radeon: map registers at load time
        drm: Remove infrastructure for supporting i915's vblank swapping.
        i915: Remove racy delayed vblank swap ioctl.
        i915: Don't whine when pci_enable_msi() fails.
        i915: Don't attempt to short-circuit object_wait_rendering by checking domains.
        i915: Clean up sarea pointers on leavevt
        i915: Save/restore MCHBAR_RENDER_STANDBY on GM965/GM45
      eda1be63
    • L
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · 5da38d32
      Linus Torvalds 提交于
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        libata: fix last_reset timestamp handling
        libata: Avoid overflow in ata_tf_read_block() when tf->hba_lbal > 127
        [libata] pata_pcmcia: another memory card support
        [libata] pata_sch: notice attached slave devices
        [libata] pata_cs553*.c: cleanup kernel-doc
      5da38d32
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 · 7e2cec86
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
        sparc64: Update defconfig.
        Revert "sparc: correct section of current_pc()"
      7e2cec86
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 0a4cf2c8
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
        dsa: fix master interface allmulti/promisc handling
        dsa: fix skb->pkt_type when mac address of slave interface differs
        net: fix setting of skb->tail in skb_recycle_check()
        net: fix /proc/net/snmp as memory corruptor
        mac80211: fix a buffer overrun in station debug code
        netfilter: payload_len is be16, add size of struct rather than size of pointer
        ipv6: fix ip6_mr_init error path
        [4/4] dca: fixup initialization dependency
        [3/4] I/OAT: fix async_tx.callback checking
        [2/4] I/OAT: fix dma_pin_iovec_pages() error handling
        [1/4] I/OAT: fix channel resources free for not allocated channels
        ssb: Fix DMA-API compilation for non-PCI systems
        SSB: hide empty sub menu
        vlan: Fix typos in proc output string
        [netdrvr] usb/hso: Cleanup rfkill error handling
        sfc: Correct address of gPXE boot configuration in EEPROM
        el3_common_init() should be __devinit, not __init
        hso: rfkill type should be WWAN
        mlx4_en: Start port error flow bug fix
        af_key: mark policy as dead before destroying
      0a4cf2c8
  3. 11 11月, 2008 16 次提交