On Sat, 13 Feb 2021, Song Bao Hua (Barry Song) wrote:
So what is really confusing and a pain to me is that: For years people like me have been writing device drivers with the idea that irq handlers run with interrupts disabled after those commits in genirq. So I don't need to care about if some other IRQs on the same cpu will jump out to access the data the current IRQ handler is accessing. but it turns out the assumption is not true on some platform. So should I start to program devices driver with the new idea interrupts can actually come while irqhandler is running? That's the question which really bothers me.
That scenario seems a little contrived to me (drivers for two or more devices sharing state through their interrupt handlers). Is it real? I suppose every platform has its quirks. The irq lock in sonic_interrupt() is only there because of a platform quirk (the same device can trigger either of two IRQs). Anyway, no-one expects all drivers to work on all platforms; I don't know why it bothers you so much when platforms differ.