Damien Zammit, le dim. 01 oct. 2023 23:26:02 +0000, a ecrit: > I think the logic for this should be: > > When we get irq N, first we mask irq N, then EOI irq N. > Then call the handler. If there is a user handler for irq N, let the irq_ack > unmask irq N, otherwise we need to unmask irq N now. > But don't EOI in the user handlers anymore. > > What do you think?
That can be a plan, yes, but what about the legacy irqs, and their in-kernel handlers? We need to fix them too. One keypoint there is that we want to unmask with IF cleared, so that we don't get interrupted again on unmask, but on iret (so we don't nest). Also, if there is no user handler, I guess we rather want to keep the irq masked? Otherwise we risk just getting interrupted again -> hang or cpu waste. Also, "don't EOI in the user handlers anymore.", isn't that already the case? Samuel