Gabriele Monaco
614384533d
rv: Add opid per-cpu monitor
...
Add a per-cpu monitor as part of the sched model:
* opid: operations with preemption and irq disabled
Monitor to ensure wakeup and need_resched occur with irq and
preemption disabled or in irq handlers.
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Tomas Glozar <tglozar@redhat.com >
Cc: Juri Lelli <jlelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Link: https://lore.kernel.org/20250728135022.255578-10-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com >
Acked-by: Nam Cao <namcao@linutronix.de >
Tested-by: Nam Cao <namcao@linutronix.de >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-07-28 16:47:35 -04:00
Gabriele Monaco
e8440a88e5
rv: Add nrp and sssw per-task monitors
...
Add 2 per-task monitors as part of the sched model:
* nrp: need-resched preempts
Monitor to ensure preemption requires need resched.
* sssw: set state sleep and wakeup
Monitor to ensure sched_set_state to sleepable leads to sleeping and
sleeping tasks require wakeup.
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Tomas Glozar <tglozar@redhat.com >
Cc: Juri Lelli <jlelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Link: https://lore.kernel.org/20250728135022.255578-9-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com >
Acked-by: Nam Cao <namcao@linutronix.de >
Tested-by: Nam Cao <namcao@linutronix.de >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-07-28 16:47:34 -04:00
Gabriele Monaco
d0096c2f9c
rv: Replace tss and sncid monitors with more complete sts
...
The tss monitor currently guarantees task switches can happen only while
scheduling, whereas the sncid monitor enforces scheduling occurs with
interrupt disabled.
Replace the monitors with a more comprehensive specification which
implies both but also ensures that:
* each scheduler call disable interrupts to switch
* each task switch happens with interrupts disabled
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Nam Cao <namcao@linutronix.de >
Cc: Tomas Glozar <tglozar@redhat.com >
Cc: Juri Lelli <jlelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Link: https://lore.kernel.org/20250728135022.255578-8-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-07-28 16:47:34 -04:00
Nam Cao
8cfcf9b0e9
verification/rvgen: Support the 'next' operator
...
The 'next' operator is a unary operator. It is defined as: "next time, the
operand must be true".
Support this operator. For RV monitors, "next time" means the next
invocation of ltl_validate().
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/9c32cec04dd18d2e956fddd84b0e0a2503daa75a.1752239482.git.namcao@linutronix.de
Signed-off-by: Nam Cao <namcao@linutronix.de >
Tested-by: Gabriele Monaco <gmonaco@redhat.com >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-07-24 10:43:23 -04:00
Nam Cao
e93648e862
Documentation/rv: Add documentation for linear temporal logic monitors
...
Add documents describing linear temporal logic runtime verification
monitors and how to generate them using rvgen.
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com >
Cc: Gabriele Monaco <gmonaco@redhat.com >
Link: https://lore.kernel.org/be13719e66fd8da147d7c69d5365aa23c52b743f.1751634289.git.namcao@linutronix.de
Signed-off-by: Nam Cao <namcao@linutronix.de >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-07-24 10:42:47 -04:00
Nam Cao
f40a7c0602
Documentation/rv: Prepare monitor synthesis document for LTL inclusion
...
Monitor synthesis from deterministic automaton and linear temporal logic
have a lot in common. Therefore a single document should describe both.
Change da_monitor_synthesis.rst to monitor_synthesis.rst. LTL monitor
synthesis will be added to this file by a follow-up commit.
This makes the diff far easier to read. If renaming and adding LTL info is
done in a single commit, git wouldn't recognize it as a rename, but a file
removal and a file addition.
While at it, correct the old dot2k commands to the new rvgen commands.
Cc: Masami Hiramatsu <mhiramat@kernel.org >
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com >
Link: https://lore.kernel.org/d91c6e4600287f4732d68a014219e576a75ce6dc.1751634289.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 >
2025-07-24 10:42:46 -04:00
Nam Cao
670ff946b9
rv: Add documentation for rtapp monitor
...
Add documentation describing the rtapp monitor.
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/df0242d74c12511e82cc9d73c082def91a160c74.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 >
2025-07-09 15:27:02 -04:00
Gabriele Monaco
4bb5d82b66
Documentation/rv: Add sched pages to the indices
...
The pages Documentation/tools/rv/rv-mon-sched.rst and
Documentation/trace/rv/monitor_sched.rst were introduced but not
included in any index.
Add them to the respective indices.
Cc: Jonathan Corbet <corbet@lwn.net >
Link: https://lore.kernel.org/20250327081240.46422-1-gmonaco@redhat.com
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au >
Fixes: 03abeaa63c ("Documentation/rv: Add docs for the sched monitors")
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-03-27 12:02:38 -04:00
Gabriele Monaco
03abeaa63c
Documentation/rv: Add docs for the sched monitors
...
Add man page and kernel documentation for the sched monitors, as sched
is a container of other monitors, document all in the same page.
sched is the first nested monitor, also explain what is a nested monitor
and how enabling containers or children monitors work.
To: Ingo Molnar <mingo@redhat.com >
To: Peter Zijlstra <peterz@infradead.org >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: John Kacur <jkacur@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Link: https://lore.kernel.org/20250305140406.350227-9-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2025-03-24 17:27:40 -04:00
Andrew Kreimer
09cbeb5b30
Documentation/rv: Fix typos
...
There are some typos in the documentation: 'a' -> 'at', missing 'to'.
Fix them.
Signed-off-by: Andrew Kreimer <algonell@gmail.com >
Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org >
Signed-off-by: Jonathan Corbet <corbet@lwn.net >
Link: https://lore.kernel.org/r/20241209130640.10954-1-algonell@gmail.com
2024-12-13 08:42:23 -07:00
Bjorn Helgaas
d56b699d76
Documentation: Fix typos
...
Fix typos in Documentation.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Link: https://lore.kernel.org/r/20230814212822.193684-4-helgaas@kernel.org
Signed-off-by: Jonathan Corbet <corbet@lwn.net >
2023-08-18 11:29:03 -06:00
Daniel Bristot de Oliveira
ccc319dcb4
rv/monitor: Add the wwnr monitor
...
Per task wakeup while not running (wwnr) monitor.
This model is broken, the reason is that a task can be running in the
processor without being set as RUNNABLE. Think about a task about to
sleep:
1: set_current_state(TASK_UNINTERRUPTIBLE);
2: schedule();
And then imagine an IRQ happening in between the lines one and two,
waking the task up. BOOM, the wakeup will happen while the task is
running.
Q: Why do we need this model, so?
A: To test the reactors.
Link: https://lkml.kernel.org/r/473c0fc39967250fdebcff8b620311c11dccad30.1659052063.git.bristot@kernel.org
Cc: Wim Van Sebroeck <wim@linux-watchdog.org >
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Will Deacon <will@kernel.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Marco Elver <elver@google.com >
Cc: Dmitry Vyukov <dvyukov@google.com >
Cc: "Paul E. McKenney" <paulmck@kernel.org >
Cc: Shuah Khan <skhan@linuxfoundation.org >
Cc: Gabriele Paoloni <gpaoloni@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-07-30 14:01:30 -04:00
Daniel Bristot de Oliveira
10bde81c74
rv/monitor: Add the wip monitor
...
The wakeup in preemptive (wip) monitor verifies if the
wakeup events always take place with preemption disabled:
|
|
v
#==================#
H preemptive H <+
#==================# |
| |
| preempt_disable | preempt_enable
v |
sched_waking +------------------+ |
+--------------- | | |
| | non_preemptive | |
+--------------> | | -+
+------------------+
The wakeup event always takes place with preemption disabled because
of the scheduler synchronization. However, because the preempt_count
and its trace event are not atomic with regard to interrupts, some
inconsistencies might happen.
The documentation illustrates one of these cases.
Link: https://lkml.kernel.org/r/c98ca678df81115fddc04921b3c79720c836b18f.1659052063.git.bristot@kernel.org
Cc: Wim Van Sebroeck <wim@linux-watchdog.org >
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Will Deacon <will@kernel.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Marco Elver <elver@google.com >
Cc: Dmitry Vyukov <dvyukov@google.com >
Cc: "Paul E. McKenney" <paulmck@kernel.org >
Cc: Shuah Khan <skhan@linuxfoundation.org >
Cc: Gabriele Paoloni <gpaoloni@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-07-30 14:01:30 -04:00
Daniel Bristot de Oliveira
b6172b5185
Documentation/rv: Add deterministic automata instrumentation documentation
...
Add the da_monitor_instrumentation.rst. It describes the basics
of RV monitor instrumentation.
Link: https://lkml.kernel.org/r/0557d5c68e2fc252f2643c2cc5295a67e2b73277.1659052063.git.bristot@kernel.org
Cc: Wim Van Sebroeck <wim@linux-watchdog.org >
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Will Deacon <will@kernel.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Marco Elver <elver@google.com >
Cc: Dmitry Vyukov <dvyukov@google.com >
Cc: "Paul E. McKenney" <paulmck@kernel.org >
Cc: Shuah Khan <skhan@linuxfoundation.org >
Cc: Gabriele Paoloni <gpaoloni@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-07-30 14:01:29 -04:00
Daniel Bristot de Oliveira
d57aff2479
Documentation/rv: Add deterministic automata monitor synthesis documentation
...
Add the da_monitor_synthesis.rst introduces some concepts behind the
Deterministic Automata (DA) monitor synthesis and interface.
Link: https://lkml.kernel.org/r/7873bdb7b2e5d2bc0b2eb6ca0b324af9a0ba27a0.1659052063.git.bristot@kernel.org
Cc: Wim Van Sebroeck <wim@linux-watchdog.org >
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Will Deacon <will@kernel.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Marco Elver <elver@google.com >
Cc: Dmitry Vyukov <dvyukov@google.com >
Cc: "Paul E. McKenney" <paulmck@kernel.org >
Cc: Shuah Khan <skhan@linuxfoundation.org >
Cc: Gabriele Paoloni <gpaoloni@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-07-30 14:01:29 -04:00
Daniel Bristot de Oliveira
4041b9bbfb
Documentation/rv: Add deterministic automaton documentation
...
Add documentation about deterministic automaton and its possible
representations (formal, graphic, .dot and C).
Link: https://lkml.kernel.org/r/387edaed87630bd5eb37c4275045dfd229700aa6.1659052063.git.bristot@kernel.org
Cc: Wim Van Sebroeck <wim@linux-watchdog.org >
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Will Deacon <will@kernel.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Marco Elver <elver@google.com >
Cc: Dmitry Vyukov <dvyukov@google.com >
Cc: "Paul E. McKenney" <paulmck@kernel.org >
Cc: Shuah Khan <skhan@linuxfoundation.org >
Cc: Gabriele Paoloni <gpaoloni@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-07-30 14:01:29 -04:00
Daniel Bristot de Oliveira
ff0aaf6712
Documentation/rv: Add a basic documentation
...
Add the runtime-verification.rst document, explaining the basics of RV
and how to use the interface.
Link: https://lkml.kernel.org/r/4be7d1a88ab1e2eb0767521e1ab52a149a154bc4.1659052063.git.bristot@kernel.org
Cc: Wim Van Sebroeck <wim@linux-watchdog.org >
Cc: Guenter Roeck <linux@roeck-us.net >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Ingo Molnar <mingo@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Will Deacon <will@kernel.org >
Cc: Catalin Marinas <catalin.marinas@arm.com >
Cc: Marco Elver <elver@google.com >
Cc: Dmitry Vyukov <dvyukov@google.com >
Cc: "Paul E. McKenney" <paulmck@kernel.org >
Cc: Shuah Khan <skhan@linuxfoundation.org >
Cc: Gabriele Paoloni <gpaoloni@redhat.com >
Cc: Juri Lelli <juri.lelli@redhat.com >
Cc: Clark Williams <williams@redhat.com >
Cc: Tao Zhou <tao.zhou@linux.dev >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org >
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org >
2022-07-30 14:01:29 -04:00