| .. | .. |
|---|
| 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); |
|---|