On Tue, Feb 15, 2011 at 2:50 AM, Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> wrote: > On Mon, Feb 14, 2011 at 08:11:23PM -0800, Colin Cross wrote: >> Even with a cache flush, cpu_resume_turn_on_mmu fails because the page >> table modification, done with the cache off, ends up in memory, but >> the L2 contains the old value. When the MMU and cache are enabled, >> the 1:1 mapping disappears. The page table would need to be >> invalidated during suspend. >> >> I can avoid the problem entirely by leaving the MMU on and skipping >> cpu_resume when the CPU does not go through reset. > > If you're not losing CPU state, what's the point in calling the suspend > function? It's purpose is to save CPU state ready for the CPU going to > sleep and losing power, and restoring that state when the CPU wakes up > sometime later. The CPU is going to a state where it may lose power (if the other CPU enters the same state), or it may get an interrupt before the other CPU powers down and wake back up again. In the second case, it has already called cpu_suspend, so it either needs to return without calling cpu_resume (which I have working), or cpu_suspend/cpu_resume needs to work with the L2 cache enabled. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html