Issue was found on ARM/Qcom platform, but I think it is applicable to other platforms as well. I add a BUG_ON after rcu_enter_idle to catch it. The Qcom's cpuidle driver is not in mainline kernel yet. On Mon, Nov 23, 2015 at 5:05 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > On Sat, Nov 21, 2015 at 01:02:02AM -0800, Lianwei Wang wrote: >> The rcu_idle_endter may call wakeup_softirqd to set the need resched >> flag on idle process. But if we don't check it after that, then the >> cpu will enter idle state with RESCHED flag set and can not be woken >> up by wakeup/resched call anymore. > > Fair enough; but which cpuidle driver did you observe that with? All the > ones I checked test for need_resched again after this.