Rev 2131 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2131 | Rev 2307 | ||
|---|---|---|---|
| Line 334... | Line 334... | ||
| 334 | spinlock_lock(&box->irq_lock); |
334 | spinlock_lock(&box->irq_lock); |
| 335 | 335 | ||
| 336 | while (box->irq_head.next != &box->irq_head) { |
336 | while (box->irq_head.next != &box->irq_head) { |
| 337 | link_t *cur = box->irq_head.next; |
337 | link_t *cur = box->irq_head.next; |
| 338 | irq_t *irq; |
338 | irq_t *irq; |
| - | 339 | DEADLOCK_PROBE_INIT(p_irqlock); |
|
| 339 | 340 | ||
| 340 | irq = list_get_instance(cur, irq_t, notif_cfg.link); |
341 | irq = list_get_instance(cur, irq_t, notif_cfg.link); |
| 341 | if (!spinlock_trylock(&irq->lock)) { |
342 | if (!spinlock_trylock(&irq->lock)) { |
| 342 | /* |
343 | /* |
| 343 | * Avoid deadlock by trying again. |
344 | * Avoid deadlock by trying again. |
| 344 | */ |
345 | */ |
| 345 | spinlock_unlock(&box->irq_lock); |
346 | spinlock_unlock(&box->irq_lock); |
| 346 | interrupts_restore(ipl); |
347 | interrupts_restore(ipl); |
| - | 348 | DEADLOCK_PROBE(p_irqlock, DEADLOCK_THRESHOLD); |
|
| 347 | goto loop; |
349 | goto loop; |
| 348 | } |
350 | } |
| 349 | 351 | ||
| 350 | ASSERT(irq->notif_cfg.answerbox == box); |
352 | ASSERT(irq->notif_cfg.answerbox == box); |
| 351 | 353 | ||