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