qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] vhost-vsock: force virtio version 1
@ 2020-08-19 14:38 Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 1/3] vhost-vsock-pci: " Stefano Garzarella
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Stefano Garzarella @ 2020-08-19 14:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Qinghua Cheng, Qian Cai, David Hildenbrand,
	Cornelia Huck, qemu-stable, Halil Pasic, Christian Borntraeger,
	qemu-s390x, Michael S. Tsirkin, Richard Henderson

v2:
   - Fixed commit message in patche 1 and 2 [Cornelia]
   - Added Cornelia's R-b tags in all patches

v1: https://lists.gnu.org/archive/html/qemu-devel/2020-08/msg04373.html

Recenlty changes in QEMU 5.1 requires to set 'disable-legacy=on'
on vhost-vsock-pci and vhost-user-vsock-pci devices:

    $ ./qemu-system-x86_64 ... -device vhost-vsock-pci,guest-cid=5
        qemu-system-x86_64: -device vhost-vsock-pci,guest-cid=5:
        device is modern-only, use disable-legacy=on

As discussed with Cornelia [1], this series force virtio version 1
to vhost-vsock-pci, vhost-user-vsock-pci, and vhost-vsock-ccw devices.

virtio-vsock was introduced after the release of VIRTIO 1.0 specifications,
so it should be 'modern-only'.
In addition Cornelia verified that forcing a legacy mode on vhost-vsock-pci
device using x86-64 host and s390x guest, so with different endianness,
produces strange behaviours.

About migration, QEMU 5.1 already requires that the source and destination
specify 'disable-legacy=on', otherwise the migration fails in this way:
    qemu-system-x86_64: get_pci_config_device: Bad config data: i=0x2 read: 12 device: 53 cmask: ff wmask: 0 w1cmask:0
    qemu-system-x86_64: Failed to load PCIDevice:config
    qemu-system-x86_64: Failed to load virtio-vhost_vsock:virtio
    qemu-system-x86_64: error while loading state for instance 0x0 of device '0000:00:03.0/virtio-vhost_vsock'
    qemu-system-x86_64: load of migration failed: Invalid argument

With this series applied there is the same requirements. Alternatively
we have to detach and re-attach the device manually.

Thanks,
Stefano

[1] https://lists.nongnu.org/archive/html/qemu-devel/2020-08/msg02515.html

Stefano Garzarella (3):
  vhost-vsock-pci: force virtio version 1
  vhost-user-vsock-pci: force virtio version 1
  vhost-vsock-ccw: force virtio version 1

 hw/s390x/vhost-vsock-ccw.c       | 2 ++
 hw/virtio/vhost-user-vsock-pci.c | 2 +-
 hw/virtio/vhost-vsock-pci.c      | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

-- 
2.26.2



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/3] vhost-vsock-pci: force virtio version 1
  2020-08-19 14:38 [PATCH v2 0/3] vhost-vsock: force virtio version 1 Stefano Garzarella
@ 2020-08-19 14:38 ` Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 2/3] vhost-user-vsock-pci: " Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 3/3] vhost-vsock-ccw: " Stefano Garzarella
  2 siblings, 0 replies; 4+ messages in thread
From: Stefano Garzarella @ 2020-08-19 14:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Qinghua Cheng, Qian Cai, David Hildenbrand,
	Cornelia Huck, qemu-stable, Halil Pasic, Christian Borntraeger,
	qemu-s390x, Michael S. Tsirkin, Richard Henderson

Commit 9b3a35ec82 ("virtio: verify that legacy support is not
accidentally on") added a safety check that requires to set
'disable-legacy=on' on vhost-vsock-pci device:

    $ ./qemu-system-x86_64 ... -device vhost-vsock-pci,guest-cid=5
        qemu-system-x86_64: -device vhost-vsock-pci,guest-cid=5:
        device is modern-only, use disable-legacy=on

virtio-vsock was introduced after the release of VIRTIO 1.0
specifications, so it should be 'modern-only'.
In addition Cornelia verified that forcing a legacy mode on
vhost-vsock-pci device using x86-64 host and s390x guest, so with
different endianness, produces strange behaviours.

This patch forces virtio version 1 and removes the 'transitional_name'
property removing the need to specify 'disable-legacy=on' on
vhost-vsock-pci device.

Cc: qemu-stable@nongnu.org
Reported-by: Qian Cai <caiqian@redhat.com>
Reported-by: Qinghua Cheng <qcheng@redhat.com>
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1868449
Suggested-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
 hw/virtio/vhost-vsock-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/virtio/vhost-vsock-pci.c b/hw/virtio/vhost-vsock-pci.c
index a815278e69..d1fcad0472 100644
--- a/hw/virtio/vhost-vsock-pci.c
+++ b/hw/virtio/vhost-vsock-pci.c
@@ -44,6 +44,7 @@ static void vhost_vsock_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
     VHostVSockPCI *dev = VHOST_VSOCK_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
 
+    virtio_pci_force_virtio_1(vpci_dev);
     qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
 }
 
@@ -72,7 +73,6 @@ static void vhost_vsock_pci_instance_init(Object *obj)
 static const VirtioPCIDeviceTypeInfo vhost_vsock_pci_info = {
     .base_name             = TYPE_VHOST_VSOCK_PCI,
     .generic_name          = "vhost-vsock-pci",
-    .transitional_name     = "vhost-vsock-pci-transitional",
     .non_transitional_name = "vhost-vsock-pci-non-transitional",
     .instance_size = sizeof(VHostVSockPCI),
     .instance_init = vhost_vsock_pci_instance_init,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/3] vhost-user-vsock-pci: force virtio version 1
  2020-08-19 14:38 [PATCH v2 0/3] vhost-vsock: force virtio version 1 Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 1/3] vhost-vsock-pci: " Stefano Garzarella
@ 2020-08-19 14:38 ` Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 3/3] vhost-vsock-ccw: " Stefano Garzarella
  2 siblings, 0 replies; 4+ messages in thread
From: Stefano Garzarella @ 2020-08-19 14:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Qinghua Cheng, Qian Cai, David Hildenbrand,
	Cornelia Huck, qemu-stable, Halil Pasic, Christian Borntraeger,
	qemu-s390x, Michael S. Tsirkin, Richard Henderson

Commit 9b3a35ec82 ("virtio: verify that legacy support is not
accidentally on") added a safety check that requires to set
'disable-legacy=on' on vhost-user-vsock-pci device:

    $ ./qemu-system-x86_64 ... \
    -chardev socket,id=char0,reconnect=0,path=/tmp/vhost4.socket \
    -device vhost-user-vsock-pci,chardev=char0
        qemu-system-x86_64: -device vhost-user-vsock-pci,chardev=char0:
        device is modern-only, use disable-legacy=on

virtio-vsock was introduced after the release of VIRTIO 1.0
specifications, so it should be 'modern-only'.

This patch forces virtio version 1 and removes the 'transitional_name'
property, as done for vhost-vsock-pci, removing the need to specify
'disable-legacy=on' on vhost-user-vsock-pci device.

Cc: qemu-stable@nongnu.org
Suggested-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
 hw/virtio/vhost-user-vsock-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/virtio/vhost-user-vsock-pci.c b/hw/virtio/vhost-user-vsock-pci.c
index f4cf95873d..3e17cf0480 100644
--- a/hw/virtio/vhost-user-vsock-pci.c
+++ b/hw/virtio/vhost-user-vsock-pci.c
@@ -40,6 +40,7 @@ static void vhost_user_vsock_pci_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
     VHostUserVSockPCI *dev = VHOST_USER_VSOCK_PCI(vpci_dev);
     DeviceState *vdev = DEVICE(&dev->vdev);
 
+    virtio_pci_force_virtio_1(vpci_dev);
     qdev_realize(vdev, BUS(&vpci_dev->bus), errp);
 }
 
@@ -68,7 +69,6 @@ static void vhost_user_vsock_pci_instance_init(Object *obj)
 static const VirtioPCIDeviceTypeInfo vhost_user_vsock_pci_info = {
     .base_name             = TYPE_VHOST_USER_VSOCK_PCI,
     .generic_name          = "vhost-user-vsock-pci",
-    .transitional_name     = "vhost-user-vsock-pci-transitional",
     .non_transitional_name = "vhost-user-vsock-pci-non-transitional",
     .instance_size = sizeof(VHostUserVSockPCI),
     .instance_init = vhost_user_vsock_pci_instance_init,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 3/3] vhost-vsock-ccw: force virtio version 1
  2020-08-19 14:38 [PATCH v2 0/3] vhost-vsock: force virtio version 1 Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 1/3] vhost-vsock-pci: " Stefano Garzarella
  2020-08-19 14:38 ` [PATCH v2 2/3] vhost-user-vsock-pci: " Stefano Garzarella
@ 2020-08-19 14:38 ` Stefano Garzarella
  2 siblings, 0 replies; 4+ messages in thread
From: Stefano Garzarella @ 2020-08-19 14:38 UTC (permalink / raw)
  To: qemu-devel
  Cc: Thomas Huth, Qinghua Cheng, Qian Cai, David Hildenbrand,
	Cornelia Huck, qemu-stable, Halil Pasic, Christian Borntraeger,
	qemu-s390x, Michael S. Tsirkin, Richard Henderson

virtio-vsock was introduced after the release of VIRTIO 1.0
specifications, so it should be 'modern-only'.

This patch forces virtio version 1 as done for vhost-vsock-pci.

Cc: qemu-stable@nongnu.org
Suggested-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
 hw/s390x/vhost-vsock-ccw.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/s390x/vhost-vsock-ccw.c b/hw/s390x/vhost-vsock-ccw.c
index 0822ecca89..0759143efa 100644
--- a/hw/s390x/vhost-vsock-ccw.c
+++ b/hw/s390x/vhost-vsock-ccw.c
@@ -40,7 +40,9 @@ static void vhost_vsock_ccw_class_init(ObjectClass *klass, void *data)
 static void vhost_vsock_ccw_instance_init(Object *obj)
 {
     VHostVSockCCWState *dev = VHOST_VSOCK_CCW(obj);
+    VirtioCcwDevice *ccw_dev = VIRTIO_CCW_DEVICE(obj);
 
+    ccw_dev->force_revision_1 = true;
     virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
                                 TYPE_VHOST_VSOCK);
 }
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-08-19 14:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-08-19 14:38 [PATCH v2 0/3] vhost-vsock: force virtio version 1 Stefano Garzarella
2020-08-19 14:38 ` [PATCH v2 1/3] vhost-vsock-pci: " Stefano Garzarella
2020-08-19 14:38 ` [PATCH v2 2/3] vhost-user-vsock-pci: " Stefano Garzarella
2020-08-19 14:38 ` [PATCH v2 3/3] vhost-vsock-ccw: " Stefano Garzarella

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).