Thread (2 messages) 2 messages, 1 author, 2008-09-12

Re: [PATCH] atmel_lcdfb: Disable LCD and DMA engines when suspending

flat view

From: Haavard Skinnemoen <hidden>
Date: 2008-09-12 10:33:49

Haavard Skinnemoen [off-list ref] wrote:
When suspending the system with atmel_lcdfb enabled, I sometimes see
this:

[17179610.896000] atmel_lcdfb atmel_lcdfb.0: FIFO underflow 0x10

Which can be explained by the fact that we're not stopping the LCD
controller and its DMA engine when suspending, we're just gating the
clocks to them.

There's another potential issue which may be harder to trigger but
much more nasty: If we gate the clocks at _just_ the right moment,
e.g. when the DMA engine is doing a bus transaction, we may cause the
DMA engine to violate the system bus protocol and cause a lockup.

Avoid these issues by shutting down the LCD controller before entering
suspend (and restarting it when resuming). This prevents the underrun
from happening in the first place, and prevents whatever nastiness is
happening when the bus clock stops in the middle of a DMA transfer.

Signed-off-by: Haavard Skinnemoen <redacted>
Acked-by: Nicolas Ferre <redacted>
---
Forgot to add that this is the same patch that I posted before, but
with an updated description since my analysis wasn't entirely correct
-- the events/0 hang was caused by something else.

I'd like to get this merged before 2.6.27 since the bug is potentially
deadly.

Haavard

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help