On Mon, Aug 9, 2021 at 12:47 PM Viresh Kumar via Stratos-dev <stratos-dev@xxxxxxxxxxxxxxxxxxx> wrote: > > On 09-08-21, 09:55, Arnd Bergmann wrote: > > Ah, right. There is already a flag that gets checked by the caller. > > > > It does feel odd to have an empty 'irq_mask' callback though, so > > maybe there is still something missing, just not what I thought. > > > > It's probably the result of calling handle_level_irq(), which as you > > said is closer to what we want, but is not exactly what we need for > > this protocol. > > Okay, I have tried to take care of locking as well now and used local > flags only to make sure I can depend on them to get the locking > working properly. Lets see what's broken in this now :) I don't see anything wrong with this version, but let's see what Marc thinks. I expect that he can still poke some holes in it, or at least find some simplifications. 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. Arnd