Thank you for the excellent analysis of the problem! Looks like Qemu doesn't handle the case where DMA length and SCSI length are not equal.

Until here, the addresses are subsequent. Then the next address is much lower:

So Linux splits the transfer into two parts to use two separate pieces of buffers. Funny, I thought this situation was exactly the one which virtually addressed DMA would prevent from happening.

What is expected, when the number of bytes from the transfer register have
been read? Should the hardware raise an interrupt? And if yes, which flags
must be set?

Yes, there will be an interrupt. I didn't find this situation in the NCR53C9X.txt file documenting the ESP, though.

There are two cases:
1 - DMA length shorter than SCSI (your case)
2 - SCSI length shorter (could happen in command replies etc.)

Maybe this patch helps?

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! http://search.msn.com/

Attachment: qemu-sparc.patch-52.bz2
Description: Binary data

_______________________________________________
Qemu-devel mailing list
Qemu-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/qemu-devel

Reply via email to