From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 396453A6F01 for ; Thu, 23 Apr 2026 17:17:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776964661; cv=none; b=WkyWA9g4xUqhgx/rXkIhuyXkEw9EXx1Pf0wdTlXIg7maWP/1J78Xep9c/TZZEI5dJxla6nQS6A6qCZqHDA9WRwfsAxACZ3g8YftexcEG8sfjmbCEJRAMhKhg67oNQbxUgF3w9TK0/rjUbPp7GwVkmS5ZYMd9JsAeB110ekG54TM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776964661; c=relaxed/simple; bh=EVQQxZRMrS2+XWd/l/UO7Vl4z6wemEIn3u7pAov9Is4=; h=Date:To:From:Subject:Message-Id; b=BDZQHEHWriA01Hb+MpSlMPX/UPn0+yeSmHAfQW9pVzPBz2q14y+I0nylmt1/Q+a2dkHd7JKP57K8wVm9yLPTkcIokEI9X/xBpU5mXsD+g8mbjDV80I+eVSQOXdRiFaUXuXLPWSQC2obsIBlOd9J0ipI0Df5zvNBlPb5qSooOW24= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=rWNK/iHC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="rWNK/iHC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC534C2BCAF; Thu, 23 Apr 2026 17:17:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1776964660; bh=EVQQxZRMrS2+XWd/l/UO7Vl4z6wemEIn3u7pAov9Is4=; h=Date:To:From:Subject:From; b=rWNK/iHCu0NFvDmQktvHaVltdJneBztNxhTdoAVU8gYzMEymM8qDgtiZrzEAjPEwB yUPoG/LvQRSyg1RhQ3kM+KEwRWpasLtObjUtgN3jYJCxbwYemyCBLzYafMjqp3IDk5 OiPZevVu9BdcVTKXk+AbRcnoALYXaDwzJ6BPi/P4= Date: Thu, 23 Apr 2026 10:17:40 -0700 To: mm-commits@vger.kernel.org,will@kernel.org,rafael@kernel.org,peterz@infradead.org,mingo@kernel.org,memxor@gmail.com,mark.rutland@arm.com,konradybcio@kernel.org,harisokn@amazon.com,gary@garyguo.net,davidgow@google.com,daniel.lezcano@linaro.org,cl@linux.com,catalin.marinas@arm.com,boqun@kernel.org,boqun.feng@gmail.com,ast@kernel.org,arnd@arndb.de,andersson@kernel.org,ankur.a.arora@oracle.com,akpm@linux-foundation.org From: Andrew Morton Subject: + sched-add-need-resched-timed-wait-interface.patch added to mm-new branch Message-Id: <20260423171740.CC534C2BCAF@smtp.kernel.org> Precedence: bulk X-Mailing-List: mm-commits@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: The patch titled Subject: sched: add need-resched timed wait interface has been added to the -mm mm-new branch. Its filename is sched-add-need-resched-timed-wait-interface.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/sched-add-need-resched-timed-wait-interface.patch This patch will later appear in the mm-new branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Note, mm-new is a provisional staging ground for work-in-progress patches, and acceptance into mm-new is a notification for others take notice and to finish up reviews. Please do not hesitate to respond to review feedback and post updated versions to replace or incrementally fixup patches in mm-new. The mm-new branch of mm.git is not included in linux-next If a few days of testing in mm-new is successful, the patch will me moved into mm.git's mm-unstable branch, which is included in linux-next Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via various branches at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there most days ------------------------------------------------------ From: Ankur Arora Subject: sched: add need-resched timed wait interface Date: Wed, 8 Apr 2026 17:55:35 +0530 Add tif_bitset_relaxed_wait() (and tif_need_resched_relaxed_wait() which wraps it) which takes the thread_info bit and timeout duration as parameters and waits until the bit is set or for the expiration of the timeout. The wait is implemented via smp_cond_load_relaxed_timeout(). smp_cond_load_relaxed_timeout() essentially provides the pattern used in poll_idle() where we spin in a loop waiting for the flag to change until a timeout occurs. tif_need_resched_relaxed_wait() allows us to abstract out the internals of waiting, scheduler specific details etc. Placed in linux/sched/idle.h instead of linux/thread_info.h to work around recursive include hell. Link: https://lore.kernel.org/20260408122538.3610871-12-ankur.a.arora@oracle.com Signed-off-by: Ankur Arora Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Rafael J. Wysocki Cc: Daniel Lezcano Cc: Alexei Starovoitov Cc: Arnd Bergmann Cc: Bjorn Andersson Cc: Boqun Feng Cc: Boqun Feng Cc: Catalin Marinas Cc: Christoph Lameter Cc: David Gow Cc: Gary Guo Cc: Haris Okanovic Cc: Konrad Dybcio Cc: Kumar Kartikeya Dwivedi Cc: Mark Rutland Cc: Will Deacon Signed-off-by: Andrew Morton --- include/linux/sched/idle.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) --- a/include/linux/sched/idle.h~sched-add-need-resched-timed-wait-interface +++ a/include/linux/sched/idle.h @@ -3,6 +3,7 @@ #define _LINUX_SCHED_IDLE_H #include +#include enum cpu_idle_type { __CPU_NOT_IDLE = 0, @@ -113,4 +114,32 @@ static __always_inline void current_clr_ } #endif +/* + * Caller needs to make sure that the thread context cannot be preempted + * or migrated, so current_thread_info() cannot change from under us. + * + * This also allows us to safely stay in the local_clock domain. + */ +static __always_inline bool tif_bitset_relaxed_wait(int tif, u64 timeout_ns) +{ + unsigned long flags; + + flags = smp_cond_load_relaxed_timeout(¤t_thread_info()->flags, + (VAL & BIT(tif)), + local_clock_noinstr(), + timeout_ns); + return flags & BIT(tif); +} + +/** + * tif_need_resched_relaxed_wait() - Wait for need-resched being set + * with no ordering guarantees until a timeout expires. + * + * @timeout_ns: timeout value. + */ +static __always_inline bool tif_need_resched_relaxed_wait(u64 timeout_ns) +{ + return tif_bitset_relaxed_wait(TIF_NEED_RESCHED, timeout_ns); +} + #endif /* _LINUX_SCHED_IDLE_H */ _ Patches currently in -mm which might be from ankur.a.arora@oracle.com are asm-generic-barrier-add-smp_cond_load_relaxed_timeout.patch arm64-barrier-support-smp_cond_load_relaxed_timeout.patch arm64-delay-move-some-constants-out-to-a-separate-header.patch arm64-support-wfet-in-smp_cond_load_relaxed_timeout.patch arm64-rqspinlock-remove-private-copy-of-smp_cond_load_acquire_timewait.patch asm-generic-barrier-add-smp_cond_load_acquire_timeout.patch atomic-add-atomic_cond_read__timeout.patch locking-atomic-scripts-build-atomic_long_cond_read__timeout.patch bpf-rqspinlock-switch-check_timeout-to-a-clock-interface.patch bpf-rqspinlock-use-smp_cond_load_acquire_timeout.patch sched-add-need-resched-timed-wait-interface.patch cpuidle-poll_state-wait-for-need-resched-via-tif_need_resched_relaxed_wait.patch kunit-enable-testing-smp_cond_load_relaxed_timeout.patch kunit-add-tests-for-smp_cond_load_relaxed_timeout.patch