]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00278941-1: arm: imx: Fix suspend/resume unstable issue
authorAnson Huang <b20788@freescale.com>
Tue, 10 Sep 2013 20:22:20 +0000 (16:22 -0400)
committerJason Liu <r64343@freescale.com>
Wed, 30 Oct 2013 01:55:42 +0000 (09:55 +0800)
As we need to float DDR IO when entering DSM, so those registers
we need to access after DDR IO is floated must be contained in TLB,
otherwise, the TLB update may case DDR access and lead to
system hang. To make sure these registers' address is in TLB,
we need to flush TLB first then access them manually.

Signed-off-by: Anson Huang <b20788@freescale.com>
arch/arm/mach-imx/pm-imx6.c

index dc638a5339483730b3432f11414515bef90b769b..1efe20c5f27d1b9473b4ac9016690c1e18e78755 100644 (file)
@@ -25,6 +25,7 @@
 #include <asm/fncpy.h>
 #include <asm/proc-fns.h>
 #include <asm/suspend.h>
+#include <asm/tlb.h>
 #include <asm/hardware/cache-l2x0.h>
 #include <asm/mach/map.h>
 
@@ -212,6 +213,7 @@ static int imx6_suspend_finish(unsigned long val)
         * call low level suspend function in iram,
         * as we need to float DDR IO.
         */
+       local_flush_tlb_all();
        suspend_in_iram_fn(suspend_iram_base, iram_paddr, cpu_type);
        return 0;
 }