On Thu, 30 Sep 2021 14:59:24 +0100, Daniel Palmer <daniel@xxxxxxxx> wrote: > > Hi Marc, > > On Thu, 30 Sept 2021 at 22:53, Marc Zyngier <maz@xxxxxxxxxx> wrote: > > Somehow, the handler for this interrupt is set to handle_bad_irq(), > > which probably isn't what you want. You'll have to find out who sets > > this (there is a comment about that in gpiolib.c, but I haven't had a > > chance to find where this is coming from). > > > > Do you happen to set it in your driver? > > The gpio driver (gpio-msc313.c) sets it during probe: > > gpioirqchip = &gpiochip->irq; > gpioirqchip->chip = &msc313_gpio_irqchip; > gpioirqchip->fwnode = of_node_to_fwnode(dev->of_node); > gpioirqchip->parent_domain = parent_domain; > gpioirqchip->child_to_parent_hwirq = match_data->child_to_parent_hwirq; > gpioirqchip->populate_parent_alloc_arg = match_data->populate_parent_fwspec; > gpioirqchip->handler = handle_bad_irq; > gpioirqchip->default_type = IRQ_TYPE_NONE; Right. I have no idea why this is a requirement, and I would normally set it to whatever is the normal flow handler on this HW, but this looks like the GPIO subsystem has some expectations here. I'll let Linus comment on it. M. -- Without deviation from the norm, progress is not possible.