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 |