4 - Name: wip - wakeup in preemptive
5 - Type: per-cpu deterministic automaton
6 - Author: Daniel Bristot de Oliveira <bristot@kernel.org>
11 The wakeup in preemptive (wip) monitor is a sample per-cpu monitor
12 that verifies if the wakeup events always take place with
20 #==================# |
22 | preempt_disable | preempt_enable
24 sched_waking +------------------+ |
25 +--------------- | | |
26 | | non_preemptive | |
27 +--------------> | | -+
30 The wakeup event always takes place with preemption disabled because
31 of the scheduler synchronization. However, because the preempt_count
32 and its trace event are not atomic with regard to interrupts, some
33 inconsistencies might happen. For example::
36 __preempt_count_add(1)
37 -------> smp_apic_timer_interrupt() {
39 do not trace (preempt count >= 1)
44 do not trace (preempt count >= 1)
47 trace_preempt_disable();
50 This problem was reported and discussed here:
51 https://lore.kernel.org/r/cover.1559051152.git.bristot@redhat.com/
55 Grapviz Dot file in tools/verification/models/wip.dot