Rev 2183 | Rev 3059 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2183 | Rev 2211 | ||
|---|---|---|---|
| Line 81... | Line 81... | ||
| 81 | 81 | ||
| 82 | preemption_disable(); |
82 | preemption_disable(); |
| 83 | while (test_and_set(&sl->val)) { |
83 | while (test_and_set(&sl->val)) { |
| 84 | 84 | ||
| 85 | /* |
85 | /* |
| 86 | * We need to be careful about printflock and fb_lock. |
86 | * We need to be careful about printf_lock and fb_lock. |
| 87 | * Both of them are used to report deadlocks via |
87 | * Both of them are used to report deadlocks via |
| 88 | * printf() and fb_putchar(). |
88 | * printf() and fb_putchar(). |
| 89 | * |
89 | * |
| 90 | * We trust our code that there is no possible deadlock |
90 | * We trust our code that there is no possible deadlock |
| 91 | * caused by these two locks (except when an exception |
91 | * caused by these two locks (except when an exception |
| 92 | * is triggered for instance by printf() or fb_putchar()). |
92 | * is triggered for instance by printf() or fb_putchar()). |
| 93 | * However, we encountered false positives caused by very |
93 | * However, we encountered false positives caused by very |
| 94 | * slow VESA framebuffer interaction (especially when |
94 | * slow VESA framebuffer interaction (especially when |
| 95 | * run in a simulator) that caused problems with both |
95 | * run in a simulator) that caused problems with both |
| 96 | * printflock and fb_lock. |
96 | * printf_lock and fb_lock. |
| 97 | * |
97 | * |
| 98 | * Possible deadlocks on both printflock and fb_lock |
98 | * Possible deadlocks on both printf_lock and fb_lock |
| 99 | * are therefore not reported as they would cause an |
99 | * are therefore not reported as they would cause an |
| 100 | * infinite recursion. |
100 | * infinite recursion. |
| 101 | */ |
101 | */ |
| 102 | if (sl == &printflock) |
102 | if (sl == &printf_lock) |
| 103 | continue; |
103 | continue; |
| 104 | #ifdef CONFIG_FB |
104 | #ifdef CONFIG_FB |
| 105 | if (sl == &fb_lock) |
105 | if (sl == &fb_lock) |
| 106 | continue; |
106 | continue; |
| 107 | #endif |
107 | #endif |