mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
genirq: Move irq_thread_fn() further up in the code
In a preparation to reuse irq_thread_fn() move it further up in the code. No functional change intended. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/all/20241119104339.2112455-2-andriy.shevchenko@linux.intel.com
This commit is contained in:
parent
e70140ba0d
commit
6f8b79683d
@ -1181,14 +1181,29 @@ out_unlock:
|
|||||||
chip_bus_sync_unlock(desc);
|
chip_bus_sync_unlock(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Interrupts explicitly requested as threaded interrupts want to be
|
||||||
|
* preemptible - many of them need to sleep and wait for slow busses to
|
||||||
|
* complete.
|
||||||
|
*/
|
||||||
|
static irqreturn_t irq_thread_fn(struct irq_desc *desc, struct irqaction *action)
|
||||||
|
{
|
||||||
|
irqreturn_t ret = action->thread_fn(action->irq, action->dev_id);
|
||||||
|
|
||||||
|
if (ret == IRQ_HANDLED)
|
||||||
|
atomic_inc(&desc->threads_handled);
|
||||||
|
|
||||||
|
irq_finalize_oneshot(desc, action);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interrupts which are not explicitly requested as threaded
|
* Interrupts which are not explicitly requested as threaded
|
||||||
* interrupts rely on the implicit bh/preempt disable of the hard irq
|
* interrupts rely on the implicit bh/preempt disable of the hard irq
|
||||||
* context. So we need to disable bh here to avoid deadlocks and other
|
* context. So we need to disable bh here to avoid deadlocks and other
|
||||||
* side effects.
|
* side effects.
|
||||||
*/
|
*/
|
||||||
static irqreturn_t
|
static irqreturn_t irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action)
|
||||||
irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action)
|
|
||||||
{
|
{
|
||||||
irqreturn_t ret;
|
irqreturn_t ret;
|
||||||
|
|
||||||
@ -1206,24 +1221,6 @@ irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Interrupts explicitly requested as threaded interrupts want to be
|
|
||||||
* preemptible - many of them need to sleep and wait for slow busses to
|
|
||||||
* complete.
|
|
||||||
*/
|
|
||||||
static irqreturn_t irq_thread_fn(struct irq_desc *desc,
|
|
||||||
struct irqaction *action)
|
|
||||||
{
|
|
||||||
irqreturn_t ret;
|
|
||||||
|
|
||||||
ret = action->thread_fn(action->irq, action->dev_id);
|
|
||||||
if (ret == IRQ_HANDLED)
|
|
||||||
atomic_inc(&desc->threads_handled);
|
|
||||||
|
|
||||||
irq_finalize_oneshot(desc, action);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void wake_threads_waitq(struct irq_desc *desc)
|
void wake_threads_waitq(struct irq_desc *desc)
|
||||||
{
|
{
|
||||||
if (atomic_dec_and_test(&desc->threads_active))
|
if (atomic_dec_and_test(&desc->threads_active))
|
||||||
|
Loading…
Reference in New Issue
Block a user