diff mbox

[for,2.1] virtio-scsi: fix with -M pc-i440fx-2.0

Message ID 1405334675-16453-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini July 14, 2014, 10:44 a.m. UTC
Right now starting a machine with virtio-scsi and a <= 2.0 machine type
fails with:

    qemu-system-x86_64: -device virtio-scsi-pci: Property .any_layout not found

This is because the any_layout bit was actually never set after
virtio-scsi was changed to support arbitrary layout for virtio buffers.

(This was just a cleanup and a preparation for virtio 1.0; no guest
actually checks the bit, but the new request parsing algorithms are
tested even with old guest).

Reported-by: David Gilbert <dgilbert@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/hw/virtio/virtio-scsi.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Dr. David Alan Gilbert July 14, 2014, 11:24 a.m. UTC | #1
* Paolo Bonzini (pbonzini@redhat.com) wrote:
> Right now starting a machine with virtio-scsi and a <= 2.0 machine type
> fails with:
> 
>     qemu-system-x86_64: -device virtio-scsi-pci: Property .any_layout not found
> 
> This is because the any_layout bit was actually never set after
> virtio-scsi was changed to support arbitrary layout for virtio buffers.
> 
> (This was just a cleanup and a preparation for virtio 1.0; no guest
> actually checks the bit, but the new request parsing algorithms are
> tested even with old guest).
> 
> Reported-by: David Gilbert <dgilbert@redhat.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Seems to fix the bug I hit.

Dave

> ---
>  include/hw/virtio/virtio-scsi.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
> index 0419ee4..188a2d9 100644
> --- a/include/hw/virtio/virtio-scsi.h
> +++ b/include/hw/virtio/virtio-scsi.h
> @@ -178,6 +178,8 @@ typedef struct {
>      DEFINE_PROP_UINT32("cmd_per_lun", _state, _conf_field.cmd_per_lun, 128)
>  
>  #define DEFINE_VIRTIO_SCSI_FEATURES(_state, _feature_field)                    \
> +    DEFINE_PROP_BIT("any_layout", _state, _feature_field,                      \
> +                    VIRTIO_F_ANY_LAYOUT, true),                                \
>      DEFINE_PROP_BIT("hotplug", _state, _feature_field, VIRTIO_SCSI_F_HOTPLUG,  \
>                                                         true),                  \
>      DEFINE_PROP_BIT("param_change", _state, _feature_field,                    \
> -- 
> 1.9.3
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox

Patch

diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
index 0419ee4..188a2d9 100644
--- a/include/hw/virtio/virtio-scsi.h
+++ b/include/hw/virtio/virtio-scsi.h
@@ -178,6 +178,8 @@  typedef struct {
     DEFINE_PROP_UINT32("cmd_per_lun", _state, _conf_field.cmd_per_lun, 128)
 
 #define DEFINE_VIRTIO_SCSI_FEATURES(_state, _feature_field)                    \
+    DEFINE_PROP_BIT("any_layout", _state, _feature_field,                      \
+                    VIRTIO_F_ANY_LAYOUT, true),                                \
     DEFINE_PROP_BIT("hotplug", _state, _feature_field, VIRTIO_SCSI_F_HOTPLUG,  \
                                                        true),                  \
     DEFINE_PROP_BIT("param_change", _state, _feature_field,                    \