diff options
Diffstat (limited to 'Documentation/lockdep-design.txt')
-rw-r--r-- | Documentation/lockdep-design.txt | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Documentation/lockdep-design.txt b/Documentation/lockdep-design.txt index 00d93605bfd3..55a7e4fa8cc2 100644 --- a/Documentation/lockdep-design.txt +++ b/Documentation/lockdep-design.txt | |||
@@ -36,6 +36,28 @@ The validator tracks lock-class usage history into 5 separate state bits: | |||
36 | 36 | ||
37 | - 'ever used' [ == !unused ] | 37 | - 'ever used' [ == !unused ] |
38 | 38 | ||
39 | When locking rules are violated, these 4 state bits are presented in the | ||
40 | locking error messages, inside curlies. A contrived example: | ||
41 | |||
42 | modprobe/2287 is trying to acquire lock: | ||
43 | (&sio_locks[i].lock){--..}, at: [<c02867fd>] mutex_lock+0x21/0x24 | ||
44 | |||
45 | but task is already holding lock: | ||
46 | (&sio_locks[i].lock){--..}, at: [<c02867fd>] mutex_lock+0x21/0x24 | ||
47 | |||
48 | |||
49 | The bit position indicates hardirq, softirq, hardirq-read, | ||
50 | softirq-read respectively, and the character displayed in each | ||
51 | indicates: | ||
52 | |||
53 | '.' acquired while irqs enabled | ||
54 | '+' acquired in irq context | ||
55 | '-' acquired in process context with irqs disabled | ||
56 | '?' read-acquired both with irqs enabled and in irq context | ||
57 | |||
58 | Unused mutexes cannot be part of the cause of an error. | ||
59 | |||
60 | |||
39 | Single-lock state rules: | 61 | Single-lock state rules: |
40 | ------------------------ | 62 | ------------------------ |
41 | 63 | ||