linux/kernel/sched
Dietmar Eggemann 85989106fe sched/deadline: Create DL BW alloc, free & check overflow interface
While moving a set of tasks between exclusive cpusets,
cpuset_can_attach() -> task_can_attach() calls dl_cpu_busy(..., p) for
DL BW overflow checking and per-task DL BW allocation on the destination
root_domain for the DL tasks in this set.

This approach has the issue of not freeing already allocated DL BW in
the following error cases:

(1) The set of tasks includes multiple DL tasks and DL BW overflow
    checking fails for one of the subsequent DL tasks.

(2) Another controller next to the cpuset controller which is attached
    to the same cgroup fails in its can_attach().

To address this problem rework dl_cpu_busy():

(1) Split it into dl_bw_check_overflow() & dl_bw_alloc() and add a
    dedicated dl_bw_free().

(2) dl_bw_alloc() & dl_bw_free() take a `u64 dl_bw` parameter instead of
    a `struct task_struct *p` used in dl_cpu_busy(). This allows to
    allocate DL BW for a set of tasks too rather than only for a single
    task.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Juri Lelli <juri.lelli@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2023-05-08 13:22:33 -10:00
..
autogroup.c
autogroup.h
build_policy.c
build_utility.c
clock.c sched/clock: Fix local_clock() before sched_clock_init() 2023-04-21 13:24:21 +02:00
completion.c
core.c sched/deadline: Create DL BW alloc, free & check overflow interface 2023-05-08 13:22:33 -10:00
core_sched.c
cpuacct.c
cpudeadline.c
cpudeadline.h
cpufreq.c
cpufreq_schedutil.c cpufreq: schedutil: make kobj_type structure constant 2023-02-23 19:57:29 +01:00
cpupri.c
cpupri.h
cputime.c
deadline.c sched/deadline: Create DL BW alloc, free & check overflow interface 2023-05-08 13:22:33 -10:00
debug.c sched/debug: Put sched/domains files under the verbose flag 2023-03-17 15:24:19 +01:00
fair.c Scheduler changes for v6.4: 2023-04-28 14:53:30 -07:00
features.h
idle.c sched/idle: Mark arch_cpu_idle_dead() __noreturn 2023-03-08 08:44:28 -08:00
isolation.c
loadavg.c
Makefile
membarrier.c
pelt.c
pelt.h
psi.c sched/psi: Allow unprivileged polling of N*2s period 2023-04-05 09:58:50 +02:00
rt.c sched/rt: Fix bad task migration for rt tasks 2023-04-21 13:24:21 +02:00
sched-pelt.h
sched.h sched/deadline: Create DL BW alloc, free & check overflow interface 2023-05-08 13:22:33 -10:00
smp.h sched, smp: Trace smp callback causing an IPI 2023-03-24 11:01:29 +01:00
stats.c
stats.h
stop_task.c
swait.c
topology.c sched/topology: Make sched_energy_mutex,update static 2023-03-22 10:10:57 +01:00
wait.c
wait_bit.c