mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Add a monitor for checking that real-time tasks do not go to sleep in a manner that may cause undesirable latency. Also change RV depends on TRACING to RV select TRACING to avoid the following recursive dependency: error: recursive dependency detected! symbol TRACING is selected by PREEMPTIRQ_TRACEPOINTS symbol PREEMPTIRQ_TRACEPOINTS depends on TRACE_IRQFLAGS symbol TRACE_IRQFLAGS is selected by RV_MON_SLEEP symbol RV_MON_SLEEP depends on RV symbol RV depends on TRACING Cc: John Ogness <john.ogness@linutronix.de> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/75bc5bcc741d153aa279c95faf778dff35c5c8ad.1752088709.git.namcao@linutronix.de Reviewed-by: Gabriele Monaco <gmonaco@redhat.com> Signed-off-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
22 lines
733 B
Text
22 lines
733 B
Text
RULE = always ((RT and SLEEP) imply (RT_FRIENDLY_SLEEP or ALLOWLIST))
|
|
|
|
RT_FRIENDLY_SLEEP = (RT_VALID_SLEEP_REASON or KERNEL_THREAD)
|
|
and ((not WAKE) until RT_FRIENDLY_WAKE)
|
|
|
|
RT_VALID_SLEEP_REASON = FUTEX_WAIT
|
|
or RT_FRIENDLY_NANOSLEEP
|
|
|
|
RT_FRIENDLY_NANOSLEEP = CLOCK_NANOSLEEP
|
|
and NANOSLEEP_TIMER_ABSTIME
|
|
and (NANOSLEEP_CLOCK_MONOTONIC or NANOSLEEP_CLOCK_TAI)
|
|
|
|
RT_FRIENDLY_WAKE = WOKEN_BY_EQUAL_OR_HIGHER_PRIO
|
|
or WOKEN_BY_HARDIRQ
|
|
or WOKEN_BY_NMI
|
|
or ABORT_SLEEP
|
|
or KTHREAD_SHOULD_STOP
|
|
|
|
ALLOWLIST = BLOCK_ON_RT_MUTEX
|
|
or FUTEX_LOCK_PI
|
|
or TASK_IS_RCU
|
|
or TASK_IS_MIGRATION
|