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 (5): add ahci support into qemu,only support sata disk. add ahci device into i386 pc just for test. add WIN_STANDBYNOW1 process into ahci. ahci pci ids into pci_ids.h,add warning messages. add cdrom support for ahci. Sebastian Herbszt (1): fix port count,cap and version etc to ahci. Makefile.target | 4 + default-configs/i386-softmmu.mak | 2 + hw/ahci.c | 1241 ++++++++++++++++++++++++++++++++++++++ hw/pc.c | 1 + hw/pci_ids.h | 1 + 5 files changed, 1249 insertions(+), 0 deletions(-) create mode 100644 hw/ahci.c