Warning: unsupported host systems

NetBSD is again a supported system.

Support for Solaris 9 and earlier has been removed.

Unsupported host setups are CPU and operating systems which we do not have access to and are thus unable to test. They will continue to work in this release (though configure will warn you about the unsupported status), but in a future QEMU release we may drop support for those hosts unless somebody volunteers to help us with maintaining them (and can provide build/CI machines).

This affects the CPU architectures:

  • ia64

and the OSes:

  • GNU/kFreeBSD
  • DragonFly BSD
  • OpenBSD
  • Solaris
  • AIX
  • Haiku

System emulation

Incompatible changes

  • Due to fixes to IPv4 and IPv6, some corner cases that previously worked by mistake have slightly different semantics:
    • IPv4 clients are now disabled correctly when ipv4=off is used.
    • Previously, "-vnc :1,to=2" would bind IPv4 to port 5901 and IPv6 to port 5902. Now, both of them bind to port 5901.

Deprecated options

  • The command-line option "-hdachs" is now deprecated. Use the geometry options of "-device" instead.
  • The command-line option "-usbdevice" is now deprecated, use "-device" instead.
  • Using "-net dump" for capturing network traffic is now deprecated, use "-object filter-dump" with "-netdev" instead.
  • The parameters "serial", "trans", "secs", "heads", "cyls" and "addr" of the "-drive" option are now deprecated. Use the corresponding options of "-device" instead.
  • The monitor commands "usb_add" and "usb_del" are now deprecated, use "device_add" and "device_del" instead.
  • The monitor commands "host_net_add" and "host_net_remove" are now deprecated. Use "netdev_add" and "netdev_del" instead.

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



  • Support for 80-bit FPUs.


  • M profile exception return is implemented correctly
  • M profile emulation now supports the MPU
  • Exynos4210 supports the hardware PRNG device, SDHCI and system poweroff
  • Supports for combining the userspace GIC with KVM timers, so that KVM can be used on the Raspberry Pi 3.
  • The ASPEED SoC includes an emulated FTGMAC100 network card and a temperature sensor device.
  • Support for ITS save/restore
  • Support for the ARM MPS2/MPS2+ FPGA-based development board (in this initial version many devices are not yet implemented).
  • zynq supports executing from SPIPS flash


Support for CPU versions 9.4, 9.5, 9.6 and 10.0.


  • Enhanced Virtual Addressing (EVA) support
  • Initrd support for kaslr-enabled kernels.



  • Support for shadow registers, idle states, numcores and coreid registers, and the EVBAR and EPH registers.
  • Support for migration/savevm


  • Multi-threaded TCG is enabled for PPC targets.
  • QEMU now includes a VGA driver for Mac machine types (g3beige/mac99, respectively OldWorld and NewWorld)
  • Support for POWER9 guests with KVM
  • Partial support for POWER9 guests with TCG.
  • The powernv machine includes a more complete device tree.
  • OpenPIC timers now work
  • The U-Boot firmware for the e500 has been updated to release v2017.07


  • Support for hypercalls that resize hashed page tables in a running guest.


  • Basic support for using channel-attached 3270 "green screen" devices through the "x-terminal3270" device. Only x3270 is supported as client. See for details.
  • CSS ids are visible in "info qtree" and as QOM properties.
  • gdbstub provides access guarded storage registers.
  • Improved support for PCI (AEN, AIS and zPCI)
  • IPL supports the "bootindex" property via LOADPARM.
  • Support for migration of storage attributes.
  • Support for vfio-ccw (channel device passthrough). See for details.
  • Support for z14 CPU models.
  • TCG can use host atomic operations for s390 "LOAD AND x" and "COMPARE SWAP" operations.
  • TCG implements EXECUTE completely
  • TCG supports LOAD PROGRAM PARAMETER, extended facilities, CPU type and id.
  • TCG supports many more less common instructions.
  • The cpu model has been updated with the pci-related facilities and the facilities new with z14.
  • Adapter interrupt suppression is now supported.
  • The ccw bios now supports netboot via TFTP, courtesy of the SLOF libnet code.


  • TCG can use host atomic instructions for tas.b
  • TCG can use host atomic instructions for gUSA (user-space atomics) sequences, and can restart them correctly if they are interrupted by a signal.
  • Support for fpchg and fsrra instructions.


  • Fix for panic when booting Solaris 2.6 32-bit in sun4m machines (OpenBIOS)
  • Fix console colors in Solaris terminal (OpenBIOS)




  • The Q35 MCH supports TSEG higher than 8MB (the largest size available on real hardware)
  • gdbstub now provides access to SSE registers
  • Apple SMC emulation implements the error status port
  • IOMMU?



  • Support for muli-page shared rings


  • -serial can be used to direct the sim machine's console output to a character device.

Device emulation and assignment


  • New "-numa cpu" option quickly lets you assign CPUs to nodes by socket/core/thread id (for example a 2-socket x86 machine would be "-numa cpu,node-id=0,socket-id=0 "-numa cpu,node-id=1,socket-id=1" independent of the number of sockets per core.
  • Support for ACPI distance info.


  • More than one Adlib card can be plugged in.

Block devices

  • The emulated NVMe device supports the Write Zeroes command.
  • The emulated NVMe device supports Controller Memory Buffers (currently Submission Queue, Read Data and Write Data support is enabled).


  • qxl and virtio-gpu support two new properties for the default display resolution, xres and yres

Input devices

  • input-linux supports absolute events


  • Support for FRUs
  • SDRs can be loaded from a file.

Network devices


  • Support for a vhost-user-scsi device


  • PCI bridges are presenting again a standard hotplug controller (SHPC) after it was removed in 2.9.


  • Support for devices with sparse/non-sequential USB interfaces



  • vhost-user supports IOTLB messages.


  • Support for the Xen 9pfs backend.
  • QEMU uses libxendevicemodel when available.



  • prevent guest access to mapped security modes metadata (CVE-2017-7493)
  • configurable default permissions in mapped security modes
  • handle transport errors (both virtio and Xen backends)

Character devices

  • Character device backends can be hot-swapped with the new monitor command "chardev-change".

Crypto subsystem

  • See "Block devices and tools" for qcow2's new support for the LUKS encryption format.
  • Support for AF_ALG backends for cyphers, cryptographic hash and HMAC algorithms.



  • New debugging commands "info ramblock" and (for s390) "info cmma"
  • QMP can now parse 64-bit unsigned values.
  • QMP can now parse JSON "null" values. They can be used to disable backing files and to reset migration parameters to their default value.
  • New option "-a" (all) for "info registers", to dump registers for all CPUs
  • New command "chardev-send-break"
  • "info qtree" shows link properties (e.g. iothread or memdev properties)
  • "info vnc" now shows information about connected clients.
  • "qom-list-types" includes "abstract" and "parent" fields for each type.


  • New "return-path" capability lets the source wait for the destination's acknowledgement that migration succeeded, and fails migration if it doesn't get one.


  • slirp supports a minimal NC-SI (Network Controller Sideband Interface) backend

Block devices and tools

  • Image locking is added and enabled by default. Multiple QEMU processes cannot write to the same image as long as the host supports OFD or posix locking, unless options are specified otherwise.
  • Support for the vxhs network protocol
  • Progress information is printed when qemu-img receives a SIGINFO (on operating systems that support it).
  • iscsi and rbd support again the filename option that was removed in 2.9. It should not be necessary to use it, but existing images might specify it as their backing filename.
  • Dirty block bitmaps can be stored in qcow2 files using a new "persistent" argument to block-dirty-bitmap-add.
  • qcow2 can use LUKS as the encyption format, using "-o encrypt.format=luks,encrypt.key-secret=secret-object". The legacy, and less secure AES encryption, can be enabled with "encrypt.format=aes".
  • NBD can use the NBD_OPT_GO option. If supported by the server, the new option provides for better error messages.
  • Using qemu as an NBD server or client is now more robust to protocol violations on the other side of the connection (including some fixes for regressions added in 2.9)
  • "qemu-img resize" supports preallocation of the new parts of the image.

User-mode emulation

  • Fixes to many system calls.


  • QEMU can now be built without TCG support, by passing the --disable-tcg option to the configure script. This is only supported on x86 and s390x for now.

Guest agent

  • New commands 'guest-get-host-name', 'guest-get-users', 'guest-get-timezone', 'guest-get-osinfo'
  • The win32 MSI package now includes libpcre

Build Information

Build Dependencies

  • QEMU now prefers SDL2 over SDL1 if both are available.
  • QEMU now prefers GTK+3 over GTK+2 if both are available.

Docker Build Targets

A number of additional docker targets have been added which allow cross compilation build tests for arm, powerpc and mips. Run "make docker" for help.

Known issues

  • see Planning/2.10
  • The emulation of Raspberry Pi is still missing some features which are required to run newer versions of Raspbian.