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 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>
35 lines
1.5 KiB
Text
35 lines
1.5 KiB
Text
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";
|
|
}
|
|
}
|