ChangeLog/2.4: Difference between revisions

From QEMU
(updated as of ee09f84e6bf5383a23c9624115c26b72aa1e076c (minus ARM changes))
Line 82: Line 82:
* The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.
* The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.


=== Command-line options ===
* A longhand version of -global (''-global driver=DRIVER,property=PROP,value=VAL'') is introduced, to set properties globally for devices that have a period in their name.  The older syntax ''-global DRIVER.PROP=VAL'' did not allow this.
=== TCG ===
* New command line option "-icount sleep=no".  The option will run emulation at the maximum possible speed: every time the CPU would go to sleep, the virtual clock will move to the next timer deadline.  For virtual machines that have no other sources of non-determinism (e.g. asynchronous block I/O, character devices or user input) this will also make execution deterministic.
== Block devices and tools ==
== Block devices and tools ==
* The "null" block device now has a new "latency-ns" option to delay the answer from the block device.
* The "null" block device now has a new "latency-ns" option to delay the answer from the block device.
Line 88: Line 92:
* qcow2 performance improvements.
* qcow2 performance improvements.
* qemu-io supports encrypted qcow2 images (which are deprecated).
* qemu-io supports encrypted qcow2 images (which are deprecated).
=== Command-line options ===
 
* A longhand version of -global (''-global driver=DRIVER,property=PROP,value=VAL'') is introduced, to set properties globally for devices that have a period in their name.  The older syntax ''-global DRIVER.PROP=VAL'' did not allow this.
=== TCG ===
* New command line option "-icount sleep=no".  The option will run emulation at the maximum possible speed: every time the CPU would go to sleep, the virtual clock will move to the next timer deadline.  For virtual machines that have no other sources of non-determinism (e.g. asynchronous block I/O, character devices or user input) this will also make execution deterministic.
== Tracing ==
== Tracing ==
== Guest agent ==
== Guest agent ==

Revision as of 17:00, 8 June 2015

System emulation

Incompatible changes

  • The handling of the floppy device controller is different between <2.4 and >=2.4 machine types that use the Q35 chipset (e.g. "-M pc-q35-2.3" vs. "-M pc-q35-2.4"). This can cause problems if you are defining floppy drives with command-line options such as "-global isa-fdc.driveA=id.

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".
-readconfig will standardize on the name for the command line option.
  • Behavior of automatic calculation of SMP topology when some SMP topology options for -smp are omitted (sockets, cores, threads) will change in the future. If guest ABI needs to be preserved on upgrades while using the SMP topology options, users should either set set all options explicitly (sockets, cores, threads), or omit all of them.
  • Image encryption is fatally flawed, and will be dropped entirely. It'll remain available only in qemu-img, so you can use 'qemu-img convert' to convert encrypted images to uncrypted ones.
  • Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.
  • Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.
  • A few devices will be configured with explicit properties instead of implicitly. Unlikely to affect users; for the full list, see the 2.3 ChangeLog.
  • QMP command blockdev-add is still a work in progress. It doesn't support all block drivers, it lacks a matching blockdev-del, and more. It might change incompatibly.

Alpha

  • Major fixes to the implementation of floating point exceptions.

ARM

  • New board model xlnx-ep108
  • Support for ACPI v5.1 tables in the "-M virt" board.
  • Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.
  • Emulation of the stream ID for MSI writes, for use in GICv3.

KVM

MIPS

PowerPC

IBM (pSeries)

  • The default RAM size for the pSeries machine is 512 MB.
  • Support of PCI device hotplug.

Freescale (BookE)

PReP

s390

  • Several TCG fixes
  • Extended name and UUID in STSI 3.2.2 information block
  • Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode
  • Various cleanups in the s390-virtio and virtio-ccw transports
  • Support for vector registers

SPARC

TriCore

x86

  • Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.

KVM

Xen

Device emulation and assignment

ACPI

  • Support for memory hot-unplug.
  • S3/S4 states can be disabled for boards using the Q35 machine type via "-global ICH9_LPC.disable_s3=on" and"-global ICH9_LPC.disable_s4=on"

Audio

Block devices

  • Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.
  • The infamous floppy device controller is not added to Q35 boards if not explicitly requested and no floppy drives are specified with "-drive if=floppy".

Character devices

  • Improved support for flow control in virtio-serial.

IDE

Mouse/keyboard

  • Support for virtio-keyboard, virtio-mouse, virtio-tablet.

Network

  • Support for the "rocker" L2 switch device.

SCSI

PCI/PCIe

  • Support for extra PCI root buses using PCI expander bridge devices. Unlike PCI-PCI bridges, a PCI expander bridge's bus can be associated with a NUMA node, allowing the guest OS to recognize the proximity of a device to RAM and CPUs.

TPM

  • Support for TPM 2

USB

VFIO

  • Support for resetting AMD Bonaire and Hawaii GPUs

virtio

  • Support for up to 1024 queues.
  • Support for ioeventfd in virtio-mmio.

VGA

Character devices

  • Improved support for flow control in spice-char.

GUI

  • Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.
  • Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.
  • The two extra keys in Brazilian 107-key keyboards are now usable.

Monitor

Migration

  • Support for compression of RAM data using multiple threads for compression and decompression (using migration capability "compress" and migration parameters "compress_threads", "compress_level" and "decompress_threads").

Network

  • Support for multi-queue vhost-user backends.

Block devices in system emulation

  • The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.

Command-line options

  • A longhand version of -global (-global driver=DRIVER,property=PROP,value=VAL) is introduced, to set properties globally for devices that have a period in their name. The older syntax -global DRIVER.PROP=VAL did not allow this.

TCG

  • New command line option "-icount sleep=no". The option will run emulation at the maximum possible speed: every time the CPU would go to sleep, the virtual clock will move to the next timer deadline. For virtual machines that have no other sources of non-determinism (e.g. asynchronous block I/O, character devices or user input) this will also make execution deterministic.

Block devices and tools

  • The "null" block device now has a new "latency-ns" option to delay the answer from the block device.
  • The iscsi driver can use the target's FUA capabilities to greatly improve roundtrip times in write-through caching modes (cache.writeback=off). These modes are recommended when the storage has a non-volatile (battery-backed) cache.
  • Major performance improvements in the parallels driver.
  • qcow2 performance improvements.
  • qemu-io supports encrypted qcow2 images (which are deprecated).

Tracing

Guest agent

User-mode emulation

Build dependencies

  • QEMU now requires a minimum glib version of 2.22. (In particular, we will no longer build on a stock RHEL5 or Centos 5 system.)
  • QEMU can now optionally be linked against tcmalloc.
  • QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.
  • libepoxy is required to compile QEMU with OpenGL support.
  • Building on Mac OS X versions earlier than 10.5 is no longer supported.

Known issues