On Thu, Jul 19, 2012 at 06:15:03PM +0200, Gerd Hoffmann wrote: > This patch adds support for the lsi53c895a scsi host adapter, > allowing seabios to boot from scsi disks and cdroms connected > to the lsi scsi hba emulated by qemu. > > This driver was written by looking at the expectations of qemu's > lsi emulation. I have no idea idea how close this is to work on > real hardware, and I somehow doubt anyone cares given the age of > physical lsi scsi cards. It depends on !COREBOOT for that reason.
Thanks. Looks good to me. I definitely agree on marking it as !COREBOOT. Some minor comments below. [...] > --- a/src/Kconfig > +++ b/src/Kconfig > @@ -119,6 +119,12 @@ menu "Hardware support" > default y > help > Support boot from virtio-scsi storage. > + config LSI_SCSI > + depends on DRIVES && !COREBOOT > + bool "lsi53c895a scsi controllers" > + default y > + help > + Support boot from lsi53c895a scsi storage. It's probably worthwhile to point out in the help that this is for QEMU emulation only. [...] > +static int > +lsi_scsi_cmd(struct lsi_lun_s *llun, struct disk_op_s *op, > + void *cdbcmd, u16 target, u16 lun, u16 blocksize) > +{ > + u32 iobase = GET_GLOBAL(llun->iobase); > + u32 dma = ((cdb_is_read(cdbcmd, blocksize) ? 0x01000000 : 0x00000000) | > + (op->count * blocksize)); > + u8 msgout[] = { > + 0x80 | lun, // select lun > + 0x08, > + }; > + u8 status = 0xff; > + u8 msgin_tmp[2]; > + u8 msgin = 0xff; > + > + /* FIXME: probably not the best idea to have this on the stack ... */ > + u32 script[] = { Several places in the code DMA to the stack already (usb-ehci, usb-uhci, ata). [...] > --- /dev/null > +++ b/src/lsi-scsi.h > @@ -0,0 +1,2 @@ > +void lsi_scsi_setup(void); > +int lsi_scsi_cmd_data(struct disk_op_s *op, void *cdbcmd, u16 blocksize); Should have a header guard. -Kevin