ChangeLog/2.9: Difference between revisions

From QEMU
(→‎ACPI: document WRITE_POINTER in the linker/loader)
(updated as of a1cf5fac2b929ffa2abd1285401f2535ff8c6fea)
Line 1: Line 1:
== System emulation ==
== System emulation ==
=== Incompatible changes ===
=== Incompatible changes ===
* Improvements to "-drive":
** "-drive"'s <tt>if</tt> option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.
** "-drive if=scsi" does not work anymore with PC machine types, as it created an obsolete SCSI controller model. QEMU supports better controllers (megasas, mptsas, virtio-scsi) but which to use depends on the guest you are using.
** "Orphan" -drive options, where an <tt>if</tt> option is not supported by the emulated machine (e.g. "if=mtd" on x86) is now a fatal error. It had been triggering a warning since version 2.2.
=== Future incompatible changes ===
=== 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.
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly.  This is unlikely to affect users.
* 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.
* For x86, specifying a CPUID feature with both "+feature/-feature" and "feature=on/off" will cause a warning.  The current behavior for this combination ("+feature/-feature" wins over "feature=on/off") will be changed so that "+feature" and "-feature" will be synonyms for "feature=on" and "feature=off" respectively).
=== 68k ===
* Support for many 680x0 opcodes.
=== ARM ===
=== ARM ===
==== KVM ====
==== KVM ====
=== MIPS ===
=== MIPS ===
=== Nios2 ===
* New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.
=== OpenRISC ===
* Many fixes and many instructions added.
=== PowerPC ===
=== PowerPC ===
* Lots of POWER9 instructions are implemented for TCG.
* New "40p" machine type, essentially a cleaned up version of the old "-M prep".
* Under KVM, the guest timebase stops when the guest is stopped.
==== pSeries ====
==== pSeries ====
* Support for the H_SIGNAL_SYS_RESET hypercall
=== s390 ===
=== s390 ===
* Multiple bus support for zPCI.
=== SH ===
=== SH ===
=== SPARC ===
=== SPARC ===
* Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.
=== TileGX ===
=== TileGX ===
=== Tricore ===
=== Tricore ===
* Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).
=== x86 ===
=== x86 ===
* TCG supports 5-level paging.
* The <tt>q35</tt> machine type offers SMI feature negotiation to interested guest firmware.
* Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.
==== KVM ====
* When KVM is in use, the VMware-specific CPUID leaf for the TSC frequency can be passed to guests if the TSC frequency of the guest is stable.  This happens with either "-cpu ...,invtsc" or "-cpu ...,tsc-freq=HZ"
* When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments
==== Xen ====
==== Xen ====
 
* Support for unplugging NVMe disks at startup
==== SMI broadcast ====
=== Xtensa ===
 
* Support for -icount.
The <tt>pc-q35-2.9</tt> machine type now offers SMI feature negotiation to interested guest firmware. The negotiation interface resembles virtio-1.0, with the <tt>etc/smi/supported-features</tt>, <tt>etc/smi/requested-features</tt>, and <tt>etc/smi/features-ok</tt> fw_cfg files. Currently one bit can be negotiated by guest firmware, <tt>ICH9_LPC_SMI_F_BROADCAST_BIT</tt>, which causes QEMU to inject a syncronous SMI (triggered through <tt>APM_CNT_IOPORT</tt>) on all VCPUs at once. This benefits the edk2 SMM driver stack as built into OVMF.
 
=== Device emulation and assignment ===
=== Device emulation and assignment ===
==== ACPI ====
==== ACPI ====
 
* The QEMU linker/loader command set has been extended with <tt>WRITE_POINTER</tt>, which lets guest firmware pass the address of firmware-allocated areas back to QEMU.
The QEMU linker/loader command set has been extended with <tt>WRITE_POINTER</tt>. It enables guest firmware to communicate GPAs to QEMU that fall in memory areas that were allocated by the guest firmware. Such information lets QEMU device models write to guest RAM at the right locations, when the guest OS is supposed to find the same locations via ACPI objects. (For linking those ACPI objects, the existent <tt>ADD_POINTER</tt> command is sent to the guest firmware.) The first user for <tt>WRITE_POINTER</tt> is the VMGENID device.
* QEMU provies ATSR information in the DMAR table. ATSR is required for software that wants to enable ATS on endpoint devices behind a PCIe Root Port.
 
==== Block devices ====
==== Block devices ====
* I/O threads (supported by virtio-blk and experimentally by virtio-scsi) will poll for I/O submission and completion for a limited time after they have been woken up.  This improves performance on some I/O-heavy testcases but 10-20%.
==== Network devices ====
==== Network devices ====
* virtio-net devices can pass the MTU to the guest.
==== SCSI ====
==== SCSI ====
==== PCI/PCIe ====
==== PCI/PCIe ====
* New device "pcie-root-port" provides a generic PCIe root port.
* New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.
==== USB ====
==== USB ====
* Many XHCI emulation bugfixes.
==== VFIO ====
==== VFIO ====
==== virtio ====
==== virtio ====
* virtio-crypto devices support hotplug.
* virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.
==== Xen ====
==== Xen ====
==== fw_cfg ====
==== fw_cfg ====
Line 39: Line 75:


=== Character devices ===
=== Character devices ===
* A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.
=== Crypto subsystem ===
=== Crypto subsystem ===
* The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)
=== GUI ===
=== GUI ===
* "-display vnc" can specify multiple VNC listen addresses.
* "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.
=== Monitor ===
=== Monitor ===
* QEMU now includes Texinfo documentation for all QMP commands and events.
* The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".
=== Migration ===
=== Migration ===
* A new option --only-migratable will prevent adding devices that cannot be live-migrated.
=== Network ===
=== Network ===
* slirp's TFTP server supports dynamic block sizes.
=== Block devices and tools ===
=== Block devices and tools ===
=== Tracing ===
=== CLI options ===


== User-mode emulation ==
== User-mode emulation ==
* Support for hppa-linux emulation.
* Support for nios2-linux emulation.
=== Removed target support ===
=== Removed target support ===
=== New functionality ===
=== New functionality ===
== TCG ==
== TCG ==
 
* Improvements to MIPS code generation.
* TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"
== Build Information ==
== Build Information ==
=== Documentation ===
=== Documentation ===

Revision as of 11:21, 24 February 2017

System emulation

Incompatible changes

  • Improvements to "-drive":
    • "-drive"'s if option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.
    • "-drive if=scsi" does not work anymore with PC machine types, as it created an obsolete SCSI controller model. QEMU supports better controllers (megasas, mptsas, virtio-scsi) but which to use depends on the guest you are using.
    • "Orphan" -drive options, where an if option is not supported by the emulated machine (e.g. "if=mtd" on x86) is now a fatal error. It had been triggering a warning since version 2.2.

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.
  • Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.
  • 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.
  • For x86, specifying a CPUID feature with both "+feature/-feature" and "feature=on/off" will cause a warning. The current behavior for this combination ("+feature/-feature" wins over "feature=on/off") will be changed so that "+feature" and "-feature" will be synonyms for "feature=on" and "feature=off" respectively).

68k

  • Support for many 680x0 opcodes.

ARM

KVM

MIPS

Nios2

  • New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.

OpenRISC

  • Many fixes and many instructions added.

PowerPC

  • Lots of POWER9 instructions are implemented for TCG.
  • New "40p" machine type, essentially a cleaned up version of the old "-M prep".
  • Under KVM, the guest timebase stops when the guest is stopped.

pSeries

  • Support for the H_SIGNAL_SYS_RESET hypercall

s390

  • Multiple bus support for zPCI.

SH

SPARC

  • Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.

TileGX

Tricore

  • Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).

x86

  • TCG supports 5-level paging.
  • The q35 machine type offers SMI feature negotiation to interested guest firmware.
  • Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.

KVM

  • When KVM is in use, the VMware-specific CPUID leaf for the TSC frequency can be passed to guests if the TSC frequency of the guest is stable. This happens with either "-cpu ...,invtsc" or "-cpu ...,tsc-freq=HZ"
  • When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments

Xen

  • Support for unplugging NVMe disks at startup

Xtensa

  • Support for -icount.

Device emulation and assignment

ACPI

  • The QEMU linker/loader command set has been extended with WRITE_POINTER, which lets guest firmware pass the address of firmware-allocated areas back to QEMU.
  • QEMU provies ATSR information in the DMAR table. ATSR is required for software that wants to enable ATS on endpoint devices behind a PCIe Root Port.

Block devices

  • I/O threads (supported by virtio-blk and experimentally by virtio-scsi) will poll for I/O submission and completion for a limited time after they have been woken up. This improves performance on some I/O-heavy testcases but 10-20%.

Network devices

  • virtio-net devices can pass the MTU to the guest.

SCSI

PCI/PCIe

  • New device "pcie-root-port" provides a generic PCIe root port.
  • New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.

USB

  • Many XHCI emulation bugfixes.

VFIO

virtio

  • virtio-crypto devices support hotplug.
  • virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.

Xen

fw_cfg

The DMA interface to fw_cfg now supports writeable blobs.

The fw_cfg_io and fw_cfg_mem devices now have more slots for files; the FW_CFG_FILE_SLOTS constant has been replaced with the (internal only) x-file-slots property. The property can be further raised in future machine types if absolutely necessary.

Character devices

  • A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.

Crypto subsystem

  • The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)

GUI

  • "-display vnc" can specify multiple VNC listen addresses.
  • "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.

Monitor

  • QEMU now includes Texinfo documentation for all QMP commands and events.
  • The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".

Migration

  • A new option --only-migratable will prevent adding devices that cannot be live-migrated.

Network

  • slirp's TFTP server supports dynamic block sizes.

Block devices and tools

User-mode emulation

  • Support for hppa-linux emulation.
  • Support for nios2-linux emulation.

Removed target support

New functionality

TCG

  • Improvements to MIPS code generation.
  • TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"

Build Information

Documentation

Build dependencies

Docker Build Targets

Known issues