From nobody Tue Apr 7 14:19:04 2026 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (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 41DD4253958 for ; Fri, 13 Mar 2026 02:30:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773369031; cv=none; b=IRCpzw4L8I3hXN2IUqU4H8M7qOF+LHwmQhIHNR48PpUSeMUzgSPesRKOGM3SrQCU8C+sWxqhJvGBtsTCNpZB4oKjvCrimsGmIAElBdP1V8xcroTnTfLwdzhkSzXysr5vmDppWH5XmSmqj9kfesD7cWOLH2ctC63bA/bo0Ic4UhM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773369031; c=relaxed/simple; bh=+ymqSKWvCPL3VrbEo/OvawyU0MzQwuNuQPTg8XmRLgA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=Nb+oE58c9qVzk0Nymfp2szzpUdWX5Vt0i8LjknHmZa8LVpxRy36iKfo86TV7XT2uzXcCGGeBkV1VO637u8lfDMXyA0+2G39y42izQx0rMx6boYrt1yl66qZm+4hU7jcYOO5gEzGhmnRjsbwt+EnlLj55d1yQ1AC+WNp3+vv3DRY= 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=wlsoSClg; arc=none smtp.client-ip=209.85.214.202 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="wlsoSClg" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2ae4f27033cso17099785ad.3 for ; Thu, 12 Mar 2026 19:30:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1773369029; x=1773973829; 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=DQGP1ytIhcbCSNcQKXDXMUsYt+EzuKFD+qp+gg1Maak=; b=wlsoSClg5jksIkRT6ekLPwWN95p2SyPiqWoghIpHD5l7B8ahPjLJDwqx/Bb9TOKVAj yifStmzmkYTN8vQO6NcAxAdvFYF3OfVP6jzimiTCecvMoCoF2E3tnBZRjWIFwWwZMD7X yiO6Ax1Ivm/zvg9rDGXEWkIQOcYcQGAmM+dwr2kNgMxtLLiX2Nigu8RiSMHpx04mOaVm SJHwQbNsbR9y+O/guXtQWlC704Ih2S84w4uoZ576cO5ZQA9dVJijXpI82ReuOVIijaEo idVLrwsJgIXYf63GB5VfSB1nRdCSaDBQ/IcfXbQVe2d2qWIIRSGMi1A4N3nKZmDgIiUk +2Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773369029; x=1773973829; 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=DQGP1ytIhcbCSNcQKXDXMUsYt+EzuKFD+qp+gg1Maak=; b=mqDltyy5Nr6XDX7bdgfieIO/JVjPNJeljCC+Ijh6DeokAaZrbPrHK4KIXQKDaY/qxs HSGd23M9RRnFOm+ouRbZZpe2e1FBK3+EaRFUGbzQXAwPgSjEny6RHC3u23C1LmP28Dl/ R5MoUmBa/MM/ZlvV8iGa3AhJ8KZIy6DnkX5wR+vjTyex5Wg5y9fTBp+H2WKJ+2odbUtd Fy6VP82GxgpUeXfhpOeVUQj14MJyW4OUu3b+VteU8X4SVkh2+JdbIfSOHQ8gxwOEzwYe G7v0Axysst7GDMbVb/B8Njfj/jXsOavz6kkIELyx7Ed3tJfOH7Fy7ddj33YvCT97N1yl 1m9A== X-Gm-Message-State: AOJu0YyLrXgfKcKGcXhAObHD4EPKOC5I8HQILF23WJqNVK45igu+j9uA /sVnSgbgCQONlxOXNziQ3me42uRVIspLhz7Xr6DvGkQwSkPFlUVtXUF4gu4Bt+wJkGfWeztdHmC 5hRNRMqMXHSc9+XPCSK7zNo8RpKWv1rQipsx+RxZda6Lfx+uWbHEP93DuXnPXHm/Ibq+jjq8dGN 333Fx1Gi1Kq8tj8E6VGjJ5sLTpk6x7TRXwHgHOQ/jHPYlWxXWM X-Received: from plbkh12.prod.google.com ([2002:a17:903:64c:b0:2ae:8073:a4f4]) (user=jstultz job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:e888:b0:2ae:a9c2:6aa with SMTP id d9443c01a7336-2aecaaf6060mr14405885ad.32.1773369029028; Thu, 12 Mar 2026 19:30:29 -0700 (PDT) Date: Fri, 13 Mar 2026 02:30:03 +0000 In-Reply-To: <20260313023022.2902479-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: <20260313023022.2902479-1-jstultz@google.com> X-Mailer: git-send-email 2.53.0.880.g73c4285caa-goog Message-ID: <20260313023022.2902479-3-jstultz@google.com> Subject: [PATCH v25 2/9] sched: Minimise repeated sched_proxy_exec() checking 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 , Mel Gorman , 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-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Peter noted: Compilers are really bad (as in they utterly refuse) optimizing (even when marked with __pure) the static branch things, and will happily emit multiple identical in a row. So pull out the one obvious sched_proxy_exec() branch in __schedule() and remove some of the 'implicit' ones in that path. Suggested-by: Peter Zijlstra Signed-off-by: John Stultz Reviewed-by: K Prateek Nayak --- 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 | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index d86d648a75a4b..84c61496fa263 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6597,11 +6597,7 @@ find_proxy_task(struct rq *rq, struct task_struct *d= onor, struct rq_flags *rf) struct mutex *mutex; =20 /* Follow blocked_on chain. */ - for (p =3D donor; task_is_blocked(p); p =3D owner) { - mutex =3D p->blocked_on; - /* Something changed in the chain, so pick again */ - if (!mutex) - return NULL; + for (p =3D donor; (mutex =3D p->blocked_on); p =3D owner) { /* * By taking mutex->wait_lock we hold off concurrent mutex_unlock() * and ensure @owner sticks around. @@ -6832,12 +6828,14 @@ static void __sched notrace __schedule(int sched_mo= de) next =3D pick_next_task(rq, rq->donor, &rf); rq_set_donor(rq, next); rq->next_class =3D next->sched_class; - if (unlikely(task_is_blocked(next))) { - next =3D find_proxy_task(rq, next, &rf); - if (!next) - goto pick_again; - if (next =3D=3D rq->idle) - goto keep_resched; + if (sched_proxy_exec()) { + if (unlikely(next->blocked_on)) { + next =3D find_proxy_task(rq, next, &rf); + if (!next) + goto pick_again; + if (next =3D=3D rq->idle) + goto keep_resched; + } } picked: clear_tsk_need_resched(prev); --=20 2.53.0.880.g73c4285caa-goog