mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
virtio-balloon: fix QEMU 4.0 config size migration incompatibility
The virtio-balloon config size changed in QEMU 4.0 even for existing machine types. Migration from QEMU 3.1 to 4.0 can fail in some circumstances with the following error: qemu-system-x86_64: get_pci_config_device: Bad config data: i=0x10 read: a1 device: 1 cmask: ff wmask: c0 w1cmask:0 This happens because the virtio-balloon config size affects the VIRTIO Legacy I/O Memory PCI BAR size. Introduce a qdev property called "qemu-4-0-config-size" and enable it only for the QEMU 4.0 machine types. This way <4.0 machine types use the old size, 4.0 uses the larger size, and >4.0 machine types use the appropriate size depending on enabled virtio-balloon features. Live migration to and from old QEMUs to QEMU 4.1 works again as long as a versioned machine type is specified (do not use just "pc"!). Originally-by: Wolfgang Bumiller <w.bumiller@proxmox.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20190710141440.27635-1-stefanha@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Tested-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Tested-by: Wolfgang Bumiller <w.bumiller@proxmox.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
4d90b7a0e4
commit
2bbadb08ce
3 changed files with 29 additions and 3 deletions
|
@ -34,6 +34,7 @@ GlobalProperty hw_compat_4_0[] = {
|
|||
{ "virtio-vga", "edid", "false" },
|
||||
{ "virtio-gpu-pci", "edid", "false" },
|
||||
{ "virtio-device", "use-started", "false" },
|
||||
{ "virtio-balloon-device", "qemu-4-0-config-size", "true" },
|
||||
};
|
||||
const size_t hw_compat_4_0_len = G_N_ELEMENTS(hw_compat_4_0);
|
||||
|
||||
|
@ -49,6 +50,7 @@ GlobalProperty hw_compat_3_1[] = {
|
|||
{ "usb-tablet", "serial", "42" },
|
||||
{ "virtio-blk-device", "discard", "false" },
|
||||
{ "virtio-blk-device", "write-zeroes", "false" },
|
||||
{ "virtio-balloon-device", "qemu-4-0-config-size", "false" },
|
||||
};
|
||||
const size_t hw_compat_3_1_len = G_N_ELEMENTS(hw_compat_3_1);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue