Comment 1 for bug 1171253

Revision history for this message
Chander Mohan Kashyap (chander-kashyap) wrote :

It has two reasons:
1: flush_cache_all has been replaced by flush_cache_louis in "suspend.c". This is not working on exynos5250. So when cpu0 enters cpuidle it hangs.
Fix: The fix for this is to call flush_cache_all in "cpuidle.c".
diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c
index fcfe025..a70b53a 100644
--- a/arch/arm/mach-exynos/cpuidle.c
+++ b/arch/arm/mach-exynos/cpuidle.c
@@ -21,6 +21,7 @@
 #include <asm/suspend.h>
 #include <asm/unified.h>
 #include <asm/cpuidle.h>
+#include <asm/cacheflush.h>
 #include <mach/regs-clock.h>
 #include <mach/regs-pmu.h>

@@ -89,6 +90,8 @@ static void restore_cpu_arch_register(void)

 static int idle_finisher(unsigned long flags)
 {
+ if (soc_is_exynos5250())
+ flush_cache_all();
        cpu_do_idle();
        return 1;
 }

2: u-boot in arndaleboard with ubuntu package is booting cpu in HYP mode. so while coming out of cpuidle cpu0 in not in HYP mode or some other misbehaviour.
Fix: use mainline u-boot which is not booting cpu in HYP mode.
As of now diden't found solution to fix cpuidle with cpus in HYP mode.