vexpress: lots of mmc errors on boot
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro Ubuntu |
Fix Released
|
Wishlist
|
Unassigned |
Bug Description
Booting up the system, I see lots of error messages like:
[ 153.829703] mmcblk0: error -5 transferring data, sector 8823680, nr 24, cmd response 0x900, card status 0xb00
[ 164.111697] mmcblk0: error -5 transferring data, sector 13330240, nr 24, cmd response 0x900, card status 0xb00
[ 166.486482] mmcblk0: error -5 transferring data, sector 403464, nr 8, cmd response 0x900, card status 0xb00
[ 307.855642] mmcblk0: error -5 transferring data, sector 4304144, nr 24, cmd response 0x900, card status 0xb00
[ 320.885385] mmcblk0: error -5 transferring data, sector 9097152, nr 24, cmd response 0x900, card status 0xb00
[ 492.008707] mmcblk0: error -5 transferring data, sector 4872424, nr 24, cmd response 0x900, card status 0xb00
They don't seem to interfere with normal operation but also don't seem to be due to a bad card. Spoke to the arm lt about it and they were aware of it but I didn't see a bug on it, so opening here.
Changed in linaro-ubuntu: | |
status: | New → Triaged |
importance: | Undecided → Low |
Changed in linaro-ubuntu: | |
importance: | Low → Wishlist |
Changed in linaro-ubuntu: | |
status: | Triaged → Fix Released |
vexpress doesn't have DMA so MMC data transfers use programmed i/o to fill a FIFO. If the system can't respond to interrupts quickly enough (USB activity is the main culprit) then the FIFOs overflow or underrun causing errors. These errors are handled by falling back to retrying the transfer one sector at a time, which is guaranteed to succeed as the FIFO is big enough to hold a whole sector. We don't always use single sector transfers because this is a significant performance penalty. There is a possible work around for this issue by setting CPU affinity for MMC interrupts to a different core to the USB interrupts.