21 Jul, 2021

5 commits


05 Jul, 2021

1 commit

  • …git/paulmck/linux-rcu

    Pull RCU updates from Paul McKenney:

    - Bitmap parsing support for "all" as an alias for all bits

    - Documentation updates

    - Miscellaneous fixes, including some that overlap into mm and lockdep

    - kvfree_rcu() updates

    - mem_dump_obj() updates, with acks from one of the slab-allocator
    maintainers

    - RCU NOCB CPU updates, including limited deoffloading

    - SRCU updates

    - Tasks-RCU updates

    - Torture-test updates

    * 'core-rcu-2021.07.04' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu: (78 commits)
    tasks-rcu: Make show_rcu_tasks_gp_kthreads() be static inline
    rcu-tasks: Make ksoftirqd provide RCU Tasks quiescent states
    rcu: Add missing __releases() annotation
    rcu: Remove obsolete rcu_read_unlock() deadlock commentary
    rcu: Improve comments describing RCU read-side critical sections
    rcu: Create an unrcu_pointer() to remove __rcu from a pointer
    srcu: Early test SRCU polling start
    rcu: Fix various typos in comments
    rcu/nocb: Unify timers
    rcu/nocb: Prepare for fine-grained deferred wakeup
    rcu/nocb: Only cancel nocb timer if not polling
    rcu/nocb: Delete bypass_timer upon nocb_gp wakeup
    rcu/nocb: Cancel nocb_timer upon nocb_gp wakeup
    rcu/nocb: Allow de-offloading rdp leader
    rcu/nocb: Directly call __wake_nocb_gp() from bypass timer
    rcu: Don't penalize priority boosting when there is nothing to boost
    rcu: Point to documentation of ordering guarantees
    rcu: Make rcu_gp_cleanup() be noinline for tracing
    rcu: Restrict RCU_STRICT_GRACE_PERIOD to at most four CPUs
    rcu: Make show_rcu_gp_kthreads() dump rcu_node structures blocking GP
    ...

    Linus Torvalds
     

25 Jun, 2021

2 commits

  • This commit gives an example of non-obvious RCU reader/updater pairing
    in the guise of the XDP feature in networking, which calls BPF programs
    from network-driver NAPI (softirq) context.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Toke Høiland-Jørgensen
    Signed-off-by: Daniel Borkmann
    Link: https://lore.kernel.org/bpf/20210624160609.292325-4-toke@redhat.com

    Toke Høiland-Jørgensen
     
  • This commit clarifies which primitives readers can use given that the
    corresponding updaters have made a specific choice. This commit also adds
    this information for the various RCU Tasks flavors. While in the area, it
    removes a paragraph that no longer applies in any straightforward manner.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Toke Høiland-Jørgensen
    Signed-off-by: Daniel Borkmann
    Link: https://lore.kernel.org/bpf/20210624160609.292325-3-toke@redhat.com

    Paul E. McKenney
     

11 May, 2021

2 commits


16 Mar, 2021

1 commit


23 Feb, 2021

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "It has been a relatively quiet cycle in docsland.

    - As promised, the minimum Sphinx version to build the docs is now
    1.7, and we have dropped support for Python 2 entirely. That
    allowed the removal of a bunch of compatibility code.

    - A set of treewide warning fixups from Mauro that I applied after it
    became clear nobody else was going to deal with them.

    - The automarkup mechanism can now create cross-references from
    relative paths to RST files.

    - More translations, typo fixes, and warning fixes"

    * tag 'docs-5.12' of git://git.lwn.net/linux: (75 commits)
    docs: kernel-hacking: be more civil
    docs: Remove the Microsoft rhetoric
    Documentation/admin-guide: kernel-parameters: Update nohlt section
    doc/admin-guide: fix spelling mistake: "perfomance" -> "performance"
    docs: Document cross-referencing using relative path
    docs: Enable usage of relative paths to docs on automarkup
    docs: thermal: fix spelling mistakes
    Documentation: admin-guide: Update kvm/xen config option
    docs: Make syscalls' helpers naming consistent
    coding-style.rst: Avoid comma statements
    Documentation: /proc/loadavg: add 3 more field descriptions
    Documentation/submitting-patches: Add blurb about backtraces in commit messages
    Docs: drop Python 2 support
    Move our minimum Sphinx version to 1.7
    Documentation: input: define ABS_PRESSURE/ABS_MT_PRESSURE resolution as grams
    scripts/kernel-doc: add internal hyperlink to DOC: sections
    Update Documentation/admin-guide/sysctl/fs.rst
    docs: Update DTB format references
    docs: zh_CN: add iio index.rst translation
    docs/zh_CN: add iio ep93xx_adc.rst translation
    ...

    Linus Torvalds
     

22 Feb, 2021

1 commit

  • Pull RCU updates from Ingo Molnar:
    "These are the latest RCU updates for v5.12:

    - Documentation updates.

    - Miscellaneous fixes.

    - kfree_rcu() updates: Addition of mem_dump_obj() to provide
    allocator return addresses to more easily locate bugs. This has a
    couple of RCU-related commits, but is mostly MM. Was pulled in with
    akpm's agreement.

    - Per-callback-batch tracking of numbers of callbacks, which enables
    better debugging information and smarter reactions to large numbers
    of callbacks.

    - The first round of changes to allow CPUs to be runtime switched
    from and to callback-offloaded state.

    - CONFIG_PREEMPT_RT-related changes.

    - RCU CPU stall warning updates.

    - Addition of polling grace-period APIs for SRCU.

    - Torture-test and torture-test scripting updates, including a
    "torture everything" script that runs rcutorture, locktorture,
    scftorture, rcuscale, and refscale. Plus does an allmodconfig
    build.

    - nolibc fixes for the torture tests"

    * tag 'core-rcu-2021-02-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (130 commits)
    percpu_ref: Dump mem_dump_obj() info upon reference-count underflow
    rcu: Make call_rcu() print mem_dump_obj() info for double-freed callback
    mm: Make mem_obj_dump() vmalloc() dumps include start and length
    mm: Make mem_dump_obj() handle vmalloc() memory
    mm: Make mem_dump_obj() handle NULL and zero-sized pointers
    mm: Add mem_dump_obj() to print source of memory block
    tools/rcutorture: Fix position of -lgcc in mkinitrd.sh
    tools/nolibc: Fix position of -lgcc in the documented example
    tools/nolibc: Emit detailed error for missing alternate syscall number definitions
    tools/nolibc: Remove incorrect definitions of __ARCH_WANT_*
    tools/nolibc: Get timeval, timespec and timezone from linux/time.h
    tools/nolibc: Implement poll() based on ppoll()
    tools/nolibc: Implement fork() based on clone()
    tools/nolibc: Make getpgrp() fall back to getpgid(0)
    tools/nolibc: Make dup2() rely on dup3() when available
    tools/nolibc: Add the definition for dup()
    rcutorture: Add rcutree.use_softirq=0 to RUDE01 and TASKS01
    torture: Maintain torture-specific set of CPUs-online books
    torture: Clean up after torture-test CPU hotplugging
    rcutorture: Make object_debug also double call_rcu() heap object
    ...

    Linus Torvalds
     

12 Feb, 2021

1 commit

  • …ulmck/linux-rcu into core/rcu

    Pull RCU updates from Paul E. McKenney:

    - Documentation updates.

    - Miscellaneous fixes.

    - kfree_rcu() updates: Addition of mem_dump_obj() to provide allocator return
    addresses to more easily locate bugs. This has a couple of RCU-related commits,
    but is mostly MM. Was pulled in with akpm's agreement.

    - Per-callback-batch tracking of numbers of callbacks,
    which enables better debugging information and smarter
    reactions to large numbers of callbacks.

    - The first round of changes to allow CPUs to be runtime switched from and to
    callback-offloaded state.

    - CONFIG_PREEMPT_RT-related changes.

    - RCU CPU stall warning updates.
    - Addition of polling grace-period APIs for SRCU.

    - Torture-test and torture-test scripting updates, including a "torture everything"
    script that runs rcutorture, locktorture, scftorture, rcuscale, and refscale.
    Plus does an allmodconfig build.

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

29 Jan, 2021

1 commit

  • The "oprofile" user-space tools don't use the kernel OPROFILE support
    any more, and haven't in a long time. User-space has been converted to
    the perf interfaces.

    Remove kernel's old oprofile support.

    Suggested-by: Christoph Hellwig
    Suggested-by: Linus Torvalds
    Signed-off-by: Viresh Kumar
    Acked-by: Robert Richter
    Acked-by: Paul E. McKenney #RCU
    Acked-by: William Cohen
    Acked-by: Al Viro
    Acked-by: Thomas Gleixner

    Viresh Kumar
     

23 Jan, 2021

1 commit

  • …'mmdumpobj.2021.01.22a', 'nocb.2021.01.06a', 'rt.2021.01.04a', 'stall.2021.01.06a', 'torture.2021.01.12a' and 'tortureall.2021.01.06a' into HEAD

    doc.2021.01.06a: Documentation updates.
    fixes.2021.01.04b: Miscellaneous fixes.
    kfree_rcu.2021.01.04a: kfree_rcu() updates.
    mmdumpobj.2021.01.22a: Dump allocation point for memory blocks.
    nocb.2021.01.06a: RCU callback offload updates and cblist segment lengths.
    rt.2021.01.04a: Real-time updates.
    stall.2021.01.06a: RCU CPU stall warning updates.
    torture.2021.01.12a: Torture-test updates and polling SRCU grace-period API.
    tortureall.2021.01.06a: Torture-test script updates.

    Paul E. McKenney
     

12 Jan, 2021

1 commit

  • Replace the lkml.org links with lore to better use a single source
    that's more likely to stay available long-term.

    Done by bash script:

    cvt_lkml_to_lore ()
    {
    tmpfile=$(mktemp ./.cvt_links.XXXXXXX)

    header=$(echo $1 | sed 's@/lkml/@/lkml/headers/@')

    wget -qO - $header > $tmpfile
    if [[ $? == 0 ]] ; then
    link=$(grep -i '^Message-Id:' $tmpfile | head -1 | \
    sed -r -e 's/^\s*Message-Id:\s*\s*$//' -e 's@^@https://lore.kernel.org/r/@')
    # echo "testlink: $link"
    if [ -n "$link" ] ; then
    wget -qO - $link > /dev/null
    if [[ $? == 0 ]] ; then
    echo $link
    fi
    fi
    fi

    rm -f $tmpfile
    }

    git grep -P -o "\bhttps?://(?:www.)?lkml.org/lkml[\/\w]+" $@ |
    while read line ; do
    echo $line
    file=$(echo $line | cut -f1 -d':')
    link=$(echo $line | cut -f2- -d':')
    newlink=$(cvt_lkml_to_lore $link)
    if [[ -n "$newlink" ]] ; then
    sed -i -e "s#\b$link\b#$newlink#" $file
    fi
    done

    Link: https://lore.kernel.org/patchwork/patch/1265849/#1462688
    Signed-off-by: Joe Perches
    Link: https://lore.kernel.org/r/77cdb7f32cfb087955bfc3600b86c40bed5d4104.camel@perches.com
    Signed-off-by: Jonathan Corbet

    Joe Perches
     

07 Jan, 2021

3 commits

  • For a new grace period request, the RCU GP kthread transitions through
    following states:

    a. [RCU_GP_WAIT_GPS] -> [RCU_GP_DONE_GPS]

    The RCU_GP_WAIT_GPS state is where the GP kthread waits for a request
    for a new GP. Once it receives a request (for example, when a new RCU
    callback is queued), the GP kthread transitions to RCU_GP_DONE_GPS.

    b. [RCU_GP_DONE_GPS] -> [RCU_GP_ONOFF]

    Grace period initialization starts in rcu_gp_init(), which records the
    start of new GP in rcu_state.gp_seq and transitions to RCU_GP_ONOFF.

    c. [RCU_GP_ONOFF] -> [RCU_GP_INIT]

    The purpose of the RCU_GP_ONOFF state is to apply the online/offline
    information that was buffered for any CPUs that recently came online or
    went offline. This state is maintained in per-leaf rcu_node bitmasks,
    with the buffered state in ->qsmaskinitnext and the state for the upcoming
    GP in ->qsmaskinit. At the end of this RCU_GP_ONOFF state, each bit in
    ->qsmaskinit will correspond to a CPU that must pass through a quiescent
    state before the upcoming grace period is allowed to complete.

    However, a leaf rcu_node structure with an all-zeroes ->qsmaskinit
    cannot necessarily be ignored. In preemptible RCU, there might well be
    tasks still in RCU read-side critical sections that were first preempted
    while running on one of the CPUs managed by this structure. Such tasks
    will be queued on this structure's ->blkd_tasks list. Only after this
    list fully drains can this leaf rcu_node structure be ignored, and even
    then only if none of its CPUs have come back online in the meantime.
    Once that happens, the ->qsmaskinit masks further up the tree will be
    updated to exclude this leaf rcu_node structure.

    Once the ->qsmaskinitnext and ->qsmaskinit fields have been updated
    as needed, the GP kthread transitions to RCU_GP_INIT.

    d. [RCU_GP_INIT] -> [RCU_GP_WAIT_FQS]

    The purpose of the RCU_GP_INIT state is to copy each ->qsmaskinit to
    the ->qsmask field within each rcu_node structure. This copying is done
    breadth-first from the root to the leaves. Why not just copy directly
    from ->qsmaskinitnext to ->qsmask? Because the ->qsmaskinitnext masks
    can change in the meantime as additional CPUs come online or go offline.
    Such changes would result in inconsistencies in the ->qsmask fields up and
    down the tree, which could in turn result in too-short grace periods or
    grace-period hangs. These issues are avoided by snapshotting the leaf
    rcu_node structures' ->qsmaskinitnext fields into their ->qsmaskinit
    counterparts, generating a consistent set of ->qsmaskinit fields
    throughout the tree, and only then copying these consistent ->qsmaskinit
    fields to their ->qsmask counterparts.

    Once this initialization step is complete, the GP kthread transitions
    to RCU_GP_WAIT_FQS, where it waits to do a force-quiescent-state scan
    on the one hand or for the end of the grace period on the other.

    e. [RCU_GP_WAIT_FQS] -> [RCU_GP_DOING_FQS]

    The RCU_GP_WAIT_FQS state waits for one of three things: (1) An
    explicit request to do a force-quiescent-state scan, (2) The end of
    the grace period, or (3) A short interval of time, after which it
    will do a force-quiescent-state (FQS) scan. The explicit request can
    come from rcutorture or from any CPU that has too many RCU callbacks
    queued (see the qhimark kernel parameter and the RCU_GP_FLAG_OVLD
    flag). The aforementioned "short period of time" is specified by the
    jiffies_till_first_fqs boot parameter for a given grace period's first
    FQS scan and by the jiffies_till_next_fqs for later FQS scans.

    Either way, once the wait is over, the GP kthread transitions to
    RCU_GP_DOING_FQS.

    f. [RCU_GP_DOING_FQS] -> [RCU_GP_CLEANUP]

    The RCU_GP_DOING_FQS state performs an FQS scan. Each such scan carries
    out two functions for any CPU whose bit is still set in its leaf rcu_node
    structure's ->qsmask field, that is, for any CPU that has not yet reported
    a quiescent state for the current grace period:

    i. Report quiescent states on behalf of CPUs that have been observed
    to be idle (from an RCU perspective) since the beginning of the
    grace period.

    ii. If the current grace period is too old, take various actions to
    encourage holdout CPUs to pass through quiescent states, including
    enlisting the aid of any calls to cond_resched() and might_sleep(),
    and even including IPIing the holdout CPUs.

    These checks are skipped for any leaf rcu_node structure with a all-zero
    ->qsmask field, however such structures are subject to RCU priority
    boosting if there are tasks on a given structure blocking the current
    grace period. The end of the grace period is detected when the root
    rcu_node structure's ->qsmask is zero and when there are no longer any
    preempted tasks blocking the current grace period. (No, this last check
    is not redundant. To see this, consider an rcu_node tree having exactly
    one structure that serves as both root and leaf.)

    Once the end of the grace period is detected, the GP kthread transitions
    to RCU_GP_CLEANUP.

    g. [RCU_GP_CLEANUP] -> [RCU_GP_CLEANED]

    The RCU_GP_CLEANUP state marks the end of grace period by updating the
    rcu_state structure's ->gp_seq field and also all rcu_node structures'
    ->gp_seq field. As before, the rcu_node tree is traversed in breadth
    first order. Once this update is complete, the GP kthread transitions
    to the RCU_GP_CLEANED state.

    i. [RCU_GP_CLEANED] -> [RCU_GP_INIT]

    Once in the RCU_GP_CLEANED state, the GP kthread immediately transitions
    into the RCU_GP_INIT state.

    j. The role of timers.

    If there is at least one idle CPU, and if timers are not firing, the
    transition from RCU_GP_DOING_FQS to RCU_GP_CLEANUP will never happen.
    Timers can fail to fire for a number of reasons, including issues in
    timer configuration, issues in the timer framework, and failure to handle
    softirqs (for example, when there is a storm of interrupts). Whatever the
    reason, if the timers fail to fire, the GP kthread will never be awakened,
    resulting in RCU CPU stall warnings and eventually in OOM.

    However, an RCU CPU stall warning has a large number of potential causes,
    as documented in Documentation/RCU/stallwarn.rst. This commit therefore
    adds analysis to the RCU CPU stall-warning code to emit an additional
    message if the cause of the stall is likely to be timer failure.

    Signed-off-by: Neeraj Upadhyay
    Signed-off-by: Paul E. McKenney

    Neeraj Upadhyay
     
  • CONFIG_PREEMPTION is selected by CONFIG_PREEMPT and by CONFIG_PREEMPT_RT.
    Both PREEMPT and PREEMPT_RT require the same functionality which today
    depends on CONFIG_PREEMPT.

    Update the documents and mention CONFIG_PREEMPTION. Spell out
    CONFIG_PREEMPT_RT (instead PREEMPT_RT) since it is an option now.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Paul E. McKenney

    Sebastian Andrzej Siewior
     
  • The PREEMPT_RT wiki moved from kernel.org to the Linux Foundation wiki.
    The kernel.org wiki is read only.

    This commit therefore updates the URL of the active PREEMPT_RT wiki.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Paul E. McKenney

    Sebastian Andrzej Siewior
     

05 Jan, 2021

5 commits

  • This commit adds requirements documentation for the
    get_state_synchronize_srcu(), start_poll_synchronize_srcu(), and
    poll_state_synchronize_srcu() functions.

    Link: https://lore.kernel.org/rcu/20201112201547.GF3365678@moria.home.lan/
    Reported-by: Kent Overstreet
    Reviewed-by: Neeraj Upadhyay
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Back in the day, RCU_INIT_POINTER() was the only way to avoid
    memory-barrier instructions while storing NULL to an RCU-protected
    pointer. Fortunately, in 2016, rcu_assign_pointer() started checking for
    compile-time NULL pointers and omitting the memory-barrier instructions in
    that case. Unfortunately, RCU's Requirements.rst document was not updated
    accordingly. This commit therefore at long last carries out that update.

    Fixes: 3a37f7275cda ("rcu: No ordering for rcu_assign_pointer() of NULL")
    Link: https://lore.kernel.org/lkml/20201209230755.GV7338@casper.infradead.org/
    Reported-by: Matthew Wilcox
    Acked-by: Linus Torvalds
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • It appears the Compaq link moved to a machine at HP for a while
    after the merger of the two, but that doesn't work either. A search
    of HP for "wiz_2637" (w and w/o html suffix) comes up empty.

    Since the references aren't critical to the documents we remove them.

    Also, the lkml.kernel.org/g links have been broken for ages, so replace
    them with lore.kernel.org/r links - standardize on lore for all links too.

    Note that we put off fixing these 4y ago - presumably thinking that a
    treewide fixup was pending. Probably safe to go fix the RCU ones now.

    https://lore.kernel.org/r/20160915144926.GD10850@linux.vnet.ibm.com/

    Cc: Michael Opdenacker
    Cc: Steven Rostedt
    Cc: "Paul E. McKenney"
    Signed-off-by: Paul Gortmaker
    Signed-off-by: Paul E. McKenney

    Paul Gortmaker
     
  • synchronize_rcu_bh(), synchronize_rcu_bh_expedited(), call_rcu_bh(),
    rcu_barrier_bh(), synchronize_sched(), synchronize_rcu_sched_expedited(),
    call_rcu_sched(), and rcu_barrier_sched() no longer exist, so this
    commit removes mention of them.

    Reported-by: Joel Fernandes
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The docbook system has learned that "()" designates a function, so
    this commit removes the no-longer-needed "``" to improve readability
    of the raw .rst file.

    Reported-by: Peter Zijlstra
    Cc: Mauro Carvalho Chehab
    Cc: Jonathan Corbet
    [ paulmck: Apply Stephen Rothwell feedback. ]
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

01 Jan, 2021

1 commit

  • During the process of converting the documentation to reST, some links
    were converted using the following wrong syntax (and sometimes using %20
    instead of spaces):

    `Display text `__

    This syntax isn't valid according to the docutils' spec [1], but more
    importantly, it is specific to HTML, since it uses '#' to link to an
    HTML anchor.

    The right syntax would instead use a docutils hyperlink reference as the
    embedded URI to point to the section [2], that is:

    `Display text `__

    This syntax works in both HTML and PDF.

    The LaTeX toolchain doesn't mind the HTML anchor syntax when generating
    the pdf documentation (make pdfdocs), that is, the build succeeds but
    the links don't work, but that syntax causes errors when trying to build
    using the not-yet-merged rst2pdf:

    ValueError: format not resolved, probably missing URL scheme or undefined destination target for 'Forcing%20Quiescent%20States'

    So, use the correct syntax in order to have it work in all different
    output formats.

    [1]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#reference-names
    [2]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#embedded-uris-and-aliases

    Fixes: ccc9971e2147 ("docs: rcu: convert some articles from html to ReST")
    Fixes: c8cce10a62aa ("docs: Fix the reference labels in Locking.rst")
    Fixes: e548cdeffcd8 ("docs-rst: convert kernel-locking to ReST")
    Fixes: 7ddedebb03b7 ("ALSA: doc: ReSTize writing-an-alsa-driver document")
    Signed-off-by: Nícolas F. R. A. Prado
    Reviewed-by: Takashi Iwai
    Reviewed-by: Mauro Carvalho Chehab
    Link: https://lore.kernel.org/r/20201228144537.135353-1-nfraprado@protonmail.com
    Signed-off-by: Jonathan Corbet

    Nícolas F. R. A. Prado
     

07 Nov, 2020

3 commits

  • This commit updates the documented API of call_rcu() to use the
    rcu_callback_t typedef instead of the open-coded function definition.

    Signed-off-by: Hui Su
    Signed-off-by: Paul E. McKenney

    Hui Su
     
  • As warned by Sphinx:
    .../Documentation/RCU/Design/Requirements/Requirements.rst:1959: WARNING: Unexpected indentation.

    The list block is missing a space before it, making Sphinx to get
    it wrong. This commit therefore adds the missing space characters.

    Fixes: 2a721e5f0b2c ("docs: Update RCU's hotplug requirements with a bit about design")
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Paul E. McKenney

    Mauro Carvalho Chehab
     
  • The rcu_barrier() section of the "Hotplug CPU" section discusses
    deadlocks, however the description of deadlocks other than those involving
    rcu_barrier() is rather incomplete.

    This commit therefore continues the section by describing how RCU's
    design handles CPU hotplug in a deadlock-free way.

    Signed-off-by: Joel Fernandes (Google)
    Signed-off-by: Paul E. McKenney

    Joel Fernandes (Google)
     

03 Nov, 2020

1 commit


09 Oct, 2020

1 commit

  • …k/linux-rcu into core/rcu

    Pull v5.10 RCU changes from Paul E. McKenney:

    - Debugging for smp_call_function().

    - Strict grace periods for KASAN. The point of this series is to find
    RCU-usage bugs, so the corresponding new RCU_STRICT_GRACE_PERIOD
    Kconfig option depends on both DEBUG_KERNEL and RCU_EXPERT, and is
    further disabled by dfefault. Finally, the help text includes
    a goodly list of scary caveats.

    - New smp_call_function() torture test.

    - Torture-test updates.

    - Documentation updates.

    - Miscellaneous fixes.

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

25 Aug, 2020

4 commits


04 Aug, 2020

1 commit

  • Pull RCU updates from Ingo Molnar:

    - kfree_rcu updates

    - RCU tasks updates

    - Read-side scalability tests

    - SRCU updates

    - Torture-test updates

    - Documentation updates

    - Miscellaneous fixes

    * tag 'core-rcu-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (109 commits)
    torture: Remove obsolete "cd $KVM"
    torture: Avoid duplicate specification of qemu command
    torture: Dump ftrace at shutdown only if requested
    torture: Add kvm-tranform.sh script for qemu-cmd files
    torture: Add more tracing crib notes to kvm.sh
    torture: Improve diagnostic for KCSAN-incapable compilers
    torture: Correctly summarize build-only runs
    torture: Pass --kmake-arg to all make invocations
    rcutorture: Check for unwatched readers
    torture: Abstract out console-log error detection
    torture: Add a stop-run capability
    torture: Create qemu-cmd in --buildonly runs
    rcu/rcutorture: Replace 0 with false
    torture: Add --allcpus argument to the kvm.sh script
    torture: Remove whitespace from identify_qemu_vcpus output
    rcutorture: NULL rcu_torture_current earlier in cleanup code
    rcutorture: Handle non-statistic bang-string error messages
    torture: Set configfile variable to current scenario
    rcutorture: Add races with task-exit processing
    locktorture: Use true and false to assign to bool variables
    ...

    Linus Torvalds
     

21 Jul, 2020

1 commit

  • The [smp_]read_barrier_depends() barrier macros no longer exist as
    part of the Linux memory model, so remove all references to them from
    the Documentation/ directory.

    Although this is fairly mechanical on the whole, we drop the "CACHE
    COHERENCY" section entirely from 'memory-barriers.txt' as it doesn't
    make any sense now that the dependency barriers have been removed.

    Acked-by: Peter Zijlstra (Intel)
    Acked-by: Paul E. McKenney
    Signed-off-by: Will Deacon

    Will Deacon
     

30 Jun, 2020

3 commits

  • Protecting the code in a trampoline can also require protecting a
    number of instructions prior to actually entering the trampoline.
    For example, these earlier instructions might be computing the address
    of the trampoline. This commit therefore updates RCU's requirements to
    record this for posterity.

    Link: https://lore.kernel.org/lkml/20200511154824.09a18c46@gandalf.local.home/
    Reported-by: Lai Jiangshan
    Reported-by: Steven Rostedt
    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Over the past few years, there have been several cases where timekeeping
    bugs have caused RCU CPU stall warnings, particularly during hardware
    bringup. This commit therefore adds such bugs to the list of things
    that can result in RCU CPU stall warnings.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • Since changeset 58ad30cf91f0 ("docs: fix reference to core-api/namespaces.rst"),
    auto-references for chapters are generated. This is a nice feature, but
    has a drawback: no chapters can have the same sumber.

    So, we need to add two higher hierarchy chapters on this document,
    in order to avoid such duplication.

    Fixes: 58ad30cf91f0 ("docs: fix reference to core-api/namespaces.rst")
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Paul E. McKenney

    Mauro Carvalho Chehab