|
@@ -623,8 +623,9 @@ static irqreturn_t irq_nested_primary_handler(int irq, void *dev_id)
|
|
|
|
|
|
static int irq_wait_for_interrupt(struct irqaction *action)
|
|
|
{
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
+
|
|
|
while (!kthread_should_stop()) {
|
|
|
- set_current_state(TASK_INTERRUPTIBLE);
|
|
|
|
|
|
if (test_and_clear_bit(IRQTF_RUNTHREAD,
|
|
|
&action->thread_flags)) {
|
|
@@ -632,7 +633,9 @@ static int irq_wait_for_interrupt(struct irqaction *action)
|
|
|
return 0;
|
|
|
}
|
|
|
schedule();
|
|
|
+ set_current_state(TASK_INTERRUPTIBLE);
|
|
|
}
|
|
|
+ __set_current_state(TASK_RUNNING);
|
|
|
return -1;
|
|
|
}
|
|
|
|