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.
