Hi! > > Except for the in-irq count hack I'm happy with this. I still haven't found > > where the in-hard-irq count is set to 1 in the down path during suspend or > > resume and other platforms do similar things so I'm inclined to leave this. > > Um, ok, so the hack breaks platforms that don't have paca, e.g. chrp32. > > Also, I finally figured out how the in-hard-irq count happens. The thing > is that when I try to turn off the CPU it actually doesn't really turn > off of course, so it ends up doing NAP and taking timer interrupts... > which goes irq_enter() and we happen to kill it afterwards. > > I have two ways of fixing this: > - just ignore it as we do now > - insert a "if (cpu_dead) return" into the timer interrupt function > > I prefer the latter because then we're guaranteed that whatever the > timer interrupt does we don't modify any state for/by the CPU that isn't > supposed to exist. Can you disable timer interrupt on the interrupt controller, instead? Provides same functionality, and needs no runtime overhead... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html