ChangeLog/2.0: Difference between revisions

From QEMU
(Add note on --cxx= usage for AArch64 disassembler)
Line 152: Line 152:
* The GTK+ terminal windows (monitor, serial console, parallel, ...) are still unusable in TCG mode: they lose characters and can raise deadlocks.
* 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.
* QEMU for Windows does not support GTK+ terminal windows.
* AArch64 disassembler support may cause linker errors when configuring with <code>--cc=</code> without matching <code>--cxx=</code> argument.

Revision as of 15:00, 3 April 2014

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".
  • 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.

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 2.1, -readconfig will standardize on the name fo the command line option.

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.
  • AArch64 disassembler support may cause linker errors when configuring with --cc= without matching --cxx= argument.