From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Liang Hao <haohlliang@gmail.com>
Cc: Anna-Maria Behnsen <anna-maria@linutronix.de>,
Frederic Weisbecker <frederic@kernel.org>,
Thomas Gleixner <tglx@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
Clark Williams <clrkwllms@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
linux-rt-devel@lists.linux.dev
Subject: Re: [PATCH v4] docs: real-time: mention the hrtimer sleeper HARD path
Date: Thu, 20 Aug 2026 10:21:14 +0200 [thread overview]
Message-ID: <20260820082114.QIiSu8n5@linutronix.de> (raw)
In-Reply-To: <20260814161240.33774-1-haohlliang@gmail.com>
On 2026-08-15 00:12:40 [+0800], Liang Hao wrote:
> The Timers section of Documentation/core-api/real-time/differences.rst
> describes the PREEMPT_RT default (softirq / ktimers) and HRTIMER_MODE_HARD,
> but not the sleeper helper: hrtimer_setup_sleeper_on_stack() marks the
> timer HRTIMER_MODE_HARD when the current task is RT or DEADLINE and
> HRTIMER_MODE_SOFT was not requested, so the wakeup runs in hard interrupt
> context.
>
> Document that behaviour. Also rename "ktimersd" to "ktimers/%u" to match
> the per-CPU thread name.
>
> No code or behaviour change.
>
> Signed-off-by: Liang Hao <haohlliang@gmail.com>
> ---
> v3 -> v4:
> - drop the Documentation/timers/hrtimers.rst section; extend differences.rst
> instead, per review
> - add only the sleeper HARD wording and the ktimers/%u rename
> - do not restate lowest-priority / cancel-PI points already covered elsewhere
> - avoid vague "and similar" caller lists
>
> Documentation/core-api/real-time/differences.rst | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/core-api/real-time/differences.rst b/Documentation/core-api/real-time/differences.rst
> index a129570dab5a..c8acfba051eb 100644
> --- a/Documentation/core-api/real-time/differences.rst
> +++ b/Documentation/core-api/real-time/differences.rst
> @@ -119,12 +119,17 @@ timers initialized with the HRTIMER_MODE_SOFT flag, which are executed in
> softirq context.
>
> On a PREEMPT_RT kernel, this behavior is reversed: hrtimers are executed in
> -softirq context by default, typically within the ktimersd thread. This thread
> -runs at the lowest real-time priority, ensuring it executes before any
> -SCHED_OTHER tasks but does not interfere with higher-priority real-time
> +softirq context by default, typically within the per-CPU ktimers/%u thread.
Please do ktimers instead ktimers/%u. I don't see any other reference to
a per-CPU thread like that. This would also be in sync with ksoftirqd.
> +This thread runs at the lowest real-time priority, ensuring it executes before
> +any SCHED_OTHER tasks but does not interfere with higher-priority real-time
> threads. To explicitly request execution in hard interrupt context on
> PREEMPT_RT, the timer must be marked with the HRTIMER_MODE_HARD flag.
>
> +hrtimer_setup_sleeper_on_stack() marks the sleeper HRTIMER_MODE_HARD when the
> +current task is in a real-time or deadline scheduling class and
> +HRTIMER_MODE_SOFT was not requested, so the wakeup runs in hard interrupt
> +context rather than on ktimers/%u.
> +
What about
Userland sleeper deploy usually a hrtimer to guarantee a precise wakeup
time. The timer is initialized with hrtimer_setup_sleeper_on_stack()
which distinguishes between real-time and regular tasks. The hrtimer of a
task without a real-time priority is initialized with HRTIMER_MODE_SOFT
but for real-time priorities HRTIMER_MODE_HARD is used. This ensures
that real-time tasks are woken up as soon as possible while ordinary
tasks can not block the CPU with a thundering herd of wake ups.
> Memory allocation
> -----------------
>
Sebastian
next prev parent reply other threads:[~2026-08-20 8:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-07 16:19 [PATCH] docs: timers: hrtimers: clarify expiry modes and ktimersd on PREEMPT_RT Liang Hao
2026-08-12 14:54 ` [PATCH v2] " Liang Hao
2026-08-12 15:08 ` sashiko-bot
2026-08-13 14:57 ` [PATCH v3] " Liang Hao
2026-08-14 9:49 ` Sebastian Andrzej Siewior
2026-08-14 16:12 ` [PATCH v4] docs: real-time: mention the hrtimer sleeper HARD path Liang Hao
2026-08-20 8:21 ` Sebastian Andrzej Siewior [this message]
2026-08-20 14:46 ` [PATCH v5] " Liang Hao
2026-08-20 14:52 ` sashiko-bot
2026-08-20 16:38 ` [PATCH v6] " Liang Hao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260820082114.QIiSu8n5@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=anna-maria@linutronix.de \
--cc=clrkwllms@kernel.org \
--cc=corbet@lwn.net \
--cc=frederic@kernel.org \
--cc=haohlliang@gmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-devel@lists.linux.dev \
--cc=rdunlap@infradead.org \
--cc=rostedt@goodmis.org \
--cc=skhan@linuxfoundation.org \
--cc=tglx@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.