ARM: pm: only use preallocated page table during resume

Only use the preallocated page table during the resume, not while
suspending.  This avoids the overhead of having to switch unnecessarily
to the resume page table in the suspend path.

Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Tested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
Russell King
2011-08-27 22:39:09 +01:00
orang tua e8ce0eb5e2
melakukan de8e71ca4f
9 mengubah file dengan 99 tambahan dan 99 penghapusan

Melihat File

@@ -24,14 +24,17 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
return -EINVAL;
/*
* Temporarily switch the page tables to our suspend page
* tables, which contain the temporary identity mapping
* required for resuming.
* Provide a temporary page table with an identity mapping for
* the MMU-enable code, required for resuming. On successful
* resume (indicated by a zero return code), we need to switch
* back to the correct page tables.
*/
cpu_switch_mm(suspend_pgd, mm);
ret = __cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, arg, fn);
cpu_switch_mm(mm->pgd, mm);
local_flush_tlb_all();
ret = __cpu_suspend(virt_to_phys(suspend_pgd),
PHYS_OFFSET - PAGE_OFFSET, arg, fn);
if (ret == 0) {
cpu_switch_mm(mm->pgd, mm);
local_flush_tlb_all();
}
return ret;
}