Big thanks for testing this so early Charles =) It's nice to get this report before I broke things more widely!
On Fri, Jan 04, 2019 at 11:32:07AM +0000, Charles Keepax wrote: > On Fri, Jan 04, 2019 at 11:14:43AM +0000, Charles Keepax wrote: > > On Fri, Jan 04, 2019 at 12:31:15PM +0200, Matti Vaittinen wrote: > > > + if (num_type_reg) > > > + d->irq_chip.irq_set_type = regmap_irq_set_type; > > > + > > > > Afraid this also causes regressions at my end, still having a bit > > of a look but it looks like some how this prevents properties of the > > IRQ getting passed along which causes my system to not probe > > properly with: > > > > genirq: Flags mismatch irq 58. 00002088 (cs35l35) vs. 00002088 (cs35l35) > > cs35l35 0-0041: Failed to request IRQ: -16 > > > > My case is a shared IRQ with 2 amps (cs35l35) connected to a CODEC > (wm8280). > > So looks like the issue is if you don't have a set_type callback > then the IRQ ends up as IRQF_TRIGGER_NONE, which causes the > second IRQ to fail the middle check here in __setup_irq: > > if (!((old->flags & new->flags) & IRQF_SHARED) || > (oldtype != (new->flags & IRQF_TRIGGER_MASK)) || > ((old->flags ^ new->flags) & IRQF_ONESHOT)) { Right. Thanks for pinpointing the issue. This thing is a bit fishy. There should not be a need for a 'fake type setting callback' when we have shared IRQ with two or more devices who actually agree on IRQ type - assuming the HW default irq type is correct. For me the correct thing would that the HW default type should be stored in desc and returned by irqd_get_trigger_type instead of IRQF_TRIGGER_NONE. But I have no idea how that would be nicely implemented w/o going trough all the irqchips. The other option would be being more permissive when IRQF_TRIGGER_NONE is set as oldtype. But I am not feeling like an expert on this area. > Kinda inclined to just leave the fix as currently submitted and > just drop this patch? But I can do more testing etc. if we want > to push further down this road. Huge thanks for the offer Charles - I do really appreciate the testing. Touching the IRQ core sounds quite scary to me. Changing it feels risky and would probably involve bunch of other people too. 10-years ago I would have taken the challenge and tried to get this "correct" - but nowadays I have learned to accept some small shortcuts :p I will gladly follow things and participate the discussions/development if someone wants to see how this should be done - but I don't think I have the energy and time to drive this change further... So Mark, please just drop this patch and keep the original fix unless you want to drive this further yourself =) Br, Matti Vaittinen > > Thanks, > Charles -- Matti Vaittinen ROHM Semiconductors ~~~ "I don't think so," said Rene Descartes. Just then, he vanished ~~~