On 09-08-21, 13:19, Arnd Bergmann wrote:
I don't see anything wrong with this version,
Great.
but let's see what Marc thinks. I expect that he can still poke some holes in it, or at least find some simplifications.
Right, though I may resend the patches properly first to make it less confusing.
I was slightly surprised at the relation between the disabled and masked states, where 'disable' always implies 'mask' and 'enable' always implies 'unmask', but I don't actually know how those two are actually defined in the irqchip code in Linux, so I assume you did this correctly.
I did have a look at the irq-core, but didn't go in real depth. I rather saw how stuff happens at the driver's end.
- On setup-irq, the core only calls enable() and not unmask(). - On interrupt, the core calls mask(), followed by unmask() (which can be delayed for threaded irqs). - On disable_irq(), the core only calls disable(). - On enable_irq(), the core only calls enable().
And so I ended up at this version :)