From: tip-bot for Sebastian Andrzej Siewior <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, peterz@infradead.org,
bigeasy@linutronix.de, tglx@linutronix.de, mingo@kernel.org,
hpa@zytor.com
Subject: [tip:timers/core] hrtimer: Introduce HARD expiry mode
Date: Thu, 1 Aug 2019 08:52:14 -0700 [thread overview]
Message-ID: <tip-ae6683d815895c2be1e60e1942630fa99488055b@git.kernel.org> (raw)
In-Reply-To: <20190726185752.981398465@linutronix.de>
Commit-ID: ae6683d815895c2be1e60e1942630fa99488055b
Gitweb: https://git.kernel.org/tip/ae6683d815895c2be1e60e1942630fa99488055b
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
AuthorDate: Fri, 26 Jul 2019 20:30:51 +0200
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Thu, 1 Aug 2019 17:43:16 +0200
hrtimer: Introduce HARD expiry mode
On PREEMPT_RT not all hrtimers can be expired in hard interrupt context
even if that is perfectly fine on a PREEMPT_RT=n kernel, e.g. because they
take regular spinlocks. Also for latency reasons PREEMPT_RT tries to defer
most hrtimers' expiry into soft interrupt context.
But there are hrtimers which must be expired in hard interrupt context even
when PREEMPT_RT is enabled:
- hrtimers which must expiry in hard interrupt context, e.g. scheduler,
perf, watchdog related hrtimers
- latency critical hrtimers, e.g. nanosleep, ..., kvm lapic timer
Add a new mode flag HRTIMER_MODE_HARD which allows to mark these timers so
PREEMPT_RT will not move them into softirq expiry mode.
[ tglx: Split out of a larger combo patch. Added changelog ]
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20190726185752.981398465@linutronix.de
---
include/linux/hrtimer.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index 24072a0942c0..15c2ba6b6316 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -38,6 +38,7 @@ enum hrtimer_mode {
HRTIMER_MODE_REL = 0x01,
HRTIMER_MODE_PINNED = 0x02,
HRTIMER_MODE_SOFT = 0x04,
+ HRTIMER_MODE_HARD = 0x08,
HRTIMER_MODE_ABS_PINNED = HRTIMER_MODE_ABS | HRTIMER_MODE_PINNED,
HRTIMER_MODE_REL_PINNED = HRTIMER_MODE_REL | HRTIMER_MODE_PINNED,
@@ -48,6 +49,11 @@ enum hrtimer_mode {
HRTIMER_MODE_ABS_PINNED_SOFT = HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_SOFT,
HRTIMER_MODE_REL_PINNED_SOFT = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_SOFT,
+ HRTIMER_MODE_ABS_HARD = HRTIMER_MODE_ABS | HRTIMER_MODE_HARD,
+ HRTIMER_MODE_REL_HARD = HRTIMER_MODE_REL | HRTIMER_MODE_HARD,
+
+ HRTIMER_MODE_ABS_PINNED_HARD = HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_HARD,
+ HRTIMER_MODE_REL_PINNED_HARD = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_HARD,
};
/*
next prev parent reply other threads:[~2019-08-01 15:52 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-26 18:30 [patch 00/12] (hr)timers: Prepare for PREEMPT_RT support Thomas Gleixner
2019-07-26 18:30 ` [patch 01/12] hrtimer: Remove task argument from hrtimer_init_sleeper() Thomas Gleixner
2019-07-26 19:57 ` Steven Rostedt
2019-07-26 20:01 ` Thomas Gleixner
2019-07-30 22:07 ` [tip:timers/core] " tip-bot for Thomas Gleixner
2019-07-26 18:30 ` [patch 02/12] hrtimer: Consolidate hrtimer_init() + hrtimer_init_sleeper() calls Thomas Gleixner
2019-07-30 22:08 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:49 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 03/12] hrtimer: Introduce HARD expiry mode Thomas Gleixner
2019-07-30 22:10 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:52 ` tip-bot for Sebastian Andrzej Siewior [this message]
2019-07-26 18:30 ` [patch 04/12] sched: Mark hrtimers to expire in hard interrupt context Thomas Gleixner
2019-07-30 22:11 ` [tip:timers/core] " tip-bot for Thomas Gleixner
2019-08-01 15:53 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 18:58 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 05/12] perf/core: " Thomas Gleixner
2019-07-30 22:12 ` [tip:timers/core] " tip-bot for Thomas Gleixner
2019-08-01 15:54 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 18:59 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 06/12] watchdog: Mark watchdog_hrtimer " Thomas Gleixner
2019-07-30 22:13 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:55 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 19:00 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 07/12] KVM: LAPIC: Mark hrtimer " Thomas Gleixner
2019-07-26 19:41 ` Paolo Bonzini
2019-07-30 22:14 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:55 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 19:01 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 08/12] tick: Mark tick related hrtimers to expiry " Thomas Gleixner
2019-07-30 22:14 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:56 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 19:01 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 09/12] hrtimer: Move unmarked hrtimers to soft interrupt expiry on RT Thomas Gleixner
2019-07-30 22:15 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:57 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 19:02 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 10/12] hrtimer: Determine hard/soft expiry mode for hrtimer sleepers " Thomas Gleixner
2019-07-26 20:44 ` Steven Rostedt
2019-07-26 20:52 ` Thomas Gleixner
2019-07-26 20:56 ` Steven Rostedt
2019-07-26 21:16 ` Julia Cartwright
2019-07-26 21:30 ` Steven Rostedt
2019-07-26 21:35 ` Thomas Gleixner
2019-07-30 22:16 ` [tip:timers/core] " tip-bot for Sebastian Andrzej Siewior
2019-08-01 15:58 ` tip-bot for Sebastian Andrzej Siewior
2019-08-01 19:03 ` tip-bot for Sebastian Andrzej Siewior
2019-07-26 18:30 ` [patch 11/12] hrtimer: Prepare support for PREEMPT_RT Thomas Gleixner
2019-07-28 9:06 ` Juergen Gross
2019-07-29 15:08 ` Steven Rostedt
2019-07-29 17:30 ` Paolo Bonzini
2019-07-31 8:45 ` Juergen Gross
2019-07-30 22:17 ` [tip:timers/core] " tip-bot for Anna-Maria Gleixner
2019-08-01 15:58 ` tip-bot for Anna-Maria Gleixner
2019-08-01 19:04 ` tip-bot for Anna-Maria Gleixner
2019-08-20 13:26 ` Frederic Weisbecker
2019-08-23 2:12 ` [tip: timers/core] hrtimer: Improve comments on handling priority inversion against softirq kthread tip-bot2 for Frederic Weisbecker
2019-07-26 18:31 ` [patch 12/12] timers: Prepare support for PREEMPT_RT Thomas Gleixner
2019-07-30 22:17 ` [tip:timers/core] " tip-bot for Anna-Maria Gleixner
2019-08-01 15:59 ` tip-bot for Anna-Maria Gleixner
2019-08-01 19:04 ` tip-bot for Anna-Maria Gleixner
2019-07-29 19:45 ` [patch 00/12] (hr)timers: Prepare for PREEMPT_RT support Peter Zijlstra
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=tip-ae6683d815895c2be1e60e1942630fa99488055b@git.kernel.org \
--to=tipbot@zytor.com \
--cc=bigeasy@linutronix.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).