On 05/23/2013 07:58 AM, Paolo Bonzini wrote:
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
This fixed the issue and makes the guest boot.
Thanks
Badari