This is my QEMU Google Summer of Code project. Here I introduce new device - ATAPI-SCSI bridge. Its purpose is to unify IDE ATAPI CD-ROM emulation with SCSI CD-ROM emulation to reduce code duplication and squash bugs. It's purpose is simple - it just forwards ATAPI commands to SCSI side for parsing and execution.
Example of using: qemu-system-x86_64 \ -drive if=none,file=<filename>,id=cdrom \ -drive if=none,id=fake \ -device ide-bridge,id=bridge,drive=fake \ -device scsi-cd,drive=cdrom,bus=bridge.0 \ -hda diskimage \ -m 1024 Alexander Bezzubikov (11): ide: ATAPI-SCSI bridge TypeInfo and init function created ide: necessary fields for ATAPI-SCSI bridge added ide: necessary checks corrected to treat ATAPI-SCSI bridge as CDROM scsi: Added function to enable ATAPI-SCSI bridge send SCSI requests ide: bridge 'transfer' and 'complete' functions added ide: ATAPI-SCSI bridge can now forward requests to SCSI ide: Makefile corrected due to bridge creation scsi: SCSIDiskReq declaration moved to header ide: ide_bridge_do_transfer is treated as PIO transfer ide: corrected ATAPI checks to be ignored by ATAPI-SCSI bridge ide: bridge functions assigned to SCSIBusInfo, bridge is OK now hw/ide/Makefile.objs | 2 +- hw/ide/atapi.c | 22 +++++++++- hw/ide/bridge.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++ hw/ide/bridge.h | 10 +++++ hw/ide/core.c | 28 +++++++----- hw/ide/internal.h | 6 ++- hw/ide/qdev.c | 42 +++++++++++++++++- hw/scsi/scsi-disk.c | 55 ++++++++++++++++++------ include/hw/scsi/scsi.h | 16 +++++++ 9 files changed, 267 insertions(+), 28 deletions(-) create mode 100644 hw/ide/bridge.c create mode 100644 hw/ide/bridge.h -- 2.1.4