ChangeLog/2.0
System emulation
Incompatible changes
- All onboard buses now have distinct names, so that all of them can be reached with "-device bus=...". As a result of this, some buses that used to have duplicates got renamed: ** i2c-bus.0 to i2c-bus.1 for machines n800, n810;
- virtio-mmio-bus.0 to virtio-mmio-bus.3 for vexpress-a15, vexpress-a9;
- virtio-mmio-bus.0 to virtio-mmio-bus.31 for virt;
- usb-bus.0 to usb-bus.1 for xilinx-zynq-a9, fulong2e;
- ide.0 to ide.1 for isapc, mips, g3beige, mac99, prep;
- This change requires care when doing migration from 1.x to 2.x QEMU; you need to specify bus=NEW explicitly on the destination for devices on the renamed bus.
- Another bus rename is pci to pci.0 for pseries. This does not require as much care on migration; if you were specifying "bus=pci" explicitly, QEMU will not start unless you change that to "bus=pci.0".
- Three options were using different names on the command line and in configuration file. Starting with 2.0, configuration files used by -readconfig standardize on the name fo the command line option. In particular:
- The "acpi" configuration file section, introduced in 1.5.0, has been renamed to "acpitable";
- The "boot-opts" configuration file section, introduced in 1.0, has been renamed to "boot";
- The "smp-opts" configuration file section, introduced in 1.5.0, has been renamed to "smp".
- qemu-system-arm no longer defaults to the obsolete "integratorcp" if no machine is specified on the command line (this was a recurring source of confusion). Users with existing integratorcp images will need to add "-M integratorcp" to the command line if it is not already present.
ARM
- Support for "-M virt", a board type that only uses virtio devices
- Support for "-cpu host" when running under KVM
- Support for new 32-bit mode ARMv8 instructions in TCG
- Support for all 64-bit mode ARMV8 user-accessible instructions except for the optional CRC and crypto extensions
- Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)
- Initial support for KVM on AArch64 systems (some features such as migration are not yet implemented)
- Support for the Canon PowerShot A1100 DIGIC board using "-M canon-a1100"
- Support for the allwinner-a10-based board "-M cubieboard"
- Support for flow control in the Cadence UART
- "integratorcp" is no longer the default machine (see the 'incompatible changes' section above)
Power
- Support for Altivec 2.07 and VSX instructions when running under TCG
- Support for ISA 2.06 "load/store quadword instructions", "divide extended instructions" and "floating-point test instructions" when running under TCG
- PReP is not anymore (incorrectly) included in qemu-system-ppcemb
- Improved support for "-nodefaults" on the pSeries machine. Display devices created with "-device VGA" will be handled correctly in the device tree.
- Support for boot order in pSeries emulation
s390
- Support for adapter interrupts in virtio-cc2
SPARC
- Support for Sun CG3 framebuffer with the Sun4m machine. The CG3 framebuffer can be requested with "-vga cg3".
- Support for the CASA compare-and-swap instruction in TCG.
x86
- On the Q35 machine, the HPET interrupt can now be attached to GSIs 16-23, like on real hardware.
- The Q35 machine now supports CPU hotplug.
- Two flash chips can be specified using the "-drive if=pflash" or "-pflash" options twice.
- Memory layout has changed slightly; to improve performance, the PIIX4 machine ("-M pc") now has 3GB of low memory instead of 3.5GB if the guest has more than 3.5GB of memory. Similarly, the Q35 machine ("-M q35") now has 2GB instead of 2.75GB of low memory if the guest has more than 2.75GB of overall memory.
- Support for migration of Intel MPX registers.
- The Apple SMC device is now exposed in the ACPI tables.
- PCI hotplug now supports devices behind a bridge (only for bridges not added by hotplug; hot-plugged bridges can still use the PCI Standard Hot-Plug Controller).
- Support for the Hyper-V reference time counter via the "hv-time" suboption of "-cpu". This can improve performance of Windows guests substantially for applications that do many floating-point or SIMD operations. (Requires KVM and Linux 3.14).
- The distributed qemupciserial.inf file now allows installing multiport PCI serial devices on Windows too.
KVM
- x2apic is now enabled by default when KVM is in use.
Xen
- PCI passthrough of devices with a ROM now works.
Xtensa
- added support for ML605 and KC705 FPGA boards.
- Cache-related opcodes now correctly check privilege level/memory accessibility.
Device emulation
SCSI
- the SCSI layer can offload the WRITE SAME command to the host storage. This is supported on XFS file systems, raw devices, and iSCSI targets.
- SCSI disks can report a port WWN and port index, to make them look more like "real" SAS disks
USB
- support for suspend-to-RAM in the XHCI controller
- support for Microsoft descriptors, to make Windows use remote suspend by default.
GUI
- Windows hosts support keyboard translation in the GTK+ interface
- Support for SDL 2.0.
VNC
- Setting the password via monitor command will not enable password auth as side effect any more. Use "qemu -vnc ${display},password" on the command line to enable password authentication.
- Improved performance.
GTK+
- Support for mouse wheel.
- Support for enabling/disabling grab-on-hover from the command line using "-display gtk,grab-on-hover=on|off".
- QEMU for Windows now also supports GTK+ and uses it by default. Console windows (monitor, serial and parallel console) are not available with GTK+.
Monitor
- New HMP command cpu-add for CPU hotplug
- New QMP commands object-add and object-del for generic object hotplug (enables virtio-rng hotplug)
- New HMP commands object_add and object_del for generic object hotplug
- Improved command-line completion for device_add and device_del (as well as the new commands object_add and object_del)
- dump-guest-memory can produce kdump compressed format.
Migration
- Various fixes for migration with qcow2 images. Migration with qcow2 images is now reliable.
- Reduction (or elimination) of guest stalls during migration
- RDMA migration is now activated with the "rdma:HOST:PORT" syntax (used to be "x-rdma:HOST:PORT")
Network
- New backend "netmap" on BSD systems
Block devices in system emulation
- Live snapshot merge (...-commit) can be used to merge the active layer of an image into one of the snapshots
- Live and offline snapshot merge ("commit") will resize the destination image if necessary.
- The iSCSI and Gluster backends support snapshot merge.
- "query-block-stats" provides statistics for all images in the chain of backing files
- node-name, query-named-block-nodes: external snapshot, resize, change password (???)
- Experimental support in virtio-blk for M:N threading model: if you specify x-dataplane=on, you can also create I/O threads with "-object iothread" and point virtio-blk devices to the desired iothread with the "x-iothread" property. Properties of the running iothreads can be queried with the QMP command "query-iothreads".
Various
- -name now supports a "debug-threads" suboption. With this option, QEMU will assign names to each threads in order to simplify debugging. Note that thread names do not constitute a stable API.
- Improved coverage for "make check".
- Lots of bugfixes reported by Coverity (mostly for non-x86 guests).
Block devices and tools
- Network block drivers (curl, iscsi, rbd, ssh, glusterfs) can be built as shared library modules with "--enable-modules" configure option.
- When the destination of "qemu-img convert" is a raw device, qemu-img can ask the host storage to "discard" it instead of writing zeroes
- "qemu-img convert" can be passed a "-S 0" option to create a fully allocated image
- "qemu-img convert" can use hints from the host storage to speed up the transfer
- "qemu-img convert", "qemu-img create", "qemu-img amend" support multiple occurrences of the "-o" command line option.
- The libcurl interface had bitrotted and has been fixed.
- A new "quorum" driver for redundant storage is supported.
- QEMU is able to operate even if the underlying storage requires the buffer size to be a 4K multiple. This is the case for 4K-native disks (with cache=none or when accessed through iscsi:// URLs) and some raw devices. When this happens, QEMU emulates unaligned accesses using read-modify-write cycles if necessary. On properly configured guests newer than ~2009 there should be no performance penalty.
- qemu-io supports command editing via readline
- Pseudo-protocols like blkdebug and blkverify can be nested arbitrarily
- Improved error messages for many operations
- QEMU can access NFSv3 shares directly from userspace using libnfs. The share must be configured to allow access from high-numbered ports
TCG
- Improvements to the TCG optimizer make it produce faster code
- QEMU can use getauxval to detect the host instruction set for PPC64, ARM, s390
- QEMU supports generating MOVBE, ANDN, instructions in the x86 backend
- Improved code generation on AArch64 and SPARC hosts
- Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)
Tracing
- LTTng 2.x is now supported
User-mode emulation
- Support for AArch64 user-mode emulation
- Target specific minimum kernel versions, --enable-uname-release configure parameter will be removed in next release.
- Support for timer system calls: timer_create, timer_settime, timer_gettime, timer_getoverrun and timer_delete.
- Support for accept4 socketcall
- Support for sendmmsg/recvmmesg system calls
- Support for capset/capget system calls
- Bug fixes
Known issues
- On Win32, QEMU must be compiled with
--disable-coroutine-pool
to work around a suspected compiler bug. - The GTK+ terminal windows (monitor, serial console, parallel, ...) are still unusable in TCG mode: they lose characters and can raise deadlocks.
- QEMU for Windows does not support GTK+ terminal windows.