20 Aug, 2010

3 commits

  • Currently, if RCU CPU stall warnings are enabled, they are enabled
    immediately upon boot. They can be manually disabled via /sys (and
    also re-enabled via /sys), and are automatically disabled upon panic.
    However, some users need RCU CPU stalls to be disabled at boot time,
    but to be enabled without rebuilding/rebooting. For example, someone
    running a real-time application in production might not want the
    additional latency of RCU CPU stall detection in normal operation, but
    might need to enable it at any point for fault isolation purposes.

    This commit therefore provides a new CONFIG_RCU_CPU_STALL_DETECTOR_RUNNABLE
    kernel configuration parameter that maintains the current behavior
    (enable at boot) by default, but allows a kernel to be configured
    with RCU CPU stall detection built into the kernel, but disabled at
    boot time.

    Requested-by: Clark Williams
    Requested-by: John Kacur
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Also set the default to 60 seconds, up from the previous hard-coded timeout
    of 10 seconds. This allows people who care to set short timeouts, while
    avoiding people with unusual configurations (make randconfig!!!) from being
    bothered with spurious CPU stall warnings.

    Signed-off-by: Paul E. McKenney
    Reviewed-by: Josh Triplett

    Paul E. McKenney
     
  • This commit provides definitions for the __rcu annotation defined earlier.
    This annotation permits sparse to check for correct use of RCU-protected
    pointers. If a pointer that is annotated with __rcu is accessed
    directly (as opposed to via rcu_dereference(), rcu_assign_pointer(),
    or one of their variants), sparse can be made to complain. To enable
    such complaints, use the new default-disabled CONFIG_SPARSE_RCU_POINTER
    kernel configuration option. Please note that these sparse complaints are
    intended to be a debugging aid, -not- a code-style-enforcement mechanism.

    There are special rcu_dereference_protected() and rcu_access_pointer()
    accessors for use when RCU read-side protection is not required, for
    example, when no other CPU has access to the data structure in question
    or while the current CPU hold the update-side lock.

    This patch also updates a number of docbook comments that were showing
    their age.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul E. McKenney
    Cc: Christopher Li
    Reviewed-by: Josh Triplett

    Paul E. McKenney
     

17 Aug, 2010

1 commit

  • warning: (LATENCYTOP && HAVE_LATENCYTOP_SUPPORT) selects
    SCHED_DEBUG which has unmet direct dependencies (DEBUG_KERNEL &&
    PROC_FS) warning: (LATENCYTOP && HAVE_LATENCYTOP_SUPPORT) selects
    SCHEDSTATS which has unmet direct dependencies (DEBUG_KERNEL && PROC_FS)

    Add depends on STACKTRACE_SUPPORT for 'select STACKTRACE'.
    Add depends on PROC_FS since that is where the output goes.

    Signed-off-by: Randy Dunlap
    Cc: Arjan van de Ven
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Randy Dunlap
     

11 Aug, 2010

1 commit


07 Aug, 2010

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (28 commits)
    driver core: device_rename's new_name can be const
    sysfs: Remove owner field from sysfs struct attribute
    powerpc/pci: Remove owner field from attribute initialization in PCI bridge init
    regulator: Remove owner field from attribute initialization in regulator core driver
    leds: Remove owner field from attribute initialization in bd2802 driver
    scsi: Remove owner field from attribute initialization in ARCMSR driver
    scsi: Remove owner field from attribute initialization in LPFC driver
    cgroupfs: create /sys/fs/cgroup to mount cgroupfs on
    Driver core: Add BUS_NOTIFY_BIND_DRIVER
    driver core: fix memory leak on one error path in bus_register()
    debugfs: no longer needs to depend on SYSFS
    sysfs: Fix one more signature discrepancy between sysfs implementation and docs.
    sysfs: fix discrepancies between implementation and documentation
    dcdbas: remove a redundant smi_data_buf_free in dcdbas_exit
    dmi-id: fix a memory leak in dmi_id_init error path
    sysfs: sysfs_chmod_file's attr can be const
    firmware: Update hotplug script
    Driver core: move platform device creation helpers to .init.text (if MODULE=n)
    Driver core: reduce duplicated code for platform_device creation
    Driver core: use kmemdup in platform_device_add_resources
    ...

    Linus Torvalds
     
  • …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: (162 commits)
    tracing/kprobes: unregister_trace_probe needs to be called under mutex
    perf: expose event__process function
    perf events: Fix mmap offset determination
    perf, powerpc: fsl_emb: Restore setting perf_sample_data.period
    perf, powerpc: Convert the FSL driver to use local64_t
    perf tools: Don't keep unreferenced maps when unmaps are detected
    perf session: Invalidate last_match when removing threads from rb_tree
    perf session: Free the ref_reloc_sym memory at the right place
    x86,mmiotrace: Add support for tracing STOS instruction
    perf, sched migration: Librarize task states and event headers helpers
    perf, sched migration: Librarize the GUI class
    perf, sched migration: Make the GUI class client agnostic
    perf, sched migration: Make it vertically scrollable
    perf, sched migration: Parameterize cpu height and spacing
    perf, sched migration: Fix key bindings
    perf, sched migration: Ignore unhandled task states
    perf, sched migration: Handle ignored migrate out events
    perf: New migration tool overview
    tracing: Drop cpparg() macro
    perf: Use tracepoint_synchronize_unregister() to flush any pending tracepoint call
    ...

    Fix up trivial conflicts in Makefile and drivers/cpufreq/cpufreq.c

    Linus Torvalds
     
  • * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    Revert "net: Make accesses to ->br_port safe for sparse RCU"
    mce: convert to rcu_dereference_index_check()
    net: Make accesses to ->br_port safe for sparse RCU
    vfs: add fs.h to define struct file
    lockdep: Add an in_workqueue_context() lockdep-based test function
    rcu: add __rcu API for later sparse checking
    rcu: add an rcu_dereference_index_check()
    tree/tiny rcu: Add debug RCU head objects
    mm: remove all rcu head initializations
    fs: remove all rcu head initializations, except on_stack initializations
    powerpc: remove all rcu head initializations

    Linus Torvalds
     

06 Aug, 2010

2 commits

  • * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
    modpost: support objects with more than 64k sections
    trivial: fix a typo in a filename
    frv: clean up arch/frv/Makefile
    kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line
    kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
    Kbuild: Add option to set -femit-struct-debug-baseonly
    Makefile: "make kernelrelease" should show the correct full kernel version
    Makefile.build: make KBUILD_SYMTYPES work again

    Linus Torvalds
     
  • debugfs no longer uses 'kernel_subsys' (which is gone), and other
    kernel/ksysfs.c code is always built, so DEBUG_FS does not need
    to depend on SYSFS.

    Fixes this kconfig warning:

    warning: (TREE_RCU_TRACE || AMD_IOMMU_STATS && AMD_IOMMU || MTD_UBI_DEBUG && MTD && SYSFS && MTD_UBI || UBIFS_FS_DEBUG && MISC_FILESYSTEMS && UBIFS_FS || DEBUG_KMEMLEAK && DEBUG_KERNEL && EXPERIMENTAL && !MEMORY_HOTPLUG && (X86 || ARM || PPC || S390 || SPARC64 || SUPERH || MICROBLAZE) && SYSFS || TRACING || X86_PTDUMP && DEBUG_KERNEL || BLK_DEV_IO_TRACE && TRACING_SUPPORT && FTRACE && SYSFS && BLOCK) selects DEBUG_FS which has unmet direct dependencies (SYSFS)

    Signed-off-by: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

05 Aug, 2010

2 commits

  • * 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze: (49 commits)
    microblaze: Add KGDB support
    microblaze: Support brki rX, 0x18 for user application debugging
    microblaze: Remove nop after MSRCLR/SET, MTS, MFS instructions
    microblaze: Simplify syscall rutine
    microblaze: Move PT_MODE saving to delay slot
    microblaze: Fix _interrupt function
    microblaze: Fix _user_exception function
    microblaze: Put together addik instructions
    microblaze: Use delay slot in syscall macros
    microblaze: Save kernel mode in delay slot
    microblaze: Do not mix register saving and mode setting
    microblaze: Move SAVE_STATE upward
    microblaze: entry.S: Macro optimization
    microblaze: Optimize hw exception rutine
    microblaze: Implement clear_ums macro and fix SAVE_STATE macro
    microblaze: Remove additional setup for kernel_mode
    microblaze: Optimize SAVE_STATE macro
    microblaze: Remove additional loading
    microblaze: Completely remove working with R11 register
    microblaze: Do not setup BIP in _debug_exception
    ...

    Linus Torvalds
     
  • Conflicts:
    kernel/Makefile

    Merge reason: Add the now complete topic, fix the conflict.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

04 Aug, 2010

2 commits


21 Jul, 2010

1 commit


19 Jul, 2010

1 commit

  • Introduce a new DEBUG_KMEMLEAK_DEFAULT_OFF config parameter that allows
    kmemleak to be disabled by default, but enabled on the command line
    via: kmemleak=on. Although a reboot is required to turn it on, its still
    useful to not require a re-compile.

    Signed-off-by: Jason Baron
    Signed-off-by: Catalin Marinas
    Acked-by: Pekka Enberg

    Jason Baron
     

14 Jul, 2010

1 commit

  • Newer gcc has a -femit-struct-debug-baseonly option that dramatically
    reduces the size of object files with debug info. What it does
    is to only emit type information for structures when the structures
    are defined in the same file or in a header file.

    This means the type information for most headers are not included.
    This is not good when the type information is actually
    needed (e.g. with kgdb or systemtap)

    But often kernel hackers only care about line numbers and don't
    need all the type information anyways. In this case setting
    the option can be a big win:

    A build dir for a specific x86-64 configuration with gcc 4.5
    shrunk from 2.3G to 1.2G. The compilation was also nearly a minute
    faster.

    Signed-off-by: Andi Kleen
    [mmarek: reformatted help text]
    Signed-off-by: Michal Marek

    Andi Kleen
     

15 Jun, 2010

1 commit

  • Helps finding racy users of call_rcu(), which results in hangs because list
    entries are overwritten and/or skipped.

    Changelog since v4:
    - Bissectability is now OK
    - Now generate a WARN_ON_ONCE() for non-initialized rcu_head passed to
    call_rcu(). Statically initialized objects are detected with
    object_is_static().
    - Rename rcu_head_init_on_stack to init_rcu_head_on_stack.
    - Remove init_rcu_head() completely.

    Changelog since v3:
    - Include comments from Lai Jiangshan

    This new patch version is based on the debugobjects with the newly introduced
    "active state" tracker.

    Non-initialized entries are all considered as "statically initialized". An
    activation fixup (triggered by call_rcu()) takes care of performing the debug
    object initialization without issuing any warning. Since we cannot increase the
    size of struct rcu_head, I don't see much room to put an identifier for
    statically initialized rcu_head structures. So for now, we have to live without
    "activation without explicit init" detection. But the main purpose of this debug
    option is to detect double-activations (double call_rcu() use of a rcu_head
    before the callback is executed), which is correctly addressed here.

    This also detects potential internal RCU callback corruption, which would cause
    the callbacks to be executed twice.

    Signed-off-by: Mathieu Desnoyers
    CC: David S. Miller
    CC: "Paul E. McKenney"
    CC: akpm@linux-foundation.org
    CC: mingo@elte.hu
    CC: laijs@cn.fujitsu.com
    CC: dipankar@in.ibm.com
    CC: josh@joshtriplett.org
    CC: dvhltc@us.ibm.com
    CC: niv@us.ibm.com
    CC: tglx@linutronix.de
    CC: peterz@infradead.org
    CC: rostedt@goodmis.org
    CC: Valdis.Kletnieks@vt.edu
    CC: dhowells@redhat.com
    CC: eric.dumazet@gmail.com
    CC: Alexey Dobriyan
    Signed-off-by: Paul E. McKenney
    Reviewed-by: Lai Jiangshan

    Mathieu Desnoyers
     

28 May, 2010

1 commit

  • I used this module to test the series of modification to the cpu notifiers
    code.

    Example1: inject CPU offline error (-1 == -EPERM)

    # modprobe cpu-notifier-error-inject cpu_down_prepare_error=-1
    # echo 0 > /sys/devices/system/cpu/cpu1/online
    bash: echo: write error: Operation not permitted

    Example2: inject CPU online error (-2 == -ENOENT)

    # modprobe cpu-notifier-error-inject cpu_up_prepare_error=-2
    # echo 1 > /sys/devices/system/cpu/cpu1/online
    bash: echo: write error: No such file or directory

    [akpm@linux-foundation.org: fix Kconfig help text]
    Signed-off-by: Akinobu Mita
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     

25 May, 2010

1 commit


19 May, 2010

1 commit


18 May, 2010

1 commit

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

    * 'x86-atomic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Fix LOCK_PREFIX_HERE for uniprocessor build
    x86, atomic64: In selftest, distinguish x86-64 from 586+
    x86-32: Fix atomic64_inc_not_zero return value convention
    lib: Fix atomic64_inc_not_zero test
    lib: Fix atomic64_add_unless return value convention
    x86-32: Fix atomic64_add_unless return value convention
    lib: Fix atomic64_add_unless test
    x86: Implement atomic[64]_dec_if_positive()
    lib: Only test atomic64_dec_if_positive on archs having it
    x86-32: Rewrite 32-bit atomic64 functions in assembly
    lib: Add self-test for atomic64_t
    x86-32: Allow UP/SMP lock replacement in cmpxchg64
    x86: Add support for lock prefix in alternatives

    Linus Torvalds
     

16 May, 2010

2 commits

  • This new config is deemed to simplify even more the lockup detector
    dependencies and can make it easier to bring a smooth sorting
    between archs that support the new generic lockup detector and those
    that still have their own, especially for those that are in the
    middle of this migration.

    Instead of checking whether we have CONFIG_LOCKUP_DETECTOR +
    CONFIG_PERF_EVENTS_NMI each time an arch wants to know if it needs
    to build its own lockup detector, take a shortcut with this new
    config. It is enabled only if the hardlockup detection part of
    the whole lockup detector is on.

    Signed-off-by: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Don Zickus
    Cc: Cyrill Gorcunov

    Frederic Weisbecker
     
  • We kept CONFIG_DETECT_SOFTLOCKUP around for compatibility with
    older configs. But it was enabled by default if CONFIG_DEBUG_KERNEL.

    So if we want to enable CONFIG_LOCKUP_DETECTOR on configs that had
    CONFIG_DETECT_SOFTLOCKUP, all we need is to have the same enabling
    by default if CONFIG_DEBUG_KERNEL. We can then remove
    CONFIG_DETECT_SOFTLOCKUP directly.

    So tag CONFIG_LOCKUP_DETECTOR as default y. This is what we want for
    most serious kernel debugging anyway.

    And also forbid the lockup detector in S390 as it was for the
    previous softlockup detector, event though the true reason for that
    is not outlined.

    Signed-off-by: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Don Zickus
    Cc: Peter Zijlstra
    Cc: Cyrill Gorcunov

    Frederic Weisbecker
     

13 May, 2010

3 commits

  • Panic on softlockups was still depending on the softlockup detector.
    But the latter has been merged into the lockup detector now.

    Let's update this config dependency.

    Signed-off-by: Frederic Weisbecker
    Cc: Don Zickus
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Cyrill Gorcunov
    Cc: Eric Paris
    Cc: Randy Dunlap

    Frederic Weisbecker
     
  • The new nmi_watchdog (which uses the perf event subsystem) is very
    similar in structure to the softlockup detector. Using Ingo's
    suggestion, I combined the two functionalities into one file:
    kernel/watchdog.c.

    Now both the nmi_watchdog (or hardlockup detector) and softlockup
    detector sit on top of the perf event subsystem, which is run every
    60 seconds or so to see if there are any lockups.

    To detect hardlockups, cpus not responding to interrupts, I
    implemented an hrtimer that runs 5 times for every perf event
    overflow event. If that stops counting on a cpu, then the cpu is
    most likely in trouble.

    To detect softlockups, tasks not yielding to the scheduler, I used the
    previous kthread idea that now gets kicked every time the hrtimer fires.
    If the kthread isn't being scheduled neither is anyone else and the
    warning is printed to the console.

    I tested this on x86_64 and both the softlockup and hardlockup paths
    work.

    V2:
    - cleaned up the Kconfig and softlockup combination
    - surrounded hardlockup cases with #ifdef CONFIG_PERF_EVENTS_NMI
    - seperated out the softlockup case from perf event subsystem
    - re-arranged the enabling/disabling nmi watchdog from proc space
    - added cpumasks for hardlockup failure cases
    - removed fallback to soft events if no PMU exists for hard events

    V3:
    - comment cleanups
    - drop support for older softlockup code
    - per_cpu cleanups
    - completely remove software clock base hardlockup detector
    - use per_cpu masking on hard/soft lockup detection
    - #ifdef cleanups
    - rename config option NMI_WATCHDOG to LOCKUP_DETECTOR
    - documentation additions

    V4:
    - documentation fixes
    - convert per_cpu to __get_cpu_var
    - powerpc compile fixes

    V5:
    - split apart warn flags for hard and soft lockups

    TODO:
    - figure out how to make an arch-agnostic clock2cycles call
    (if possible) to feed into perf events as a sample period

    [fweisbec: merged conflict patch]

    Signed-off-by: Don Zickus
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Cyrill Gorcunov
    Cc: Eric Paris
    Cc: Randy Dunlap
    LKML-Reference:
    Signed-off-by: Frederic Weisbecker

    Don Zickus
     
  • Merge reason: catch up with latest softlockup detector changes.

    Frederic Weisbecker
     

11 May, 2010

2 commits

  • The CPU_STALL_VERBOSE kernel configuration parameter was added to
    2.6.34 to identify any preempted/blocked tasks that were preventing
    the current grace period from completing when running preemptible
    RCU. As is conventional for new configurations parameters, this
    defaulted disabled. It is now time to enable it by default.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • There is no need to disable lockdep after an RCU lockdep splat,
    so remove the debug_lockdeps_off() from lockdep_rcu_dereference().
    To avoid repeated lockdep splats, use a static variable in the inlined
    rcu_dereference_check() and rcu_dereference_protected() macros so that
    a given instance splats only once, but so that multiple instances can
    be detected per boot.

    This is controlled by a new config variable CONFIG_PROVE_RCU_REPEATEDLY,
    which is disabled by default. This provides the normal lockdep behavior
    by default, but permits people who want to find multiple RCU-lockdep
    splats per boot to easily do so.

    Requested-by: Eric Paris
    Signed-off-by: Lai Jiangshan
    Tested-by: Eric Paris
    Signed-off-by: Paul E. McKenney

    Lai Jiangshan
     

30 Apr, 2010

1 commit


13 Apr, 2010

2 commits


07 Apr, 2010

1 commit


25 Mar, 2010

1 commit


10 Mar, 2010

1 commit


07 Mar, 2010

1 commit

  • Add adds a debugfs interface and additional failure modes to LKDTM to
    provide similar functionality to the provoke-crash driver submitted here:

    http://lwn.net/Articles/371208/

    Crashes can now be induced either through module parameters (as before)
    or through the debugfs interface as in provoke-crash.

    The patch also provides a new "direct" interface, where KPROBES are not
    used, i.e., the crash is invoked directly upon write to the debugfs
    file. When built without KPROBES configured, only this mode is available.

    Signed-off-by: Simon Kagstrom
    Cc: M. Mohan Kumar
    Cc: Americo Wang
    Cc: David Woodhouse
    Cc: Ingo Molnar
    Cc: "Eric W. Biederman" ,
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Simon Kagstrom
     

01 Mar, 2010

2 commits

  • It was nice to enable it by default for testing - but before we
    push it upstream we want it to be off - so that people can
    opt-in gradually.

    Cc: Don Zickus
    Cc: peterz@infradead.org
    Cc: gorcunov@gmail.com
    Cc: aris@redhat.com
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (44 commits)
    rcu: Fix accelerated GPs for last non-dynticked CPU
    rcu: Make non-RCU_PROVE_LOCKING rcu_read_lock_sched_held() understand boot
    rcu: Fix accelerated grace periods for last non-dynticked CPU
    rcu: Export rcu_scheduler_active
    rcu: Make rcu_read_lock_sched_held() take boot time into account
    rcu: Make lockdep_rcu_dereference() message less alarmist
    sched, cgroups: Fix module export
    rcu: Add RCU_CPU_STALL_VERBOSE to dump detailed per-task information
    rcu: Fix rcutorture mod_timer argument to delay one jiffy
    rcu: Fix deadlock in TREE_PREEMPT_RCU CPU stall detection
    rcu: Convert to raw_spinlocks
    rcu: Stop overflowing signed integers
    rcu: Use canonical URL for Mathieu's dissertation
    rcu: Accelerate grace period if last non-dynticked CPU
    rcu: Fix citation of Mathieu's dissertation
    rcu: Documentation update for CONFIG_PROVE_RCU
    security: Apply lockdep-based checking to rcu_dereference() uses
    idr: Apply lockdep-based diagnostics to rcu_dereference() uses
    radix-tree: Disable RCU lockdep checking in radix tree
    vfs: Abstract rcu_dereference_check for files-fdtable use
    ...

    Linus Torvalds
     

28 Feb, 2010

2 commits

  • Remove pointless union in the breakpoint field of hw_perf_event.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Paul Mackerras

    Frederic Weisbecker
     
  • I've forgot to add 'perf lock' line to command-list.txt,
    so users of perf could not find perf lock when they type 'perf'.

    Fixing command-list.txt requires document
    (tools/perf/Documentation/perf-lock.txt).
    But perf lock is too much "under construction" to write a
    stable document, so this is something like pseudo document for now.

    And I wrote description of perf lock at help section of
    CONFIG_LOCK_STAT, this will navigate users of lock trace events.

    Signed-off-by: Hitoshi Mitake
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Frederic Weisbecker

    Hitoshi Mitake