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

16 commits


09 Nov, 2018

3 commits


25 Oct, 2018

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "This is a fairly typical cycle for documentation. There's some welcome
    readability improvements for the formatted output, some LICENSES
    updates including the addition of the ISC license, the removal of the
    unloved and unmaintained 00-INDEX files, the deprecated APIs document
    from Kees, more MM docs from Mike Rapoport, and the usual pile of typo
    fixes and corrections"

    * tag 'docs-4.20' of git://git.lwn.net/linux: (41 commits)
    docs: Fix typos in histogram.rst
    docs: Introduce deprecated APIs list
    kernel-doc: fix declaration type determination
    doc: fix a typo in adding-syscalls.rst
    docs/admin-guide: memory-hotplug: remove table of contents
    doc: printk-formats: Remove bogus kobject references for device nodes
    Documentation: preempt-locking: Use better example
    dm flakey: Document "error_writes" feature
    docs/completion.txt: Fix a couple of punctuation nits
    LICENSES: Add ISC license text
    LICENSES: Add note to CDDL-1.0 license that it should not be used
    docs/core-api: memory-hotplug: add some details about locking internals
    docs/core-api: rename memory-hotplug-notifier to memory-hotplug
    docs: improve readability for people with poorer eyesight
    yama: clarify ptrace_scope=2 in Yama documentation
    docs/vm: split memory hotplug notifier description to Documentation/core-api
    docs: move memory hotplug description into admin-guide/mm
    doc: Fix acronym "FEKEK" in ecryptfs
    docs: fix some broken documentation references
    iommu: Fix passthrough option documentation
    ...

    Linus Torvalds
     

10 Sep, 2018

1 commit

  • This is a respin with a wider audience (all that get_maintainer returned)
    and I know this spams a *lot* of people. Not sure what would be the correct
    way, so my apologies for ruining your inbox.

    The 00-INDEX files are supposed to give a summary of all files present
    in a directory, but these files are horribly out of date and their
    usefulness is brought into question. Often a simple "ls" would reveal
    the same information as the filenames are generally quite descriptive as
    a short introduction to what the file covers (it should not surprise
    anyone what Documentation/sched/sched-design-CFS.txt covers)

    A few years back it was mentioned that these files were no longer really
    needed, and they have since then grown further out of date, so perhaps
    it is time to just throw them out.

    A short status yields the following _outdated_ 00-INDEX files, first
    counter is files listed in 00-INDEX but missing in the directory, last
    is files present but not listed in 00-INDEX.

    List of outdated 00-INDEX:
    Documentation: (4/10)
    Documentation/sysctl: (0/1)
    Documentation/timers: (1/0)
    Documentation/blockdev: (3/1)
    Documentation/w1/slaves: (0/1)
    Documentation/locking: (0/1)
    Documentation/devicetree: (0/5)
    Documentation/power: (1/1)
    Documentation/powerpc: (0/5)
    Documentation/arm: (1/0)
    Documentation/x86: (0/9)
    Documentation/x86/x86_64: (1/1)
    Documentation/scsi: (4/4)
    Documentation/filesystems: (2/9)
    Documentation/filesystems/nfs: (0/2)
    Documentation/cgroup-v1: (0/2)
    Documentation/kbuild: (0/4)
    Documentation/spi: (1/0)
    Documentation/virtual/kvm: (1/0)
    Documentation/scheduler: (0/2)
    Documentation/fb: (0/1)
    Documentation/block: (0/1)
    Documentation/networking: (6/37)
    Documentation/vm: (1/3)

    Then there are 364 subdirectories in Documentation/ with several files that
    are missing 00-INDEX alltogether (and another 120 with a single file and no
    00-INDEX).

    I don't really have an opinion to whether or not we /should/ have 00-INDEX,
    but the above 00-INDEX should either be removed or be kept up to date. If
    we should keep the files, I can try to keep them updated, but I rather not
    if we just want to delete them anyway.

    As a starting point, remove all index-files and references to 00-INDEX and
    see where the discussion is going.

    Signed-off-by: Henrik Austad
    Acked-by: "Paul E. McKenney"
    Just-do-it-by: Steven Rostedt
    Reviewed-by: Jens Axboe
    Acked-by: Paul Moore
    Acked-by: Greg Kroah-Hartman
    Acked-by: Mark Brown
    Acked-by: Mike Rapoport
    Cc: [Almost everybody else]
    Signed-off-by: Jonathan Corbet

    Henrik Austad
     

31 Aug, 2018

4 commits

  • … 'torture.2018.08.29a' into HEAD

    doc.2018.08.30a: Documentation updates
    dynticks.2018.08.30b: RCU flavor consolidation updates and cleanups
    srcu.2018.08.30b: SRCU updates
    torture.2018.08.29a: Torture-test updates

    Paul E. McKenney
     
  • This commit defers reporting of RCU-preempt quiescent states at
    rcu_read_unlock_special() time when any of interrupts, softirq, or
    preemption are disabled. These deferred quiescent states are reported
    at a later RCU_SOFTIRQ, context switch, idle entry, or CPU-hotplug
    offline operation. Of course, if another RCU read-side critical
    section has started in the meantime, the reporting of the quiescent
    state will be further deferred.

    This also means that disabling preemption, interrupts, and/or
    softirqs will act as an RCU-preempt read-side critical section.
    This is enforced by checking preempt_count() as needed.

    Some special cases must be handled on an ad-hoc basis, for example,
    context switch is a quiescent state even though both the scheduler and
    do_exit() disable preemption. In these cases, additional calls to
    rcu_preempt_deferred_qs() override the preemption disabling. Similar
    logic overrides disabled interrupts in rcu_preempt_check_callbacks()
    because in this case the quiescent state happened just before the
    corresponding scheduling-clock interrupt.

    In theory, this change lifts a long-standing restriction that required
    that if interrupts were disabled across a call to rcu_read_unlock()
    that the matching rcu_read_lock() also be contained within that
    interrupts-disabled region of code. Because the reporting of the
    corresponding RCU-preempt quiescent state is now deferred until
    after interrupts have been enabled, it is no longer possible for this
    situation to result in deadlocks involving the scheduler's runqueue and
    priority-inheritance locks. This may allow some code simplification that
    might reduce interrupt latency a bit. Unfortunately, in practice this
    would also defer deboosting a low-priority task that had been subjected
    to RCU priority boosting, so real-time-response considerations might
    well force this restriction to remain in place.

    Because RCU-preempt grace periods are now blocked not only by RCU
    read-side critical sections, but also by disabling of interrupts,
    preemption, and softirqs, it will be possible to eliminate RCU-bh and
    RCU-sched in favor of RCU-preempt in CONFIG_PREEMPT=y kernels. This may
    require some additional plumbing to provide the network denial-of-service
    guarantees that have been traditionally provided by RCU-bh. Once these
    are in place, CONFIG_PREEMPT=n kernels will be able to fold RCU-bh
    into RCU-sched. This would mean that all kernels would have but
    one flavor of RCU, which would open the door to significant code
    cleanup.

    Moving to a single flavor of RCU would also have the beneficial effect
    of reducing the NOCB kthreads by at least a factor of two.

    Signed-off-by: Paul E. McKenney
    [ paulmck: Apply rcu_read_unlock_special() preempt_count() feedback
    from Joel Fernandes. ]
    [ paulmck: Adjust rcu_eqs_enter() call to rcu_preempt_deferred_qs() in
    response to bug reports from kbuild test robot. ]
    [ paulmck: Fix bug located by kbuild test robot involving recursion
    via rcu_preempt_deferred_qs(). ]

    Paul E. McKenney
     
  • This commit adds the needed "

    Paul E. McKenney
     
  • The RCU-bh update API is now defined in terms of that of RCU-bh and
    RCU-sched, so this commit updates the documentation accordingly.

    In addition, although RCU-sched persists in !PREEMPT kernels, in
    the PREEMPT case its update API is now defined in terms of that of
    RCU-preempt, so this commit also updates the documentation accordingly.

    While in the area, this commit removes the documentation for the
    now-obsolete synchronize_rcu_mult() and clarifies the Tasks RCU
    documentation.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney