On Tue, Feb 1 at 21:02, Viresh Kumar wrote:
But i am facing another issue now. I am getting following error sometimes, when i copy > 10 MB of data to CF card. ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen ata1.00: BMDMA stat 0x5 ata1.00: failed command: WRITE DMA ata1.00: cmd ca/00:00:3f:7f:3c/00:00:00:00:00/e0 tag 0 dma 131072 out res d0/00:00:3f:7f:3c/00:00:00:00:00/e0 Emask 0x2 (HSM violation) ata1.00: status: { Busy } I debugged it further and found that after data is transferred, altstatus register is returning status 0xd0, which means ATA_BUSY. I am not sure why this must be returned by card after data is transferred?
Did you wait for the interrupt? Or is this polling alt status immediately after completing the data transfer? If I remember correctly (been a long time), there's a busy phase after the last word is transferred, until the command actually completes. This may or may not generate an interrupt. Eventually, the alt status register should transition to a status without the HOB set (0xD0->0x50 most of the time) when the command has finished, and a read of the regular status register should clear an outstanding interrupt. --eric -- Eric D. Mudama edmudama@xxxxxxxxxxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html