Accounting the unused irq in order to count it if irq flood.
Signed-off-by: Pingfan Liu <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Jisheng Zhang <[email protected]>
Cc: "Peter Zijlstra (Intel)" <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: "Guilherme G. Piccoli" <[email protected]>
Cc: Petr Mladek <[email protected]>
Cc: [email protected]
To: [email protected]
---
arch/x86/kernel/irq.c | 1 +
include/linux/kernel_stat.h | 1 +
2 files changed, 2 insertions(+)
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index c5dd503..6f583a7 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -254,6 +254,7 @@ DEFINE_IDTENTRY_IRQ(common_interrupt)
pr_emerg_ratelimited("%s: %d.%u No irq handler for
vector\n",
__func__, smp_processor_id(),
vector);
+ __this_cpu_inc(kstat.unused_irqs_sum);
} else {
__this_cpu_write(vector_irq[vector], VECTOR_UNUSED);
}
diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h
index 89f0745..c8d5cb8 100644
--- a/include/linux/kernel_stat.h
+++ b/include/linux/kernel_stat.h
@@ -37,6 +37,7 @@ struct kernel_cpustat {
struct kernel_stat {
unsigned long irqs_sum;
+ unsigned long unused_irqs_sum;
unsigned int softirqs[NR_SOFTIRQS];
};
--
2.7.5