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) | |||
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 | ||