ChangeLog/2.1
System emulation
Incompatible changes
- The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.
Future incompatible changes
- Three options are using different names on the command line and in configuration file. In particular:
- The "acpi" configuration file section matches command-line option "acpitable";
- The "boot-opts" configuration file section matches command-line option "boot";
- The "smp-opts" configuration file section matches command-line option "smp".
- Starting with QEMU xyz.jkl, -readconfig will standardize on the name for the command line option.
ARM
- Firmware can be passed to the vexpress machine via -bios.
- Improvements to Allwinner SoC emulation.
- AArch64 TCG system emulation support.
- Initial support in TCG for EL2 and EL3.
- AArch64 SHA and Crypto instruction support.
LM32
- Support for semihosting.
Microblaze
- Support for u-boot initrd images.
Power
- Support for VFIO (with guest-side IOMMU) on pSeries.
- Support for emulation of decimal number instructions.
- dump-guest-memory is supported for little endian ppc64
- Support for virtio on little endian ppc64le.
s390
- virtio-ccw supports migration
- support for irqfds on adapter-interrupt enabled virtio-ccw devices
- gdb server support for software breakpoints and hardware breakpoints (via PER)
- enable CMMA on supported kernels
- The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).
SPARC
- Improved IOMMU emulation.
x86
- QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.
- More faithful SMBus controller emulation.
- More faithful CPL (current privilege level) emulation in TCG mode.
- More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.
- Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.
- Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".
- New Broadwell CPU model.
- TCG supports the "check" and "enforce" suboptions of "-cpu".
KVM
Xen
Xtensa
- Support for loading uImage, device tree and initrd.
Device emulation and assignment
SCSI
- Support for MSI and MSI-X in the megasas emulation.
USB
- Support for file-sharing via MTP emulation
- Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest
- Support for attaching keyboards and mice to a specific video card (multi-seat).
VFIO
- Support for RTL8168 NICs.
GUI
- Many bug fixes for the GTK+ interface.
- Mouse wheel support for the SDL 2.0 interface.
- Support for multi-seat in the GTK+ and SDL 2.0 interfaces.
Monitor
- Ctrl-L (form feed) can be used to clear the screen in the monitor.
- More commands support command-line completion.
- New monitor command "info memdev" (with the QMP counterpart "query-memdev").
- New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.
Migration
- Many fixes to XBZRLE.
- A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.
Network
- Improved emulation of link auto-negotiation fixes bugs in Mac OS X.
- More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.
- New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.
- New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.
Block devices in system emulation
- The threaded backend for virtio-blk, introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).
- The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=id -device virtio-blk-pci,iothread=id". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.
- The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.
- The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".
- "block-mirror" has a new optional replaces argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the node-name for the mirror target.
- Xen PV disks now support the discard operation.
PCIe
- Basic hot-plug/hot-unplug support for Q35 machine.
Various
- Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"
Block devices and tools
- Filenames can be JSON objects preceded by "json:", for example json:{'driver':'raw','file.filename':'test.img'}. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.
- curl: The new sslverify option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.
- nfs: A new option to set the readahead size was added.
- quorum: The rewrite-corrupted option allows to automatically correct corrupted copies of the image.
- vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.
TCG
- Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.
Tracing
- Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.
User-mode emulation
- --enable-uname-release configure parameter has been removed
- Improved support for FreeBSD.
- Support for opening /proc/self/exe and /proc/self/cmdline
- Support ARM HWCAP2 flags
- Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls
- New target ppc64le-linux-user, for little-endian Power platforms.
Known issues
- The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.