~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/trace/rv/monitor_wip.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/trace/rv/monitor_wip.rst (Architecture i386) and /Documentation/trace/rv/monitor_wip.rst (Architecture alpha)


  1 Monitor wip                                         1 Monitor wip
  2 ===========                                         2 ===========
  3                                                     3 
  4 - Name: wip - wakeup in preemptive                  4 - Name: wip - wakeup in preemptive
  5 - Type: per-cpu deterministic automaton             5 - Type: per-cpu deterministic automaton
  6 - Author: Daniel Bristot de Oliveira <bristot@k      6 - Author: Daniel Bristot de Oliveira <bristot@kernel.org>
  7                                                     7 
  8 Description                                         8 Description
  9 -----------                                         9 -----------
 10                                                    10 
 11 The wakeup in preemptive (wip) monitor is a sa     11 The wakeup in preemptive (wip) monitor is a sample per-cpu monitor
 12 that verifies if the wakeup events always take     12 that verifies if the wakeup events always take place with
 13 preemption disabled::                              13 preemption disabled::
 14                                                    14 
 15                      |                             15                      |
 16                      |                             16                      |
 17                      v                             17                      v
 18                    #==================#            18                    #==================#
 19                    H    preemptive    H <+         19                    H    preemptive    H <+
 20                    #==================#  |         20                    #==================#  |
 21                      |                   |         21                      |                   |
 22                      | preempt_disable   | pre     22                      | preempt_disable   | preempt_enable
 23                      v                   |         23                      v                   |
 24     sched_waking   +------------------+  |         24     sched_waking   +------------------+  |
 25   +--------------- |                  |  |         25   +--------------- |                  |  |
 26   |                |  non_preemptive  |  |         26   |                |  non_preemptive  |  |
 27   +--------------> |                  | -+         27   +--------------> |                  | -+
 28                    +------------------+            28                    +------------------+
 29                                                    29 
 30 The wakeup event always takes place with preem     30 The wakeup event always takes place with preemption disabled because
 31 of the scheduler synchronization. However, bec     31 of the scheduler synchronization. However, because the preempt_count
 32 and its trace event are not atomic with regard     32 and its trace event are not atomic with regard to interrupts, some
 33 inconsistencies might happen. For example::        33 inconsistencies might happen. For example::
 34                                                    34 
 35   preempt_disable() {                              35   preempt_disable() {
 36         __preempt_count_add(1)                     36         __preempt_count_add(1)
 37         ------->        smp_apic_timer_interru     37         ------->        smp_apic_timer_interrupt() {
 38                                 preempt_disabl     38                                 preempt_disable()
 39                                         do not     39                                         do not trace (preempt count >= 1)
 40                                                    40 
 41                                 wake up a thre     41                                 wake up a thread
 42                                                    42 
 43                                 preempt_enable     43                                 preempt_enable()
 44                                          do no     44                                          do not trace (preempt count >= 1)
 45                         }                          45                         }
 46         <------                                    46         <------
 47         trace_preempt_disable();                   47         trace_preempt_disable();
 48   }                                                48   }
 49                                                    49 
 50 This problem was reported and discussed here:      50 This problem was reported and discussed here:
 51   https://lore.kernel.org/r/cover.1559051152.g     51   https://lore.kernel.org/r/cover.1559051152.git.bristot@redhat.com/
 52                                                    52 
 53 Specification                                      53 Specification
 54 -------------                                      54 -------------
 55 Grapviz Dot file in tools/verification/models/     55 Grapviz Dot file in tools/verification/models/wip.dot
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php