genirq: Add preflow handler support
sparc64 needs to call a preflow handler on certain interrupts befor calling the action chain. Integrate it into handle_fasteoi_irq. Must be enabled via CONFIG_IRQ_FASTEOI_PREFLOW. No impact when disabled. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: David S. Miller <davem@davemloft.net>
このコミットが含まれているのは:
@@ -35,6 +35,9 @@ config AUTO_IRQ_AFFINITY
|
||||
config HARDIRQS_SW_RESEND
|
||||
def_bool n
|
||||
|
||||
config IRQ_PREFLOW_FASTEOI
|
||||
def_bool n
|
||||
|
||||
config SPARSE_IRQ
|
||||
bool "Support sparse irq numbering"
|
||||
depends on HAVE_SPARSE_IRQ
|
||||
|
@@ -471,6 +471,16 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(handle_level_irq);
|
||||
|
||||
#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
|
||||
static inline void preflow_handler(struct irq_desc *desc)
|
||||
{
|
||||
if (desc->preflow_handler)
|
||||
desc->preflow_handler(&desc->irq_data);
|
||||
}
|
||||
#else
|
||||
static inline void preflow_handler(struct irq_desc *desc) { }
|
||||
#endif
|
||||
|
||||
/**
|
||||
* handle_fasteoi_irq - irq handler for transparent controllers
|
||||
* @irq: the interrupt number
|
||||
@@ -503,6 +513,7 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
|
||||
mask_irq(desc);
|
||||
goto out;
|
||||
}
|
||||
preflow_handler(desc);
|
||||
handle_irq_event(desc);
|
||||
out:
|
||||
desc->irq_data.chip->irq_eoi(&desc->irq_data);
|
||||
|
新しいイシューから参照
ユーザーをブロックする