From nobody Mon Dec 1 22:02:18 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 832DE30E0F3 for ; Mon, 1 Dec 2025 12:42:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764592953; cv=none; b=nE5f7F6eeZ9rPtzFfKaNPTA5ppbzUg5Qn0gDOKtHFZQuKNbWdd1OO4k36Sv2dpbvt+qRekFKMsBHTjSZCh5s3UnrxbpuUvi5jRj7nPgFJoLkFQrDMQ6mKp7sGEckIaQ9Mcpb0G+Z+3LRtbhBBEMYXVf2T5BT/2pX/1iyskw1rCU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764592953; c=relaxed/simple; bh=RddOlNBZm39rECcZNVnsP3ouHtvi5PSny7clRLUCeE0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NewvXIulejCTjhxaXS84AwMV5U8GUr7JvWlMqmHWRcUNiNx7ykHDX2PE99AKiHexRlASt7V4iOmVmExol2/aFvJBz0hoeVkifLo8nVlAprazuwgoBBuwPPsnei5nEBWRiqwU3A3xMoaLnGrcuKse7I8s2Js2Tm2zdOUZhJXjP3c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gNapT3RW; arc=none smtp.client-ip=209.85.218.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gNapT3RW" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b7697e8b01aso809499066b.2 for ; Mon, 01 Dec 2025 04:42:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764592950; x=1765197750; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CSTJW8ky8tnddPe6hnHZZVmAi+gkFOihScO4c+NAyRg=; b=gNapT3RWZjLhfZdgkx1QLprZIGawpMp6XY6BDCU3ybq72m/YKVrwLZp1ulMuQHpD+m 0xBcWRC8Zfp7rk9G0xebvj7HSooE0XbS36XmYL0Sxnn1Dxwatg0yXo4jJkpXuuvlwJdK dRNsAy7pCUk0YzKona5V8lpDgzU0nMT0FWZw3BMX3+DAaMsv9H9JaHoqMvzk/pW8+9/4 86p/TZvC8AaCA0NbyhYD+7AJfKC36eINMvALCDUCLlEwZ0BmeB+dE0L7t9qa4U8zoab8 lkzlQh3IugP1RAEVTmI/oDkRMip+MrJob8UvictEvnlalVxujVA6H3tKJmxdxtBjpikn Wgrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764592950; x=1765197750; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CSTJW8ky8tnddPe6hnHZZVmAi+gkFOihScO4c+NAyRg=; b=Sp6vDQpMHHv5B6xo3jd945BU/AYPRI0dh+Yek1GBh/do7aOpIUqTSpkT44GkXneKK8 CHNdbqpbg+A9/+3pogbfzPnflv3IzdRVIcUIRwBF5SRWSr4eHqjUfe9DFyqLLJ589fL+ XTmvyQdU9SMHQkXilQFM0TmvTN7t1acnZFg6+ShJea606A3URQBwVX7fl++fboNIQqcl RP9VuthvlBdmVjGGjLT3ZYuIc9GnycnPxTLaP/fdSt1WhbgKaR6nAOTBTxj+y2UOHeoL 93AF2TzZAO+xn+vnBE44nGIsrbpyKwCJfsHM2rcwit0H6rblfqKgak++M4ezzkCf9YOV Ds4w== X-Gm-Message-State: AOJu0YxEYWkiPreYbvbnjDE850r5mtUW3bIIjKNAXAAWB6CEGMHyeejF 1k74uRzQgnXJHznunRVes2ysuZldJ4nb6KrgoBxADlOhxoAkZmKj61Ha X-Gm-Gg: ASbGncuJwC62bfGZjPUhhLKp+lA/i76690IwH/mJIV8V+inc4pAtIFkSuN//QffC7Y0 hAR/jmtF3I8xI4TwZ0Ir39QiYMhPNVX17hfeq9T0FtFKZhm42qWdPEYe+MY1cvAugvxJEGmUXfC 2e7YgasfSWDk67gVmn6Za5kEJ3wIWsFOXsQnZD9uMbOnQUP96Gb8c5QddepPR/9qIWWDArFmgsg hzv8EmLYr/5UNHhYpPZ/z7oeVGOmraUswL/0D2UHGLIO/iRzNWPik8nu7yNTRxNL7puuaawR5II QJKdFrqvsJ+pjAl0hiHIs9VVjijaCYejJyf5bo8DZUhhKkokZPcHl0QHMwrXJxKEd9Gyolw9caj vIneKXxZvT9ZfMWcPLAopmBWt38bNr4hUiMf9xaF53+QjrJZQkzwP98gQAC4CjEMCnTbX67WROR 4oTMAnYenK X-Google-Smtp-Source: AGHT+IGcXHNyqXQv0U0T+TdsGsB/Kd7MUOeNAH0e2XntWuL+BfzEULA/yo18IKrNgBAXXml2+0Z+GQ== X-Received: by 2002:a17:907:3da8:b0:b6d:50f7:a805 with SMTP id a640c23a62f3a-b76719d0791mr4388941066b.59.1764592949430; Mon, 01 Dec 2025 04:42:29 -0800 (PST) Received: from victus-lab ([193.205.81.5]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b76f59e8612sm1173738266b.52.2025.12.01.04.42.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 04:42:29 -0800 (PST) From: Yuri Andriaccio To: Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Valentin Schneider Cc: linux-kernel@vger.kernel.org, Luca Abeni , Yuri Andriaccio Subject: [RFC PATCH v4 25/28] sched/core: Execute enqueued balance callbacks when migrating task betweeen cgroups Date: Mon, 1 Dec 2025 13:41:58 +0100 Message-ID: <20251201124205.11169-26-yurand2000@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251201124205.11169-1-yurand2000@gmail.com> References: <20251201124205.11169-1-yurand2000@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Execute balancing callbacks when migrating task between cgroups, since the HCBS scheduler, similarly to the previous patch, may request balancing of throttled dl_servers to fully utilize the server's bandwidth. Introduce the RELEASE_LOCK helper macro to explicitly unlock a guard-based lock. The macro calls the destructor function of the lock and invalidates it so that the lock is not unlocked twice when the lock variable goes out of scope. Signed-off-by: Yuri Andriaccio --- include/linux/cleanup.h | 3 +++ kernel/sched/core.c | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/include/linux/cleanup.h b/include/linux/cleanup.h index 2573585b7f..65c222b308 100644 --- a/include/linux/cleanup.h +++ b/include/linux/cleanup.h @@ -518,4 +518,7 @@ __DEFINE_LOCK_GUARD_0(_name, _lock) #define DEFINE_LOCK_GUARD_1_COND(X...) CONCATENATE(DEFINE_LOCK_GUARD_1_CON= D_, COUNT_ARGS(X))(X) +#define RELEASE_LOCK(_name, _var) \ + ({ class_##_name##_destructor(&_var); no_free_ptr(_var.lock); }) + #endif /* _LINUX_CLEANUP_H */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 2c08f31d3d..f69480243e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -9223,6 +9223,7 @@ void sched_move_task(struct task_struct *tsk, bool fo= r_autogroup) { int queued, running, queue_flags =3D DEQUEUE_SAVE | DEQUEUE_MOVE | DEQUEUE_NOCLOCK; + struct balance_callback *head; struct rq *rq; CLASS(task_rq_lock, rq_guard)(tsk); @@ -9253,6 +9254,12 @@ void sched_move_task(struct task_struct *tsk, bool f= or_autogroup) */ resched_curr(rq); } + + preempt_disable(); + head =3D splice_balance_callbacks(rq); + RELEASE_LOCK(task_rq_lock, rq_guard); + balance_callbacks(rq, head); + preempt_enable(); } static struct cgroup_subsys_state * -- 2.51.0