I'm currenttly converting the qemu scsi emulatin to use async IO. The main effect of this is that DMA tranfers take an indterminate amount of guest time to complete (just like they do on real hardware) instead of completing instantaneously.
I've got It working in linux, but OpenBIOS dies when trying to read from the disk/cdrom. The problem appears to be that the openbios ESP drivers isses read commands then blindly continues without waiting for them to complete.
The code in question is the end of ecp.c:do_command and its caller.
I'm working on a fix, I just wanted to check (a) this hasn't already been fixed, and (b) I'm not on totally the wrong track.
Paul