[PATCH v4 0/8] Fix SCHED_DEADLINE bandwidth accounting during suspend

Juri Lelli posted 8 patches 9 months, 1 week ago
include/linux/cpuset.h         | 11 ++++++++++
include/linux/sched.h          |  5 +++++
include/linux/sched/deadline.h |  4 ++++
include/linux/sched/topology.h | 10 ---------
kernel/cgroup/cpuset.c         | 34 +++++++++++++++----------------
kernel/sched/core.c            |  8 ++++----
kernel/sched/deadline.c        | 37 ++++++++++++++++++++--------------
kernel/sched/debug.c           |  8 ++++----
kernel/sched/rt.c              |  2 ++
kernel/sched/sched.h           |  2 +-
kernel/sched/topology.c        | 32 +++++++++++++----------------
11 files changed, 84 insertions(+), 69 deletions(-)
[PATCH v4 0/8] Fix SCHED_DEADLINE bandwidth accounting during suspend
Posted by Juri Lelli 9 months, 1 week ago
Hello!

Jon reported [1] a suspend regression on a Tegra board configured to
boot with isolcpus and bisected it to commit 53916d5fd3c0
("sched/deadline: Check bandwidth overflow earlier for hotplug").

Root cause analysis pointed out that we are currently failing to
correctly clear and restore bandwidth accounting on root domains after
changes that initiate from partition_sched_domains(), as it is the case
for suspend operations on that board.

This is v4 [2] of the proposed approach to fix the issue. With respect
to v3 only patch 04 has changed as I have added the wrappers Waiman
created to make sure we always call partition_sched_domains() while
holding cpuset_mutex (issue pointed out by Dietmar on v3).

Dietmar also pointed out that the issue at hand is not fixed by this set
for !CONFIG_CPUSETS configuration. But, given the fact that bandwidth
accounting has been broken for such configuration so far (sigh) and that
the vast majority (if not all) distributions have CPUSETS enabled, we
decided to leave fixing the remaining issue for later. I will soon try
to find time to keep looking into it.

Please test and review. The set is also available at

git@github.com:jlelli/linux.git upstream/deadline/domains-suspend

BTW, I will be traveling for work for the next couple of weeks, so,
apologies, but further replies might be delayed.

Best,
Juri

1 - https://lore.kernel.org/lkml/ba51a43f-796d-4b79-808a-b8185905638a@nvidia.com/
2 - v1 https://lore.kernel.org/lkml/20250304084045.62554-1-juri.lelli@redhat.com
    v2 https://lore.kernel.org/lkml/20250306141016.268313-1-juri.lelli@redhat.com/
    v3 https://lore.kernel.org/lkml/20250310091935.22923-1-juri.lelli@redhat.com/

Juri Lelli (8):
  sched/deadline: Ignore special tasks when rebuilding domains
  sched/topology: Wrappers for sched_domains_mutex
  sched/deadline: Generalize unique visiting of root domains
  sched/deadline: Rebuild root domain accounting after every update
  sched/topology: Remove redundant dl_clear_root_domain call
  cgroup/cpuset: Remove partition_and_rebuild_sched_domains
  sched/topology: Stop exposing partition_sched_domains_locked
  include/{topology,cpuset}: Move dl_rebuild_rd_accounting to cpuset.h

 include/linux/cpuset.h         | 11 ++++++++++
 include/linux/sched.h          |  5 +++++
 include/linux/sched/deadline.h |  4 ++++
 include/linux/sched/topology.h | 10 ---------
 kernel/cgroup/cpuset.c         | 34 +++++++++++++++----------------
 kernel/sched/core.c            |  8 ++++----
 kernel/sched/deadline.c        | 37 ++++++++++++++++++++--------------
 kernel/sched/debug.c           |  8 ++++----
 kernel/sched/rt.c              |  2 ++
 kernel/sched/sched.h           |  2 +-
 kernel/sched/topology.c        | 32 +++++++++++++----------------
 11 files changed, 84 insertions(+), 69 deletions(-)


base-commit: 0fed89a961ea851945d23cc35beb59d6e56c0964
-- 
2.48.1
Re: [PATCH v4 0/8] Fix SCHED_DEADLINE bandwidth accounting during suspend
Posted by Dietmar Eggemann 9 months ago
On 13/03/2025 18:00, Juri Lelli wrote:
> Hello!
> 
> Jon reported [1] a suspend regression on a Tegra board configured to
> boot with isolcpus and bisected it to commit 53916d5fd3c0
> ("sched/deadline: Check bandwidth overflow earlier for hotplug").
> 
> Root cause analysis pointed out that we are currently failing to
> correctly clear and restore bandwidth accounting on root domains after
> changes that initiate from partition_sched_domains(), as it is the case
> for suspend operations on that board.
> 
> This is v4 [2] of the proposed approach to fix the issue. With respect
> to v3 only patch 04 has changed as I have added the wrappers Waiman
> created to make sure we always call partition_sched_domains() while
> holding cpuset_mutex (issue pointed out by Dietmar on v3).
> 
> Dietmar also pointed out that the issue at hand is not fixed by this set
> for !CONFIG_CPUSETS configuration. But, given the fact that bandwidth
> accounting has been broken for such configuration so far (sigh) and that
> the vast majority (if not all) distributions have CPUSETS enabled, we
> decided to leave fixing the remaining issue for later. I will soon try
> to find time to keep looking into it.

Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>

Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>

Testcase: suspend/resume

on Arm64 big.LITTLE cpumask=[LITTLE][big]=[0,3-5][1-2]
plus cmd line option 'isolcpus=3,4'.