Since commit "9a4c0e220d8a hw/virtio-pci: fix virtio behaviour", passing -device virtio-blk-pci.disable-modern=off has no effect on 2.6 machine types because the internal virtio-pci.disable-modern=on compat property always prevail.
This should ideally be fixed in the qdev properties core code, but it is too late in the QEMU 2.8 schedule. So this patch fixes the issue by setting the compat properties for every virtio-*-pci subtypes instead of the base virtio-pci type. Signed-off-by: Greg Kurz <gr...@kaod.org> --- This fix is for both QEMU 2.8 and 2.7.1. Generated with: for i in $(git grep 'define TYPE_VIRTIO_.*_PCI' hw/virtio/virtio-pci.h | \ awk '{print $3 }'); do printf '{\\'"\n .driver = %s,"'\\'"\n .property = \"disable-modern\","'\\'"\n .value = \"on\","'\\'"\n },{"'\\'"\n .driver = %s,"'\\'"\n .property = \"disable-legacy\","'\\'"\n .value = \"off\","'\\'"\n }," $i $i done include/hw/compat.h | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/include/hw/compat.h b/include/hw/compat.h index 0f06e113bee2..793ba3ddb393 100644 --- a/include/hw/compat.h +++ b/include/hw/compat.h @@ -26,11 +26,123 @@ .property = "format_transport_address",\ .value = "off",\ },{\ - .driver = "virtio-pci",\ + .driver = "virtio-scsi-pci",\ .property = "disable-modern",\ .value = "on",\ },{\ - .driver = "virtio-pci",\ + .driver = "virtio-scsi-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-blk-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-blk-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-balloon-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-balloon-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-serial-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-serial-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-net-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-net-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-9p-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-9p-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-rng-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-rng-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-input-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-input-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-input-hid-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-input-hid-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-keyboard-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-keyboard-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-mouse-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-mouse-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-tablet-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-tablet-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-input-host-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-input-host-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-gpu-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-gpu-pci",\ + .property = "disable-legacy",\ + .value = "off",\ + },{\ + .driver = "virtio-crypto-pci",\ + .property = "disable-modern",\ + .value = "on",\ + },{\ + .driver = "virtio-crypto-pci",\ .property = "disable-legacy",\ .value = "off",\ },