Hi, On Sun, May 15 2011, Paul Parsons wrote: > There is a race condition in the tmio_mmc_irq() interrupt handler, caused by > the presence of a while loop, which results in warnings of spurious > interrupts. This was found on an HP iPAQ hx4700 whose HTC ASIC3 reportedly > incorporates the Toshiba TC6380AF controller. > > Towards the end of a multiple read (CMD18) operation the handler clears the > final RXRDY status bit in the first loop iteration, sees the DATAEND status > bit at the bottom of the loop, and so clears the DATAEND status bit in the > second loop iteration. However the DATAEND interrupt is still queued in the > system somewhere and can't be delivered until the handler has returned. This > second interrupt is then reported as spurious in the next call to the > handler. Likewise for single read (CMD17) operations. And something similar > occurs for multiple write (CMD25) and single write (CMD24) operations, where > CMDRESPEND and TXRQ status bits are cleared in a single call. > > In these cases the interrupt handler clears two separate interrupts when it > should only clear the one interrupt for which it was invoked. The fix is to > remove the while loop. > > Signed-off-by: Paul Parsons <lost.dista...@yahoo.com>
Thanks, pushed to mmc-next after wrapping the commit message to <74 chars. - Chris. -- Chris Ball <c...@laptop.org> <http://printf.net/> One Laptop Per Child -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html