From nobody Tue Dec 2 01:03:56 2025 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (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 C8DF333ADB0 for ; Mon, 24 Nov 2025 22:31:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764023482; cv=none; b=EOvWF81pgViEqT4JqdAjCdjYoCMLlg+mGBJt/6PpKhgnl9aX23rVx0tdTAa5YFWu+z4s5TKVH/T3bcy6oFd81vOzP66NQyWrM7cfcEBb3onxP3AgAycIBP15ZVjzvi3KoqUcKaU7Z5pmba1Y/f0C4UF5EV1jGL1yOy+qmlfxtEo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764023482; c=relaxed/simple; bh=/oXdn7BryHv40uXY6zMtVQA92VlfdlyBND4d45AQ8KE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=CVNBQT6q8rXn0cinwTNW0eodjId1C/NnGpHulUrb2nsNKjtrK4l7ELfp/68sQj1f1Sc7VKvRjb6B/8JzjdV7bFvtwLdPiIrEZR9SRgDWBrPQJJfsWOynkKrh5kmeNB9Z87pv26cz/+A5ZTyEb8NhLYFUEYFG8BMSmkWOl7Iuh1A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--jstultz.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=3yNgztyL; arc=none smtp.client-ip=209.85.216.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--jstultz.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="3yNgztyL" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-340bc4ef67fso5399068a91.3 for ; Mon, 24 Nov 2025 14:31:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1764023480; x=1764628280; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=KXfmDDq6giLO8hB359IKk0sq4eA1RI0jBPv9p9aHRzo=; b=3yNgztyL8denx9XrVu+AP9GbD3mGXb8Ne44Ww6CXNQSF3muMEpZOrV1Aoy866qMcEB YKjrqi4HSbX+cjygdRaWerEObaGIqXwM9NK3+HzgZiND/ynSI6P+AFKclstRRXSlHGKI x0ceugx7LEpmc+zzWYjsaZMxx1xDt+6H9aLLtnwT8hSSkEzf0Lcxk+ZL7paFwMLmtZt/ nIacs8S3qEmDMLkXLwBvvl7BHg3+DDLpBrXKF2xGyqZshzC9Yec4G5GMO0hT4OS5Vp0R G17Q+gNoTfCv9D+7Lo3SvCbyg+V+zpz6Qu5tOwPVyTkniUPGD2DiY84fVeY0zRKRjO2o fo2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764023480; x=1764628280; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KXfmDDq6giLO8hB359IKk0sq4eA1RI0jBPv9p9aHRzo=; b=X7O/6zMCf39CASEh44qieK8d/0fAqPujujBXNLOLxHbkmhLfiIusH/GyLR8E4aWsvP Emh5PcGA0G+OMbI4jB2sR2vMWHHsY1Lx7fegNczmWzaUopCwUgxBh1ShT5jow+4Oxs9T P5Li14eVQ2BmrH+UsXAnT6k1gXT5R2oVFQk4bnYmTHLxwM05IY7VY6a4A90Jt7R3Oo1H eASCZwD38s4vw2x8lNj2JndMipLFxr1FZDB0RwWBbU4a0zEQnpNpIjTHuP+CCv+yMHcG wAS+BvsqlkBOZKPtN+GG2EYRswSVVYAu2JO8TXNhW9cwR+ZWH/ql4uaygI4vEdFz1tQa vKLg== X-Gm-Message-State: AOJu0YwCyPb4a7UG16+qMmM76OXmIrg+Tu9jmRaViaUrpwuxYjM6wpgO W7cfS4lXIHi3w3jDcjZGRtxdLeGcy0LFN0b7nr/H9pI1bRCEG2qnxEjbkrA+NWaVO6Um5qvC+xC Ad3O/BJ6x/RX8pTLKVmS/B9XxAVRJHsMBh+0kU+OYeG8JWanpLurLLbRIVcCsxOG2ZJbkvHNtiV m80/r6CRlZzyexQh+BkxzkjOUWVL309fY9z2cWkW+/sWFGw+Fg X-Google-Smtp-Source: AGHT+IE3M3+KzFHr2HXCRp8tksfVoQe5bbv7ZL2P+uIj9xFRoxAZhEgRK2zl+Qcxwd5xKNBpIIUd1xkTmH6V X-Received: from plqw6.prod.google.com ([2002:a17:902:a706:b0:269:740f:8ae8]) (user=jstultz job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:ea0e:b0:274:3db8:e755 with SMTP id d9443c01a7336-29bab142451mr5548195ad.30.1764023479934; Mon, 24 Nov 2025 14:31:19 -0800 (PST) Date: Mon, 24 Nov 2025 22:30:56 +0000 In-Reply-To: <20251124223111.3616950-1-jstultz@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20251124223111.3616950-1-jstultz@google.com> X-Mailer: git-send-email 2.52.0.487.g5c8c507ade-goog Message-ID: <20251124223111.3616950-5-jstultz@google.com> Subject: [PATCH v24 04/11] sched: Add assert_balance_callbacks_empty helper From: John Stultz To: LKML Cc: John Stultz , Peter Zijlstra , K Prateek Nayak , Joel Fernandes , Qais Yousef , Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Valentin Schneider , Steven Rostedt , Ben Segall , Zimuzo Ezeozue , Mel Gorman , Will Deacon , Waiman Long , Boqun Feng , "Paul E. McKenney" , Metin Kaya , Xuewen Yan , Thomas Gleixner , Daniel Lezcano , Suleiman Souhlal , kuyo chang , hupu , kernel-team@android.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" With proxy-exec utilizing pick-again logic, we can end up having balance callbacks set by the preivous pick_next_task() call left on the list. So pull the warning out into a helper function, and make sure we check it when we pick again. Suggested-by: Peter Zijlstra Reviewed-by: K Prateek Nayak Signed-off-by: John Stultz --- v24: * Use IS_ENABLED() as suggested by K Prateek Cc: Joel Fernandes Cc: Qais Yousef Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Juri Lelli Cc: Vincent Guittot Cc: Dietmar Eggemann Cc: Valentin Schneider Cc: Steven Rostedt Cc: Ben Segall Cc: Zimuzo Ezeozue Cc: Mel Gorman Cc: Will Deacon Cc: Waiman Long Cc: Boqun Feng Cc: "Paul E. McKenney" Cc: Metin Kaya Cc: Xuewen Yan Cc: K Prateek Nayak Cc: Thomas Gleixner Cc: Daniel Lezcano Cc: Suleiman Souhlal Cc: kuyo chang Cc: hupu Cc: kernel-team@android.com --- kernel/sched/core.c | 1 + kernel/sched/sched.h | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b8a8495b82525..cfe71c2764558 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6896,6 +6896,7 @@ static void __sched notrace __schedule(int sched_mode) } =20 pick_again: + assert_balance_callbacks_empty(rq); next =3D pick_next_task(rq, rq->donor, &rf); rq_set_donor(rq, next); if (unlikely(task_is_blocked(next))) { diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index adfb6e3409d72..a0de4f00edd61 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1780,6 +1780,13 @@ static inline void scx_rq_clock_update(struct rq *rq= , u64 clock) {} static inline void scx_rq_clock_invalidate(struct rq *rq) {} #endif /* !CONFIG_SCHED_CLASS_EXT */ =20 +static inline void assert_balance_callbacks_empty(struct rq *rq) +{ + WARN_ON_ONCE(IS_ENABLED(CONFIG_PROVE_LOCKING) && + rq->balance_callback && + rq->balance_callback !=3D &balance_push_callback); +} + /* * Lockdep annotation that avoids accidental unlocks; it's like a * sticky/continuous lockdep_assert_held(). @@ -1796,7 +1803,7 @@ static inline void rq_pin_lock(struct rq *rq, struct = rq_flags *rf) =20 rq->clock_update_flags &=3D (RQCF_REQ_SKIP|RQCF_ACT_SKIP); rf->clock_update_flags =3D 0; - WARN_ON_ONCE(rq->balance_callback && rq->balance_callback !=3D &balance_p= ush_callback); + assert_balance_callbacks_empty(rq); } =20 static inline void rq_unpin_lock(struct rq *rq, struct rq_flags *rf) --=20 2.52.0.487.g5c8c507ade-goog