ARM: tegra: pm: hold cpus unti all have booted when exiting lp2
authorColin Cross <ccross@android.com>
Wed, 24 Aug 2011 02:26:33 +0000 (19:26 -0700)
committerDan Willemsen <dwillemsen@nvidia.com>
Thu, 1 Dec 2011 05:37:12 +0000 (21:37 -0800)
commit13907ab639918deee8b05080cfccee504dfbe567
tree680f56819afc208440d6a4c2277141efaee4f30f
parented2d4e788a7f6d8719cf04be1b5259d47492d9a4
ARM: tegra: pm: hold cpus unti all have booted when exiting lp2

When exiting lp2, each cpu boots through cpu_resume, which
modifies the last used page table to add a 1-1 mapping in
order to turn on the mmu.  The first cpu to boot triggers
booting the second cpu, and if allowed to continue immediately
may start executing a userspace task that is using the same
page tables as the second cpu is modifying during its boot
process.  Hold each cpu in a loop until all cpus have
finished booting to ensure page tables are back to their
original state.  Each cpu triggers a global tlb flush
after it restores the page table, so all cpus will see the
original values before they exit idle.

Change-Id: Iad91ae57e2abbbec3d6d491460c3e19411b519c0
Signed-off-by: Colin Cross <ccross@android.com>
arch/arm/mach-tegra/pm.c