genirq: Add IRQ_INPROGRESS to core
We need to maintain the flag for now in both fields status and istate. Add a CONFIG_GENERIC_HARDIRQS_NO_COMPAT switch to allow testing w/o the status one. Wrap the access to status IRQ_INPROGRESS in a inline which can be turned of with CONFIG_GENERIC_HARDIRQS_NO_COMPAT along with the define. There is no reason that anything outside of core looks at this. That needs some modifications, but we'll get there. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
@@ -45,10 +45,10 @@ bool irq_wait_for_poll(struct irq_desc *desc)
|
||||
#ifdef CONFIG_SMP
|
||||
do {
|
||||
raw_spin_unlock(&desc->lock);
|
||||
while (desc->status & IRQ_INPROGRESS)
|
||||
while (desc->istate & IRQS_INPROGRESS)
|
||||
cpu_relax();
|
||||
raw_spin_lock(&desc->lock);
|
||||
} while (desc->status & IRQ_INPROGRESS);
|
||||
} while (desc->istate & IRQS_INPROGRESS);
|
||||
/* Might have been disabled in meantime */
|
||||
return !(desc->status & IRQ_DISABLED) && desc->action;
|
||||
#else
|
||||
@@ -88,7 +88,7 @@ static int try_one_irq(int irq, struct irq_desc *desc, bool force)
|
||||
goto out;
|
||||
|
||||
/* Already running on another processor */
|
||||
if (desc->status & IRQ_INPROGRESS) {
|
||||
if (desc->istate & IRQS_INPROGRESS) {
|
||||
/*
|
||||
* Already running: If it is shared get the other
|
||||
* CPU to go looking for our mystery interrupt too
|
||||
|
Reference in New Issue
Block a user