OSDN Git Service

virtio-scsi: work around bug in old BIOSes
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 7 Nov 2014 13:00:02 +0000 (14:00 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 7 Nov 2014 15:09:57 +0000 (16:09 +0100)
commit55783a5521a3b1f93ee6a072e414a27c6cfa15f0
treefffd4c7e6970c1ee6a55edfe9e609d87af0fe351
parentc3543fb5fe4520f03dd4fef04fab7745eeca1c96
virtio-scsi: work around bug in old BIOSes

Old BIOSes left some padding by mistake after the req_size/resp_size.
New QEMU does not like it, thinking it is a bidirectional command.

As a workaround, we can check if the ANY_LAYOUT bit is set; if not, we
always consider the first buffer as the virtio-scsi request/response,
because, back when QEMU did not support ANY_LAYOUT, it expected the
payload to start at the second element of the iovec.

This can show up during migration.

Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/scsi/virtio-scsi.c