When I reviewed Marc's fw_cfg DMA patches, I completely missed that the
way we set dma_enabled would break migration.
Gerd explained the right way (see reference below): dma_enabled should be
set to true by default, and only true->false transitions should be
possible:
- when the user requests that with
    -global fw_cfg_mem.dma_enabled=off
  or
   -global fw_cfg_io.dma_enabled=off
  as appropriate for the platform,
- when HW_COMPAT_2_4 dictates it,
- when board code initializes fw_cfg without requesting DMA support.
Cc: Marc Marí <markmb@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Alexandre DERUMIER <aderumier@odiso.com>
Cc: qemu-stable@nongnu.org
Ref: http://thread.gmane.org/gmane.comp.emulators.qemu/390272/focus=391042
Ref: https://bugs.launchpad.net/qemu/+bug/1536487
Suggested-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Message-id: 1455823860-22268-1-git-send-email-lersek@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
		
	
			
		
			
				
	
	
		
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef HW_COMPAT_H
 | 
						|
#define HW_COMPAT_H
 | 
						|
 | 
						|
#define HW_COMPAT_2_5 \
 | 
						|
    {\
 | 
						|
        .driver   = "isa-fdc",\
 | 
						|
        .property = "fallback",\
 | 
						|
        .value    = "144",\
 | 
						|
    },{\
 | 
						|
        .driver   = "pvscsi",\
 | 
						|
        .property = "x-old-pci-configuration",\
 | 
						|
        .value    = "on",\
 | 
						|
    },{\
 | 
						|
        .driver   = "pvscsi",\
 | 
						|
        .property = "x-disable-pcie",\
 | 
						|
        .value    = "on",\
 | 
						|
    },\
 | 
						|
    {\
 | 
						|
        .driver   = "vmxnet3",\
 | 
						|
        .property = "x-old-msi-offsets",\
 | 
						|
        .value    = "on",\
 | 
						|
    },{\
 | 
						|
        .driver   = "vmxnet3",\
 | 
						|
        .property = "x-disable-pcie",\
 | 
						|
        .value    = "on",\
 | 
						|
    },
 | 
						|
 | 
						|
#define HW_COMPAT_2_4 \
 | 
						|
    {\
 | 
						|
        .driver   = "virtio-blk-device",\
 | 
						|
        .property = "scsi",\
 | 
						|
        .value    = "true",\
 | 
						|
    },{\
 | 
						|
        .driver   = "e1000",\
 | 
						|
        .property = "extra_mac_registers",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-pci",\
 | 
						|
        .property = "x-disable-pcie",\
 | 
						|
        .value    = "on",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-pci",\
 | 
						|
        .property = "migrate-extra",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "fw_cfg_mem",\
 | 
						|
        .property = "dma_enabled",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "fw_cfg_io",\
 | 
						|
        .property = "dma_enabled",\
 | 
						|
        .value    = "off",\
 | 
						|
    },
 | 
						|
 | 
						|
#define HW_COMPAT_2_3 \
 | 
						|
    {\
 | 
						|
        .driver   = "virtio-blk-pci",\
 | 
						|
        .property = "any_layout",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-balloon-pci",\
 | 
						|
        .property = "any_layout",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-serial-pci",\
 | 
						|
        .property = "any_layout",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-9p-pci",\
 | 
						|
        .property = "any_layout",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-rng-pci",\
 | 
						|
        .property = "any_layout",\
 | 
						|
        .value    = "off",\
 | 
						|
    },
 | 
						|
 | 
						|
#define HW_COMPAT_2_2 \
 | 
						|
    /* empty */
 | 
						|
 | 
						|
#define HW_COMPAT_2_1 \
 | 
						|
    {\
 | 
						|
        .driver   = "intel-hda",\
 | 
						|
        .property = "old_msi_addr",\
 | 
						|
        .value    = "on",\
 | 
						|
    },{\
 | 
						|
        .driver   = "VGA",\
 | 
						|
        .property = "qemu-extended-regs",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "secondary-vga",\
 | 
						|
        .property = "qemu-extended-regs",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-scsi-pci",\
 | 
						|
        .property = "any_layout",\
 | 
						|
        .value    = "off",\
 | 
						|
    },{\
 | 
						|
        .driver   = "usb-mouse",\
 | 
						|
        .property = "usb_version",\
 | 
						|
        .value    = stringify(1),\
 | 
						|
    },{\
 | 
						|
        .driver   = "usb-kbd",\
 | 
						|
        .property = "usb_version",\
 | 
						|
        .value    = stringify(1),\
 | 
						|
    },{\
 | 
						|
        .driver   = "virtio-pci",\
 | 
						|
        .property = "virtio-pci-bus-master-bug-migration",\
 | 
						|
        .value    = "on",\
 | 
						|
    },
 | 
						|
 | 
						|
#endif /* HW_COMPAT_H */
 |