summary refs log tree commit diff stats
path: root/results/classifier/gemma3:12b/network/1745895
blob: 4435943d0f01bd50e14a42fd12a13f195d215f3c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Unable to migrate vhost-net to virtio-1.0-capable kernel

I am running QEMU 2.11 (from upstream source, not Red Hat package) on stock RHEL 6 and RHEL 7 kernels. Only the RHEL 7 kernel supports VIRTIO_F_VERSION_1 in its vhost-net driver.

When migrating a guest using vhost-net from the RHEL 6 host to RHEL 7, the PCI config is rejected by QEMU on the target machine.

A simple test case:

1. On the RHEL 7 host, prepare for an incoming migration:

  rhel7# qemu-system-x86_64 -S -accel kvm -nographic -monitor stdio -nodefaults -netdev tap,id=net0,vhost=on,script=no,downscript=no -device virtio-net-pci,netdev=net0,mac=54:52:00:ff:ff:ff -incoming tcp:0.0.0.0:12345

2. On the RHEL 6 host, start a guest and migrate it to the RHEL 7 host:

  rhel6# qemu-system-x86_64 -S -accel kvm -nographic -monitor stdio -nodefaults -netdev tap,id=net0,vhost=on,script=no,downscript=no -device virtio-net-pci,netdev=net0,mac=54:52:00:ff:ff:ff
QEMU 2.11.0 monitor - type 'help' for more information
  (qemu) migrate tcp:rhel7:12345

The RHEL 7 QEMU errors out:

  qemu-system-x86_64: get_pci_config_device: Bad config data: i=0x20 read: 0 device: c cmask: ff wmask: 0 w1cmask:0
  qemu-system-x86_64: Failed to load PCIDevice:config
  qemu-system-x86_64: Failed to load virtio-net:virtio
  qemu-system-x86_64: error while loading state for instance 0x0 of device '0000:00:02.0/virtio-net'
  qemu-system-x86_64: load of migration failed: Invalid argument

If I start the source QEMU with vhost=off, or the target QEMU with disable-modern=true, the migration is successful.

My hunch here is that the target QEMU prepares the PCI device to support VIRTIO_F_VERSION_1, as that's available in the kernel there, but then fails to (or does not know to) disable this during the migration.