gpio: mlxbf2: Use generic_handle_irq_safe()
On PREEMPT_RT enabled kernels the demultiplex interrupt handler is force threaded and runs with interrupts enabled. The invocation of generic_handle_irq() with interrupts enabled triggers a lockdep warning due to a non-irq safe lock acquisition. Instead of disabling interrupts on the driver level, use generic_handle_domain_irq_safe(). [ tglx: Split out from combo patch ] Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/YnkfWFzvusFFktSt@linutronix.de
This commit is contained in:
parent
c6a91405ac
commit
118c3ba24d
|
@ -273,10 +273,8 @@ static irqreturn_t mlxbf2_gpio_irq_handler(int irq, void *ptr)
|
|||
pending = readl(gs->gpio_io + YU_GPIO_CAUSE_OR_CAUSE_EVTEN0);
|
||||
writel(pending, gs->gpio_io + YU_GPIO_CAUSE_OR_CLRCAUSE);
|
||||
|
||||
for_each_set_bit(level, &pending, gc->ngpio) {
|
||||
int gpio_irq = irq_find_mapping(gc->irq.domain, level);
|
||||
generic_handle_irq(gpio_irq);
|
||||
}
|
||||
for_each_set_bit(level, &pending, gc->ngpio)
|
||||
generic_handle_domain_irq_safe(gc->irq.domain, level);
|
||||
|
||||
return IRQ_RETVAL(pending);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue