On 11/08/16 16:32, John Stultz wrote: > On Thu, Aug 11, 2016 at 5:46 AM, Marc Zyngier <marc.zyng...@arm.com> wrote: > >> Nailed the sucker: >> >> diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c >> index b4c1bc7..9d7284a 100644 >> --- a/kernel/irq/chip.c >> +++ b/kernel/irq/chip.c >> @@ -820,6 +820,18 @@ __irq_do_set_handler(struct irq_desc *desc, >> irq_flow_handler_t handle, >> desc->name = name; >> >> if (handle != handle_bad_irq && is_chained) { >> + int ret; >> + >> + ret = __irq_set_trigger(desc, >> + >> irqd_get_trigger_type(&desc->irq_data)); >> + WARN_ON(ret); >> + /* >> + * This is beyond ugly: .set_type may have overridden >> + * the flow, not not knowing that we're dealing with a >> + * chained handler. Reset it here because we know >> + * better. >> + */ >> + desc->handle_irq = handle; >> irq_settings_set_noprobe(desc); >> irq_settings_set_norequest(desc); >> irq_settings_set_nothread(desc); >> >> Linus, Jon: Can you please confirm this fixes your respective issues? > > Yep. That works for me! > > Tested-by: John Stultz <john.stu...@linaro.org> > > Thanks so much for hunting this down!
Thanks for the report and the testing! I'll post the final patch shortly. tglx being away for a couple of weeks, it may take some time before this hits mainline though. M. -- Jazz is not dead. It just smells funny...