This is the third installment of a patchset that attempt to fix a problem
reported by Steve Rostedt  where DL bandwidth accounting is not
recomputed after CPUset and CPU hotplug operations took place. When CPU
hotplug and some CUPset manipulation take place root domains are destroyed
and new ones created, loosing at the same time DL accounting information
pertaining to utilisation. Please see  for a full description of the
The most notable change in this revision is the resolution of
synchronisation issues between function __sched_setscheduler() and the
the CPUset subsystem as pointed out by Juri Lelli.
As with the second revision this set is available here  with the
instrumentattion for patch 10/10 in this commit .
This set applies cleanly on top of v4.16-rc1.
Changes for V3:
. Addressed potential race conditions between the CPUset subsystem and
. Added a lockdep asset to function partition_sched_domains().
Change for V2:
. Addressing a problem found by Luca Abeni where the mask of a DL task
isn't modified when cpuset are collapsed.
. 4a95e8ab0881 sched/debug: Add 'rq_debug' proc entry
Mathieu Poirier (10):
sched/topology: Add check to backup comment about hotplug lock
sched/topology: Adding function partition_sched_domains_locked()
sched/core: Streamlining calls to task_rq_unlock()
sched/core: Prevent race condition between cpuset and
cpuset: Rebuild root domain deadline accounting information
sched/deadline: Keep new DL task within root domain's boundary
cgroup: Constrain 'sched_load_balance' flag when DL tasks are present
cgroup: Constrain the addition of CPUs to a new CPUset
sched/core: Don't change the affinity of DL tasks
sched/deadline: Prevent CPU hotplug operation if DL task on CPU
include/linux/cpuset.h | 12 ++
include/linux/sched.h | 5 +
include/linux/sched/deadline.h | 8 ++
include/linux/sched/topology.h | 10 ++
kernel/cgroup/cpuset.c | 246 ++++++++++++++++++++++++++++++++++++++++-
kernel/sched/core.c | 63 ++++++++---
kernel/sched/deadline.c | 36 ++++++
kernel/sched/sched.h | 3 -
kernel/sched/topology.c | 33 +++++-
9 files changed, 392 insertions(+), 24 deletions(-)