On Wed, 2012-02-15 at 16:00 +0000, Russell King - ARM Linux wrote:
A third possibility is to self-IPI and take it from there.. assuming these platforms can actually self-IPI.
Even if there was an IPI (not talking about SMP anyway) I'm not sure what good it would be. We can (and do) get an IRQ from the LCD controller when its shutdown is complete, but that would have to be somehow propagated back up to the cpufreq code. And the cpufreq code would have to know that the LCD controller was alive and therefore had to be waited for. All sounds rather yucky to me.
If can self-ipi from the scheduler context (which has IRQs disabled), once you get to the ipi handler your scheduler locks are gone and you can queue a worklet or wake some kthread to do all the sleeping stuff.