← Back to team overview

linaro-pm-wg team mailing list archive

[Bug 1171253] Re: exynos5 : cpu_suspend for cpuidle broken

 

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.

-- 
You received this bug notification because you are a member of Linaro
Power Management Working Group, which is subscribed to Linaro PMWG
Kernel.
https://bugs.launchpad.net/bugs/1171253

Title:
  exynos5 : cpu_suspend for cpuidle broken

Status in Kernel related development for Power Management Working Group:
  New

Bug description:
  When the cpu exits the AFTR state after the cpu_suspend. The kernel
  hangs.

  How to reproduce ?

  set cpu1 offline:

  echo 0 > /sys/devices/system/cpu/cpu1/online

  Wait awhile the cpu0 enters the state1 then => hang !

To manage notifications about this bug go to:
https://bugs.launchpad.net/linaro-power-kernel/+bug/1171253/+subscriptions


References