Skip to content

Commit cc4e8c8

Browse files
committed
task: clear interrupt earlier
list_item_for_safe is safe for item deletion, but when a new item is appended to the list. It seems the item could not be go through. To fix this limitation, move interrupt clear to make sure every IRQ is handled. Do not try to handle two task with one IRQ handler. Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
1 parent edef72f commit cc4e8c8

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

  • src/arch/xtensa/include/arch

src/arch/xtensa/include/arch/task.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ static void _irq_task(void *arg)
138138
uint32_t flags;
139139

140140
spin_lock_irq(&irq_task->lock, flags);
141+
142+
interrupt_clear(irq_task->irq);
143+
141144
list_for_item_safe(clist, tlist, &irq_task->list) {
142145

143146
task = container_of(clist, struct task, irq_list);
@@ -152,8 +155,6 @@ static void _irq_task(void *arg)
152155
spin_lock_irq(&irq_task->lock, flags);
153156
}
154157

155-
interrupt_clear(irq_task->irq);
156-
157158
spin_unlock_irq(&irq_task->lock, flags);
158159
}
159160

0 commit comments

Comments
 (0)