.. | .. |
---|
29 | 29 | { |
---|
30 | 30 | unsigned long flags; |
---|
31 | 31 | |
---|
32 | | - spin_lock_irqsave(&x->wait.lock, flags); |
---|
| 32 | + raw_spin_lock_irqsave(&x->wait.lock, flags); |
---|
33 | 33 | |
---|
34 | 34 | if (x->done != UINT_MAX) |
---|
35 | 35 | x->done++; |
---|
36 | | - __wake_up_locked(&x->wait, TASK_NORMAL, 1); |
---|
37 | | - spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
| 36 | + swake_up_locked(&x->wait); |
---|
| 37 | + raw_spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
38 | 38 | } |
---|
39 | 39 | EXPORT_SYMBOL(complete); |
---|
40 | 40 | |
---|
.. | .. |
---|
58 | 58 | { |
---|
59 | 59 | unsigned long flags; |
---|
60 | 60 | |
---|
61 | | - spin_lock_irqsave(&x->wait.lock, flags); |
---|
| 61 | + lockdep_assert_RT_in_threaded_ctx(); |
---|
| 62 | + |
---|
| 63 | + raw_spin_lock_irqsave(&x->wait.lock, flags); |
---|
62 | 64 | x->done = UINT_MAX; |
---|
63 | | - __wake_up_locked(&x->wait, TASK_NORMAL, 0); |
---|
64 | | - spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
| 65 | + swake_up_all_locked(&x->wait); |
---|
| 66 | + raw_spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
65 | 67 | } |
---|
66 | 68 | EXPORT_SYMBOL(complete_all); |
---|
67 | 69 | |
---|
.. | .. |
---|
70 | 72 | long (*action)(long), long timeout, int state) |
---|
71 | 73 | { |
---|
72 | 74 | if (!x->done) { |
---|
73 | | - DECLARE_WAITQUEUE(wait, current); |
---|
| 75 | + DECLARE_SWAITQUEUE(wait); |
---|
74 | 76 | |
---|
75 | | - __add_wait_queue_entry_tail_exclusive(&x->wait, &wait); |
---|
76 | 77 | do { |
---|
77 | 78 | if (signal_pending_state(state, current)) { |
---|
78 | 79 | timeout = -ERESTARTSYS; |
---|
79 | 80 | break; |
---|
80 | 81 | } |
---|
| 82 | + __prepare_to_swait(&x->wait, &wait); |
---|
81 | 83 | __set_current_state(state); |
---|
82 | | - spin_unlock_irq(&x->wait.lock); |
---|
| 84 | + raw_spin_unlock_irq(&x->wait.lock); |
---|
83 | 85 | timeout = action(timeout); |
---|
84 | | - spin_lock_irq(&x->wait.lock); |
---|
| 86 | + raw_spin_lock_irq(&x->wait.lock); |
---|
85 | 87 | } while (!x->done && timeout); |
---|
86 | | - __remove_wait_queue(&x->wait, &wait); |
---|
| 88 | + __finish_swait(&x->wait, &wait); |
---|
87 | 89 | if (!x->done) |
---|
88 | 90 | return timeout; |
---|
89 | 91 | } |
---|
.. | .. |
---|
100 | 102 | |
---|
101 | 103 | complete_acquire(x); |
---|
102 | 104 | |
---|
103 | | - spin_lock_irq(&x->wait.lock); |
---|
| 105 | + raw_spin_lock_irq(&x->wait.lock); |
---|
104 | 106 | timeout = do_wait_for_common(x, action, timeout, state); |
---|
105 | | - spin_unlock_irq(&x->wait.lock); |
---|
| 107 | + raw_spin_unlock_irq(&x->wait.lock); |
---|
106 | 108 | |
---|
107 | 109 | complete_release(x); |
---|
108 | 110 | |
---|
.. | .. |
---|
291 | 293 | if (!READ_ONCE(x->done)) |
---|
292 | 294 | return false; |
---|
293 | 295 | |
---|
294 | | - spin_lock_irqsave(&x->wait.lock, flags); |
---|
| 296 | + raw_spin_lock_irqsave(&x->wait.lock, flags); |
---|
295 | 297 | if (!x->done) |
---|
296 | 298 | ret = false; |
---|
297 | 299 | else if (x->done != UINT_MAX) |
---|
298 | 300 | x->done--; |
---|
299 | | - spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
| 301 | + raw_spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
300 | 302 | return ret; |
---|
301 | 303 | } |
---|
302 | 304 | EXPORT_SYMBOL(try_wait_for_completion); |
---|
.. | .. |
---|
322 | 324 | * otherwise we can end up freeing the completion before complete() |
---|
323 | 325 | * is done referencing it. |
---|
324 | 326 | */ |
---|
325 | | - spin_lock_irqsave(&x->wait.lock, flags); |
---|
326 | | - spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
| 327 | + raw_spin_lock_irqsave(&x->wait.lock, flags); |
---|
| 328 | + raw_spin_unlock_irqrestore(&x->wait.lock, flags); |
---|
327 | 329 | return true; |
---|
328 | 330 | } |
---|
329 | 331 | EXPORT_SYMBOL(completion_done); |
---|