ChangeLog/1.1

From QEMU

Contents

System emulation

All targets

  • qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.
    PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.
  • -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.
  • PCI-to-PCI bridges are supported [...]
  • PCI emulation includes a standard hot-plug controller [...]
  • The coroutine backend can now be configured using configure --with-coroutine=.... A new coroutine backend sigaltstack is available for platforms that don't support the default ucontext backend.
  • Last but not least: the SDL user interface now uses the new QEMU icon.

ARM

  • The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.
  • A device tree can be passed to the kernel using -dtb option (or alternatively -machine dtb=...).
  • New 'nuri' and 'smdkc210' models of Samsung Exynos4210 based devboards.
  • New 'highbank' model of the Calxeda Highbank.
  • New 'vexpress-a15' model of the Versatile Express Cortex-A15.

PowerPC

  • The Bamboo machine now works with TCG, before only KVM was able to execute 440 code.
  • Pseries handles PCI, allowing for virtio devices with -M pseries.
  • Pseries works with PR KVM allowing for -M pseries -enable-kvm to work on G5s.
  • We can now emulate e500mc cores, but no e500mc based board is emulated yet. You need to use -M mpc8544ds and a special guest kernel.
  • Timers on ppc405 now work and don't segfault QEMU.

S/390

  • Added support to -kernel to allow booting of ELF binaries.
  • Fixed -kernel to allow booting of newer guest kernels.
  • Devices can now be hotplug add'ed (remove is not there yet).
  • Rebooting a virtual machine now works.

SPARC

  • Added interrupt controller and support of vector interrupts.
  • Fixed handling 32 bit instructions on a sparc64 CPU.
  • Fixed block load instructions regression happened in 1.0 release.
  • Fixed BCD mask in m48t59 emulation, so that Solaris 2.5.1 doesn't hang on sun4m emulation when day of month >21.
  • Fixed initrd loading in qemu-system-sparc64.

x86

  • NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.
  • The -rtc-td-hack option is now available as a qdev property (-global mc146818rtc.lost_tick_policy=slew) and as such can be specified in a -readconfig configuration file.
  • When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with -global isa-serial.wakeup=1), and the system_wakeup monitor command.
  • KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the -machine ...,kernel_irqchip=on command-line option. MSI is not supported yet when using the kernel_irqchip option.
  • Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See Features/PC System Flash for more information.
  • KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.

Device emulation

  • The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.
  • QEMU now includes experimental support for USB 3.0 (xHCI).
  • Various improvement on the floppy emulation, most notably media change has been fixed

Audio devices

  • Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).

Block devices

  • QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.
  • The rbd block driver supports the discard operation now
  • The vpc block driver supports the Fixed Disk subformat of VHD images now
  • The new QMP command transaction can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See Features/SnapshotsMultipleDevices for more information.
  • The new monitor command block_stream lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the copy-on-read option of the -drive command-line option, which only transfers data when the guest needs it.
  • An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use qemu-img create -f qcow2 -o compat=1.1 <filename> <size> for creating the image. Note that older versions of QEMU won't be able to read such images.
  • I/O throttling is experimentally supported using the new -drive options bps/bps_rd/bps_wr/iops/iops_rd/iops_wr. It is expected to work with virtio-blk and IDE harddisks, but may lead to hangs when used with CD-ROM or floppy emulation or other devices.
  • qemu-io supports new options to enable tracing and to choose a cache modes

Network devices

  • QEMU supports a new type of network device, bridge (used with -net bridge or -netdev bridge). The new type is similar to tap, but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as setuid. The helper program supports a simple ACL and configuration mechanism, see the commit message and feature page for documentation.

Live Migration, Save/Restore

  • Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported.
  • Live migration supports IPv6. IPv6 addresses can be expressed as tcp:host:port. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.

Guest agent

  • qemu-ga has been ported to Windows.
  • Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces
  • Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.
  • An easier to use reset mechanism has been added: guest-sync-delimited.

Host support

  • ARM hosts are now supported again (they were broken in 1.0).
  • Sockets and SLIRP on Windows hosts was broken in 0.14 and works again.
  • 64-bit Windows hosts are now supported.

User-mode emulation

  • User-mode emulation can provide some information from the /proc filesystem.
  • On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.

Testing

  • A make check target has been implemented and runs some quick sanity tests
  • qemu-iotests, which was previously hosted in an external git repository, has been merged into the QEMU source tree

Build dependencies

  • Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.