Il 23/05/2013 16:48, Badari Pulavarty ha scritto: >> The common virtio-scsi code in QEMU should guard against this. In >> virtio-blk data plane I hit a similar case and ended up starting the >> data plane thread (equivalent to vhost here) *before* the status >> register is set to DRIVER_OK. > > Thats exactly what my debug in vhost_scsi_set_status() shows. > > set status started 0 val 0 > set status started 0 val 0 > set status started 0 val 0 > set status started 0 val 0 > set status started 0 val 0 > set status started 0 val 3 > Program received signal SIGSEGV, Segmentation fault. > > We never got a chance to call vhost_scsi_start() as we are waiting > for DRIVER_OK.
This is the fix in SeaBIOS: commit 5a7730db57ab0715223421e65b54fb50d6fefe5c Author: Asias He <as...@redhat.com> Date: Fri Mar 15 09:45:15 2013 +0800 virtio-scsi: Set _DRIVER_OK flag before scsi target scanning Before we start scsi target scanning, we need to set the VIRTIO_CONFIG_S_DRIVER_OK flag so the device can do setup properly. This fix a bug when booting tcm_vhost with seabios. Signed-off-by: Asias He <as...@redhat.com> Acked-by: Paolo Bonzini <pbonz...@redhat.com> Still, Gleb is right that SeaBIOS should not be able to crash QEMU; exit(1) is fine, SIGSEGV is not. Paolo