15 Sep, 2016

1 commit


23 Aug, 2016

3 commits

  • Tests for rcu_barrier() were introduced by commit fae4b54f28f0 ("rcu:
    Introduce rcutorture testing for rcu_barrier()"). This commit updated
    the documentation to say that the "rtbe" field in rcutorture's dmesg
    output indicates test failure. However, the code was not updated, only
    the documentation. This commit therefore updates the code to match the
    updated documentation.

    Signed-off-by: SeongJae Park
    Signed-off-by: Paul E. McKenney

    SeongJae Park
     
  • This commit adds a dump of the scheduler state for stalled rcutorture
    writer tasks. This addition provides yet more debug for the intermittent
    "failures to proceed", where grace periods move ahead but the rcutorture
    writer tasks fail to do so.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Install the callbacks via the state machine and let the core invoke
    the callbacks on the already online CPUs.

    Cc: Josh Triplett
    Cc: "Paul E. McKenney"
    Cc: Steven Rostedt
    Cc: Mathieu Desnoyers
    Cc: Lai Jiangshan
    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Paul E. McKenney

    Sebastian Andrzej Siewior
     

16 Jun, 2016

2 commits


15 Jun, 2016

1 commit


22 Apr, 2016

1 commit

  • Mutation testing carried out by Iftekhar Ahmed of Oregon State
    University showed that rcutorture is failing to test invocations
    of call_rcu() having interrupts disabled. This commit therefore
    adds interrupt disabling around one of the existing invocations
    of call_rcu() (and friends).

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

01 Apr, 2016

4 commits

  • The hotplug notifier rcutorture_cpu_notify() doesn't consider the
    corresponding CPU_XXX_FROZEN transitions. They occur on
    suspend/resume and are usually handled the same way as the
    corresponding non frozen transitions.

    Mask the switch case action argument with '~CPU_TASKS_FROZEN' to map
    CPU_XXX_FROZEN hotplug transitions on corresponding non-frozen
    transitions.

    Cc: Josh Triplett
    Cc: "Paul E. McKenney"
    Signed-off-by: Anna-Maria Gleixner
    Signed-off-by: Paul E. McKenney

    Anna-Maria Gleixner
     
  • The current code initializes the global per-CPU variables
    rcu_torture_count and rcu_torture_batch to zero. However, C does this
    initialization by default, and explicit initialization of per-CPU
    variables now needs a different syntax if "make tags" is to work.
    This commit therefore removes the initialization.

    Reported-by: Peter Zijlstra
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Currently, rcu_torture_writer() checks only for rcu_gp_is_expedited()
    when deciding whether or not to do dynamic control of RCU expediting.
    This means that if rcupdate.rcu_normal is specified, rcu_torture_writer()
    will attempt to dynamically control RCU expediting, but will nonetheless
    only test normal RCU grace periods. This commit therefore adds a check
    for !rcu_gp_is_normal(), and prints a message and desists from testing
    dynamic control of RCU expediting when doing so is futile.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • This commit consolidates a couple definitions and several calls for
    single-shot ftrace-buffer dumping.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

17 Mar, 2016

1 commit

  • Merge first patch-bomb from Andrew Morton:

    - some misc things

    - ofs2 updates

    - about half of MM

    - checkpatch updates

    - autofs4 update

    * emailed patches from Andrew Morton : (120 commits)
    autofs4: fix string.h include in auto_dev-ioctl.h
    autofs4: use pr_xxx() macros directly for logging
    autofs4: change log print macros to not insert newline
    autofs4: make autofs log prints consistent
    autofs4: fix some white space errors
    autofs4: fix invalid ioctl return in autofs4_root_ioctl_unlocked()
    autofs4: fix coding style line length in autofs4_wait()
    autofs4: fix coding style problem in autofs4_get_set_timeout()
    autofs4: coding style fixes
    autofs: show pipe inode in mount options
    kallsyms: add support for relative offsets in kallsyms address table
    kallsyms: don't overload absolute symbol type for percpu symbols
    x86: kallsyms: disable absolute percpu symbols on !SMP
    checkpatch: fix another left brace warning
    checkpatch: improve UNSPECIFIED_INT test for bare signed/unsigned uses
    checkpatch: warn on bare unsigned or signed declarations without int
    checkpatch: exclude asm volatile from complex macro check
    mm: memcontrol: drop unnecessary lru locking from mem_cgroup_migrate()
    mm: migrate: consolidate mem_cgroup_migrate() calls
    mm/compaction: speed up pageblock_pfn_to_page() when zone is contiguous
    ...

    Linus Torvalds
     

16 Mar, 2016

1 commit

  • $ make tags
    GEN tags
    ctags: Warning: drivers/acpi/processor_idle.c:64: null expansion of name pattern "\1"
    ctags: Warning: drivers/xen/events/events_2l.c:41: null expansion of name pattern "\1"
    ctags: Warning: kernel/locking/lockdep.c:151: null expansion of name pattern "\1"
    ctags: Warning: kernel/rcu/rcutorture.c:133: null expansion of name pattern "\1"
    ctags: Warning: kernel/rcu/rcutorture.c:135: null expansion of name pattern "\1"
    ctags: Warning: kernel/workqueue.c:323: null expansion of name pattern "\1"
    ctags: Warning: net/ipv4/syncookies.c:53: null expansion of name pattern "\1"
    ctags: Warning: net/ipv6/syncookies.c:44: null expansion of name pattern "\1"
    ctags: Warning: net/rds/page.c:45: null expansion of name pattern "\1"

    Which are all the result of the DEFINE_PER_CPU pattern:

    scripts/tags.sh:200: '/\
    Acked-by: David S. Miller
    Acked-by: Rafael J. Wysocki
    Cc: Tejun Heo
    Cc: "Paul E. McKenney"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Zijlstra
     

24 Feb, 2016

1 commit


06 Dec, 2015

1 commit


08 Oct, 2015

1 commit


07 Oct, 2015

5 commits

  • The torturing_tasks() function is used only in kernels built with
    CONFIG_PROVE_RCU=y, so the second definition can result in unused-function
    compiler warnings. This commit adds __maybe_unused to suppress these
    warnings.

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

    Paul E. McKenney
     
  • The rcutorture module has a list of torture types, and specifying a
    type not on this list is supposed to cleanly fail the module load.
    Unfortunately, the "fail" happens without the "cleanly". This commit
    therefore adds the needed clean-up after an incorrect torture_type.

    Reported-by: David Miller
    Signed-off-by: Paul E. McKenney
    Acked-by: David Miller
    Reviewed-by: Josh Triplett

    Paul E. McKenney
     
  • This commit moves cond_resched_rcu_qs() into stutter_wait(), saving
    a line and also avoiding RCU CPU stall warnings from all torture
    loops containing a stutter_wait().

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

    Paul E. McKenney
     
  • We have had the call_rcu_func_t typedef for a quite awhile, but we still
    use explicit function pointer types in some places. These types can
    confuse cscope and can be hard to read. This patch therefore replaces
    these types with the call_rcu_func_t typedef.

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

    Boqun Feng
     
  • As we now have rcu_callback_t typedefs as the type of rcu callbacks, we
    should use it in call_rcu*() and friends as the type of parameters. This
    could save us a few lines of code and make it clear which function
    requires an rcu callbacks rather than other callbacks as its argument.

    Besides, this can also help cscope to generate a better database for
    code reading.

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

    Boqun Feng
     

04 Aug, 2015

1 commit


23 Jul, 2015

1 commit

  • The get_state_synchronize_rcu() and cond_synchronize_rcu() functions
    allow polling for grace-period completion, with an actual wait for a
    grace period occurring only when cond_synchronize_rcu() is called too
    soon after the corresponding get_state_synchronize_rcu(). However,
    these functions work only for vanilla RCU. This commit adds the
    get_state_synchronize_sched() and cond_synchronize_sched(), which provide
    the same capability for RCU-sched.

    Reported-by: Peter Zijlstra (Intel)
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

16 Jul, 2015

5 commits

  • Although RCU-tasks isn't really designed to support rcu_dereference()
    and list manipulation, that is how rcutorture tests it. Which means
    that lockdep-RCU complains about the rcu_dereference_check() invocations
    because RCU-tasks doesn't have read-side markers. This commit therefore
    creates a torturing_tasks() to silence the lockdep-RCU complaints from
    rcu_dereference_check() when RCU-tasks is being tortured.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The rcu_torture_cbflood() function correctly checks for flavors of
    RCU that lack analogs to call_rcu() and rcu_barrier(), but in that
    case it fails to terminate correctly. In fact, it terminates so
    incorrectly that segfaults can result. This commit therefore causes
    rcu_torture_cbflood() to do the proper wait-for-stop procedure.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Specifying a negative rcutorture.shuffle_interval value will cause a
    negative value to be used as a sleep time. This commit therefore
    refuses to start shuffling unless the rcutorture.shuffle_interval
    value is greater than zero.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Currently, a negative value for rcutorture.nfakewriters= can cause
    rcutorture to pass a negative size to the memory allocator, which
    is not really a particularly good thing to do. This commit therefore
    adds bounds checking to this parameter, so that values that are less
    than or equal to zero disable fake writing.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • A negative value for rcutorture.n_barrier_cbs can pass a negative value
    to the memory allocator, so this commit instead causes rcu_barrier()
    testing to be disabled in this case.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

28 May, 2015

4 commits

  • The current rcutorture testing does not do any cleanup operations.
    This works because the srcu_struct is statically allocated, but it
    does represent a memory leak of the associated dynamically allocated
    ->per_cpu_ref per-CPU variables. However, rcutorture currently uses
    a statically allocated srcu_struct, which cannot legally be passed to
    cleanup_srcu_struct(). Therefore, this commit adds a second form
    of srcu (called srcud) that dynamically allocates and frees the
    associated per-CPU variables. This commit also adds a ->cleanup()
    member to rcu_torture_ops that is invoked at the end of the test,
    after ->cb_barriers(). This ->cleanup() pointer is NULL for all
    existing tests, and thus only used for scrud. Finally, the SRCU-P
    torture-test configuration selects scrud instead of srcu, with SRCU-N
    continuing to use srcu, thereby testing both static and dynamic
    srcu_struct structures.

    Reported-by: "Ahmed, Iftekhar"
    Signed-off-by: Paul E. McKenney
    Reviewed-by: Josh Triplett

    Paul E. McKenney
     
  • The rcutorture.c file uses several explicit memory barriers that can
    easily be converted to smp_store_release() and smp_load_acquire(), which
    improves maintainability and also improves performance a bit.

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

    Paul E. McKenney
     
  • By default, with rcutorture.nreaders equal to -1, rcutorture provisions
    N-1 reader kthreads, where N is the number of CPUs. This avoids
    rcutorture-induced stalls, but also avoids heavier levels of torture.
    This commit therefore allows negative values of rcutorture.nreaders
    to specify larger numbers of reader kthreads, so that for example
    rcutorture.nreaders=-2 provisions N kthreads and rcutorture.nreaders=-5
    provisions N+3 kthreads.

    Signed-off-by: Paul E. McKenney
    [ paulmck: Update documentation, as suggested by Josh Triplett. ]

    Paul E. McKenney
     
  • This commit moves from the old ACCESS_ONCE() API to the new READ_ONCE()
    and WRITE_ONCE() APIs.

    Signed-off-by: Paul E. McKenney
    [ paulmck: Updated to include kernel/torture.c as suggested by Jason Low. ]

    Paul E. McKenney
     

27 Feb, 2015

2 commits


11 Jan, 2015

4 commits


04 Nov, 2014

1 commit