summaryrefslogtreecommitdiffstats
path: root/kernel/irq/manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r--kernel/irq/manage.c8
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)
927 927
928 local_bh_disable(); 928 local_bh_disable();
929 ret = action->thread_fn(action->irq, action->dev_id); 929 ret = action->thread_fn(action->irq, action->dev_id);
930 if (ret == IRQ_HANDLED)
931 atomic_inc(&desc->threads_handled);
932
930 irq_finalize_oneshot(desc, action); 933 irq_finalize_oneshot(desc, action);
931 local_bh_enable(); 934 local_bh_enable();
932 return ret; 935 return ret;
@@ -943,6 +946,9 @@ static irqreturn_t irq_thread_fn(struct irq_desc *desc,
943 irqreturn_t ret; 946 irqreturn_t ret;
944 947
945 ret = action->thread_fn(action->irq, action->dev_id); 948 ret = action->thread_fn(action->irq, action->dev_id);
949 if (ret == IRQ_HANDLED)
950 atomic_inc(&desc->threads_handled);
951
946 irq_finalize_oneshot(desc, action); 952 irq_finalize_oneshot(desc, action);
947 return ret; 953 return ret;
948} 954}
@@ -1020,8 +1026,6 @@ static int irq_thread(void *data)
1020 irq_thread_check_affinity(desc, action); 1026 irq_thread_check_affinity(desc, action);
1021 1027
1022 action_ret = handler_fn(desc, action); 1028 action_ret = handler_fn(desc, action);
1023 if (action_ret == IRQ_HANDLED)
1024 atomic_inc(&desc->threads_handled);
1025 if (action_ret == IRQ_WAKE_THREAD) 1029 if (action_ret == IRQ_WAKE_THREAD)
1026 irq_wake_secondary(desc, action); 1030 irq_wake_secondary(desc, action);
1027 1031