All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <5375091D.3010607@ti.com>

diff --git a/a/1.txt b/N1/1.txt
index acf9845..48e2b86 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -145,3 +145,11 @@ index 01fc710..2498ab0 100644
  }
 -- 
 1.7.9.5
+
+-------------- next part --------------
+A non-text attachment was scrubbed...
+Name: 0001-ARM-OMAP4-Fix-the-boot-regression-with-CPU_IDLE-enab.patch
+Type: text/x-diff
+Size: 4450 bytes
+Desc: not available
+URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140515/2fa821ee/attachment-0001.bin>
diff --git a/a/2.hdr b/a/2.hdr
deleted file mode 100644
index 6a30481..0000000
--- a/a/2.hdr
+++ /dev/null
@@ -1,6 +0,0 @@
-Content-Type: text/x-diff;
-	name="0001-ARM-OMAP4-Fix-the-boot-regression-with-CPU_IDLE-enab.patch"
-Content-Transfer-Encoding: 7bit
-Content-Disposition: attachment;
-	filename*0="0001-ARM-OMAP4-Fix-the-boot-regression-with-CPU_IDLE-enab.pa";
-	filename*1="tch"
diff --git a/a/2.txt b/a/2.txt
deleted file mode 100644
index 4c781a0..0000000
--- a/a/2.txt
+++ /dev/null
@@ -1,117 +0,0 @@
->From bb3b82cc5645b83bedf1343d03cc956f27f6fc83 Mon Sep 17 00:00:00 2001
-From: Santosh Shilimkar <santosh.shilimkar@ti.com>
-Date: Mon, 12 May 2014 17:37:59 -0400
-Subject: [PATCH] ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled
-
-On OMAP4 panda board, there have been several bug reports about boot
-hang and lock-ups with CPU_IDLE enabled. The root cause of the issue
-is missing interrupts while in idle state. Commit cb7094e8 {cpuidle / omap4 :
-use CPUIDLE_FLAG_TIMER_STOP flag} moved the broadcast notifiers to common
-code for right reasons but on OMAP4 which suffers from a nasty ROM code
-bug with GIC, commit ff999b8a {ARM: OMAP4460: Workaround for ROM bug ..},
-we loose interrupts which leads to issues like lock-up, hangs etc.
-
-Patch reverts commit cb7094 {cpuidle / omap4 : use CPUIDLE_FLAG_TIMER_STOP
-flag} and 54769d6 {cpuidle: OMAP4: remove timer broadcast initialization} to
-avoid the issue. With this change, OMAP4 panda boards, the mentioned
-issues are getting fixed. We no longer loose interrupts which was the cause
-of the regression.
-
-Cc: Roger Quadros <rogerq@ti.com>
-Cc: Kevin Hilman <khilman@linaro.org>
-Cc: Tony Lindgren <tony@atomide.com>
-Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
-Reported-tested-by: Roger Quadros <rogerq@ti.com>
-Reported-tested-by: Kevin Hilman <khilman@linaro.org>
-Tested-by: Tony Lindgren <tony@atomide.com>
-Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
----
- arch/arm/mach-omap2/cpuidle44xx.c |   25 +++++++++++++++++++++----
- 1 file changed, 21 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c
-index 01fc710..2498ab0 100644
---- a/arch/arm/mach-omap2/cpuidle44xx.c
-+++ b/arch/arm/mach-omap2/cpuidle44xx.c
-@@ -14,6 +14,7 @@
- #include <linux/cpuidle.h>
- #include <linux/cpu_pm.h>
- #include <linux/export.h>
-+#include <linux/clockchips.h>
- 
- #include <asm/cpuidle.h>
- #include <asm/proc-fns.h>
-@@ -83,6 +84,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
- {
- 	struct idle_statedata *cx = state_ptr + index;
- 	u32 mpuss_can_lose_context = 0;
-+	int cpu_id = smp_processor_id();
- 
- 	/*
- 	 * CPU0 has to wait and stay ON until CPU1 is OFF state.
-@@ -110,6 +112,8 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
- 	mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&
- 				 (cx->mpu_logic_state == PWRDM_POWER_OFF);
- 
-+	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu_id);
-+
- 	/*
- 	 * Call idle CPU PM enter notifier chain so that
- 	 * VFP and per CPU interrupt context is saved.
-@@ -165,6 +169,8 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
- 	if (dev->cpu == 0 && mpuss_can_lose_context)
- 		cpu_cluster_pm_exit();
- 
-+	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu_id);
-+
- fail:
- 	cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
- 	cpu_done[dev->cpu] = false;
-@@ -172,6 +178,16 @@ fail:
- 	return index;
- }
- 
-+/*
-+ * For each cpu, setup the broadcast timer because local timers
-+ * stops for the states above C1.
-+ */
-+static void omap_setup_broadcast_timer(void *arg)
-+{
-+	int cpu = smp_processor_id();
-+	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ON, &cpu);
-+}
-+
- static struct cpuidle_driver omap4_idle_driver = {
- 	.name				= "omap4_idle",
- 	.owner				= THIS_MODULE,
-@@ -189,8 +205,7 @@ static struct cpuidle_driver omap4_idle_driver = {
- 			/* C2 - CPU0 OFF + CPU1 OFF + MPU CSWR */
- 			.exit_latency = 328 + 440,
- 			.target_residency = 960,
--			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED |
--			         CPUIDLE_FLAG_TIMER_STOP,
-+			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED,
- 			.enter = omap_enter_idle_coupled,
- 			.name = "C2",
- 			.desc = "CPUx OFF, MPUSS CSWR",
-@@ -199,8 +214,7 @@ static struct cpuidle_driver omap4_idle_driver = {
- 			/* C3 - CPU0 OFF + CPU1 OFF + MPU OSWR */
- 			.exit_latency = 460 + 518,
- 			.target_residency = 1100,
--			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED |
--			         CPUIDLE_FLAG_TIMER_STOP,
-+			.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED,
- 			.enter = omap_enter_idle_coupled,
- 			.name = "C3",
- 			.desc = "CPUx OFF, MPUSS OSWR",
-@@ -231,5 +245,8 @@ int __init omap4_idle_init(void)
- 	if (!cpu_clkdm[0] || !cpu_clkdm[1])
- 		return -ENODEV;
- 
-+	/* Configure the broadcast timer on each cpu */
-+	on_each_cpu(omap_setup_broadcast_timer, NULL, 1);
-+
- 	return cpuidle_register(&omap4_idle_driver, cpu_online_mask);
- }
--- 
-1.7.9.5
diff --git a/a/content_digest b/N1/content_digest
index 561b494..e176f1a 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -7,19 +7,11 @@
  "ref\053748371.5030704@linaro.org\0"
  "ref\05374C07C.1070400@linaro.org\0"
  "ref\020140515183247.GF23659@atomide.com\0"
- "From\0Santosh Shilimkar <santosh.shilimkar@ti.com>\0"
- "Subject\0Re: RCU stall on panda\0"
+ "From\0santosh.shilimkar@ti.com (Santosh Shilimkar)\0"
+ "Subject\0RCU stall on panda\0"
  "Date\0Thu, 15 May 2014 14:36:13 -0400\0"
- "To\0Tony Lindgren <tony@atomide.com>"
- " Alex Shi <alex.shi@linaro.org>\0"
- "Cc\0Daniel Lezcano <daniel.lezcano@linaro.org>"
-  Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-  naresh.kamboju@linaro.org Kamboju <naresh.kamboju@linaro.org>
-  Linaro Kernel <linaro-kernel@lists.linaro.org>
-  LAK <linux-arm-kernel@lists.infradead.org>
-  Mark Brown <broonie@linaro.org>
- " linux-omap@vger.kernel.org\0"
- "\01:1\0"
+ "To\0linux-arm-kernel@lists.infradead.org\0"
+ "\00:1\0"
  "b\0"
  "On Thursday 15 May 2014 02:32 PM, Tony Lindgren wrote:\n"
  "> * Alex Shi <alex.shi@linaro.org> [140515 06:27]:\n"
@@ -167,126 +159,14 @@
  " \treturn cpuidle_register(&omap4_idle_driver, cpu_online_mask);\n"
  " }\n"
  "-- \n"
- 1.7.9.5
- "\01:2\0"
- "fn\00001-ARM-OMAP4-Fix-the-boot-regression-with-CPU_IDLE-enab.patch\0"
- "b\0"
- ">From bb3b82cc5645b83bedf1343d03cc956f27f6fc83 Mon Sep 17 00:00:00 2001\n"
- "From: Santosh Shilimkar <santosh.shilimkar@ti.com>\n"
- "Date: Mon, 12 May 2014 17:37:59 -0400\n"
- "Subject: [PATCH] ARM: OMAP4: Fix the boot regression with CPU_IDLE enabled\n"
- "\n"
- "On OMAP4 panda board, there have been several bug reports about boot\n"
- "hang and lock-ups with CPU_IDLE enabled. The root cause of the issue\n"
- "is missing interrupts while in idle state. Commit cb7094e8 {cpuidle / omap4 :\n"
- "use CPUIDLE_FLAG_TIMER_STOP flag} moved the broadcast notifiers to common\n"
- "code for right reasons but on OMAP4 which suffers from a nasty ROM code\n"
- "bug with GIC, commit ff999b8a {ARM: OMAP4460: Workaround for ROM bug ..},\n"
- "we loose interrupts which leads to issues like lock-up, hangs etc.\n"
- "\n"
- "Patch reverts commit cb7094 {cpuidle / omap4 : use CPUIDLE_FLAG_TIMER_STOP\n"
- "flag} and 54769d6 {cpuidle: OMAP4: remove timer broadcast initialization} to\n"
- "avoid the issue. With this change, OMAP4 panda boards, the mentioned\n"
- "issues are getting fixed. We no longer loose interrupts which was the cause\n"
- "of the regression.\n"
- "\n"
- "Cc: Roger Quadros <rogerq@ti.com>\n"
- "Cc: Kevin Hilman <khilman@linaro.org>\n"
- "Cc: Tony Lindgren <tony@atomide.com>\n"
- "Cc: Daniel Lezcano <daniel.lezcano@linaro.org>\n"
- "Reported-tested-by: Roger Quadros <rogerq@ti.com>\n"
- "Reported-tested-by: Kevin Hilman <khilman@linaro.org>\n"
- "Tested-by: Tony Lindgren <tony@atomide.com>\n"
- "Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>\n"
- "---\n"
- " arch/arm/mach-omap2/cpuidle44xx.c |   25 +++++++++++++++++++++----\n"
- " 1 file changed, 21 insertions(+), 4 deletions(-)\n"
+ "1.7.9.5\n"
  "\n"
- "diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c\n"
- "index 01fc710..2498ab0 100644\n"
- "--- a/arch/arm/mach-omap2/cpuidle44xx.c\n"
- "+++ b/arch/arm/mach-omap2/cpuidle44xx.c\n"
- "@@ -14,6 +14,7 @@\n"
- " #include <linux/cpuidle.h>\n"
- " #include <linux/cpu_pm.h>\n"
- " #include <linux/export.h>\n"
- "+#include <linux/clockchips.h>\n"
- " \n"
- " #include <asm/cpuidle.h>\n"
- " #include <asm/proc-fns.h>\n"
- "@@ -83,6 +84,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,\n"
- " {\n"
- " \tstruct idle_statedata *cx = state_ptr + index;\n"
- " \tu32 mpuss_can_lose_context = 0;\n"
- "+\tint cpu_id = smp_processor_id();\n"
- " \n"
- " \t/*\n"
- " \t * CPU0 has to wait and stay ON until CPU1 is OFF state.\n"
- "@@ -110,6 +112,8 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,\n"
- " \tmpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&\n"
- " \t\t\t\t (cx->mpu_logic_state == PWRDM_POWER_OFF);\n"
- " \n"
- "+\tclockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &cpu_id);\n"
- "+\n"
- " \t/*\n"
- " \t * Call idle CPU PM enter notifier chain so that\n"
- " \t * VFP and per CPU interrupt context is saved.\n"
- "@@ -165,6 +169,8 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,\n"
- " \tif (dev->cpu == 0 && mpuss_can_lose_context)\n"
- " \t\tcpu_cluster_pm_exit();\n"
- " \n"
- "+\tclockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &cpu_id);\n"
- "+\n"
- " fail:\n"
- " \tcpuidle_coupled_parallel_barrier(dev, &abort_barrier);\n"
- " \tcpu_done[dev->cpu] = false;\n"
- "@@ -172,6 +178,16 @@ fail:\n"
- " \treturn index;\n"
- " }\n"
- " \n"
- "+/*\n"
- "+ * For each cpu, setup the broadcast timer because local timers\n"
- "+ * stops for the states above C1.\n"
- "+ */\n"
- "+static void omap_setup_broadcast_timer(void *arg)\n"
- "+{\n"
- "+\tint cpu = smp_processor_id();\n"
- "+\tclockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ON, &cpu);\n"
- "+}\n"
- "+\n"
- " static struct cpuidle_driver omap4_idle_driver = {\n"
- " \t.name\t\t\t\t= \"omap4_idle\",\n"
- " \t.owner\t\t\t\t= THIS_MODULE,\n"
- "@@ -189,8 +205,7 @@ static struct cpuidle_driver omap4_idle_driver = {\n"
- " \t\t\t/* C2 - CPU0 OFF + CPU1 OFF + MPU CSWR */\n"
- " \t\t\t.exit_latency = 328 + 440,\n"
- " \t\t\t.target_residency = 960,\n"
- "-\t\t\t.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED |\n"
- "-\t\t\t         CPUIDLE_FLAG_TIMER_STOP,\n"
- "+\t\t\t.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED,\n"
- " \t\t\t.enter = omap_enter_idle_coupled,\n"
- " \t\t\t.name = \"C2\",\n"
- " \t\t\t.desc = \"CPUx OFF, MPUSS CSWR\",\n"
- "@@ -199,8 +214,7 @@ static struct cpuidle_driver omap4_idle_driver = {\n"
- " \t\t\t/* C3 - CPU0 OFF + CPU1 OFF + MPU OSWR */\n"
- " \t\t\t.exit_latency = 460 + 518,\n"
- " \t\t\t.target_residency = 1100,\n"
- "-\t\t\t.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED |\n"
- "-\t\t\t         CPUIDLE_FLAG_TIMER_STOP,\n"
- "+\t\t\t.flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_COUPLED,\n"
- " \t\t\t.enter = omap_enter_idle_coupled,\n"
- " \t\t\t.name = \"C3\",\n"
- " \t\t\t.desc = \"CPUx OFF, MPUSS OSWR\",\n"
- "@@ -231,5 +245,8 @@ int __init omap4_idle_init(void)\n"
- " \tif (!cpu_clkdm[0] || !cpu_clkdm[1])\n"
- " \t\treturn -ENODEV;\n"
- " \n"
- "+\t/* Configure the broadcast timer on each cpu */\n"
- "+\ton_each_cpu(omap_setup_broadcast_timer, NULL, 1);\n"
- "+\n"
- " \treturn cpuidle_register(&omap4_idle_driver, cpu_online_mask);\n"
- " }\n"
- "-- \n"
- 1.7.9.5
+ "-------------- next part --------------\n"
+ "A non-text attachment was scrubbed...\n"
+ "Name: 0001-ARM-OMAP4-Fix-the-boot-regression-with-CPU_IDLE-enab.patch\n"
+ "Type: text/x-diff\n"
+ "Size: 4450 bytes\n"
+ "Desc: not available\n"
+ URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140515/2fa821ee/attachment-0001.bin>
 
-be7165ac5bc1494b8cf26209840a13a8f8eb0cf216f17ff7581f23f8d9422d4c
+1a074f56080b356b58a94d665303c715bd5f238fffbb8e2879b2adc72fff1ed9

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.