Merge branch 'for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 Jul 2017 16:52:09 +0000 (09:52 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 6 Jul 2017 16:52:09 +0000 (09:52 -0700)
Pull cgroup changes from Tejun Heo:

 - Waiman made the debug controller work and a lot more useful on
   cgroup2

 - There were a couple issues with cgroup subtree delegation. The
   documentation on delegating to a non-root user was missing some part
   and cgroup namespace support wasn't factoring in delegation at all.
   The documentation is updated and the now there is a mount option to
   make cgroup namespace fit for delegation

* 'for-4.13' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
  cgroup: implement "nsdelegate" mount option
  cgroup: restructure cgroup_procs_write_permission()
  cgroup: "cgroup.subtree_control" should be writeable by delegatee
  cgroup: fix lockdep warning in debug controller
  cgroup: refactor cgroup_masks_read() in the debug controller
  cgroup: make debug an implicit controller on cgroup2
  cgroup: Make debug cgroup support v2 and thread mode
  cgroup: Make Kconfig prompt of debug cgroup more accurate
  cgroup: Move debug cgroup to its own file
  cgroup: Keep accurate count of tasks in each css_set

1  2 
init/Kconfig

diff --combined init/Kconfig
index ee0f03b69d11ca60170309bffe93b56cd71548fa,5f9d13929ae015057eacb1ecf0c97eca27c80470..b0fcbb2c6f56a193c38542baa03f0145518cd0c1
@@@ -472,7 -472,354 +472,7 @@@ config TASK_IO_ACCOUNTIN
  
  endmenu # "CPU/Task time and stats accounting"
  
 -menu "RCU Subsystem"
 -
 -config TREE_RCU
 -      bool
 -      default y if !PREEMPT && SMP
 -      help
 -        This option selects the RCU implementation that is
 -        designed for very large SMP system with hundreds or
 -        thousands of CPUs.  It also scales down nicely to
 -        smaller systems.
 -
 -config PREEMPT_RCU
 -      bool
 -      default y if PREEMPT
 -      help
 -        This option selects the RCU implementation that is
 -        designed for very large SMP systems with hundreds or
 -        thousands of CPUs, but for which real-time response
 -        is also required.  It also scales down nicely to
 -        smaller systems.
 -
 -        Select this option if you are unsure.
 -
 -config TINY_RCU
 -      bool
 -      default y if !PREEMPT && !SMP
 -      help
 -        This option selects the RCU implementation that is
 -        designed for UP systems from which real-time response
 -        is not required.  This option greatly reduces the
 -        memory footprint of RCU.
 -
 -config RCU_EXPERT
 -      bool "Make expert-level adjustments to RCU configuration"
 -      default n
 -      help
 -        This option needs to be enabled if you wish to make
 -        expert-level adjustments to RCU configuration.  By default,
 -        no such adjustments can be made, which has the often-beneficial
 -        side-effect of preventing "make oldconfig" from asking you all
 -        sorts of detailed questions about how you would like numerous
 -        obscure RCU options to be set up.
 -
 -        Say Y if you need to make expert-level adjustments to RCU.
 -
 -        Say N if you are unsure.
 -
 -config SRCU
 -      bool
 -      default y
 -      help
 -        This option selects the sleepable version of RCU. This version
 -        permits arbitrary sleeping or blocking within RCU read-side critical
 -        sections.
 -
 -config CLASSIC_SRCU
 -      bool "Use v4.11 classic SRCU implementation"
 -      default n
 -      depends on RCU_EXPERT && SRCU
 -      help
 -        This option selects the traditional well-tested classic SRCU
 -        implementation from v4.11, as might be desired for enterprise
 -        Linux distributions.  Without this option, the shiny new
 -        Tiny SRCU and Tree SRCU implementations are used instead.
 -        At some point, it is hoped that Tiny SRCU and Tree SRCU
 -        will accumulate enough test time and confidence to allow
 -        Classic SRCU to be dropped entirely.
 -
 -        Say Y if you need a rock-solid SRCU.
 -
 -        Say N if you would like help test Tree SRCU.
 -
 -config TINY_SRCU
 -      bool
 -      default y if SRCU && TINY_RCU && !CLASSIC_SRCU
 -      help
 -        This option selects the single-CPU non-preemptible version of SRCU.
 -
 -config TREE_SRCU
 -      bool
 -      default y if SRCU && !TINY_RCU && !CLASSIC_SRCU
 -      help
 -        This option selects the full-fledged version of SRCU.
 -
 -config TASKS_RCU
 -      bool
 -      default n
 -      select SRCU
 -      help
 -        This option enables a task-based RCU implementation that uses
 -        only voluntary context switch (not preemption!), idle, and
 -        user-mode execution as quiescent states.
 -
 -config RCU_STALL_COMMON
 -      def_bool ( TREE_RCU || PREEMPT_RCU || RCU_TRACE )
 -      help
 -        This option enables RCU CPU stall code that is common between
 -        the TINY and TREE variants of RCU.  The purpose is to allow
 -        the tiny variants to disable RCU CPU stall warnings, while
 -        making these warnings mandatory for the tree variants.
 -
 -config RCU_NEED_SEGCBLIST
 -      def_bool ( TREE_RCU || PREEMPT_RCU || TINY_SRCU || TREE_SRCU )
 -
 -config CONTEXT_TRACKING
 -       bool
 -
 -config CONTEXT_TRACKING_FORCE
 -      bool "Force context tracking"
 -      depends on CONTEXT_TRACKING
 -      default y if !NO_HZ_FULL
 -      help
 -        The major pre-requirement for full dynticks to work is to
 -        support the context tracking subsystem. But there are also
 -        other dependencies to provide in order to make the full
 -        dynticks working.
 -
 -        This option stands for testing when an arch implements the
 -        context tracking backend but doesn't yet fullfill all the
 -        requirements to make the full dynticks feature working.
 -        Without the full dynticks, there is no way to test the support
 -        for context tracking and the subsystems that rely on it: RCU
 -        userspace extended quiescent state and tickless cputime
 -        accounting. This option copes with the absence of the full
 -        dynticks subsystem by forcing the context tracking on all
 -        CPUs in the system.
 -
 -        Say Y only if you're working on the development of an
 -        architecture backend for the context tracking.
 -
 -        Say N otherwise, this option brings an overhead that you
 -        don't want in production.
 -
 -
 -config RCU_FANOUT
 -      int "Tree-based hierarchical RCU fanout value"
 -      range 2 64 if 64BIT
 -      range 2 32 if !64BIT
 -      depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
 -      default 64 if 64BIT
 -      default 32 if !64BIT
 -      help
 -        This option controls the fanout of hierarchical implementations
 -        of RCU, allowing RCU to work efficiently on machines with
 -        large numbers of CPUs.  This value must be at least the fourth
 -        root of NR_CPUS, which allows NR_CPUS to be insanely large.
 -        The default value of RCU_FANOUT should be used for production
 -        systems, but if you are stress-testing the RCU implementation
 -        itself, small RCU_FANOUT values allow you to test large-system
 -        code paths on small(er) systems.
 -
 -        Select a specific number if testing RCU itself.
 -        Take the default if unsure.
 -
 -config RCU_FANOUT_LEAF
 -      int "Tree-based hierarchical RCU leaf-level fanout value"
 -      range 2 64 if 64BIT
 -      range 2 32 if !64BIT
 -      depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
 -      default 16
 -      help
 -        This option controls the leaf-level fanout of hierarchical
 -        implementations of RCU, and allows trading off cache misses
 -        against lock contention.  Systems that synchronize their
 -        scheduling-clock interrupts for energy-efficiency reasons will
 -        want the default because the smaller leaf-level fanout keeps
 -        lock contention levels acceptably low.  Very large systems
 -        (hundreds or thousands of CPUs) will instead want to set this
 -        value to the maximum value possible in order to reduce the
 -        number of cache misses incurred during RCU's grace-period
 -        initialization.  These systems tend to run CPU-bound, and thus
 -        are not helped by synchronized interrupts, and thus tend to
 -        skew them, which reduces lock contention enough that large
 -        leaf-level fanouts work well.  That said, setting leaf-level
 -        fanout to a large number will likely cause problematic
 -        lock contention on the leaf-level rcu_node structures unless
 -        you boot with the skew_tick kernel parameter.
 -
 -        Select a specific number if testing RCU itself.
 -
 -        Select the maximum permissible value for large systems, but
 -        please understand that you may also need to set the skew_tick
 -        kernel boot parameter to avoid contention on the rcu_node
 -        structure's locks.
 -
 -        Take the default if unsure.
 -
 -config RCU_FAST_NO_HZ
 -      bool "Accelerate last non-dyntick-idle CPU's grace periods"
 -      depends on NO_HZ_COMMON && SMP && RCU_EXPERT
 -      default n
 -      help
 -        This option permits CPUs to enter dynticks-idle state even if
 -        they have RCU callbacks queued, and prevents RCU from waking
 -        these CPUs up more than roughly once every four jiffies (by
 -        default, you can adjust this using the rcutree.rcu_idle_gp_delay
 -        parameter), thus improving energy efficiency.  On the other
 -        hand, this option increases the duration of RCU grace periods,
 -        for example, slowing down synchronize_rcu().
 -
 -        Say Y if energy efficiency is critically important, and you
 -              don't care about increased grace-period durations.
 -
 -        Say N if you are unsure.
 -
 -config TREE_RCU_TRACE
 -      def_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU )
 -      select DEBUG_FS
 -      help
 -        This option provides tracing for the TREE_RCU and
 -        PREEMPT_RCU implementations, permitting Makefile to
 -        trivially select kernel/rcutree_trace.c.
 -
 -config RCU_BOOST
 -      bool "Enable RCU priority boosting"
 -      depends on RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT
 -      default n
 -      help
 -        This option boosts the priority of preempted RCU readers that
 -        block the current preemptible RCU grace period for too long.
 -        This option also prevents heavy loads from blocking RCU
 -        callback invocation for all flavors of RCU.
 -
 -        Say Y here if you are working with real-time apps or heavy loads
 -        Say N here if you are unsure.
 -
 -config RCU_KTHREAD_PRIO
 -      int "Real-time priority to use for RCU worker threads"
 -      range 1 99 if RCU_BOOST
 -      range 0 99 if !RCU_BOOST
 -      default 1 if RCU_BOOST
 -      default 0 if !RCU_BOOST
 -      depends on RCU_EXPERT
 -      help
 -        This option specifies the SCHED_FIFO priority value that will be
 -        assigned to the rcuc/n and rcub/n threads and is also the value
 -        used for RCU_BOOST (if enabled). If you are working with a
 -        real-time application that has one or more CPU-bound threads
 -        running at a real-time priority level, you should set
 -        RCU_KTHREAD_PRIO to a priority higher than the highest-priority
 -        real-time CPU-bound application thread.  The default RCU_KTHREAD_PRIO
 -        value of 1 is appropriate in the common case, which is real-time
 -        applications that do not have any CPU-bound threads.
 -
 -        Some real-time applications might not have a single real-time
 -        thread that saturates a given CPU, but instead might have
 -        multiple real-time threads that, taken together, fully utilize
 -        that CPU.  In this case, you should set RCU_KTHREAD_PRIO to
 -        a priority higher than the lowest-priority thread that is
 -        conspiring to prevent the CPU from running any non-real-time
 -        tasks.  For example, if one thread at priority 10 and another
 -        thread at priority 5 are between themselves fully consuming
 -        the CPU time on a given CPU, then RCU_KTHREAD_PRIO should be
 -        set to priority 6 or higher.
 -
 -        Specify the real-time priority, or take the default if unsure.
 -
 -config RCU_BOOST_DELAY
 -      int "Milliseconds to delay boosting after RCU grace-period start"
 -      range 0 3000
 -      depends on RCU_BOOST
 -      default 500
 -      help
 -        This option specifies the time to wait after the beginning of
 -        a given grace period before priority-boosting preempted RCU
 -        readers blocking that grace period.  Note that any RCU reader
 -        blocking an expedited RCU grace period is boosted immediately.
 -
 -        Accept the default if unsure.
 -
 -config RCU_NOCB_CPU
 -      bool "Offload RCU callback processing from boot-selected CPUs"
 -      depends on TREE_RCU || PREEMPT_RCU
 -      depends on RCU_EXPERT || NO_HZ_FULL
 -      default n
 -      help
 -        Use this option to reduce OS jitter for aggressive HPC or
 -        real-time workloads.  It can also be used to offload RCU
 -        callback invocation to energy-efficient CPUs in battery-powered
 -        asymmetric multiprocessors.
 -
 -        This option offloads callback invocation from the set of
 -        CPUs specified at boot time by the rcu_nocbs parameter.
 -        For each such CPU, a kthread ("rcuox/N") will be created to
 -        invoke callbacks, where the "N" is the CPU being offloaded,
 -        and where the "x" is "b" for RCU-bh, "p" for RCU-preempt, and
 -        "s" for RCU-sched.  Nothing prevents this kthread from running
 -        on the specified CPUs, but (1) the kthreads may be preempted
 -        between each callback, and (2) affinity or cgroups can be used
 -        to force the kthreads to run on whatever set of CPUs is desired.
 -
 -        Say Y here if you want to help to debug reduced OS jitter.
 -        Say N here if you are unsure.
 -
 -choice
 -      prompt "Build-forced no-CBs CPUs"
 -      default RCU_NOCB_CPU_NONE
 -      depends on RCU_NOCB_CPU
 -      help
 -        This option allows no-CBs CPUs (whose RCU callbacks are invoked
 -        from kthreads rather than from softirq context) to be specified
 -        at build time.  Additional no-CBs CPUs may be specified by
 -        the rcu_nocbs= boot parameter.
 -
 -config RCU_NOCB_CPU_NONE
 -      bool "No build_forced no-CBs CPUs"
 -      help
 -        This option does not force any of the CPUs to be no-CBs CPUs.
 -        Only CPUs designated by the rcu_nocbs= boot parameter will be
 -        no-CBs CPUs, whose RCU callbacks will be invoked by per-CPU
 -        kthreads whose names begin with "rcuo".  All other CPUs will
 -        invoke their own RCU callbacks in softirq context.
 -
 -        Select this option if you want to choose no-CBs CPUs at
 -        boot time, for example, to allow testing of different no-CBs
 -        configurations without having to rebuild the kernel each time.
 -
 -config RCU_NOCB_CPU_ZERO
 -      bool "CPU 0 is a build_forced no-CBs CPU"
 -      help
 -        This option forces CPU 0 to be a no-CBs CPU, so that its RCU
 -        callbacks are invoked by a per-CPU kthread whose name begins
 -        with "rcuo".  Additional CPUs may be designated as no-CBs
 -        CPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs.
 -        All other CPUs will invoke their own RCU callbacks in softirq
 -        context.
 -
 -        Select this if CPU 0 needs to be a no-CBs CPU for real-time
 -        or energy-efficiency reasons, but the real reason it exists
 -        is to ensure that randconfig testing covers mixed systems.
 -
 -config RCU_NOCB_CPU_ALL
 -      bool "All CPUs are build_forced no-CBs CPUs"
 -      help
 -        This option forces all CPUs to be no-CBs CPUs.  The rcu_nocbs=
 -        boot parameter will be ignored.  All CPUs' RCU callbacks will
 -        be executed in the context of per-CPU rcuo kthreads created for
 -        this purpose.  Assuming that the kthreads whose names start with
 -        "rcuo" are bound to "housekeeping" CPUs, this reduces OS jitter
 -        on the remaining CPUs, but might decrease memory locality during
 -        RCU-callback invocation, thus potentially degrading throughput.
 -
 -        Select this if all CPUs need to be no-CBs CPUs for real-time
 -        or energy-efficiency reasons.
 -
 -endchoice
 -
 -endmenu # "RCU Subsystem"
 +source "kernel/rcu/Kconfig"
  
  config BUILD_BIN2C
        bool
@@@ -809,7 -1156,6 +809,7 @@@ config CGROUP_HUGETL
  
  config CPUSETS
        bool "Cpuset controller"
 +      depends on SMP
        help
          This option will let you create and manage CPUSETs which
          allow dynamically partitioning a system into sets of CPUs and
@@@ -859,11 -1205,14 +859,14 @@@ config CGROUP_BP
          inet sockets.
  
  config CGROUP_DEBUG
-       bool "Example controller"
+       bool "Debug controller"
        default n
+       depends on DEBUG_KERNEL
        help
          This option enables a simple controller that exports
-         debugging information about the cgroups framework.
+         debugging information about the cgroups framework. This
+         controller is for control cgroup debugging only. Its
+         interfaces are not stable.
  
          Say N.