Thread (43 messages) 43 messages, 7 authors, 2012-02-09
STALE5346d

[PATCH 16/16] ARM: omap: disable cpuidle for OMAP3 platforms

From: Russell King - ARM Linux <hidden>
Date: 2012-02-08 22:59:23
Also in: linux-omap

On Wed, Feb 08, 2012 at 10:59:06AM -0800, Tony Lindgren wrote:
* Russell King - ARM Linux [off-list ref] [120208 08:10]:
quoted
Commit 2fd149645eb4 (ARM: OMAP2+: UART: Remove omap_uart_can_sleep and add pm_qos)
has caused a regression on OMAP3 platforms.

When the UART is trying to transmit data, if we enter a low power mode,
transmission stops, which makes serial on OMAP3 unusable - a 'dmesg'
takes five minutes to be output at 115200 baud, at a rate of around a
block of 16 characters every couple of seconds.

Unfortunately, the commit above can't be reverted because of many other
changes in this area, so this implements a dirty fix by disabling
CPU idle in the places the original commit does, irrespective of the
UART state.
...
quoted
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -421,7 +421,7 @@ static void omap3_pm_idle(void)
 	local_irq_disable();
 	local_fiq_disable();
 
-	if (omap_irq_pending() || need_resched())
+	if (omap_irq_pending() || need_resched() || 1)
 		goto out;
 
 	trace_power_start(POWER_CSTATE, 1, smp_processor_id());
Argh, this is just too ugly. There has got to be a better fix for the
-rc series.
That I'd agree on - because it is ugly and it's the best I could do
to revert the commit mentioned above short of reverting a whole raft
of other useful looking commits.

There's got to be a better solution.
Looks like the patches to fix omap-serial.c are queued for v3.4,
so that won't help.
Well, the fact of the matter is this is a regression, which means it
needs fixing for v3.3.  A simple patch would be preferred over more
complex patches.

So, if there's no other solution but to put the omap-serial patches
in for v3.3, then that's the best solution for v3.3.  First, someone
who understands this code needs to see whether there is a simpler
fix (eg, putting back what was there in a simpler form.)

However, leaving it in its current state for v3.3 is not acceptable.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help