2011/1/14 Linus Walleij <linus.ml.walleij@xxxxxxxxx>: > What it problematic with the reads *and* writes is that > sometimes there us a MCI_DATABLOCKEND missing, so the > blocks simply don't add up! This is the real bug that > the sync code was trying to solve, and not in a very > good way. Here is a follow-up explanation as to why the code as it is today actually works: the sync code has a bug. It is intended to check whether the *last* blockend interrupt *and* the dataend interrupt has occurred. However it actually checks whether *any* blockend interrupt and the datend interrupt has occured. Thus it works, with the side effect of ACK:ing multiblock transfers on U300 while the host->data_xfered value is lower that what was requested - the blocks have been read but not all are accounted for, because there are blockend IRQs missing. I'll follow up with a patch fixing the *real* issue, in an atleast a little more elegant way :-/ Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html