14 Aug, 2019

1 commit


02 Aug, 2019

3 commits

  • The rcu_dereference_raw_notrace() API name is confusing. It is equivalent
    to rcu_dereference_raw() except that it also does sparse pointer checking.

    There are only a few users of rcu_dereference_raw_notrace(). This patches
    renames all of them to be rcu_dereference_raw_check() with the "_check()"
    indicating sparse checking.

    Signed-off-by: Joel Fernandes (Google)
    [ paulmck: Fix checkpatch warnings about parentheses. ]
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     
  • This commit adds mention of the rcutree.kthread_prio kernel boot parameter
    to the discussion of how high-priority real-time tasks can result in
    RCU CPU stall warnings. (However, this does not necessarily help when
    the high-priority real-time tasks are using dubious deadlines.)

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Commit bb73c52bad36 ("rcu: Don't disable preemption for Tiny and Tree
    RCU readers") removed the barrier() calls from rcu_read_lock() and
    rcu_write_lock() in CONFIG_PREEMPT=n&&CONFIG_PREEMPT_COUNT=n kernels.
    Within RCU, this commit was OK, but it failed to account for things like
    get_user() that can pagefault and that can be reordered by the compiler.
    Lack of the barrier() calls in rcu_read_lock() and rcu_read_unlock()
    can cause these page faults to migrate into RCU read-side critical
    sections, which in CONFIG_PREEMPT=n kernels could result in too-short
    grace periods and arbitrary misbehavior. Please see commit 386afc91144b
    ("spinlocks and preemption points need to be at least compiler barriers")
    and Linus's commit 66be4e66a7f4 ("rcu: locking and unlocking need to
    always be at least barriers"), this last of which restores the barrier()
    call to both rcu_read_lock() and rcu_read_unlock().

    This commit removes barrier() calls that are no longer needed given that
    the addition of them in Linus's commit noted above. The combination of
    this commit and Linus's commit effectively reverts commit bb73c52bad36
    ("rcu: Don't disable preemption for Tiny and Tree RCU readers").

    Reported-by: Herbert Xu
    Reported-by: Linus Torvalds
    Signed-off-by: Paul E. McKenney
    [ paulmck: Fix embarrassing typo located by Alan Stern. ]

    Paul E. McKenney
     

17 Jul, 2019

1 commit


10 Jul, 2019

1 commit

  • Pull Documentation updates from Jonathan Corbet:
    "It's been a relatively busy cycle for docs:

    - A fair pile of RST conversions, many from Mauro. These create more
    than the usual number of simple but annoying merge conflicts with
    other trees, unfortunately. He has a lot more of these waiting on
    the wings that, I think, will go to you directly later on.

    - A new document on how to use merges and rebases in kernel repos,
    and one on Spectre vulnerabilities.

    - Various improvements to the build system, including automatic
    markup of function() references because some people, for reasons I
    will never understand, were of the opinion that
    :c:func:``function()`` is unattractive and not fun to type.

    - We now recommend using sphinx 1.7, but still support back to 1.4.

    - Lots of smaller improvements, warning fixes, typo fixes, etc"

    * tag 'docs-5.3' of git://git.lwn.net/linux: (129 commits)
    docs: automarkup.py: ignore exceptions when seeking for xrefs
    docs: Move binderfs to admin-guide
    Disable Sphinx SmartyPants in HTML output
    doc: RCU callback locks need only _bh, not necessarily _irq
    docs: format kernel-parameters -- as code
    Doc : doc-guide : Fix a typo
    platform: x86: get rid of a non-existent document
    Add the RCU docs to the core-api manual
    Documentation: RCU: Add TOC tree hooks
    Documentation: RCU: Rename txt files to rst
    Documentation: RCU: Convert RCU UP systems to reST
    Documentation: RCU: Convert RCU linked list to reST
    Documentation: RCU: Convert RCU basic concepts to reST
    docs: filesystems: Remove uneeded .rst extension on toctables
    scripts/sphinx-pre-install: fix out-of-tree build
    docs: zh_CN: submitting-drivers.rst: Remove a duplicated Documentation/
    Documentation: PGP: update for newer HW devices
    Documentation: Add section about CPU vulnerabilities for Spectre
    Documentation: platform: Delete x86-laptop-drivers.txt
    docs: Note that :c:func: should no longer be used
    ...

    Linus Torvalds
     

28 Jun, 2019

1 commit

  • The UP.rst file calls for locks acquired within RCU callback functions
    to use _irq variants (spin_lock_irqsave() or similar), which does work,
    but can be overkill. This commit therefore instead calls for _bh variants
    (spin_lock_bh() or similar), while noting that _irq does work.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Jiunn Chang
    Signed-off-by: Jonathan Corbet

    Jiunn Chang
     

27 Jun, 2019

5 commits


20 Jun, 2019

1 commit


14 Jun, 2019

1 commit

  • Quoting Paul [1]:

    "Given that a quick (and perhaps error-prone) search of the uses
    of rcu_assign_pointer() in v5.1 didn't find a single use of the
    return value, let's please instead change the documentation and
    implementation to eliminate the return value."

    [1] https://lkml.kernel.org/r/20190523135013.GL28207@linux.ibm.com

    Signed-off-by: Andrea Parri
    Cc: "Paul E. McKenney"
    Cc: Josh Triplett
    Cc: Steven Rostedt
    Cc: Mathieu Desnoyers
    Cc: Lai Jiangshan
    Cc: Joel Fernandes
    Cc: rcu@vger.kernel.org
    Cc: Peter Zijlstra
    Cc: Will Deacon
    Cc: Mark Rutland
    Cc: Matthew Wilcox
    Cc: Sasha Levin
    Signed-off-by: Paul E. McKenney

    Andrea Parri
     

29 May, 2019

2 commits


27 Mar, 2019

4 commits


10 Mar, 2019

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "A fairly routine cycle for docs - lots of typo fixes, some new
    documents, and more translations. There's also some LICENSES
    adjustments from Thomas"

    * tag 'docs-5.1' of git://git.lwn.net/linux: (74 commits)
    docs: Bring some order to filesystem documentation
    Documentation/locking/lockdep: Drop last two chars of sample states
    doc: rcu: Suspicious RCU usage is a warning
    docs: driver-api: iio: fix errors in documentation
    Documentation/process/howto: Update for 4.x -> 5.x versioning
    docs: Explicitly state that the 'Fixes:' tag shouldn't split lines
    doc: security: Add kern-doc for lsm_hooks.h
    doc: sctp: Merge and clean up rst files
    Docs: Correct /proc/stat path
    scripts/spdxcheck.py: fix C++ comment style detection
    doc: fix typos in license-rules.rst
    Documentation: fix admin-guide/README.rst minimum gcc version requirement
    doc: process: complete removal of info about -git patches
    doc: translations: sync translations 'remove info about -git patches'
    perf-security: wrap paragraphs on 72 columns
    perf-security: elaborate on perf_events/Perf privileged users
    perf-security: document collected perf_events/Perf data categories
    perf-security: document perf_events/Perf resource control
    sysfs.txt: add note on available attribute macros
    docs: kernel-doc: typo "if ... if" -> "if ... is"
    ...

    Linus Torvalds
     

05 Mar, 2019

2 commits


10 Feb, 2019

1 commit


26 Jan, 2019

7 commits

  • The supported module parameters are detailed in both RCU/torture.txt and
    admin-guide/kernel-parameters.txt, and the latter is actively maintained.
    So this patch removes section MODULE PARAMETERS in torture.txt and
    adds a reference to the information in kernel-parameters.txt.

    Signed-off-by: Junchang Wang
    Signed-off-by: Paul E. McKenney
    [ paulmck: Add search string. ]

    Junchang Wang
     
  • Although the name rcu_process_callbacks() still makes sense for Tiny
    RCU, where most of what it does is invoke callbacks, it no longer makes
    much sense for Tree RCU, especially given that the actually callback
    invocation is relegated to rcu_do_batch(), or, for no-CBs CPUs, to the
    rcuo kthreads. Especially in the latter case, rcu_process_callbacks()
    has very little to do with actual callbacks. A better description of
    this function is that it performs RCU's core processing.

    This commit therefore changes the name of Tree RCU's rcu_process_callbacks()
    function to rcu_core(), which also has the virtue of being consistent with
    the existing invoke_rcu_core() function.

    While in the area, the header comment is reworked.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The name rcu_check_callbacks() arguably made sense back in the early
    2000s when RCU was quite a bit simpler than it is today, but it has
    become quite misleading, especially with the advent of dyntick-idle
    and NO_HZ_FULL. The rcu_check_callbacks() function is RCU's hook into
    the scheduling-clock interrupt, and is now but one of many ways that
    callbacks get promoted to invocable state.

    This commit therefore changes the name to rcu_sched_clock_irq(),
    which is the same number of characters and clearly indicates this
    function's relation to the rest of the Linux kernel. In addition, for
    the sake of consistency, rcu_flavor_check_callbacks() is also renamed
    to rcu_flavor_sched_clock_irq().

    While in the area, the header comments for both functions are reworked.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Fix outdated links in whatisRCU.txt.

    Signed-off-by: Junchang Wang
    Signed-off-by: Paul E. McKenney

    Junchang Wang
     
  • SRCU's synchronize_srcu() may not be invoked from CPU-hotplug notifiers,
    due to the fact that SRCU grace periods make use of timers and the
    possibility of timers being temporarily stranded on the outgoing CPU.
    This stranding of timers means that timers posted to the outgoing CPU
    will not fire until late in the CPU-hotplug process. The problem is
    that if a notifier is waiting on an SRCU grace period, that grace period
    is waiting on a timer, and that timer is stranded on the outgoing CPU,
    then the notifier will never be awakened, in other words, deadlock has
    occurred. This same situation of course also prohibits srcu_barrier()
    from being invoked from CPU-hotplug notifiers.

    This commit therefore updates the requirements to include this restriction.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Back when there were multiple flavors of RCU, it was necessary to
    separately count lazy and non-lazy callbacks for each CPU. These counts
    were used in CONFIG_RCU_FAST_NO_HZ kernels to determine how long a newly
    idle CPU should be allowed to sleep before handling its RCU callbacks.
    But now that there is only one flavor, the callback counts for a given
    CPU's sole rcu_data structure are the counts for that CPU.

    This commit therefore removes the rcu_data structure's ->nonlazy_posted
    and ->nonlazy_posted_snap fields, the rcu_idle_count_callbacks_posted()
    and rcu_cpu_has_callbacks() functions, repurposes the rcu_data structure's
    ->all_lazy field to record the laziness state at the beginning of the
    latest idle sojourn, and modifies CONFIG_RCU_FAST_NO_HZ RCU CPU stall
    warnings accordingly.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Back when there could be multiple RCU flavors running in the same kernel
    at the same time, it was necessary to specify the expedited grace-period
    IPI handler at runtime. Now that there is only one RCU flavor, the
    IPI handler can be determined at build time. There is therefore no
    longer any reason for the RCU-preempt and RCU-sched IPI handlers to
    have different names, nor is there any reason to pass these handlers in
    function arguments and in the data structures enclosing workqueues.

    This commit therefore makes all these changes, pushing the specification
    of the expedited grace-period IPI handler down to the point of use.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

13 Nov, 2018

9 commits