Hi Guys, The 1st patch implements one simple EWMA based mechanism for detecting IRQ flood.
The 2nd patch adds IRQF_RESCUE_THREAD, and interrupts will be handled in the created rescue thread in case that IRQ flood comes. The 3rd patch applies the flag of IRQF_RESCURE_THREAD for NVMe. The last patch uses irq's affinity in case of IRQF_RESCUE_THREAD. Please review & comment! Long, please test and see if your issue can be fixed. Ming Lei (4): softirq: implement IRQ flood detection mechanism genirq: add IRQF_RESCUE_THREAD nvme: pci: pass IRQF_RESCURE_THREAD to request_threaded_irq genirq: use irq's affinity for threaded irq with IRQF_RESCUE_THREAD drivers/base/cpu.c | 25 +++++++++++++++++++++ drivers/nvme/host/pci.c | 17 +++++++++++++-- include/linux/hardirq.h | 2 ++ include/linux/interrupt.h | 6 +++++ kernel/irq/handle.c | 6 ++++- kernel/irq/manage.c | 25 ++++++++++++++++++++- kernel/softirq.c | 46 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 123 insertions(+), 4 deletions(-) Cc: Long Li <[email protected]> Cc: Ingo Molnar <[email protected]>, Cc: Peter Zijlstra <[email protected]> Cc: Keith Busch <[email protected]> Cc: Jens Axboe <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Sagi Grimberg <[email protected]> Cc: John Garry <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Hannes Reinecke <[email protected]> Cc: [email protected] Cc: [email protected] -- 2.20.1

