ATAPI transfers using the AHCI HBA will work if you ask the HBA to perform a DMA transfer, but if you ask for PIO, it will not.
All AHCI transfers are actually DMA anyway, but the AHCI HBA will need some assistance from the core layer to help it manage its covert-ops DMA when performing PIO routines deep in the bowels of the ATAPI code. This is strictly a bugfix and /maybe/ it's 2.4-rc1 material, but the CDROM tests for AHCI are not ready for prime-time (we don't have ANY cdrom tests yet, really!) so I am submitting just the fix now, and my say-so that yes, this fixes OVMF booting and pleases my hacky, off-list CDROM qtests. ________________________________________________________________________________ For convenience, this branch is available at: https://github.com/jnsnow/qemu.git branch ahci-atapi-pio https://github.com/jnsnow/qemu/tree/ahci-atapi-pio This version is tagged ahci-atapi-pio-v1: https://github.com/jnsnow/qemu/releases/tag/ahci-atapi-pio-v1 John Snow (2): atapi: abort transfers with 0 byte limits ide: unify io_buffer_offset increments hw/ide/ahci.c | 22 +++++++--------------- hw/ide/atapi.c | 10 +++++++++- hw/ide/core.c | 7 +++---- hw/ide/internal.h | 2 ++ 4 files changed, 21 insertions(+), 20 deletions(-) -- 2.1.0