From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 7167337BE8E for ; Tue, 12 May 2026 02:56:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778554610; cv=none; b=Kvl2CTxPIo0Fd5Kf17pcpS02OrsiPLxoJal0lkzQOS97qKnBkud52kQCrBD4MUH7JHru3rjh4Bq+TUUM3SAWE1ddZ2gAOQd2OAyeESt+pnnEYR6s8WBMCJUw0jvhw/J7yRmrAnWYQizDeaFD2zXeVVt61QgOp1qE5deYcI67vWA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778554610; c=relaxed/simple; bh=4jlq+XUvXO9yYL4QCOBG2vgh1Bbl211AsG6vwc7wVSE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=cQj4RuBQyL7dQaTRJzODsajYV/UrwxKZbTdr2LN+ONwvU6riqWg+AJDMTWPwZ8a7q60lyD4/NaiMltz8KJnnVe3ee5e2I7yt9DsB87S39X3Pnbqr0S3QLemozVssJe4K7UU60EUbxYZvyEMkGCxfXQms+Ku3zME0uGkvTgI0M4I= 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=KXglkY8E; arc=none smtp.client-ip=209.85.216.73 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="KXglkY8E" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-368b15eeb3bso747520a91.2 for ; Mon, 11 May 2026 19:56:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1778554608; x=1779159408; 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=AS46FFpJxT5bSe9nNRpsnj5UbRCBsW10mrd9YZXtxxA=; b=KXglkY8EqEcXW2mEOSujC9st64Jsb9uwJjPGXK87S+OnEfbF0o7BYLjy+WpGqH3gwN PlZ4IUN0v7+CkM4Ukstkzl0n12iV9n0VNjSzAp91uCeEsP/ZxsHYeDcFghl5ZRKqPMYI 0Xf3Lr+mf68MCPSNfpMStKnJ8h3wqxtDPnqmrXtmrwJ5N7LnsIvOMmw7oPwETmrMsJBD q9ttkN2Ee4BNporqi6YjnBg6Vzao0vqtOz9xfLi7Qn0l91Sj9MkkYOZ3p36O5E+cEHzA qQaayJtmrw9pRIa8lIT5J3KiRV8HNSHofIO1AxRk0Ba8JWOFvTacrPgmryHYiKxDhv09 LQUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778554608; x=1779159408; 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=AS46FFpJxT5bSe9nNRpsnj5UbRCBsW10mrd9YZXtxxA=; b=ppnv1ySjUGmz1o3Hzw/9QaOsdo/GlIfZhoHrDH9sVS4wiWZDWRtSTqNzp67KBC1iIy fUFNG//nTqnqgpDtJj6k4lzUqumJUMCbC1mWC0Q7XHu6pckHbMqqe85HIn9pQj+0s/QK KoVrLY6jtaateH69g+2keixsu889q3S1wFYu6B4I4anaqC4o2AJLdVKj5//b6h9ISQa3 IxylTVyDfPP8raJrvtAHdhq8SRzVu5O1DdfmIutN83xf4rBEAVMalBujeA48XSa/YR9X LPP9M1yYD1l8xgX1PzkDnS1355AMid7/eu3i2w8NmssfBrkfu+iTvLYfQsp6JuRLjFU1 IzZA== X-Gm-Message-State: AOJu0Yyq9x5tySnK9oJ74Oy1Cyo9m192LCTdR+ghNcJDOatLMyPM+e2Q gOnoDuqXfS8AGC2sxBWmLdpOw9Kl7h2BwcJQOYhUaVsoP+7UCTaNDWZph3uWg5tkgmclO6suZqG ojp/+ZcrM/U5xCXPA3MQLkEACdaXjn1m2yJ6gpqMvgZ0wV5IeBDVQ1QZ9wWfpga5ZnhCXd1bIKd 8hEg/7bZsjgIz69d0u/nDPOwoQsO3a2mVMYcjSsvRemOZdsjGA X-Received: from pgbbc18.prod.google.com ([2002:a65:6d92:0:b0:c73:7b68:90d9]) (user=jstultz job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:7345:b0:3a3:a9b1:e12f with SMTP id adf61e73a8af0-3aad430788dmr13961413637.21.1778554607239; Mon, 11 May 2026 19:56:47 -0700 (PDT) Date: Tue, 12 May 2026 02:56:14 +0000 In-Reply-To: <20260512025635.2840817-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: <20260512025635.2840817-1-jstultz@google.com> X-Mailer: git-send-email 2.54.0.563.g4f69b47b94-goog Message-ID: <20260512025635.2840817-5-jstultz@google.com> Subject: [PATCH v29 4/9] sched: Rework block_task so it can be directly called From: John Stultz To: LKML Cc: John Stultz , Peter Zijlstra , Joel Fernandes , Qais Yousef , Ingo Molnar , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Valentin Schneider , Steven Rostedt , Ben Segall , Zimuzo Ezeozue , Will Deacon , Waiman Long , Boqun Feng , "Paul E. McKenney" , Metin Kaya , Xuewen Yan , K Prateek Nayak , Thomas Gleixner , Daniel Lezcano , Suleiman Souhlal , kuyo chang , hupu , kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Pull most of the logic out of try_to_block_task() and put it into block_task() directly, so that we can call block_task() and not have to worry about the failing cases in try_to_block_task() Suggested-by: Peter Zijlstra Signed-off-by: John Stultz --- 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: 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 | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 90267454077ea..7440bd7c05ca8 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2223,8 +2223,29 @@ void deactivate_task(struct rq *rq, struct task_struct *p, int flags) dequeue_task(rq, p, flags); } -static void block_task(struct rq *rq, struct task_struct *p, int flags) +static void block_task(struct rq *rq, struct task_struct *p, unsigned long task_state) { + int flags = DEQUEUE_NOCLOCK; + + p->sched_contributes_to_load = + (task_state & TASK_UNINTERRUPTIBLE) && + !(task_state & TASK_NOLOAD) && + !(task_state & TASK_FROZEN); + + if (unlikely(is_special_task_state(task_state))) + flags |= DEQUEUE_SPECIAL; + + /* + * __schedule() ttwu() + * prev_state = prev->state; if (p->on_rq && ...) + * if (prev_state) goto out; + * p->on_rq = 0; smp_acquire__after_ctrl_dep(); + * p->state = TASK_WAKING + * + * Where __schedule() and ttwu() have matching control dependencies. + * + * After this, schedule() must not care about p->state any more. + */ if (dequeue_task(rq, p, DEQUEUE_SLEEP | flags)) __block_task(rq, p); } @@ -6582,7 +6603,6 @@ static bool try_to_block_task(struct rq *rq, struct task_struct *p, unsigned long *task_state_p, bool should_block) { unsigned long task_state = *task_state_p; - int flags = DEQUEUE_NOCLOCK; if (signal_pending_state(task_state, p)) { WRITE_ONCE(p->__state, TASK_RUNNING); @@ -6602,26 +6622,7 @@ static bool try_to_block_task(struct rq *rq, struct task_struct *p, if (!should_block) return false; - p->sched_contributes_to_load = - (task_state & TASK_UNINTERRUPTIBLE) && - !(task_state & TASK_NOLOAD) && - !(task_state & TASK_FROZEN); - - if (unlikely(is_special_task_state(task_state))) - flags |= DEQUEUE_SPECIAL; - - /* - * __schedule() ttwu() - * prev_state = prev->state; if (p->on_rq && ...) - * if (prev_state) goto out; - * p->on_rq = 0; smp_acquire__after_ctrl_dep(); - * p->state = TASK_WAKING - * - * Where __schedule() and ttwu() have matching control dependencies. - * - * After this, schedule() must not care about p->state any more. - */ - block_task(rq, p, flags); + block_task(rq, p, task_state); return true; } -- 2.54.0.563.g4f69b47b94-goog