genirq: Remove the irq argument from note_interrupt()
authorJiang Liu <jiang.liu@linux.intel.com>
Thu, 4 Jun 2015 04:13:28 +0000 (12:13 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Sat, 11 Jul 2015 21:14:25 +0000 (23:14 +0200)
Only required for the slow path. Retrieve it from irq descriptor if
necessary.

[ tglx: Split out from combo patch. Left [try_]misrouted_irq()
   untouched as there is no win in the slow path ]

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Kevin Cernekee <cernekee@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Link: http://lkml.kernel.org/r/1433391238-19471-19-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/irq.h
kernel/irq/chip.c
kernel/irq/handle.c
kernel/irq/spurious.c

index 92188b0225bb31f33eba9deacc4b9b88036c1d8e..429ac266c7c64a6895639048bb9930c5bf019f2f 100644 (file)
@@ -487,8 +487,7 @@ extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data,
 #endif
 
 /* Handling of unhandled and spurious interrupts: */
-extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
-                          irqreturn_t action_ret);
+extern void note_interrupt(struct irq_desc *desc, irqreturn_t action_ret);
 
 
 /* Enable/disable irq debugging output: */
index 310d6588544016c06ed7d2a8e65a68b70b3315d9..76f199dc6a5e38bb5b12e92d5ad14843bfd3b650 100644 (file)
@@ -328,7 +328,7 @@ void handle_nested_irq(unsigned int irq)
 
        action_ret = action->thread_fn(action->irq, action->dev_id);
        if (!noirqdebug)
-               note_interrupt(irq, desc, action_ret);
+               note_interrupt(desc, action_ret);
 
        raw_spin_lock_irq(&desc->lock);
        irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS);
index 4d37b96343e919413e9bc1bdc17eba0452d489db..b6eeea8a80c5bbb7143b41ebcaa6f1132eedc7b4 100644 (file)
@@ -176,7 +176,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
        add_interrupt_randomness(irq, flags);
 
        if (!noirqdebug)
-               note_interrupt(irq, desc, retval);
+               note_interrupt(desc, retval);
        return retval;
 }
 
index 5378c529c1dc01cd0bd97ea1e5ddec6417731164..32144175458d77d39dc65353770aa187818dfe6f 100644 (file)
@@ -270,9 +270,10 @@ try_misrouted_irq(unsigned int irq, struct irq_desc *desc,
 
 #define SPURIOUS_DEFERRED      0x80000000
 
-void note_interrupt(unsigned int irq, struct irq_desc *desc,
-                   irqreturn_t action_ret)
+void note_interrupt(struct irq_desc *desc, irqreturn_t action_ret)
 {
+       unsigned int irq;
+
        if (desc->istate & IRQS_POLL_INPROGRESS ||
            irq_settings_is_polled(desc))
                return;
@@ -396,6 +397,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc,
                desc->last_unhandled = jiffies;
        }
 
+       irq = irq_desc_get_irq(desc);
        if (unlikely(try_misrouted_irq(irq, desc, action_ret))) {
                int ok = misrouted_irq(irq);
                if (action_ret == IRQ_NONE)