Hi all,
this is the first bit of working code for the mythical virtio-scsi HBA. This patch mostly aims at making code more generic in SeaBIOS for both SCSI and virtio.
For SCSI, it introduces common bits for LUN detection and fixes some bugs. This is visible for example in that I can now boot the FreeDOS image on bochs.sf.net from a USB drive.
For virtio, it adds a few extra interface bits that are common to both virtio-scsi and virtio-blk.
The final patch adds the virtio-scsi code itself. I think the first 13 patches can go in before the virtio-scsi QEMU code, anyway I'm sending now the whole batch for review.
Paolo Bonzini (16): cdrom: use TEST UNIT READY to detect ready medium usb-msc: add usb_msc_send usb-uhci: wait tick after sending data usb-msc: support WRITE and TEST UNIT READY usb-msc: move READ CAPACITY to usb_msc_init, fix off-by-one usb-msc: pass drive to setup_drive_* usb-msc: rename INQUIRY types usb-msc: always go through TEST UNIT READY usb-msc: move common scsi code to blockcmd.c scsi: get physical chs geometry from mode page 0x04 always specify virtio-blk rather than virtio virtio-pci: introduce vp_init_simple virtio-pci: allocate vq in vp_find_vq virtio-pci: add vp_set usb-msc: move cdb dispatch to block.c add virtio-scsi driver
Makefile | 2 +- src/Kconfig | 10 ++- src/block.c | 35 +++++++-- src/blockcmd.c | 155 ++++++++++++++++++++++++++++++++++++++ src/blockcmd.h | 42 ++++++++++- src/boot.c | 14 ++++ src/boot.h | 1 + src/cdrom.c | 58 +-------------- src/disk.c | 5 +- src/disk.h | 19 +++-- src/pci_ids.h | 1 + src/post.c | 2 + src/usb-msc.c | 132 ++++++++++---------------------- src/usb-msc.h | 3 - src/usb-uhci.c | 1 + src/virtio-blk.c | 30 +++----- src/virtio-blk.h | 2 +- src/virtio-pci.c | 33 +++++++- src/virtio-pci.h | 13 +++- src/virtio-scsi.c | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/virtio-scsi.h | 43 +++++++++++ 21 files changed, 620 insertions(+), 197 deletions(-) create mode 100644 src/virtio-scsi.c create mode 100644 src/virtio-scsi.h