I've also run into this once during an apt-get upgrade, leaving the system 
in a pretty hosed state. I managed to recover it but it required a lot of 
effort. Although evidently rare, this is clearly a very serious issue.

The direct cause is edma_prep_slave_sg() failing to allocate memory for the 
struct edma_desc. I don't know whether the kernel is genuinely out of 
memory or if it simply cannot free it up immediately (the allocation is 
done with GPF_ATOMIC), and whether this is because it is filled with a 
backlog of writes or whether a leak of some sort is going on.

Instead of deferring until memory is available, or even just proceeding 
without DMA, the omap_hsmmc driver immediately fails the request with an 
error, thus pretty much guaranteeing loss of data or even filesystem 
corruption. I personally think this is completely unacceptable behaviour of 
a block driver.

I've been meaning to persue this matter on the linux-mmc and/or linux-omap 
lists, but since it was a single isolated incident and I have lots of other 
stuff to do I haven't been able to find the time and motivation yet.

Matthijs

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/c052b765-78da-4257-857c-09a6046fe395%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to