mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 07:47:50 +00:00
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>
This commit is contained in:
committed by
Steven Rostedt (Google)
parent
e8440a88e5
commit
614384533d
35
tools/verification/models/sched/opid.dot
Normal file
35
tools/verification/models/sched/opid.dot
Normal file
@@ -0,0 +1,35 @@
|
||||
digraph state_automaton {
|
||||
center = true;
|
||||
size = "7,11";
|
||||
{node [shape = plaintext, style=invis, label=""] "__init_disabled"};
|
||||
{node [shape = circle] "disabled"};
|
||||
{node [shape = doublecircle] "enabled"};
|
||||
{node [shape = circle] "enabled"};
|
||||
{node [shape = circle] "in_irq"};
|
||||
{node [shape = circle] "irq_disabled"};
|
||||
{node [shape = circle] "preempt_disabled"};
|
||||
"__init_disabled" -> "disabled";
|
||||
"disabled" [label = "disabled"];
|
||||
"disabled" -> "disabled" [ label = "sched_need_resched\nsched_waking\nirq_entry" ];
|
||||
"disabled" -> "irq_disabled" [ label = "preempt_enable" ];
|
||||
"disabled" -> "preempt_disabled" [ label = "irq_enable" ];
|
||||
"enabled" [label = "enabled", color = green3];
|
||||
"enabled" -> "enabled" [ label = "preempt_enable" ];
|
||||
"enabled" -> "irq_disabled" [ label = "irq_disable" ];
|
||||
"enabled" -> "preempt_disabled" [ label = "preempt_disable" ];
|
||||
"in_irq" [label = "in_irq"];
|
||||
"in_irq" -> "enabled" [ label = "irq_enable" ];
|
||||
"in_irq" -> "in_irq" [ label = "sched_need_resched\nsched_waking\nirq_entry" ];
|
||||
"irq_disabled" [label = "irq_disabled"];
|
||||
"irq_disabled" -> "disabled" [ label = "preempt_disable" ];
|
||||
"irq_disabled" -> "enabled" [ label = "irq_enable" ];
|
||||
"irq_disabled" -> "in_irq" [ label = "irq_entry" ];
|
||||
"irq_disabled" -> "irq_disabled" [ label = "sched_need_resched" ];
|
||||
"preempt_disabled" [label = "preempt_disabled"];
|
||||
"preempt_disabled" -> "disabled" [ label = "irq_disable" ];
|
||||
"preempt_disabled" -> "enabled" [ label = "preempt_enable" ];
|
||||
{ rank = min ;
|
||||
"__init_disabled";
|
||||
"disabled";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user