diff options
Diffstat (limited to 'kernel/irq/manage.c')
| -rw-r--r-- | kernel/irq/manage.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index fb86146037a7..9dbdccab3b6a 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -927,6 +927,9 @@ irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action)  	local_bh_disable();  	ret = action->thread_fn(action->irq, action->dev_id); +	if (ret == IRQ_HANDLED) +		atomic_inc(&desc->threads_handled); +  	irq_finalize_oneshot(desc, action);  	local_bh_enable();  	return ret; @@ -943,6 +946,9 @@ static irqreturn_t irq_thread_fn(struct irq_desc *desc,  	irqreturn_t ret;  	ret = action->thread_fn(action->irq, action->dev_id); +	if (ret == IRQ_HANDLED) +		atomic_inc(&desc->threads_handled); +  	irq_finalize_oneshot(desc, action);  	return ret;  } @@ -1020,8 +1026,6 @@ static int irq_thread(void *data)  		irq_thread_check_affinity(desc, action);  		action_ret = handler_fn(desc, action); -		if (action_ret == IRQ_HANDLED) -			atomic_inc(&desc->threads_handled);  		if (action_ret == IRQ_WAKE_THREAD)  			irq_wake_secondary(desc, action);  |