genirq: Remove the irq argument from note_interrupt()
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>
This commit is contained in:
Родитель
c1e5bd8cc5
Коммит
0dcdbc9755
|
@ -487,8 +487,7 @@ extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Handling of unhandled and spurious interrupts: */
|
/* Handling of unhandled and spurious interrupts: */
|
||||||
extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
|
extern void note_interrupt(struct irq_desc *desc, irqreturn_t action_ret);
|
||||||
irqreturn_t action_ret);
|
|
||||||
|
|
||||||
|
|
||||||
/* Enable/disable irq debugging output: */
|
/* Enable/disable irq debugging output: */
|
||||||
|
|
|
@ -328,7 +328,7 @@ void handle_nested_irq(unsigned int irq)
|
||||||
|
|
||||||
action_ret = action->thread_fn(action->irq, action->dev_id);
|
action_ret = action->thread_fn(action->irq, action->dev_id);
|
||||||
if (!noirqdebug)
|
if (!noirqdebug)
|
||||||
note_interrupt(irq, desc, action_ret);
|
note_interrupt(desc, action_ret);
|
||||||
|
|
||||||
raw_spin_lock_irq(&desc->lock);
|
raw_spin_lock_irq(&desc->lock);
|
||||||
irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS);
|
irqd_clear(&desc->irq_data, IRQD_IRQ_INPROGRESS);
|
||||||
|
|
|
@ -176,7 +176,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action)
|
||||||
add_interrupt_randomness(irq, flags);
|
add_interrupt_randomness(irq, flags);
|
||||||
|
|
||||||
if (!noirqdebug)
|
if (!noirqdebug)
|
||||||
note_interrupt(irq, desc, retval);
|
note_interrupt(desc, retval);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -270,9 +270,10 @@ try_misrouted_irq(unsigned int irq, struct irq_desc *desc,
|
||||||
|
|
||||||
#define SPURIOUS_DEFERRED 0x80000000
|
#define SPURIOUS_DEFERRED 0x80000000
|
||||||
|
|
||||||
void note_interrupt(unsigned int irq, struct irq_desc *desc,
|
void note_interrupt(struct irq_desc *desc, irqreturn_t action_ret)
|
||||||
irqreturn_t action_ret)
|
|
||||||
{
|
{
|
||||||
|
unsigned int irq;
|
||||||
|
|
||||||
if (desc->istate & IRQS_POLL_INPROGRESS ||
|
if (desc->istate & IRQS_POLL_INPROGRESS ||
|
||||||
irq_settings_is_polled(desc))
|
irq_settings_is_polled(desc))
|
||||||
return;
|
return;
|
||||||
|
@ -396,6 +397,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc,
|
||||||
desc->last_unhandled = jiffies;
|
desc->last_unhandled = jiffies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
irq = irq_desc_get_irq(desc);
|
||||||
if (unlikely(try_misrouted_irq(irq, desc, action_ret))) {
|
if (unlikely(try_misrouted_irq(irq, desc, action_ret))) {
|
||||||
int ok = misrouted_irq(irq);
|
int ok = misrouted_irq(irq);
|
||||||
if (action_ret == IRQ_NONE)
|
if (action_ret == IRQ_NONE)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче