Hi, On Wed, Dec 22, 2010 at 12:08 AM, Chris Ball <cjb@xxxxxxxxxx> wrote: > Hi Olof, > > On Wed, Dec 22, 2010 at 02:01:10AM -0600, Olof Johansson wrote: >> Don't schedule the finish_tasklet unless the command complete bit is >> set in the interrupt status register. >> >> Signed-off-by: Olof Johansson <olof@xxxxxxxxx> > > Could we have some more detail here, please? What are the symptoms of > running without this patch? Should we apply it to the stable tree too? Hmm, good question. I hadn't gotten to the bottom of why this specific change was needed in the past -- it's something the original driver did that I just ended up inheriting behavior from. Thanks for asking. :-) >From some further investigation, it seems like the underlying problem is that the controller reports spurious timeout and crc errors, in spite of the transactions completing successfully. My main worry with this fix as it was is that it would disable behavior on controllers where the error bits are set and handled correctly. So, what I think I will do instead is that I will simply mask those two errors from generating interrupts (i.e. masking the two bits when writing the SDHCI_SIGNAL_ENABLE register). That seems to result in the equivalent behavior, and I no longer see the spurious interrupts and controller resets. In case of real timeouts and/or CRC errors, the existing software timer should take care of eventually unfreezing the controller if need be. I'll repost the series with these changes after letting this version sit out for review for a bit longer. -Olof -- 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