diff options
author | Keith Busch <keith.busch@intel.com> | 2016-06-17 16:00:20 -0600 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-06-18 10:00:55 +0200 |
commit | edd14cfebc4404698544d407ecf8eda6e19aa19e (patch) | |
tree | c8e821937f59152ba61129fdcfda0d52416302f8 /include | |
parent | 21c57fd135894f69ba2b8acc715ca81e90eeba15 (diff) | |
download | linux-stable-edd14cfebc4404698544d407ecf8eda6e19aa19e.tar.gz linux-stable-edd14cfebc4404698544d407ecf8eda6e19aa19e.tar.bz2 linux-stable-edd14cfebc4404698544d407ecf8eda6e19aa19e.zip |
genirq: Add untracked irq handler
This adds a software irq handler for controllers that multiplex
interrupts from multiple devices, but don't know which device generated
the interrupt. For these devices, the irq handler that demuxes must
check every action for every software irq using the same h/w irq in order
to find out which device generated the interrupt. This will inevitably
trigger spurious interrupt detection if we are noting the irq.
The new irq handler does not track the handling for spurious interrupt
detection. An irq that uses this also won't get stats tracked since it
didn't generate the interrupt, nor added to randomness since they are
not random.
Signed-off-by: Keith Busch <keith.busch@intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
Cc: Jon Derrick <jonathan.derrick@intel.com>
Link: http://lkml.kernel.org/r/1466200821-29159-1-git-send-email-keith.busch@intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/irq.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 6c92a847394d..562cef010aa8 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -484,6 +484,7 @@ extern void handle_fasteoi_irq(struct irq_desc *desc); extern void handle_edge_irq(struct irq_desc *desc); extern void handle_edge_eoi_irq(struct irq_desc *desc); extern void handle_simple_irq(struct irq_desc *desc); +extern void handle_untracked_irq(struct irq_desc *desc); extern void handle_percpu_irq(struct irq_desc *desc); extern void handle_percpu_devid_irq(struct irq_desc *desc); extern void handle_bad_irq(struct irq_desc *desc); |