Hi,
quoted
+ /* it seems to be possible that we died from within
+ * an interrupt ... reset the in-irq counts */
+ task_thread_info(paca[cpu].__current)->preempt_count &=
+ ~(SOFTIRQ_MASK|HARDIRQ_MASK);
+
cpu_idle();
return 0;
This is quite a nasty hack. Are you sure?
I've seen similar weirdness on pc, and it was caused by
swsusp-copying-code using FPU and incrementing preempt_count...
I know. I'm not really happy with it. But I can't figure out where the
hardirq count can be incremented. The preempt count is fine (well, in my
latest patchset, this one forgot one spot), but the hard irq count is
not. Which is really strange because we only use that for actual in-irq
stuff...
johannes