When ahci init ,driver will send ATA_SRST command,ahci device report device type through port's sig register. Ahci disk lookup change from IF_SD to IF_SCSI now,because IF_SD does not support cdrom media. I just copy ide_atapi_cmd from hw/ide/core.c into hw/ahci.c,change a little,then the cdrom can be identified,and read by os. If qemu can change dma_buf_prepare,dma_buf_rw,dma_buf_commit to a function pointer in BMDMAState,then I can rewrite three functions to support ahci's prtd,because it is different from ide's.
test a sata disk like this: ./i386-softmmu/qemu -cdrom KNOPPIX_V6.0.1CD-2009-02-08-EN.iso -drive if=scsi,file=/tmp/disk test a sata cd like this: ./i386-softmmu/qemu -cdrom KNOPPIX_V6.0.1CD-2009-02-08-EN.iso -drive if=scsi,media=cdrom,file=KNOPPIX_V6.0.1CD-2009-02-08-EN.iso QiaoChong (1): add cdrom support for ahci. hw/ahci.c | 425 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 422 insertions(+), 3 deletions(-)