On Fri, Oct 12, 2012 at 1:30 AM, Shawn Guo <shawn.guo@xxxxxxxxxx> wrote: > On Fri, Oct 12, 2012 at 04:24:24PM +0800, Joseph Lo wrote: >> On Fri, 2012-10-12 at 15:54 +0800, Shawn Guo wrote: >> > On Thu, Oct 11, 2012 at 09:48:45AM -0700, Colin Cross wrote: >> > > As is, coupled cpuidle will work on Tegra30, but it will unnecessarily >> > > wake up the secondary cpus during the transitions to off and back on >> > > again. Those cpus will immediately go back to single-cpu LP2, >> > >> > I'm sure coupled cpuidle will work like that. We have the following >> > code at the end of cpuidle_enter_state_coupled() to wait until all >> > coupled cpus have exited idle. >> > >> > while (!cpuidle_coupled_no_cpus_ready(coupled)) >> > cpu_relax(); >> > >> > The cpu woken up during the transitions will just loop there until all >> > other 3 cpus exit from idle function. >> > >> >> Did this a good idea if the CPU was been woken up from an interrupt but >> it still needed to wait all other CPUs been woken up then it could >> handle the interrupt? >> > This is how coupled cpuidle gets implemented right now. And that's > why I see RCU stall warning reported on that cpu when I tried coupled > cpuidle on imx6q (CA9 Quad). Current coupled cpuidle requires all cpus to wake up together and go back to the idle governor to select a new state, because that's what all available ARM cpus did when I wrote it. You should be able to implement coupled idle on a cpu that does not need to wake all the cpus if you wake them anyways, and then later you can optimize it to avoid the extra wakeups when the extension to coupled cpuidle that I discussed previously gets implemented. -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html