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

Reply via email to