]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Aug 2012 18:09:26 +0000 (11:09 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Aug 2012 18:09:26 +0000 (11:09 -0700)
added patches:
arm-imx6-spin-the-cpu-until-hardware-takes-it-down.patch
arm-imx-select-cpu_freq_table-when-needed.patch

queue-3.4/arm-imx-select-cpu_freq_table-when-needed.patch [new file with mode: 0644]
queue-3.4/arm-imx6-spin-the-cpu-until-hardware-takes-it-down.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/arm-imx-select-cpu_freq_table-when-needed.patch b/queue-3.4/arm-imx-select-cpu_freq_table-when-needed.patch
new file mode 100644 (file)
index 0000000..0f55a81
--- /dev/null
@@ -0,0 +1,46 @@
+From f637c4c9405e21f44cf0045eaf77eddd3a79ca5a Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 16 Aug 2012 10:40:40 +0000
+Subject: ARM: imx: select CPU_FREQ_TABLE when needed
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit f637c4c9405e21f44cf0045eaf77eddd3a79ca5a upstream.
+
+The i.MX cpufreq implementation uses the CPU_FREQ_TABLE helpers,
+so it needs to select that code to be built. This problem has
+apparently existed since the i.MX cpufreq code was first merged
+in v2.6.37.
+
+Building IMX without CPU_FREQ_TABLE results in:
+
+arch/arm/plat-mxc/built-in.o: In function `mxc_cpufreq_exit':
+arch/arm/plat-mxc/cpufreq.c:173: undefined reference to `cpufreq_frequency_table_put_attr'
+arch/arm/plat-mxc/built-in.o: In function `mxc_set_target':
+arch/arm/plat-mxc/cpufreq.c:84: undefined reference to `cpufreq_frequency_table_target'
+arch/arm/plat-mxc/built-in.o: In function `mxc_verify_speed':
+arch/arm/plat-mxc/cpufreq.c:65: undefined reference to `cpufreq_frequency_table_verify'
+arch/arm/plat-mxc/built-in.o: In function `mxc_cpufreq_init':
+arch/arm/plat-mxc/cpufreq.c:154: undefined reference to `cpufreq_frequency_table_cpuinfo'
+arch/arm/plat-mxc/cpufreq.c:162: undefined reference to `cpufreq_frequency_table_get_attr'
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: Shawn Guo <shawn.guo@linaro.org>
+Cc: Sascha Hauer <s.hauer@pengutronix.de>
+Cc: Yong Shen <yong.shen@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -2113,6 +2113,7 @@ source "drivers/cpufreq/Kconfig"
+ config CPU_FREQ_IMX
+       tristate "CPUfreq driver for i.MX CPUs"
+       depends on ARCH_MXC && CPU_FREQ
++      select CPU_FREQ_TABLE
+       help
+         This enables the CPUfreq driver for i.MX CPUs.
diff --git a/queue-3.4/arm-imx6-spin-the-cpu-until-hardware-takes-it-down.patch b/queue-3.4/arm-imx6-spin-the-cpu-until-hardware-takes-it-down.patch
new file mode 100644 (file)
index 0000000..856c372
--- /dev/null
@@ -0,0 +1,68 @@
+From c944b0b9354ea06ffb0c8a7178949f1185f9f499 Mon Sep 17 00:00:00 2001
+From: Shawn Guo <shawn.guo@linaro.org>
+Date: Sat, 18 Aug 2012 14:27:32 +0800
+Subject: ARM: imx6: spin the cpu until hardware takes it down
+
+From: Shawn Guo <shawn.guo@linaro.org>
+
+commit c944b0b9354ea06ffb0c8a7178949f1185f9f499 upstream.
+
+Though commit 602bf40 (ARM: imx6: exit coherency when shutting down
+a cpu) improves the stability of imx6q cpu hotplug a lot, there are
+still hangs seen with a more stressful hotplug testing.
+
+It's expected that once imx_enable_cpu(cpu, false) is called, the cpu
+will be taken down by hardware immediately, and the code after that
+will not get any chance to execute.  However, this is not always the
+case from the testing.  The cpu could possibly be alive for a few
+cycles before hardware actually takes it down.  So rather than letting
+cpu execute some code that could cause a hang in these cycles, let's
+make the cpu spin there and wait for hardware to take it down.
+
+Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mach-imx/hotplug.c |   23 +++--------------------
+ 1 file changed, 3 insertions(+), 20 deletions(-)
+
+--- a/arch/arm/mach-imx/hotplug.c
++++ b/arch/arm/mach-imx/hotplug.c
+@@ -42,22 +42,6 @@ static inline void cpu_enter_lowpower(vo
+         : "cc");
+ }
+-static inline void cpu_leave_lowpower(void)
+-{
+-      unsigned int v;
+-
+-      asm volatile(
+-              "mrc    p15, 0, %0, c1, c0, 0\n"
+-      "       orr     %0, %0, %1\n"
+-      "       mcr     p15, 0, %0, c1, c0, 0\n"
+-      "       mrc     p15, 0, %0, c1, c0, 1\n"
+-      "       orr     %0, %0, %2\n"
+-      "       mcr     p15, 0, %0, c1, c0, 1\n"
+-        : "=&r" (v)
+-        : "Ir" (CR_C), "Ir" (0x40)
+-        : "cc");
+-}
+-
+ /*
+  * platform-specific code to shutdown a CPU
+  *
+@@ -67,11 +51,10 @@ void platform_cpu_die(unsigned int cpu)
+ {
+       cpu_enter_lowpower();
+       imx_enable_cpu(cpu, false);
+-      cpu_do_idle();
+-      cpu_leave_lowpower();
+-      /* We should never return from idle */
+-      panic("cpu %d unexpectedly exit from shutdown\n", cpu);
++      /* spin here until hardware takes it down */
++      while (1)
++              ;
+ }
+ int platform_cpu_disable(unsigned int cpu)
index 000d1c7c7d0b718376d5d26fd44f45a665effb88..4d29a8cd4174f7d04a1f95ab56d3a4fd3f25a29f 100644 (file)
@@ -10,3 +10,5 @@ arm-s3c24xx-add-missing-dmach_dt_prop.patch
 arm-s3c24xx-fix-s3c2410_dma_enqueue-parameters.patch
 revert-dma-imx-dma-fix-kernel-crash-due-to-missing-clock-conversion.patch
 xen-setup-fix-one-off-error-when-adding-for-balloon-pfns-to-the-p2m.patch
+arm-imx6-spin-the-cpu-until-hardware-takes-it-down.patch
+arm-imx-select-cpu_freq_table-when-needed.patch