From 730ad7abaabdf13abea84cd3d16d66d01fe5a9cf Mon Sep 17 00:00:00 2001 From: Steve Muckle Date: Tue, 21 Feb 2012 15:26:37 -0800 Subject: [PATCH] msm: pm: clean msm_pm_pc_pgd in the cache after writing Since a CPU will read the msm_pm_pc_pgd value as it comes up from power collapse when caches are disabled, it needs to be guaranteed that the value has been written to memory before any CPU power collapses. Change-Id: I7f6358a001255f9bac99a6378532c96fd460f82b Signed-off-by: Steve Muckle --- arch/arm/mach-msm/pm-8x60.c | 2 ++ arch/arm/mach-msm/pm2.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/arm/mach-msm/pm-8x60.c b/arch/arm/mach-msm/pm-8x60.c index 5274e8b5b97..b0fbebb3d69 100644 --- a/arch/arm/mach-msm/pm-8x60.c +++ b/arch/arm/mach-msm/pm-8x60.c @@ -1202,6 +1202,8 @@ static int __init msm_pm_init(void) pmd[2] = __pmd(pmdval + (2 << (PGDIR_SHIFT - 1))); flush_pmd_entry(pmd); msm_pm_pc_pgd = virt_to_phys(pc_pgd); + clean_caches((unsigned long)&msm_pm_pc_pgd, sizeof(msm_pm_pc_pgd), + virt_to_phys(&msm_pm_pc_pgd)); ret = request_irq(rpm_cpu0_wakeup_irq, msm_pm_rpm_wakeup_interrupt, IRQF_TRIGGER_RISING, diff --git a/arch/arm/mach-msm/pm2.c b/arch/arm/mach-msm/pm2.c index 58f2075aa8b..d87d70f142a 100644 --- a/arch/arm/mach-msm/pm2.c +++ b/arch/arm/mach-msm/pm2.c @@ -1899,6 +1899,8 @@ static int __init msm_pm_init(void) pmd[2] = __pmd(pmdval + (2 << (PGDIR_SHIFT - 1))); flush_pmd_entry(pmd); msm_pm_pc_pgd = virt_to_phys(pc_pgd); + clean_caches((unsigned long)&msm_pm_pc_pgd, sizeof(msm_pm_pc_pgd), + virt_to_phys(&msm_pm_pc_pgd)); #endif pm_power_off = msm_pm_power_off;