https://wiki.qemu.org/api.php?action=feedcontributions&user=Stefan+Weil&feedformat=atomQEMU - User contributions [en]2024-03-29T12:08:31ZUser contributionsMediaWiki 1.39.1https://wiki.qemu.org/index.php?title=Documentation/KQemu&diff=11371Documentation/KQemu2023-06-29T12:48:22Z<p>Stefan Weil: Fix grammer and case of names</p>
<hr />
<div>{{DISPLAYTITLE:QEMU Accelerator User Documentation}}<br />
<br />
== Introduction ==<br />
<br />
QEMU Accelerator (KQEMU) is an old driver allowing the QEMU PC emulator to run much faster when emulating a PC on an x86 host. Current versions of QEMU (0.11 and up) have no support for KQEMU anymore, focusing on kvm instead. The information below is provided for historical reasons only.<br />
<br />
KQEMU is supported on x86 or x86_64 Linux 2.4 or 2.6 hosts. Experimental versions are available for FreeBSD and Windows NT/2000/2003/XP.<br />
<br />
== Installation ==<br />
=== KQEMU Compilation (Linux only) ===<br />
<br />
First ensure that you have a recent version of QEMU (> 0.9.1) with the KQEMU support enabled (this is the default).<br />
<br />
Then decompress the KQEMU sources:<br />
<br />
cd /tmp<br />
tar zxvf kqemu-x.y.z.tar.gz<br />
cd kqemu-x.y.z<br />
<br />
Then you configure KQEMU and build it (usually no options are needed):<br />
<br />
./configure<br />
make<br />
<br />
Then type as root user:<br />
<br />
make install<br />
<br />
to install KQEMU in `/usr/local'.<br />
<br />
=== QEMU Accelerator Installation for Linux ===<br />
<br />
If you use x86 Linux, the compilation of the QEMU Accelerator Kernel Module (KQEMU) is automatically activated provided you have the necessary kernel headers. If nonetheless the compilation fails, you can disable its compilation with the `--disable-kqemu' configure option.<br />
<br />
Note that KQEMU cannot currently work if the Xen virtualizer is running on your host.<br />
<br />
If you are using a 2.6 host kernel, then all the necessary kernel headers should be already installed. If you are using a 2.4 kernel, then you should verify that properly configured kernel sources are installed and compiled. On a Redhat 9 distribution for example, the following must be done:<br />
<br />
# Install the kernel-source-xxx package<br />
# cd /usr/src/linux-xxx<br />
# make distclean<br />
# Copy /boot/config-vvv in .config (use uname -r to know your configuration name 'vvv')<br />
# Edit the Makefile to change the EXTRAVERSION line to match your current configuration name:<br />
# make menuconfig # Just save the configuration<br />
# make dep bzImage<br />
<br />
The installation of KQEMU is not fully automatic because it is highly distribution dependent. When launching<br />
<br />
make install<br />
<br />
KQEMU is installed in /lib/modules/kernel_version/misc.<br />
<br />
If you want that KQEMU is installed automatically at boot time, you can add<br />
<br />
# Load the KQEMU kernel module<br />
/sbin/modprobe kqemu<br />
<br />
in `/etc/rc.d/rc.local'.<br />
<br />
By default, kqemu assumes that your distribution uses udev to have the device `/dev/kqemu' automatically created. It is usually necessary to change the device access rights set by udev. With the Fedora Core >= 4, you can do:<br />
<br />
echo 'KERNEL=="kqemu", NAME="%k", MODE="0666"' \<br />
> /etc/udev/rules.d/60-kqemu.rules<br />
<br />
If you don't want to use udev, you can specify a specific major number for the `/dev/kqemu' device:<br />
<br />
/sbin/modprobe kqemu major=250<br />
<br />
The device should be created with something like:<br />
<br />
mknod /dev/kqemu c 250 0<br />
chmod 666 /dev/kqemu<br />
<br />
=== QEMU Accelerator Installation for Windows ===<br />
<br />
Right click on `kqemu.inf' in Explorer and choose Install.<br />
<br />
In order to start kqemu, you must do:<br />
<br />
net start kqemu<br />
<br />
== Usage ==<br />
<br />
When QEMU is compiled with KQEMU support, the following option is added to QEMU:<br />
<br />
`-no-kqemu'<br />
Disable the usage of the QEMU Accelerator module (KQEMU). QEMU will work as usual but will be slower. This option can be useful to determine if emulation problems are coming from KQEMU. <br />
`-kernel-kqemu'<br />
Enable full virtualization mode for best performances. This mode only works with the following guest OSes: Linux 2.4, Linux 2.6, Windows 2000 and Windows XP. WARNING: for Windows 2000/XP, you cannot use it during installation. See the next chapter for more information about full virtualization. <br />
<br />
When using KQEMU on a Linux or FreeBSD host, QEMU will create a big hidden file containing the RAM of the virtual machine. For best performance, it is important that this file is kept in RAM and not on the hard disk. QEMU uses the `/dev/shm' directory to create this file because tmpfs is usually mounted on it (check with the shell command df). Otherwise `/tmp' is used as fallback. You can use the QEMU_TMPDIR shell variable to set a new directory for the QEMU RAM file.<br />
<br />
KQEMU has only been tested with Linux 2.4, Linux 2.6 and Windows 2000/XP as guest OSes. If your guest OS do not work with KQEMU, you can dynamically disable KQEMU with the `-no-kqemu' option.<br />
<br />
To see if kqemu is enabled and working correctly, use the QEMU monitor command:<br />
<br />
info kqemu<br />
<br />
== Full virtualization mode ==<br />
=== Introduction ===<br />
<br />
This mode is activated with the `-kernel-kqemu' QEMU option. It is supported for 32 bit guest OSes. The support for 64 bit guest OSes is experimental (linux 2.6.18 for x86_64 is known to work). When KQEMU runs in full virtualization mode, both guest kernel and user code are executed directly on the host CPU. In normal mode, only the user code is executed directly and the kernel code is still dynamically translated by QEMU.<br />
<br />
The full virtualization mode cannot work with all OSes because it makes some assumptions about the x86 instructions that the guest OS uses. Note that even if some assumptions are made on the guest OS, the full virtualization mode is secure by design: all the code is executed in user mode on the host processor which means it cannot break the host OS.<br />
<br />
The requirements for a guest OS to work in full virtualization mode are very simple and most recent OSes (such as Linux or Windows 2000/XP) fulfill them. Interested OS writers can read the KQEMU technical specification to learn more.<br />
<br />
=== Full virtualization and Linux guests ===<br />
<br />
* Best performances are achieved with Linux 2.4 kernels. Linux 2.6 works but the performance gains are small.<br />
* 64 bit guest Linux kernel is experimental. <br />
<br />
=== Full virtualization and Windows guests ===<br />
<br />
* Do not use full virtualization when installing Windows. You can enable it after Windows is installed.<br />
* Only Windows XP/2000 are known to work in full virtualization mode.<br />
<br />
[[Category:Obsolete feature pages]]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=11295Hosts/W322023-05-04T10:48:50Z<p>Stefan Weil: /* Native builds with MSYS2 */ Fix repository URL</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
Starting with QEMU 2.9, there is also a working acceleration similar to KVM, but based on Intel HAXM.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian squeeze based cross builds ====<br />
<br />
Note: Building on Debian squeeze is no longer supported, so the following commands won't work with latest QEMU.<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Debian stretch based cross builds ====<br />
<br />
# Debian stretch for W32 and W64:<br />
apt-get install g++-mingw-w64 mingw-w64 mingw-w64-tool mingw-w64-i686-dev mingw-w64-x86-64-dev nsis<br />
<br />
In addition, several packages from Cygwin are needed. Add https://qemu.weilnetz.de/debian/ as a package source (see instructions there) and install the required cross packages.<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
<br />
# Fedora for W32 cross build:<br />
dnf install mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL2 mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
dnf install mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL2 mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-w64" appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* mingw64-i686-curl<br />
* mingw64-i686-gtk3<br />
* mingw64-i686-libssh2<br />
* mingw64-i686-libtasn1<br />
* mingw64-i686-nettle<br />
* mingw64-i686-ncurses<br />
* mingw64-i686-gnutls<br />
<br />
==== Optional packages ====<br />
* mingw64-i686-SDL2<br />
* mingw64-i686-libgcrypt<br />
* mingw64-i686-libusb1.0<br />
* mingw64-i686-usbredir<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
=== Native builds with MSYS2 ===<br />
<br />
MSYS2 provides a convenient environment to produce native builds for W64.<br />
<br />
* Download and run the MSYS2 installer from [https://www.msys2.org/].<br />
<br />
* As per the MSYS2 documentation, download the latest repository updates with:<br />
<br />
pacman -Syu<br />
<br />
* If required, restart the MSYS2 console. Then update the remaining packages with:<br />
<br />
pacman -Su<br />
<br />
* Next install the basic set of developer tools:<br />
<br />
pacman -S base-devel mingw-w64-x86_64-toolchain git python ninja<br />
<br />
* Then install any required QEMU-specific packages. For a basic setup you can use:<br />
<br />
pacman -S mingw-w64-x86_64-glib2 mingw-w64-x86_64-pixman python-setuptools<br />
<br />
* Additional optional features require more packages. For example, to enable GTK+ and SDL user interface and user networking you can use:<br />
<br />
pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-SDL2 mingw-w64-x86_64-libslirp<br />
<br />
* Close the MSYS2 console. <br />
* Start mingw64.exe. <br />
<br />
* Download the QEMU source code:<br />
<br />
git clone https://gitlab.com/qemu-project/qemu.git<br />
<br />
* Finally build QEMU with:<br />
<br />
cd qemu<br />
./configure --enable-sdl --enable-gtk<br />
make<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the installers from https://qemu.weilnetz.de/.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
Hardware acceleration for x86 can be enabled with the command line option <code>--enable-hax</code>.<br />
This requires at least QEMU 1.9 and an installed Intel HAXM driver.<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt if QEMU was linked with SDL 1.2.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php<br />
<br />
;Intel Hardware Accelerated Execution Manager (HAXM)<br />
:https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/7.2&diff=11043ChangeLog/7.22022-11-01T20:41:11Z<p>Stefan Weil: /* Build Information */ Add Windows build information regarding DLL files</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features'] page for details of suggested replacement functionality.<br />
<br />
==== Removal of the "slirp" submodule (affects "-netdev user") ====<br />
<br />
The "slirp" submodule / code (which is the code behind "-netdev user" / "-nic user") has been removed from the QEMU source tree, so you now need to install your distributions libslirp development package before compiling QEMU to get the user-mode networking feature included again. For example, if you see an error message like this:<br />
<br />
<code>Parameter 'type' expects a netdev backend type</code><br />
<br />
... this might be caused by the missing "user" mode backend. In that case, please install libslirp first ("<code>dnf install libslirp-devel</code>" on Fedora and "<code>apt-get install libslirp-dev</code>" on Debian for example), recompile your QEMU with <code>--enable-slirp</code>, then try again.<br />
<br />
==== Semihosting calls from userspace ====<br />
<br />
For some target architectures (arm, m68k, mips, nios2, riscv, xtensa) QEMU supports a "semihosting" style ABI where guest code can make calls to directly print messages, read and write host files, and so on. Handling of when this is enabled in system emulation has been made consistent across target architectures. By default it is not enabled; if enabled via the commandline "-semihosting" or "-semihosting-config enable=on" then it is only permitted from non-userspace guest code; if the new-in-7.2 "-semihosting-config userspace=on" option is given then it is also permitted from guest userspace. For some target architectures this is a change in behaviour: mips, nios2 and xtensa previously allowed userspace access by default, and riscv allowed all access by default. If you were using semihosting on these targets and relying on that previous default behaviour, you need to update your commandline to explicitly enable semihosting to the desired level.<br />
<br />
==== Other removed features ====<br />
<br />
* The <tt>-watchdog</tt> option has been removed, use <tt>-device</tt> instead.<br />
* The PPC ''taihu'' machine has been removed, use ''ref405ep'' instead.<br />
<br />
=== New deprecated options and features ===<br />
* Big endian 32-bit MIPS hosts are now deprecated due to lack of CI coverage.<br />
* The "--blacklist" command line option for the QEMU guest agent has been renamed to "--block-rpcs". The old name is still supported for now, but will be removed in the future; "-b" can be used on old and new versions alike.<br />
<br />
Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements.<br />
<br />
=== 68k ===<br />
<br />
=== Alpha ===<br />
<br />
=== Arm ===<br />
<br />
* The following CPU architecture features are now emulated:<br />
** FEAT_ETS (Enhanced Translation Synchronization)<br />
** FEAT_PMUv3p5 (PMU Extensions v3.5)<br />
** FEAT_GTG (Guest translation granule size)<br />
** FEAT_HAFDBS (Hardware management of the access flag and dirty bit state)<br />
** FEAT_E0PD (Preventing EL0 access to halves of address maps)<br />
* New emulated CPU types:<br />
** Cortex-A35<br />
<br />
==== Machines ====<br />
<br />
=== AVR ===<br />
<br />
=== Hexagon ===<br />
<br />
=== HPPA ===<br />
<br />
=== LoongArch ===<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
* deprecated 32 bit big endian host<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
* Stability improvements<br />
* Performance improvements by supporting MTTCG<br />
* New '''virt''' platform is added to assist with CI and device testing<br />
<br />
=== PowerPC ===<br />
<br />
=== Renesas RX ===<br />
<br />
=== Renesas SH ===<br />
<br />
=== RISC-V ===<br />
==== ISA and Extensions ====<br />
* Update [m|h]tinst CSR in interrupt handling<br />
* Force disable extensions if priv spec version does not match<br />
* fix shifts shamt value for rv128c<br />
* move zmmul out of the experimental<br />
* Add checks for supported extension combinations<br />
* Fix typo and restore Pointer Masking functionality for RISC-V<br />
* Add mask agnostic behaviour (rvv_ma_all_1s) for vector extension<br />
* Add Zihintpause support<br />
* Add xicondops in ISA entry<br />
* Use official extension names for AIA CSRs<br />
* Fix the CSR check for cycle{h}, instret{h}, time{h}, hpmcounter3-31{h}<br />
* Improvements to the RISC-V debugger spec<br />
* Add disas support for vector instructions<br />
<br />
==== Machines ====<br />
* virt: pass random seed to fdt<br />
* opentitan: bump opentitan version<br />
* virt machine device tree improvements<br />
* Allow setting the resetvec for the OpenTitan machine<br />
* Enable booting S-mode firmware from pflash on virt machine<br />
<br />
==== Fixes and Misc ====<br />
* Upgrade OpenSBI to v1.1<br />
* microchip_pfsoc: fix kernel panics due to missing peripherals<br />
* Remove additional priv version check for mcountinhibit<br />
* Fixup register addresses for Ibex SPI<br />
* Cleanup the RISC-V virt machine documentation<br />
* Remove fixed numbering from GDB xml feature files<br />
* Priority level fixes for PLIC<br />
* Fixup TLB size calculation when using PMP<br />
<br />
=== s390x ===<br />
<br />
* Fix emulation of LZRF instruction<br />
* Implement Message-Security-Assist Extension 5 (random number generation via PRNO instruction)<br />
* Implement SHA-512 via KIMD/KLMD instructions<br />
* Enhanced zPCI interpretation support for KVM guests<br />
<br />
=== SPARC ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* Support for passing a random seed to the Linux kernel when booted with -kernel<br />
* Support for the MSR_CORE_THREAD_COUNT MSR<br />
==== TCG ====<br />
* Performance improvements in full-system emulation<br />
* Fixes in SSE implementation<br />
* TCG support for AVX, AVX2, F16C, FMA3 and VAES instructions<br />
<br />
==== KVM ====<br />
* Support for the "notify vmexit" mechanism, preventing processor bugs from hanging the whole system, through the ''-accel kvm,notify-vmexit='' and ''-accel kvm,notify-window='' options<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI / SMBIOS ====<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== I2C ====<br />
===== Controllers =====<br />
<br />
===== Devices =====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Multi-process QEMU ====<br />
<br />
==== Network devices ====<br />
<br />
* Fixed bug that could cause a stack or heap overflow with the emulated "tulip" NIC (CVE-2022-2962)<br />
<br />
==== NVDIMM ====<br />
<br />
==== NVMe ====<br />
<br />
===== Emulated NVMe Controller =====<br />
<br />
==== PCI/PCIe ====<br />
<br />
==== SCSI ====<br />
* Support for setting CD-ROM block size using the physical-block-size property of the scsi-cd device.<br />
<br />
==== SD card ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
* Massive general [https://github.com/qemu/qemu/commit/f5265c8f917ea8c71a30e549b7e3017c1038db63 performance improvement] somewhere between factor 6 .. 12.<br />
<br />
==== virtiofs ====<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
* UNIX socket support on Windows has been added<br />
<br />
=== Crypto subsystem ===<br />
<br />
* LUKS block device headers are validated more strictly<br />
* Errors are correctly reported when failing to load PSK credentials on clients<br />
* Creating LUKS images is supported on macOS<br />
<br />
=== Authorization subsystem ===<br />
<br />
=== GUI ===<br />
* On macOS systems, the same QEMU binary can include both the Cocoa user interface and the SDL or GTK+ user interfaces.<br />
<br />
=== GDBStub ===<br />
<br />
=== TCG Plugins ===<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
* When preallocating memory provided by a memory backend, it is now possible to specify the host CPUs (or alternatively the host nodes) to run the preallocation on via a user-creatable "thread-context" object. This allows for NUMA-aware preallocation, which can speed-up preallocation (and thereby VM creation time) significantly.<br />
<br />
=== Migration ===<br />
<br />
=== Monitor ===<br />
<br />
==== QMP ====<br />
<br />
==== HMP ====<br />
<br />
=== Network ===<br />
<br />
* The "slirp" submodule has been removed from the QEMU source tree. Use libslirp from your OS distribution instead.<br />
* New stream and dgram netdev backend<br />
<br />
=== Block device backends and tools ===<br />
=== Tracing ===<br />
<br />
=== Semihosting ===<br />
<br />
Semihosting calls were generally not permitted for userspace guest code in system emulation. This can now be enabled with the "-semihosting-config userspace=on" option. Note that the usual remarks about semihosting apply -- because it permits direct guest access to the host filesystem, it should only be used with trusted guest binaries.<br />
<br />
=== Miscellaneous ===<br />
<br />
== User-mode emulation ==<br />
<br />
* Dump failing executable on CPU exception<br />
* support for system calls pidfd_open(), pidfd_send_signal() and pidfd_getfd()<br />
* support for FUTEX_WAKE_BITSET and PI futexes<br />
* support for madvise(MADV_DONTNEED) on file mappings<br />
<br />
=== build ===<br />
<br />
=== binfmt_misc ===<br />
<br />
=== Hexagon ===<br />
<br />
=== LoongArch ===<br />
<br />
=== Nios2 ===<br />
<br />
=== HPPA ===<br />
<br />
* Increased guest stack to 80MB<br />
* Fix signal handling<br />
* Add vDSO emulation and thus avoid an executable stack<br />
* Changed guest memory layout like on real hppa kernel<br />
<br />
=== x86 ===<br />
<br />
* The qemu-i386 and qemu-x86_64 binaries now default to the 'max' CPU model instead of 'qemu32' / 'qemu64'<br />
* Support for saving/restoring SSE registers in signal frames in qemu-i386 (when FXSR is set in CPUID)<br />
* Support for saving/restoring XSAVE state in signal frames (when XSAVE is set in CPUID)<br />
<br />
== TCG backends ==<br />
<br />
=== ARM ===<br />
<br />
== Guest agent ==<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
* Python 3.7 or newer is now required.<br />
<br />
=== GIT submodules ===<br />
* The libslirp library is not included in QEMU anymore. The development packages for libslirp must be installed in the system to build QEMU with user-mode networking support. <!-- As of version 7.2, QEMU will fail to build without libslirp unless <tt>--disable-libslirp</tt> is passed explicitly to the configure script. This may change in the future --><br />
<br />
=== Container Based Builds ===<br />
* All containers are now "flat" containers (often generated by lci-tool)<br />
<br />
=== VM Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
* Meson 0.61 or newer is now required. QEMU ships with Meson 0.61.5, which will be used if necessary.<br />
<br />
=== Windows ===<br />
* The DLL files which are required at runtime and which therefore have to be included in the installer are now detected automatically. It is no longer necessary to collect them manually.<br />
<br />
=== Testing and CI ===<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/7.2]]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/5.1&diff=9482ChangeLog/5.12020-05-21T18:37:19Z<p>Stefan Weil: /* Build Dependencies */ GTK 3.22</p>
<hr />
<div><br />
== System emulation ==<br />
=== Incompatible changes ===<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://www.qemu.org/docs/master/system/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for the full list of historically deprecated features/options.<br />
<br />
=== Alpha ===<br />
<br />
=== 68k ===<br />
<br />
=== Arm ===<br />
<br />
* Emulation of the following architecture features is now implemented:<br />
** ARMv8.2-TTS2UXN<br />
* xlnx-versal-virt: machine now supports RTC and SD<br />
* New board model: sonorapass-bmc<br />
* Host memory errors can now be reported to AArch64 KVM guests via ACPI when using the 'virt' board (this is disabled by default; enable with '-machine ras=on')<br />
<br />
=== HPPA ===<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
<br />
=== PowerPC ===<br />
* The "label-size" property is now mandatory for NVDIMMs on the "pseries" machine type (the PAPR specification only supports labelled NVDIMMs)<br />
* NVLink2 devices can no longer be unplugged. This is not possible on real hardware, and was never supported by the guest side drivers, so this makes things safer.<br />
* We no longer use reconfiguration reboots to handle difficult cases during CAS option negotiation<br />
* Added an interface to inject POWER style NMIs<br />
<br />
=== RISC-V ===<br />
* Spike machine supports more then 1 CPU<br />
* Spike machine supports the `-bios` option<br />
* OpenSBI updated to v0.7<br />
* linux-usermode improvements<br />
* Support for the SiFive E34 CPU<br />
* 32-bit improvements for the `sifive_u` machine<br />
* Corrections to the Hypervisor extension page table walking<br />
* Expose a "serial" property for the `sifive_u` machine that specifys the board serial number<br />
<br />
=== s390 ===<br />
* Support for protected virtualization aka secure execution has been merged (KVM only)<br />
** The host needs to be a z15 or Linux One III with at least Linux 5.7<br />
<br />
=== SH ===<br />
<br />
=== SPARC ===<br />
<br />
=== TileGX ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* QEMU now exposes a WAET (Windows ACPI Emulated Devices Table) to guests -<br />
this reduces virtualization overhead for non-enlightened windows (Vista and later)<br />
guests by avoiding guest workarounds for an unreliable ACPI PM timer.<br />
* QEMU now supports both cold and hot plug of nvdimms for ARM Guests with ACPI.<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== PCI/PCIe ====<br />
Attempts to hotplug devices into a pci slot with hotplug disabled will now<br />
return an error instead of adding the device without notifying the guest.<br />
<br />
==== SCSI ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
<br />
==== virtiofs ====<br />
* virtiofsd:<br />
** Security fix: CVE-2020-10717, resource exhaustion of host fd's<br />
** Jailing improvements<br />
** Ensure that existing mounts under the shared directory are visible to the guest<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== GUI ===<br />
* Windows keyboard fixes for GTK and SDL<br />
<br />
=== GDBStub ===<br />
* bug fix to m68k gdbstub<br />
* linux-user now supports unix socket for debugging (needs a new gdb)<br />
* some tests for the stub added to check-tcg<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
==== QMP ====<br />
<br />
=== Migration ===<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
<br />
* Optional zstd compression for qcow2 (enable with <code>compression_type=zstd</code> as a creation option)<br />
* Fixed regression with 'qemu-nbd -c /dev/nbd0' keeping inherited stderr open (introduced in 4.1)<br />
* 'qemu-img map' gained --start-offset and --max-length options for mapping only a subset of a file<br />
* 'qemu-img' gained a new command mode 'bitmap' for manipulating persistent bitmaps in qcow2 files<br />
<br />
=== Tracing ===<br />
<br />
=== Miscellaneous ===<br />
<br />
== User-mode emulation ==<br />
<br />
== TCG ==<br />
<br />
== Guest agent ==<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
* Now requires GTK 3.22 or newer<br />
<br />
=== Testing ===<br />
<br />
=== Windows ===<br />
<br />
== Known issues ==<br />
* see [[Planning/5.1]]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/5.1&diff=9481ChangeLog/5.12020-05-21T18:36:03Z<p>Stefan Weil: /* GUI */ Add Windows keyboard fixes</p>
<hr />
<div><br />
== System emulation ==<br />
=== Incompatible changes ===<br />
<br />
=== New deprecated options and features ===<br />
<br />
Consult the [https://www.qemu.org/docs/master/system/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for the full list of historically deprecated features/options.<br />
<br />
=== Alpha ===<br />
<br />
=== 68k ===<br />
<br />
=== Arm ===<br />
<br />
* Emulation of the following architecture features is now implemented:<br />
** ARMv8.2-TTS2UXN<br />
* xlnx-versal-virt: machine now supports RTC and SD<br />
* New board model: sonorapass-bmc<br />
* Host memory errors can now be reported to AArch64 KVM guests via ACPI when using the 'virt' board (this is disabled by default; enable with '-machine ras=on')<br />
<br />
=== HPPA ===<br />
<br />
=== Microblaze ===<br />
<br />
=== MIPS ===<br />
<br />
=== Nios2 ===<br />
<br />
=== OpenRISC ===<br />
<br />
=== PowerPC ===<br />
* The "label-size" property is now mandatory for NVDIMMs on the "pseries" machine type (the PAPR specification only supports labelled NVDIMMs)<br />
* NVLink2 devices can no longer be unplugged. This is not possible on real hardware, and was never supported by the guest side drivers, so this makes things safer.<br />
* We no longer use reconfiguration reboots to handle difficult cases during CAS option negotiation<br />
* Added an interface to inject POWER style NMIs<br />
<br />
=== RISC-V ===<br />
* Spike machine supports more then 1 CPU<br />
* Spike machine supports the `-bios` option<br />
* OpenSBI updated to v0.7<br />
* linux-usermode improvements<br />
* Support for the SiFive E34 CPU<br />
* 32-bit improvements for the `sifive_u` machine<br />
* Corrections to the Hypervisor extension page table walking<br />
* Expose a "serial" property for the `sifive_u` machine that specifys the board serial number<br />
<br />
=== s390 ===<br />
* Support for protected virtualization aka secure execution has been merged (KVM only)<br />
** The host needs to be a z15 or Linux One III with at least Linux 5.7<br />
<br />
=== SH ===<br />
<br />
=== SPARC ===<br />
<br />
=== TileGX ===<br />
<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
<br />
=== Xtensa ===<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* QEMU now exposes a WAET (Windows ACPI Emulated Devices Table) to guests -<br />
this reduces virtualization overhead for non-enlightened windows (Vista and later)<br />
guests by avoiding guest workarounds for an unreliable ACPI PM timer.<br />
* QEMU now supports both cold and hot plug of nvdimms for ARM Guests with ACPI.<br />
<br />
==== Audio ====<br />
<br />
==== Block devices ====<br />
<br />
==== Graphics ====<br />
<br />
==== Input devices ====<br />
<br />
==== IPMI ====<br />
<br />
==== Network devices ====<br />
<br />
==== NVDIMM ====<br />
<br />
==== PCI/PCIe ====<br />
Attempts to hotplug devices into a pci slot with hotplug disabled will now<br />
return an error instead of adding the device without notifying the guest.<br />
<br />
==== SCSI ====<br />
<br />
==== SMBIOS ====<br />
<br />
==== TPM ====<br />
<br />
==== USB ====<br />
<br />
==== VFIO ====<br />
<br />
==== virtio ====<br />
<br />
==== Xen ====<br />
<br />
==== fw_cfg ====<br />
<br />
==== 9pfs ====<br />
<br />
==== virtiofs ====<br />
* virtiofsd:<br />
** Security fix: CVE-2020-10717, resource exhaustion of host fd's<br />
** Jailing improvements<br />
** Ensure that existing mounts under the shared directory are visible to the guest<br />
<br />
==== Semihosting ====<br />
<br />
=== Audio ===<br />
<br />
=== Character devices ===<br />
<br />
=== Crypto subsystem ===<br />
<br />
=== GUI ===<br />
* Windows keyboard fixes for GTK and SDL<br />
<br />
=== GDBStub ===<br />
* bug fix to m68k gdbstub<br />
* linux-user now supports unix socket for debugging (needs a new gdb)<br />
* some tests for the stub added to check-tcg<br />
<br />
=== Host support ===<br />
<br />
=== Memory backends ===<br />
<br />
==== QMP ====<br />
<br />
=== Migration ===<br />
<br />
=== Network ===<br />
<br />
=== Block device backends and tools ===<br />
<br />
* Optional zstd compression for qcow2 (enable with <code>compression_type=zstd</code> as a creation option)<br />
* Fixed regression with 'qemu-nbd -c /dev/nbd0' keeping inherited stderr open (introduced in 4.1)<br />
* 'qemu-img map' gained --start-offset and --max-length options for mapping only a subset of a file<br />
* 'qemu-img' gained a new command mode 'bitmap' for manipulating persistent bitmaps in qcow2 files<br />
<br />
=== Tracing ===<br />
<br />
=== Miscellaneous ===<br />
<br />
== User-mode emulation ==<br />
<br />
== TCG ==<br />
<br />
== Guest agent ==<br />
<br />
== Build Information ==<br />
<br />
=== Python ===<br />
<br />
=== GIT submodules ===<br />
<br />
=== Container Based Builds ===<br />
<br />
=== Build Dependencies ===<br />
<br />
=== Testing ===<br />
<br />
=== Windows ===<br />
<br />
== Known issues ==<br />
* see [[Planning/5.1]]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=8562Hosts/W322019-04-26T15:01:39Z<p>Stefan Weil: /* Debian stretch based cross builds */</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
Starting with QEMU 2.9, there is also a working acceleration similar to KVM, but based on Intel HAXM.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian squeeze based cross builds ====<br />
<br />
Note: Building on Debian squeeze is no longer supported, so the following commands won't work with latest QEMU.<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Debian stretch based cross builds ====<br />
<br />
# Debian stretch for W32 and W64:<br />
apt-get install g++-mingw-w64 mingw-w64 mingw-w64-tool mingw-w64-i686-dev mingw-w64-x86-64-dev nsis<br />
<br />
In addition, several packages from Cygwin are needed. Add https://qemu.weilnetz.de/debian/ as a package source (see instructions there) and install the required cross packages.<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
<br />
# Fedora for W32 cross build:<br />
dnf install mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL2 mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
dnf install mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL2 mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-w64" appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* mingw64-i686-curl<br />
* mingw64-i686-gtk3<br />
* mingw64-i686-libssh2<br />
* mingw64-i686-libtasn1<br />
* mingw64-i686-nettle<br />
* mingw64-i686-ncurses<br />
* mingw64-i686-gnutls<br />
<br />
==== Optional packages ====<br />
* mingw64-i686-SDL2<br />
* mingw64-i686-libgcrypt<br />
* mingw64-i686-libusb1.0<br />
* mingw64-i686-usbredir<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
=== Native builds with MSYS2 ===<br />
<br />
MSYS2 provides a convenient environment to produce native builds for W64.<br />
<br />
* Download and run the MSYS2 installer from [http://msys2.org msys2.org].<br />
<br />
* As per the MSYS2 documentation, download the latest repository updates with:<br />
<br />
pacman -Syu<br />
<br />
* If required, restart the MSYS2 console. Then update the remaining packages with:<br />
<br />
pacman -Su<br />
<br />
* Next install the basic set of developer tools:<br />
<br />
pacman -S base-devel mingw-w64-x86_64-toolchain git python<br />
<br />
* Then install any required QEMU-specific packages. For a basic setup you can use:<br />
<br />
pacman -S mingw-w64-x86_64-glib2 mingw64/mingw-w64-x86_64-gtk3 mingw64/mingw-w64-x86_64-SDL2<br />
<br />
* Initialise the git repository:<br />
<br />
git clone git://git.qemu-project.org/qemu.git<br />
cd qemu<br />
git submodule update --init ui/keycodemapdb<br />
git submodule update --init capstone<br />
git submodule update --init dtc<br />
<br />
* Finally build QEMU as normal:<br />
<br />
./configure --enable-gtk --enable-sdl<br />
make<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the installers from https://qemu.weilnetz.de/.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
Hardware acceleration for x86 can be enabled with the command line option <code>--enable-hax</code>.<br />
This requires at least QEMU 1.9 and an installed Intel HAXM driver.<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt if QEMU was linked with SDL 1.2.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php<br />
<br />
;Intel Hardware Accelerated Execution Manager (HAXM)<br />
:https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=8561Hosts/W322019-04-26T14:58:36Z<p>Stefan Weil: /* Debian based cross builds */</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
Starting with QEMU 2.9, there is also a working acceleration similar to KVM, but based on Intel HAXM.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian squeeze based cross builds ====<br />
<br />
Note: Building on Debian squeeze is no longer supported, so the following commands won't work with latest QEMU.<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Debian stretch based cross builds ====<br />
<br />
# Debian stretch for W32 and W64:<br />
apt-get install g++-mingw-w64 mingw-w64 mingw-w64-tool mingw-w64-i686-dev mingw-w64-x86-64-dev nsis<br />
<br />
In addition, several packages from Cygwin are needed (todo: add documentation).<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
<br />
# Fedora for W32 cross build:<br />
dnf install mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL2 mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
dnf install mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL2 mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-w64" appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* mingw64-i686-curl<br />
* mingw64-i686-gtk3<br />
* mingw64-i686-libssh2<br />
* mingw64-i686-libtasn1<br />
* mingw64-i686-nettle<br />
* mingw64-i686-ncurses<br />
* mingw64-i686-gnutls<br />
<br />
==== Optional packages ====<br />
* mingw64-i686-SDL2<br />
* mingw64-i686-libgcrypt<br />
* mingw64-i686-libusb1.0<br />
* mingw64-i686-usbredir<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
=== Native builds with MSYS2 ===<br />
<br />
MSYS2 provides a convenient environment to produce native builds for W64.<br />
<br />
* Download and run the MSYS2 installer from [http://msys2.org msys2.org].<br />
<br />
* As per the MSYS2 documentation, download the latest repository updates with:<br />
<br />
pacman -Syu<br />
<br />
* If required, restart the MSYS2 console. Then update the remaining packages with:<br />
<br />
pacman -Su<br />
<br />
* Next install the basic set of developer tools:<br />
<br />
pacman -S base-devel mingw-w64-x86_64-toolchain git python<br />
<br />
* Then install any required QEMU-specific packages. For a basic setup you can use:<br />
<br />
pacman -S mingw-w64-x86_64-glib2 mingw64/mingw-w64-x86_64-gtk3 mingw64/mingw-w64-x86_64-SDL2<br />
<br />
* Initialise the git repository:<br />
<br />
git clone git://git.qemu-project.org/qemu.git<br />
cd qemu<br />
git submodule update --init ui/keycodemapdb<br />
git submodule update --init capstone<br />
git submodule update --init dtc<br />
<br />
* Finally build QEMU as normal:<br />
<br />
./configure --enable-gtk --enable-sdl<br />
make<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the installers from https://qemu.weilnetz.de/.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
Hardware acceleration for x86 can be enabled with the command line option <code>--enable-hax</code>.<br />
This requires at least QEMU 1.9 and an installed Intel HAXM driver.<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt if QEMU was linked with SDL 1.2.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php<br />
<br />
;Intel Hardware Accelerated Execution Manager (HAXM)<br />
:https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/3.1&diff=7973Planning/3.12018-11-26T14:17:11Z<p>Stefan Weil: /* Not yet fixed in any rc */</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2018-08-14<br />
| Beginning of development phase<br />
|-<br />
| 2018-10-30<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Only bug fixes after this point. All feature changes must be already in a sub maintainer tree and all pull requests from submaintainers must have been sent to the list by this date.<br />
|-<br />
| 2018-11-06<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag rc0<br />
|-<br />
| 2018-11-13<br />
| Tag rc1<br />
|-<br />
| 2018-11-20<br />
| Tag rc2<br />
|-<br />
| 2018-11-27<br />
| Tag rc3<br />
|-<br />
| 2018-12-04<br />
| Release; or tag rc4 if needed<br />
|-<br />
| 2018-12-11<br />
| Release, if we needed an rc4<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
=== Fixed in rc1 ===<br />
<br />
* QEMU aborts with: <code>aarch64-softmmu/qemu-system-aarch64 -M virt -device ramfb</code><br />
<br />
=== Fixed in rc2 ===<br />
<br />
* QEMU crashes with: <code>qemu-system-aarch64 -M n800</code> (without any additional parameters) - this used to work better with v3.0<br />
* We are missing the -3.1 versioned machine types for the PC machines. Patch on the list: https://lists.nongnu.org/archive/html/qemu-devel/2018-11/msg03904.html<br />
<br />
=== Fixed in rc3 ===<br />
<br />
* QEMU currently can't be compiled with "--disable-replication"<br />
<br />
=== Not yet fixed in any rc ===<br />
<br />
* QEMU crashes at startup on older AMD systems with: error: failed to set MSR 0x10a to 0x0<br />
* QEMU does not work on the OSX "Mojave" release<br />
* QEMU crashes with virtio-scsi on IO error (lp 1804323)<br />
* Buggy format strings in disas/nanomips.cpp (also still uses proprietary data types like ''uint64'' instead of POSIX ''uint64_t'')<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/3.1]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/3.1&diff=7972Planning/3.12018-11-26T14:14:40Z<p>Stefan Weil: /* Known issues */ Buggy format strings in disas/nanomips.cpp</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2018-08-14<br />
| Beginning of development phase<br />
|-<br />
| 2018-10-30<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Only bug fixes after this point. All feature changes must be already in a sub maintainer tree and all pull requests from submaintainers must have been sent to the list by this date.<br />
|-<br />
| 2018-11-06<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag rc0<br />
|-<br />
| 2018-11-13<br />
| Tag rc1<br />
|-<br />
| 2018-11-20<br />
| Tag rc2<br />
|-<br />
| 2018-11-27<br />
| Tag rc3<br />
|-<br />
| 2018-12-04<br />
| Release; or tag rc4 if needed<br />
|-<br />
| 2018-12-11<br />
| Release, if we needed an rc4<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
=== Fixed in rc1 ===<br />
<br />
* QEMU aborts with: <code>aarch64-softmmu/qemu-system-aarch64 -M virt -device ramfb</code><br />
<br />
=== Fixed in rc2 ===<br />
<br />
* QEMU crashes with: <code>qemu-system-aarch64 -M n800</code> (without any additional parameters) - this used to work better with v3.0<br />
* We are missing the -3.1 versioned machine types for the PC machines. Patch on the list: https://lists.nongnu.org/archive/html/qemu-devel/2018-11/msg03904.html<br />
<br />
=== Fixed in rc3 ===<br />
<br />
* QEMU currently can't be compiled with "--disable-replication"<br />
<br />
=== Not yet fixed in any rc ===<br />
<br />
* QEMU crashes at startup on older AMD systems with: error: failed to set MSR 0x10a to 0x0<br />
* QEMU does not work on the OSX "Mojave" release<br />
* QEMU crashes with virtio-scsi on IO error (lp 1804323)<br />
* Buggy format strings in disas/nanomips.cpp (also still uses non POSIX integer data types)<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/3.1]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/2.12&diff=7572Planning/2.122018-04-17T13:43:00Z<p>Stefan Weil: /* Not yet fixed in any rc */ update po files</p>
<hr />
<div>== Release Schedule ==<br />
<br />
<br />
{| border="1"<br />
| 2017-12-13<br />
| Beginning of development phase<br />
|-<br />
| 2018-03-13<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Only bug fixes after this point. All feature changes must be already in a sub maintainer tree and all pull requests from submaintainers must have been sent to the list by this date.<br />
|-<br />
| 2018-03-20<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag rc0<br />
|-<br />
| 2018-03-27<br />
| Tag rc1<br />
|-<br />
| <strike>2018-04-03</strike> 2018-04-04<br />
| Tag rc2<br />
|-<br />
| <strike>2018-04-10</strike> 2018-04-11<br />
| Tag rc3<br />
|-<br />
| 2018-04-17<br />
| Release, or tag rc4 if extra RC cycle needed<br />
|-<br />
| 2018-04-24<br />
| Release, if we needed an rc4.<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
=== Fixed in rc0 ===<br />
<br />
=== Fixed in rc1 ===<br />
<br />
* macio IDE TRIM fixes: [https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg06076.html] and [https://lists.gnu.org/archive/html/qemu-devel/2018-03/msg00763.html].<br />
<br />
=== Fixed in rc3 ===<br />
<br />
* Crash with: <code>ppc64-softmmu/qemu-system-ppc64 -S -machine 40p -device i82374</code> (patch is available here: https://lists.gnu.org/archive/html/qemu-devel/2018-03/msg06678.html )<br />
* GTK WARNING and CRITICAL errors when closing QEMU window directly instead of using the "Quit" menu option (patch available at https://lists.gnu.org/archive/html/qemu-devel/2018-03/msg04315.html)<br />
<br />
=== Fixed in rc4 ===<br />
<br />
* softfloat: failed to raise Invalid for float-to-int conversions of NaN and infinity<br />
* softfloat: minnummag and maxnummag mishandled +Zero, -Zero<br />
* linux-user aarch64 signal frame not quite right<br />
* compile failure on MIPS hosts building aarch64 targets<br />
* m68k: fix exception stack frame for 68000<br />
* fix for handling dirty bitmaps in qcow2 files<br />
* gtk message catalogs not installed if CONFIG_GTK=y<br />
* softfloat: division of inf by 0 should not raise DivByZero<br />
* linux-user aarch64 signal frame not fully checked for writability<br />
* i386 FEAT_KVM_HINTS bits should not be automatically enabled<br />
* mux Ctrl-a b doesn't send break<br />
<br />
=== Not yet fixed in any rc ===<br />
<br />
* softfloat scalbn increment not bounded<br />
* update po files (needed because of recent changes in ui/gtk.c)<br />
<br />
=== Issues that will not be fixed ===<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.12]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Links&diff=7281Links2017-12-21T20:35:30Z<p>Stefan Weil: /* BIOSes and firmware used by QEMU */ Fix broken link (use copy from Internet Archive Wayback Machine)</p>
<hr />
<div>=== Development ===<br />
*[http://savannah.gnu.org/projects/qemu Savannah project page]<br />
*[http://patchwork.ozlabs.org/project/qemu-devel/list/ QEMU patches] from the mailing list<br />
*IRC channel: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
<br />
=== Developers ===<br />
A few blogs from developers are syndicated at [http://planet.virt-tools.org/index.html Virt Tools Planet]. For enrolling a blog into the planet, email Amit Shah or Dan Berrange to add the feeds.<br />
<br />
=== Unofficial QEMU binaries ===<br />
* [http://www.omledom.com/ Precompiled Windows versions] (1.4.0), provided by Prashant Satish<br />
* [http://lassauge.free.fr/qemu/ Precompiled Windows versions] (≥ 0.13.0), provided by Eric Lassauge<br />
* [http://homepage3.nifty.com/takeda-toshiya/ Precompiled Windows versions] (≥ 0.9.1), provided by TAKEDA Toshiya<br />
* [https://qemu.weilnetz.de/ Precompiled Windows versions] (32 and 64 bit), provided by [[User: Stefan Weil|Stefan Weil]] <br />
* [http://www.h7.dion.ne.jp/~qemu-win/ Older precompiled Windows versions] (≤ 0.9.0), provided by Kazu<br />
* [http://atrpms.net/name/kqemu/ RPMs for Fedora and RHEL]<br />
* [http://www.slackware.com/~alien/slackbuilds/qemu/ Slackware packages]<br />
<br />
=== Alternate QEMU repositories / Forks ===<br />
*[http://svn.openmoko.org/trunk/src/host/qemu-neo1973/ Openmoko (Neo1973) target]<br />
*[http://repo.or.cz/w/qemu/malc.git Malc's GIT repository] including audio improvements, an x86 interpreter (useful for MSDOS demos heavily using self modifying code), full A/V capture<br />
*[http://github.com/patricksjackson/qemu/tree/android_qdev Android emulation] - see also http://gsoc11-qemu-android.blogspot.de/<br />
*[http://repo.or.cz/w/qemu/ar7.git/ AR7 routers, TCG interpreter] (maintained by [[User:Stefan_Weil|Stefan Weil]])<br />
*[https://github.com/vivier/qemu-m68k Motorola 680x0] (not coldfire &mdash; maintained by Laurent Vivier)<br />
*[http://homepage.ntlworld.com/wholehog/stuart/qemu/z80.html Z80 target] (works, but needs flags optimisation) &mdash; see also [[Features/Z80]]<br />
*[http://hppaqemu.sourceforge.net/ PA-RISC target] — early stages (needs linux-user rework for stack growing up)<br />
*[http://repo.or.cz/w/kqemu.git kqemu archive] includes patches for the former acceleration module<br />
*[https://git.linaro.org/qemu/qemu-linaro.git/ qemu-linaro] - obsolete (but includes OMAP3 support)<br />
*[http://github.com/vapier/qemu Blackfin target] (maintained by Mike Frysinger)<br />
*[http://idletime.s601.xrea.com/enu/qemu/ idletime's pnacl port] Portable Native Client (PNaCl) port runs in Chrome web browser<br />
*[https://github.com/AVEx-6502/qemu-6502 6502 CPU target]<br />
*[https://github.com/Dushistov/qemu_at91sam9263 AT91SAM9263 emulation]<br />
*[https://android.googlesource.com/platform/external/qemu Android Goldfish]<br />
*[https://qemu-android.googlesource.com/qemu-ranchu/ Android Ranchu]<br />
*[https://github.com/img-meta/qemu Imagination META]<br />
*[https://github.com/Dovgalyuk/qemu/tree/Macintosh-128k/ Macintosh 128k]<br />
*[https://github.com/ispras/qemu/tree/windbg QEMU with Windbg stub]<br />
<br />
=== GUI Front Ends ===<br />
{|class="wikitable sortable"<br />
! align="left" | Project Name<br />
! align="left" | Latest Release<br />
|-<br />
| [http://witsbits.com/ Witsbits] is a combination of [http://witsbits.com/product.php a web service and a boot loader], enabling bare-metal servers to host virtual machines with QEMU quickly.<br />
| 2012-10-16<br />
|-<br />
| [http://sourceforge.net/projects/aqemu/ AQEMU] GUI for QEMU and KVM (Linux), [http://qemu-buch.de/d/Managementtools/_AQEMU docs (German)], [http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows#Qemu-Manager_f.C3.BCr_Windows more docs (German)]<br />
| 2011-07-27 <br />
|-<br />
| [http://www.davereyn.co.uk/ QEMU Manager] on Windows by Dave Reynolds.<br />
| 2010-04 <br />
|-<br />
| [http://www.kju-app.org/ Q is a Mac OS X port] of QEMU 0.9.1 with a nice GUI<br />
| 2008-02-16<br />
|-<br />
| [http://qtemu.org/ QtEmu], a graphical user interface for QEMU written in Qt4 for Linux and Windows<br />
| 2007-11-12<br />
|-<br />
| [http://qemudo.sourceforge.net/ qemudo], QEMU Web Interface<br />
| 2007-02-25 <br />
|}<br />
<br />
=== Other management tools/systems ===<br />
*[http://libvirt.org libvirt] provides an API for managing QEMU/KVM (and other hypervisors) exposed in C, Perl, Python, OCaml, Ruby, and Java, with bridges to AMQP/QMF and DMTF CIM.<br />
*[http://virt-manager.org virt-install, virt-clone, virt-convert] a set of command line tools for provisioning new VMs from install media, existing VMs and appliances, respectively. See also 'virsh' command line shell with libvirt.<br />
*[http://virt-manager.org virt-manager], Virtual Machine Manager. A graphical desktop management app using [http://libvirt.org/ libvirt]. Can manage a single local host, or securely multiple remote hosts. Support QEMU, KVM, Xen and more<br />
* [http://code.google.com/p/ganeti/ Ganeti], a cluster virtual server management software tool built on top of existing virtualization technologies such as Xen or KVM and other Open Source software.<br />
* [https://github.com/shevek/qemu-java qemu-java], a full Java API to QEmu's QApi, commandline image manipulation. This is a good foundation API for building integration testing systems, richer QEmu-based applications, and so forth.<br />
<br />
=== BIOSes and firmware used by QEMU ===<br />
*The PC BIOS from the [http://bochs.sourceforge.net/ Bochs] IA-32 Emulator Project<br />
*The [http://www.nongnu.org/vgabios LGPL VGA BIOS project]<br />
*The [http://openbios.info/Welcome_to_OpenBIOS OpenBIOS] project, an open source Open Firmware implementation<br />
*The [https://web.archive.org/web/20080124163141/http://perso.magic.fr:80/l_indien/OpenHackWare/index.htm OpenHackWare] (archived 2008-01-24) Open Firmware implementation<br />
*[http://www.etherboot.org/ Etherboot images] from [http://rom-o-matic.net/ ROM-o-matic]<br />
*The EFI BIOS comes from the [http://www.tianocore.org/ TianoCore Project].<br />
*[http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF OVMF] provides UEFI support for IA32 (x86) and X64 (x86-64) guests.<br />
<br />
=== Projects using the QEMU code ===<br />
*The [http://www.xen.org Xen] virtual machine monitor<br />
*[http://www.linux-kvm.org KVM], Kernel-based Virtual Machine for Linux<br />
*[http://www.virtualbox.org/ VirtualBox], an open source x86 virtualizer.<br />
*[http://www.serialice.com/ SerialICE], a system software debugger<br />
*[http://www.marss86.org/index.php/Home MARSSx86], a cycle accurate accurate x86 simulator that uses QEMU<br />
<br />
=== External Documentation ===<br />
*Book "''qemu-kvm & libvirt''", 4. Edition 2010, [http://qemu-buch.de/english/order.php ISBN 978-3-8370-0876-0], http://qemu-buch.de<br />
*Wiki about the [http://www.linux-mips.org/wiki/Qemu QEMU MIPS target]<br />
*IBM Linux Blueprint: [http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaai/kvminstall/liaaikvminstallstart.htm Quick Start Guide for installing and running KVM]<br />
*IBM Linux Blueprint: [http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaai/kvmadv/kvmadvstart.htm The Developer's Approach to Installing and Managing KVMs]<br />
<br />
=== Other emulators ===<br />
*The [http://bochs.sourceforge.net/ Bochs] IA-32 Emulator Project<br />
*The [http://ftp.dreamtime.org/pub/linux/Linux-Alpha/em86/v0.2/docs/em86.html EM86 x86 emulator] on Alpha-Linux<br />
*The [http://www.complang.tuwien.ac.at/schani/bintrans/ bintrans] Dynamic Binary Translator<br />
*[http://www.boblycat.org/~malc/minde/ MINDE], an emulator for some old x86 demos<br />
*[http://www.skyeye.org SkyEye], an ARM simulator<br />
*[http://softgun.sourceforge.net/ Softgun], an ARM simulator<br />
*[http://simh.trailing-edge.com/ SIMH], The Computer History Simulation Project<br />
*[http://gxemul.sourceforge.net/ GXemul], emulator for multiple systems including m88k<br />
*[http://aranym.org/ ARAnyM], emulator for Atari ST/TT/Falcon family<br />
*[http://www.hercules-390.org/ Hercules], S/370, S/390 and z/Arch emulator<br />
*The [http://pearpc.sourceforge.net/ PearPC] PowerPC Architecture Emulator (development stalled)<br />
*[http://people.csail.mit.edu/fredette/tme/ TME], The (Sun) Machine Emulator<br />
<br />
=== Related links ===<br />
*[http://free.oszoo.org/ Free Operating System Zoo]: many disk images with free OSes (very old)<br />
*[http://files.nodalink.com/qemu-files/zaurus-test-0.1.tar.gz Zaurus boot images]: Zaurus pda boot images for QEMU<br />
*[http://www.greensocs.com/projects/QEMUSystemC/ QEMU-SystemC], a hardware co-simulator<br />
*[http://www.plex86.org/ PLEX86], x86- Virtual Machine (VM) Program<br />
*[http://www.valgrind.org/ Valgrind], an open-source memory debugger for x86-GNU/Linux<br />
*[http://edgarigl.github.com/tlmu/ TLMu]: TLMu - A SystemC TLM-2.0 integration of QEMU</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.9&diff=6834ChangeLog/2.92017-04-10T10:01:45Z<p>Stefan Weil: /* Known issues */ Incomplete Raspberry Pi emulation</p>
<hr />
<div>== Warning of unsupported host systems ==<br />
This release includes changes to the configure script so that it will now report some host operating systems and<br />
platforms as "unsupported". These are host setups which we do not have access to and are thus unable to test. They will continue to work in this 2.9 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).<br />
<br />
This affects the CPU architectures:<br />
* ia64<br />
and the OSes:<br />
* GNU/kFreeBSD<br />
* DragonFly BSD<br />
* NetBSD<br />
* OpenBSD<br />
* Solaris<br />
* AIX<br />
* Haiku<br />
== System emulation ==<br />
=== Incompatible changes ===<br />
* Improvements to "-drive":<br />
** "-drive"'s <tt>if</tt> option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.<br />
** "-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.<br />
** "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.<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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).<br />
<br />
=== Alpha ===<br />
* MTTCG is enabled by default for Alpha guests running on x86_64 host<br />
<br />
=== 68k ===<br />
* Support for many 680x0 opcodes.<br />
* The "dummy" machine has been removed. You can use the "none" machine as plain instruction set simulator now instead.<br />
<br />
=== ARM ===<br />
* MTTCG is enabled by default for ARM guests running on x86_64 hosts<br />
* Support for the hardware RNG, BCM2835 SD host controller and GPIO controller on the Raspberry Pi board<br />
* Support migration for the GICv3 when using KVM<br />
* improve ARMv7M NVIC and exception handling emulation (in particular fixing priority masking bugs)<br />
* basic emulation of the PMU for AArch64 TCG guests<br />
* Emulation of EL2 is now supported for the 'virt' board with an AArch64 TCG CPU and GICv3<br />
<br />
=== MIPS ===<br />
* New MIPS Boston board (-M boston) on MIPS64EL.<br />
<br />
=== Nios2 ===<br />
* New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.<br />
=== OpenRISC ===<br />
* Many fixes and many instructions added.<br />
=== PowerPC ===<br />
* Lots of POWER9 instructions are implemented for TCG.<br />
* New "40p" machine type, essentially a cleaned up version of the old "-M prep".<br />
* Under KVM, the guest timebase stops when the guest is stopped.<br />
==== pSeries ====<br />
* Support for the H_SIGNAL_SYS_RESET hypercall<br />
=== s390 ===<br />
* Multiple bus support for zPCI.<br />
* Bump maximum numbers of virtqueues for virtio-ccw to 1024 (same as other transports).<br />
* Enable virtio-crypto via virtio-ccw.<br />
* Support for network boot, see http://wiki.qemu-project.org/Features/S390xNetworkBoot<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
* Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.<br />
* Fix for sun4m regression booting with real SS-20 PROM (see bug [https://bugs.launchpad.net/qemu/+bug/1622547 #1622547])<br />
* Fix for programming 64-bit PCI BARs on sun4u machines allows virtio to work in non-legacy mode once again (OpenBIOS)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).<br />
=== x86 ===<br />
* TCG supports 5-level paging.<br />
* The <tt>q35</tt> machine type offers SMI feature negotiation to interested guest firmware.<br />
* Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.<br />
* FIXME: query-cpu-model-expansion?<br />
==== HAXM ====<br />
* QEMU now supports hardware acceleration for i686 / x86_64 system emulation on Windows. The acceleration requires the Intel Hardware Accelerated Execution Manager (Intel HAXM). Due to limitations of the current HAXM implementation (RAM size is 32 bit), guest machines can only use up to 4095 MiB of RAM. Versions of HAXM before 6.1.2 are known to be buggy, so for best results always use the latest version of HAXM which is available.<br />
<br />
==== KVM ====<br />
* 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"<br />
* When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments<br />
* When running on Haswell processors that report TSX to be present, but have a broken TSX implementation, QEMU will warn (or fail to start with "-cpu enforce") when requesting the TSX CPUID feature.<br />
==== Xen ====<br />
* Support for unplugging NVMe disks at startup<br />
<br />
=== Xtensa ===<br />
* Support for -icount.<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* 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.<br />
* 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.<br />
* QEMU provides an VMGENID<br />
==== Block devices ====<br />
* 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%. Polling settings are also included in query-iothreads output.<br />
* -blockdev: In the long run, this option is supposed to replace -drive. From a user's perspective, it works very similar to ''-drive if=none'' except for the fact that it does not accept device-level options. These are the following:<br />
** ''id, snapshot, aio, cache.writeback, format, rerror, werror, throttling.*, copy-on-read, stats-account-invalid, stats-account-failed''<br />
** Instead of ''id'', you have to specify a ''node-name'' for the root level. This name will be used for identifying the block device at a guest device, like so:<br />
*** Old: <tt>-drive id=drv0,if=none,driver=qcow2,file.driver=file,file.filename=foo.qcow2 -device virtio-blk,drive=drv0</tt><br />
*** New: <tt>-blockdev node-name=blk0,driver=qcow2,file.driver=file,file.filename=foo.qcow2 -device virtio-blk,drive=blk0</tt><br />
** From a more technical perspective, this option is basically ''blockdev-add'' for the command line.<br />
* blockdev-add: This QMP command is no longer experimental, together with blockdev-del. Notable changes since it was added first:<br />
** Less option nesting:<br />
*** Was: <tt>{ "execute": "blockdev-add", "arguments": { "options": { ... } } }</tt><br />
*** Is now: <tt>{ "execute": "blockdev-add", "arguments": { ... } }</tt><br />
** The root node no longer takes special options. Therefore, ''id'' and in fact any of the options that are allowed for ''-drive if=none'' but not for ''-blockdev'' (see above) may no longer be specified. Instead of ''id'', blockdev-add now requires a ''node-name'' for the root node (just as ''-blockdev'' does).<br />
*** From an internal perspective, this means that blockdev-add no longer creates a ''BlockBackend''. This is an object used for connecting ''BlockDriverState'' objects (block layer “nodes”) to guest devices, the built-in NBD server, etc.. Instead, it only creates plain nodes; the ''BlockBackend'' is created implicitly when attaching a node to e.g. a guest device. In order to connect the two, the node needs to be identified and this is done using its ''node-name''.<br />
*** (Note that this is also the main difference between ''-drive'' and ''-blockdev'': ''-drive'' creates a ''BlockBackend'' (and even a guest device unless ''if=none'' has been given), ''-blockdev'' does not.)<br />
** Support for all block drivers available in QEMU. (Some block drivers that used to have only a very basic interface (e.g. just took a filename and parsed it) now have a much nicer QAPIfied interface.)<br />
<br />
==== Network devices ====<br />
* virtio-net devices can pass the MTU to the guest.<br />
==== SCSI ====<br />
==== PCI/PCIe ====<br />
* New device "pcie-root-port" provides a generic PCIe root port.<br />
* New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.<br />
==== USB ====<br />
* Many XHCI emulation bugfixes.<br />
==== VFIO ====<br />
==== virtio ====<br />
* virtio-crypto devices support hotplug.<br />
* virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.<br />
==== Xen ====<br />
==== fw_cfg ====<br />
<br />
The DMA interface to fw_cfg now supports writeable blobs.<br />
<br />
The <tt>fw_cfg_io</tt> and <tt>fw_cfg_mem</tt> devices now have more slots for files; the <tt>FW_CFG_FILE_SLOTS</tt> constant has been replaced with the (internal only) <tt>x-file-slots</tt> property. The property can be further raised in future machine types if absolutely necessary.<br />
==== 9pfs ====<br />
* No more vulnerable to symlink attacks (CVE-2016-9602).<br />
* I/O throttle support similar to blockdev (command line only at the moment, QMP will be added later).<br />
<br />
=== Character devices ===<br />
* A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.<br />
=== Crypto subsystem ===<br />
* The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)<br />
=== GUI ===<br />
* "-display vnc" can specify multiple VNC listen addresses.<br />
* "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.<br />
=== Monitor ===<br />
* QEMU now includes Texinfo documentation for all QMP commands and events.<br />
* The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".<br />
=== Migration ===<br />
* A new option --only-migratable will prevent adding devices that cannot be live-migrated.<br />
* Postcopy migration can now be used with hugepages backed by hugetlbfs. This requires Linux kernel 4.11. See docs/migration.txt for detail.<br />
<br />
=== Network ===<br />
* slirp's TFTP server supports dynamic block sizes.<br />
=== Block devices and tools ===<br />
<br />
* the qemu-img convert command now works asynchronously which up to doubles performance if network based storage like iSCSI, NFS or RBD is used.<br />
* qemu-nbd supports systemd socket activation<br />
<br />
== User-mode emulation ==<br />
* Support for hppa-linux emulation.<br />
* Support for nios2-linux emulation.<br />
=== Removed target support ===<br />
=== New functionality ===<br />
<br />
* Signal handling support added for x86-64 linux-user<br />
<br />
== TCG ==<br />
* Improvements to MIPS code generation.<br />
* TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"<br />
<br />
== Guest agent ==<br />
* qemu-ga now supports systemd socket activation<br />
== New dependencies ==<br />
=== Build dependencies ===<br />
* QEMU now requires a minimum dtc version of 1.4.2.<br />
=== Run-time dependencies ===<br />
* QEMU now requires Windows Vista or newer.<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/2.9#Patches_Posted|Planning/2.9]]<br />
<br />
* The hardware acceleration for QEMU on Windows (Intel HAXM) currently only supports 4095 MiB of RAM for the guest machine. If QEMU is started with a larger memory size, this results in a runtime error.<br />
<br />
* The emulation of Raspberry Pi is still missing some features which are required to run newer versions of Raspbian.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.9&diff=6833ChangeLog/2.92017-04-10T09:59:15Z<p>Stefan Weil: /* Known issues */ Limitations of HAXM</p>
<hr />
<div>== Warning of unsupported host systems ==<br />
This release includes changes to the configure script so that it will now report some host operating systems and<br />
platforms as "unsupported". These are host setups which we do not have access to and are thus unable to test. They will continue to work in this 2.9 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).<br />
<br />
This affects the CPU architectures:<br />
* ia64<br />
and the OSes:<br />
* GNU/kFreeBSD<br />
* DragonFly BSD<br />
* NetBSD<br />
* OpenBSD<br />
* Solaris<br />
* AIX<br />
* Haiku<br />
== System emulation ==<br />
=== Incompatible changes ===<br />
* Improvements to "-drive":<br />
** "-drive"'s <tt>if</tt> option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.<br />
** "-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.<br />
** "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.<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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).<br />
<br />
=== Alpha ===<br />
* MTTCG is enabled by default for Alpha guests running on x86_64 host<br />
<br />
=== 68k ===<br />
* Support for many 680x0 opcodes.<br />
* The "dummy" machine has been removed. You can use the "none" machine as plain instruction set simulator now instead.<br />
<br />
=== ARM ===<br />
* MTTCG is enabled by default for ARM guests running on x86_64 hosts<br />
* Support for the hardware RNG, BCM2835 SD host controller and GPIO controller on the Raspberry Pi board<br />
* Support migration for the GICv3 when using KVM<br />
* improve ARMv7M NVIC and exception handling emulation (in particular fixing priority masking bugs)<br />
* basic emulation of the PMU for AArch64 TCG guests<br />
* Emulation of EL2 is now supported for the 'virt' board with an AArch64 TCG CPU and GICv3<br />
<br />
=== MIPS ===<br />
* New MIPS Boston board (-M boston) on MIPS64EL.<br />
<br />
=== Nios2 ===<br />
* New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.<br />
=== OpenRISC ===<br />
* Many fixes and many instructions added.<br />
=== PowerPC ===<br />
* Lots of POWER9 instructions are implemented for TCG.<br />
* New "40p" machine type, essentially a cleaned up version of the old "-M prep".<br />
* Under KVM, the guest timebase stops when the guest is stopped.<br />
==== pSeries ====<br />
* Support for the H_SIGNAL_SYS_RESET hypercall<br />
=== s390 ===<br />
* Multiple bus support for zPCI.<br />
* Bump maximum numbers of virtqueues for virtio-ccw to 1024 (same as other transports).<br />
* Enable virtio-crypto via virtio-ccw.<br />
* Support for network boot, see http://wiki.qemu-project.org/Features/S390xNetworkBoot<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
* Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.<br />
* Fix for sun4m regression booting with real SS-20 PROM (see bug [https://bugs.launchpad.net/qemu/+bug/1622547 #1622547])<br />
* Fix for programming 64-bit PCI BARs on sun4u machines allows virtio to work in non-legacy mode once again (OpenBIOS)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).<br />
=== x86 ===<br />
* TCG supports 5-level paging.<br />
* The <tt>q35</tt> machine type offers SMI feature negotiation to interested guest firmware.<br />
* Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.<br />
* FIXME: query-cpu-model-expansion?<br />
==== HAXM ====<br />
* QEMU now supports hardware acceleration for i686 / x86_64 system emulation on Windows. The acceleration requires the Intel Hardware Accelerated Execution Manager (Intel HAXM). Due to limitations of the current HAXM implementation (RAM size is 32 bit), guest machines can only use up to 4095 MiB of RAM. Versions of HAXM before 6.1.2 are known to be buggy, so for best results always use the latest version of HAXM which is available.<br />
<br />
==== KVM ====<br />
* 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"<br />
* When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments<br />
* When running on Haswell processors that report TSX to be present, but have a broken TSX implementation, QEMU will warn (or fail to start with "-cpu enforce") when requesting the TSX CPUID feature.<br />
==== Xen ====<br />
* Support for unplugging NVMe disks at startup<br />
<br />
=== Xtensa ===<br />
* Support for -icount.<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* 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.<br />
* 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.<br />
* QEMU provides an VMGENID<br />
==== Block devices ====<br />
* 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%. Polling settings are also included in query-iothreads output.<br />
* -blockdev: In the long run, this option is supposed to replace -drive. From a user's perspective, it works very similar to ''-drive if=none'' except for the fact that it does not accept device-level options. These are the following:<br />
** ''id, snapshot, aio, cache.writeback, format, rerror, werror, throttling.*, copy-on-read, stats-account-invalid, stats-account-failed''<br />
** Instead of ''id'', you have to specify a ''node-name'' for the root level. This name will be used for identifying the block device at a guest device, like so:<br />
*** Old: <tt>-drive id=drv0,if=none,driver=qcow2,file.driver=file,file.filename=foo.qcow2 -device virtio-blk,drive=drv0</tt><br />
*** New: <tt>-blockdev node-name=blk0,driver=qcow2,file.driver=file,file.filename=foo.qcow2 -device virtio-blk,drive=blk0</tt><br />
** From a more technical perspective, this option is basically ''blockdev-add'' for the command line.<br />
* blockdev-add: This QMP command is no longer experimental, together with blockdev-del. Notable changes since it was added first:<br />
** Less option nesting:<br />
*** Was: <tt>{ "execute": "blockdev-add", "arguments": { "options": { ... } } }</tt><br />
*** Is now: <tt>{ "execute": "blockdev-add", "arguments": { ... } }</tt><br />
** The root node no longer takes special options. Therefore, ''id'' and in fact any of the options that are allowed for ''-drive if=none'' but not for ''-blockdev'' (see above) may no longer be specified. Instead of ''id'', blockdev-add now requires a ''node-name'' for the root node (just as ''-blockdev'' does).<br />
*** From an internal perspective, this means that blockdev-add no longer creates a ''BlockBackend''. This is an object used for connecting ''BlockDriverState'' objects (block layer “nodes”) to guest devices, the built-in NBD server, etc.. Instead, it only creates plain nodes; the ''BlockBackend'' is created implicitly when attaching a node to e.g. a guest device. In order to connect the two, the node needs to be identified and this is done using its ''node-name''.<br />
*** (Note that this is also the main difference between ''-drive'' and ''-blockdev'': ''-drive'' creates a ''BlockBackend'' (and even a guest device unless ''if=none'' has been given), ''-blockdev'' does not.)<br />
** Support for all block drivers available in QEMU. (Some block drivers that used to have only a very basic interface (e.g. just took a filename and parsed it) now have a much nicer QAPIfied interface.)<br />
<br />
==== Network devices ====<br />
* virtio-net devices can pass the MTU to the guest.<br />
==== SCSI ====<br />
==== PCI/PCIe ====<br />
* New device "pcie-root-port" provides a generic PCIe root port.<br />
* New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.<br />
==== USB ====<br />
* Many XHCI emulation bugfixes.<br />
==== VFIO ====<br />
==== virtio ====<br />
* virtio-crypto devices support hotplug.<br />
* virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.<br />
==== Xen ====<br />
==== fw_cfg ====<br />
<br />
The DMA interface to fw_cfg now supports writeable blobs.<br />
<br />
The <tt>fw_cfg_io</tt> and <tt>fw_cfg_mem</tt> devices now have more slots for files; the <tt>FW_CFG_FILE_SLOTS</tt> constant has been replaced with the (internal only) <tt>x-file-slots</tt> property. The property can be further raised in future machine types if absolutely necessary.<br />
==== 9pfs ====<br />
* No more vulnerable to symlink attacks (CVE-2016-9602).<br />
* I/O throttle support similar to blockdev (command line only at the moment, QMP will be added later).<br />
<br />
=== Character devices ===<br />
* A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.<br />
=== Crypto subsystem ===<br />
* The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)<br />
=== GUI ===<br />
* "-display vnc" can specify multiple VNC listen addresses.<br />
* "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.<br />
=== Monitor ===<br />
* QEMU now includes Texinfo documentation for all QMP commands and events.<br />
* The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".<br />
=== Migration ===<br />
* A new option --only-migratable will prevent adding devices that cannot be live-migrated.<br />
* Postcopy migration can now be used with hugepages backed by hugetlbfs. This requires Linux kernel 4.11. See docs/migration.txt for detail.<br />
<br />
=== Network ===<br />
* slirp's TFTP server supports dynamic block sizes.<br />
=== Block devices and tools ===<br />
<br />
* the qemu-img convert command now works asynchronously which up to doubles performance if network based storage like iSCSI, NFS or RBD is used.<br />
* qemu-nbd supports systemd socket activation<br />
<br />
== User-mode emulation ==<br />
* Support for hppa-linux emulation.<br />
* Support for nios2-linux emulation.<br />
=== Removed target support ===<br />
=== New functionality ===<br />
<br />
* Signal handling support added for x86-64 linux-user<br />
<br />
== TCG ==<br />
* Improvements to MIPS code generation.<br />
* TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"<br />
<br />
== Guest agent ==<br />
* qemu-ga now supports systemd socket activation<br />
== New dependencies ==<br />
=== Build dependencies ===<br />
* QEMU now requires a minimum dtc version of 1.4.2.<br />
=== Run-time dependencies ===<br />
* QEMU now requires Windows Vista or newer.<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/2.9#Patches_Posted|Planning/2.9]]<br />
<br />
* The hardware acceleration for QEMU on Windows (Intel HAXM) currently only supports 4095 MiB of RAM for the guest machine. If QEMU is started with a larger memory size, this results in a runtime error.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.9&diff=6832ChangeLog/2.92017-04-10T09:55:56Z<p>Stefan Weil: /* HAXM */ Add note on current limitations</p>
<hr />
<div>== Warning of unsupported host systems ==<br />
This release includes changes to the configure script so that it will now report some host operating systems and<br />
platforms as "unsupported". These are host setups which we do not have access to and are thus unable to test. They will continue to work in this 2.9 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).<br />
<br />
This affects the CPU architectures:<br />
* ia64<br />
and the OSes:<br />
* GNU/kFreeBSD<br />
* DragonFly BSD<br />
* NetBSD<br />
* OpenBSD<br />
* Solaris<br />
* AIX<br />
* Haiku<br />
== System emulation ==<br />
=== Incompatible changes ===<br />
* Improvements to "-drive":<br />
** "-drive"'s <tt>if</tt> option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.<br />
** "-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.<br />
** "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.<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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).<br />
<br />
=== Alpha ===<br />
* MTTCG is enabled by default for Alpha guests running on x86_64 host<br />
<br />
=== 68k ===<br />
* Support for many 680x0 opcodes.<br />
* The "dummy" machine has been removed. You can use the "none" machine as plain instruction set simulator now instead.<br />
<br />
=== ARM ===<br />
* MTTCG is enabled by default for ARM guests running on x86_64 hosts<br />
* Support for the hardware RNG, BCM2835 SD host controller and GPIO controller on the Raspberry Pi board<br />
* Support migration for the GICv3 when using KVM<br />
* improve ARMv7M NVIC and exception handling emulation (in particular fixing priority masking bugs)<br />
* basic emulation of the PMU for AArch64 TCG guests<br />
* Emulation of EL2 is now supported for the 'virt' board with an AArch64 TCG CPU and GICv3<br />
<br />
=== MIPS ===<br />
* New MIPS Boston board (-M boston) on MIPS64EL.<br />
<br />
=== Nios2 ===<br />
* New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.<br />
=== OpenRISC ===<br />
* Many fixes and many instructions added.<br />
=== PowerPC ===<br />
* Lots of POWER9 instructions are implemented for TCG.<br />
* New "40p" machine type, essentially a cleaned up version of the old "-M prep".<br />
* Under KVM, the guest timebase stops when the guest is stopped.<br />
==== pSeries ====<br />
* Support for the H_SIGNAL_SYS_RESET hypercall<br />
=== s390 ===<br />
* Multiple bus support for zPCI.<br />
* Bump maximum numbers of virtqueues for virtio-ccw to 1024 (same as other transports).<br />
* Enable virtio-crypto via virtio-ccw.<br />
* Support for network boot, see http://wiki.qemu-project.org/Features/S390xNetworkBoot<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
* Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.<br />
* Fix for sun4m regression booting with real SS-20 PROM (see bug [https://bugs.launchpad.net/qemu/+bug/1622547 #1622547])<br />
* Fix for programming 64-bit PCI BARs on sun4u machines allows virtio to work in non-legacy mode once again (OpenBIOS)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).<br />
=== x86 ===<br />
* TCG supports 5-level paging.<br />
* The <tt>q35</tt> machine type offers SMI feature negotiation to interested guest firmware.<br />
* Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.<br />
* FIXME: query-cpu-model-expansion?<br />
==== HAXM ====<br />
* QEMU now supports hardware acceleration for i686 / x86_64 system emulation on Windows. The acceleration requires the Intel Hardware Accelerated Execution Manager (Intel HAXM). Due to limitations of the current HAXM implementation (RAM size is 32 bit), guest machines can only use up to 4095 MiB of RAM. Versions of HAXM before 6.1.2 are known to be buggy, so for best results always use the latest version of HAXM which is available.<br />
<br />
==== KVM ====<br />
* 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"<br />
* When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments<br />
* When running on Haswell processors that report TSX to be present, but have a broken TSX implementation, QEMU will warn (or fail to start with "-cpu enforce") when requesting the TSX CPUID feature.<br />
==== Xen ====<br />
* Support for unplugging NVMe disks at startup<br />
<br />
=== Xtensa ===<br />
* Support for -icount.<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* 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.<br />
* 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.<br />
* QEMU provides an VMGENID<br />
==== Block devices ====<br />
* 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%. Polling settings are also included in query-iothreads output.<br />
* -blockdev: In the long run, this option is supposed to replace -drive. From a user's perspective, it works very similar to ''-drive if=none'' except for the fact that it does not accept device-level options. These are the following:<br />
** ''id, snapshot, aio, cache.writeback, format, rerror, werror, throttling.*, copy-on-read, stats-account-invalid, stats-account-failed''<br />
** Instead of ''id'', you have to specify a ''node-name'' for the root level. This name will be used for identifying the block device at a guest device, like so:<br />
*** Old: <tt>-drive id=drv0,if=none,driver=qcow2,file.driver=file,file.filename=foo.qcow2 -device virtio-blk,drive=drv0</tt><br />
*** New: <tt>-blockdev node-name=blk0,driver=qcow2,file.driver=file,file.filename=foo.qcow2 -device virtio-blk,drive=blk0</tt><br />
** From a more technical perspective, this option is basically ''blockdev-add'' for the command line.<br />
* blockdev-add: This QMP command is no longer experimental, together with blockdev-del. Notable changes since it was added first:<br />
** Less option nesting:<br />
*** Was: <tt>{ "execute": "blockdev-add", "arguments": { "options": { ... } } }</tt><br />
*** Is now: <tt>{ "execute": "blockdev-add", "arguments": { ... } }</tt><br />
** The root node no longer takes special options. Therefore, ''id'' and in fact any of the options that are allowed for ''-drive if=none'' but not for ''-blockdev'' (see above) may no longer be specified. Instead of ''id'', blockdev-add now requires a ''node-name'' for the root node (just as ''-blockdev'' does).<br />
*** From an internal perspective, this means that blockdev-add no longer creates a ''BlockBackend''. This is an object used for connecting ''BlockDriverState'' objects (block layer “nodes”) to guest devices, the built-in NBD server, etc.. Instead, it only creates plain nodes; the ''BlockBackend'' is created implicitly when attaching a node to e.g. a guest device. In order to connect the two, the node needs to be identified and this is done using its ''node-name''.<br />
*** (Note that this is also the main difference between ''-drive'' and ''-blockdev'': ''-drive'' creates a ''BlockBackend'' (and even a guest device unless ''if=none'' has been given), ''-blockdev'' does not.)<br />
** Support for all block drivers available in QEMU. (Some block drivers that used to have only a very basic interface (e.g. just took a filename and parsed it) now have a much nicer QAPIfied interface.)<br />
<br />
==== Network devices ====<br />
* virtio-net devices can pass the MTU to the guest.<br />
==== SCSI ====<br />
==== PCI/PCIe ====<br />
* New device "pcie-root-port" provides a generic PCIe root port.<br />
* New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.<br />
==== USB ====<br />
* Many XHCI emulation bugfixes.<br />
==== VFIO ====<br />
==== virtio ====<br />
* virtio-crypto devices support hotplug.<br />
* virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.<br />
==== Xen ====<br />
==== fw_cfg ====<br />
<br />
The DMA interface to fw_cfg now supports writeable blobs.<br />
<br />
The <tt>fw_cfg_io</tt> and <tt>fw_cfg_mem</tt> devices now have more slots for files; the <tt>FW_CFG_FILE_SLOTS</tt> constant has been replaced with the (internal only) <tt>x-file-slots</tt> property. The property can be further raised in future machine types if absolutely necessary.<br />
==== 9pfs ====<br />
* No more vulnerable to symlink attacks (CVE-2016-9602).<br />
* I/O throttle support similar to blockdev (command line only at the moment, QMP will be added later).<br />
<br />
=== Character devices ===<br />
* A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.<br />
=== Crypto subsystem ===<br />
* The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)<br />
=== GUI ===<br />
* "-display vnc" can specify multiple VNC listen addresses.<br />
* "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.<br />
=== Monitor ===<br />
* QEMU now includes Texinfo documentation for all QMP commands and events.<br />
* The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".<br />
=== Migration ===<br />
* A new option --only-migratable will prevent adding devices that cannot be live-migrated.<br />
* Postcopy migration can now be used with hugepages backed by hugetlbfs. This requires Linux kernel 4.11. See docs/migration.txt for detail.<br />
<br />
=== Network ===<br />
* slirp's TFTP server supports dynamic block sizes.<br />
=== Block devices and tools ===<br />
<br />
* the qemu-img convert command now works asynchronously which up to doubles performance if network based storage like iSCSI, NFS or RBD is used.<br />
* qemu-nbd supports systemd socket activation<br />
<br />
== User-mode emulation ==<br />
* Support for hppa-linux emulation.<br />
* Support for nios2-linux emulation.<br />
=== Removed target support ===<br />
=== New functionality ===<br />
<br />
* Signal handling support added for x86-64 linux-user<br />
<br />
== TCG ==<br />
* Improvements to MIPS code generation.<br />
* TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"<br />
<br />
== Guest agent ==<br />
* qemu-ga now supports systemd socket activation<br />
== New dependencies ==<br />
=== Build dependencies ===<br />
* QEMU now requires a minimum dtc version of 1.4.2.<br />
=== Run-time dependencies ===<br />
* QEMU now requires Windows Vista or newer.<br />
<br />
== Known issues ==<br />
<br />
* see [[Planning/2.9#Patches_Posted|Planning/2.9]]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=6806Hosts/W322017-03-31T18:37:43Z<p>Stefan Weil: /* Running QEMU for W32 */ More information on HAXM</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
Starting with QEMU 1.9, there is also a working acceleration similar to KVM, but based on Intel HAXM.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* mingw64-i686-curl<br />
* mingw64-i686-gtk3<br />
* mingw64-i686-libssh2<br />
* mingw64-i686-libtasn1<br />
* mingw64-i686-nettle<br />
* mingw64-i686-ncurses<br />
* mingw64-i686-gnutls<br />
<br />
==== Optional packages ====<br />
* mingw64-i686-SDL2<br />
* mingw64-i686-libgcrypt<br />
* mingw64-i686-libusb1.0<br />
* mingw64-i686-usbredir<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
=== Native builds with MSYS2 ===<br />
<br />
MSYS2 provides a convenient environment to produce native builds for W64.<br />
<br />
* Download and run the MSYS2 installer from [http://msys2.org msys2.org].<br />
<br />
* As per the MSYS2 documentation, download the latest repository updates with:<br />
<br />
pacman -Syu<br />
<br />
* If required, restart the MSYS2 console. Then update the remaining packages with:<br />
<br />
pacman -Su<br />
<br />
* Next install the basic set of developer tools:<br />
<br />
pacman -S base-devel mingw-w64-x86_64-toolchain git<br />
<br />
* Then install any required QEMU-specific packages. For a basic setup you can use:<br />
<br />
pacman -S mingw-w64-x86_64-glib2 mingw64/mingw-w64-x86_64-gtk2 mingw64/mingw-w64-x86_64-SDL2<br />
<br />
* Initialise the git repository:<br />
<br />
git clone git://git.qemu-project.org/qemu.git<br />
cd qemu<br />
git submodule update --init pixman<br />
git submodule update --init dtc<br />
<br />
* Finally build QEMU as normal:<br />
<br />
./configure --enable-gtk --enable-sdl<br />
make<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
Hardware acceleration for x86 can be enabled with the command line option <code>--enable-hax</code>.<br />
This requires at least QEMU 1.9 and an installed Intel HAXM driver.<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt if QEMU was linked with SDL 1.2.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php<br />
<br />
;Intel Hardware Accelerated Execution Manager (HAXM)<br />
:https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=6805Hosts/W322017-03-31T18:31:18Z<p>Stefan Weil: /* QEMU on W32 and W64 hosts */ Add note on HAXM</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
Starting with QEMU 1.9, there is also a working acceleration similar to KVM, but based on Intel HAXM.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* mingw64-i686-curl<br />
* mingw64-i686-gtk3<br />
* mingw64-i686-libssh2<br />
* mingw64-i686-libtasn1<br />
* mingw64-i686-nettle<br />
* mingw64-i686-ncurses<br />
* mingw64-i686-gnutls<br />
<br />
==== Optional packages ====<br />
* mingw64-i686-SDL2<br />
* mingw64-i686-libgcrypt<br />
* mingw64-i686-libusb1.0<br />
* mingw64-i686-usbredir<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
=== Native builds with MSYS2 ===<br />
<br />
MSYS2 provides a convenient environment to produce native builds for W64.<br />
<br />
* Download and run the MSYS2 installer from [http://msys2.org msys2.org].<br />
<br />
* As per the MSYS2 documentation, download the latest repository updates with:<br />
<br />
pacman -Syu<br />
<br />
* If required, restart the MSYS2 console. Then update the remaining packages with:<br />
<br />
pacman -Su<br />
<br />
* Next install the basic set of developer tools:<br />
<br />
pacman -S base-devel mingw-w64-x86_64-toolchain git<br />
<br />
* Then install any required QEMU-specific packages. For a basic setup you can use:<br />
<br />
pacman -S mingw-w64-x86_64-glib2 mingw64/mingw-w64-x86_64-gtk2 mingw64/mingw-w64-x86_64-SDL2<br />
<br />
* Initialise the git repository:<br />
<br />
git clone git://git.qemu-project.org/qemu.git<br />
cd qemu<br />
git submodule update --init pixman<br />
git submodule update --init dtc<br />
<br />
* Finally build QEMU as normal:<br />
<br />
./configure --enable-gtk --enable-sdl<br />
make<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php<br />
<br />
;Intel Hardware Accelerated Execution Manager (HAXM)<br />
:https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.9&diff=6772ChangeLog/2.92017-03-28T20:45:49Z<p>Stefan Weil: /* x86 */ Add HAXM support</p>
<hr />
<div>== Warning of unsupported host systems ==<br />
This release includes changes to the configure script so that it will now report some host operating systems and<br />
platforms as "unsupported". These are host setups which we do not have access to and are thus unable to test. They will continue to work in this 2.9 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).<br />
<br />
This affects the CPU architectures:<br />
* ia64<br />
and the OSes:<br />
* GNU/kFreeBSD<br />
* DragonFly BSD<br />
* NetBSD<br />
* OpenBSD<br />
* Solaris<br />
* AIX<br />
* Haiku<br />
== System emulation ==<br />
=== Incompatible changes ===<br />
* Improvements to "-drive":<br />
** "-drive"'s <tt>if</tt> option defaults to "none" on machines that do not have an onboard IDE or SCSI controller.<br />
** "-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.<br />
** "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.<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
* 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).<br />
=== Alpha ===<br />
* MTTCG is enabled by default for Alpha guests running on x86_64 host<br />
<br />
=== 68k ===<br />
* Support for many 680x0 opcodes.<br />
* The "dummy" machine has been removed. You can use the "none" machine as plain instruction set simulator now instead.<br />
<br />
=== ARM ===<br />
* MTTCG is enabled by default for ARM guests running on x86_64 hosts<br />
* Support for the hardware RNG, BCM2835 SD host controller and GPIO controller on the Raspberry Pi board<br />
* Support migration for the GICv3 when using KVM<br />
* improve ARMv7M NVIC and exception handling emulation (in particular fixing priority masking bugs)<br />
* basic emulation of the PMU for AArch64 TCG guests<br />
* Emulation of EL2 is now supported for the 'virt' board with an AArch64 TCG CPU and GICv3<br />
<br />
=== MIPS ===<br />
* New MIPS Boston board (-M boston) on MIPS64EL.<br />
<br />
=== Nios2 ===<br />
* New target, with support for Nios-II R1, emulating the 10M50 development kit with the Nios2 GHRD loaded in the FPGA.<br />
=== OpenRISC ===<br />
* Many fixes and many instructions added.<br />
=== PowerPC ===<br />
* Lots of POWER9 instructions are implemented for TCG.<br />
* New "40p" machine type, essentially a cleaned up version of the old "-M prep".<br />
* Under KVM, the guest timebase stops when the guest is stopped.<br />
==== pSeries ====<br />
* Support for the H_SIGNAL_SYS_RESET hypercall<br />
=== s390 ===<br />
* Multiple bus support for zPCI.<br />
* Bump maximum numbers of virtqueues for virtio-ccw to 1024 (same as other transports).<br />
* Enable virtio-crypto via virtio-ccw.<br />
* Support for network boot, see http://wiki.qemu-project.org/Features/S390xNetworkBoot<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
* Support for Niagara has been rewritten; "-M niagara" has replaced the old "-M Niagara" (with uppercase N) machine type.<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for more instructions (UPDFL, more JNE/MOV variants, MADD.F, MSUB.F, FTOUZ).<br />
=== x86 ===<br />
* TCG supports 5-level paging.<br />
* The <tt>q35</tt> machine type offers SMI feature negotiation to interested guest firmware.<br />
* Intel IOMMU emulation can now report the caching mode capability to the guest through the "caching-mode=on" property. This is disabled by default.<br />
* FIXME: query-cpu-model-expansion?<br />
==== HAXM ====<br />
* QEMU now supports hardware acceleration for i686 / x86_64 system emulation on Windows. The acceleration requires the Intel Hardware Accelerated Execution Manager (Intel HAXM).<br />
==== KVM ====<br />
* 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"<br />
* When Hyper-V crash reporting is active, QEMU will augment GUEST_PANICKED events with the bugcheck code and arguments<br />
* When running on Haswell processors that report TSX to be present, but have a broken TSX implementation, QEMU will warn (or fail to start with "-cpu enforce") when requesting the TSX CPUID feature.<br />
==== Xen ====<br />
* Support for unplugging NVMe disks at startup<br />
<br />
=== Xtensa ===<br />
* Support for -icount.<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* 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.<br />
* 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.<br />
* QEMU provides an VMGENID<br />
==== Block devices ====<br />
* 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%. Polling settings are also included in query-iothreads output.<br />
* -blockdev?<br />
==== Network devices ====<br />
* virtio-net devices can pass the MTU to the guest.<br />
==== SCSI ====<br />
==== PCI/PCIe ====<br />
* New device "pcie-root-port" provides a generic PCIe root port.<br />
* New machine types have SHPC disabled on PCI-to-PCI bridges, and only use ACPI for hotplug support. This makes slot 0 usable.<br />
==== USB ====<br />
* Many XHCI emulation bugfixes.<br />
==== VFIO ====<br />
==== virtio ====<br />
* virtio-crypto devices support hotplug.<br />
* virtio-pci devices enable Address Translation Service (ATS). This is needed to support vhost for devices sitting behind an IOMMU.<br />
==== Xen ====<br />
==== fw_cfg ====<br />
<br />
The DMA interface to fw_cfg now supports writeable blobs.<br />
<br />
The <tt>fw_cfg_io</tt> and <tt>fw_cfg_mem</tt> devices now have more slots for files; the <tt>FW_CFG_FILE_SLOTS</tt> constant has been replaced with the (internal only) <tt>x-file-slots</tt> property. The property can be further raised in future machine types if absolutely necessary.<br />
==== 9pfs ====<br />
* No more vulnerable to symlink attacks (CVE-2016-9602).<br />
* I/O throttle support similar to blockdev (command line only at the moment, QMP will be added later).<br />
<br />
=== Character devices ===<br />
* A new backend "wctablet" provides emulation for Wacom Penpartner serial tablets.<br />
=== Crypto subsystem ===<br />
* The crypto subsystem now includes support for HMAC algorithms, which are used in virtio-crypto. (?)<br />
=== GUI ===<br />
* "-display vnc" can specify multiple VNC listen addresses.<br />
* "-display vnc" can listen on all resolved addresses for a hostname, including for example IPv4 and IPv6 addresses.<br />
=== Monitor ===<br />
* QEMU now includes Texinfo documentation for all QMP commands and events.<br />
* The guest memory map can be dumped in flat format (i.e. with all subregions resolved) with "info mtree -f".<br />
=== Migration ===<br />
* A new option --only-migratable will prevent adding devices that cannot be live-migrated.<br />
* Postcopy migration can now be used with hugepages backed by hugetlbfs. This requires Linux kernel 4.11. See docs/migration.txt for detail.<br />
<br />
=== Network ===<br />
* slirp's TFTP server supports dynamic block sizes.<br />
=== Block devices and tools ===<br />
<br />
* the qemu-img convert command now works asynchronously which up to doubles performance if network based storage like iSCSI, NFS or RBD is used.<br />
<br />
== User-mode emulation ==<br />
* Support for hppa-linux emulation.<br />
* Support for nios2-linux emulation.<br />
=== Removed target support ===<br />
=== New functionality ===<br />
<br />
* Signal handling support added for x86-64 linux-user<br />
<br />
== TCG ==<br />
* Improvements to MIPS code generation.<br />
* TCG can use host opcodes for "extract", "count leading/trailing zeros", "population count"<br />
<br />
== Guest agent ==<br />
* qemu-ga now supports systemd socket activation<br />
== Build Information ==<br />
=== Build dependencies ===<br />
* QEMU now requires a minimum dtc version of 1.4.2.<br />
<br />
== Known issues ==<br />
<br />
* record/replay currently broken despite single-thread fallback (icount issues seem fixed for now)</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Documentation&diff=6523Documentation2017-01-22T12:47:56Z<p>Stefan Weil: /* Startup */ Add links to new developer manuals</p>
<hr />
<div>* [{{PagesStartingWith|Documentation/}} All documentation pages]<br />
<br />
== Startup ==<br />
* [https://qemu.weilnetz.de/doc/qemu-doc.html QEMU Emulator User Documentation] (HTML generated from QEMU sources, updated frequently)<br />
* [https://qemu.weilnetz.de/doc/qemu-ga-ref.html QEMU Guest Agent Protocol Reference] (HTML generated from QEMU sources)<br />
* [https://qemu.weilnetz.de/doc/qemu-qmp-ref.html QEMU QMP Reference Manual] (HTML generated from QEMU sources)<br />
* [http://en.wikibooks.org/wiki/QEMU QEMU documentation] on wikibooks.org<br />
* [http://qemu-buch.de/ QEMU-Buch / QEMU-Book] - a quite versatile book on qemu, provided in German and English (partly as a google translation), its describing e.g. lots of guests and hosts<br />
<br />
== How do I... ==<br />
=== For users ===<br />
[[:Category:User documentation|All user documentation pages]]<br />
* [[Documentation/Networking|Set up Networking]]<br />
* [[Documentation/9psetup|Setting up VirtFS (9P Sharing over Virtio) between the guest and host]]<br />
* [[Documentation/CreateSnapshot|Create a Snapshot]]<br />
* [https://wiki.edubuntu.org/UbuntuDevelopment/Ports Ubuntu Development Ports] - details on qemu-<arch> usage, chroot set up, system emulation and cross compilation<br />
* [https://wiki.gentoo.org/wiki/Embedded_Handbook/General/Compiling_with_qemu_user_chroot Compiling with qemu-user chroot] - details on tuning binfmt_misc with magic patterns for making alien binaries run from the shell with silent invocation of QEMU<br />
* [[Documentation/vhost-user-ovs-dpdk|Use vhost-user with OVS/DPDK as backend]]<br />
* [[Documentation/Migration with shared storage|Set up storage for live migration]]<br />
<br />
Building QEMU from source:<br />
* [[Hosts/Linux|on Linux hosts]]<br />
* [[Hosts/Mac|on macOS hosts]]<br />
* [[Hosts/W32|for Windows (natively or cross-built on Linux)]]<br />
<br />
For users that target for a specific [[Documentation/Platforms|platform]]:<br />
* [[Documentation/Platforms/ARM|Running ARM guests on QEMU]]<br />
* [[Documentation/Platforms/POWER|Running POWER / sPAPR / pseries guests on QEMU]]<br />
* [[Documentation/Platforms/PowerPC|Running PowerPC Macintosh guests on QEMU]]<br />
* [[Documentation/Platforms/SPARC|Running SPARC guests on QEMU]]<br />
* [http://www.aurel32.net/info/debian_mips_qemu.php Debian on an emulated MIPS(EL) machine] based upon some Debian Linux host<br />
* [http://en.wikibooks.org/wiki/QEMU/Windows_XP Windows XP on QEMU-x86] based upon some Linux host (brief but good hints on the guest set up)<br />
* [http://en.wikibooks.org/wiki/QEMU/FreeDOS FreeDos on QEMU-x86] based upon some Linux host (concentrates on host details)<br />
<br />
=== For developers ===<br />
[[:Category:Developer documentation|All developer documentation pages]]<br />
* [[Documentation/Debugging|Debug QEMU]]<br />
* [[Documentation/GettingStartedDevelopers|Get started as a QEMU developer]]<br />
<br />
== Technical Documentation ==<br />
* The [http://git.qemu-project.org/?p=qemu.git;a=tree;f=docs;hb=master docs/] directory in the QEMU tree contains more user and developer documentation.<br />
* [[Documentation/HardwareManuals|Hardware Manuals]]<br />
* [[Documentation/ISAManuals|Instruction Set Manuals (Assembly Language)]]<br />
* [[Documentation/Platforms/PC|PC Platform]]<br />
<br />
== Blogs ==<br />
* [http://planet.virt-tools.org/index.html Virt Tools Planet]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Documentation&diff=6522Documentation2017-01-22T12:44:16Z<p>Stefan Weil: Update URL (use HTTPS)</p>
<hr />
<div>* [{{PagesStartingWith|Documentation/}} All documentation pages]<br />
<br />
== Startup ==<br />
* [https://qemu.weilnetz.de/doc/qemu-doc.html QEMU Emulator User Documentation] (HTML generated from QEMU sources, updated frequently)<br />
* [http://en.wikibooks.org/wiki/QEMU QEMU documentation] on wikibooks.org<br />
* [http://qemu-buch.de/ QEMU-Buch / QEMU-Book] - a quite versatile book on qemu, provided in German and English (partly as a google translation), its describing e.g. lots of guests and hosts<br />
<br />
== How do I... ==<br />
=== For users ===<br />
[[:Category:User documentation|All user documentation pages]]<br />
* [[Documentation/Networking|Set up Networking]]<br />
* [[Documentation/9psetup|Setting up VirtFS (9P Sharing over Virtio) between the guest and host]]<br />
* [[Documentation/CreateSnapshot|Create a Snapshot]]<br />
* [https://wiki.edubuntu.org/UbuntuDevelopment/Ports Ubuntu Development Ports] - details on qemu-<arch> usage, chroot set up, system emulation and cross compilation<br />
* [https://wiki.gentoo.org/wiki/Embedded_Handbook/General/Compiling_with_qemu_user_chroot Compiling with qemu-user chroot] - details on tuning binfmt_misc with magic patterns for making alien binaries run from the shell with silent invocation of QEMU<br />
* [[Documentation/vhost-user-ovs-dpdk|Use vhost-user with OVS/DPDK as backend]]<br />
* [[Documentation/Migration with shared storage|Set up storage for live migration]]<br />
<br />
Building QEMU from source:<br />
* [[Hosts/Linux|on Linux hosts]]<br />
* [[Hosts/Mac|on macOS hosts]]<br />
* [[Hosts/W32|for Windows (natively or cross-built on Linux)]]<br />
<br />
For users that target for a specific [[Documentation/Platforms|platform]]:<br />
* [[Documentation/Platforms/ARM|Running ARM guests on QEMU]]<br />
* [[Documentation/Platforms/POWER|Running POWER / sPAPR / pseries guests on QEMU]]<br />
* [[Documentation/Platforms/PowerPC|Running PowerPC Macintosh guests on QEMU]]<br />
* [[Documentation/Platforms/SPARC|Running SPARC guests on QEMU]]<br />
* [http://www.aurel32.net/info/debian_mips_qemu.php Debian on an emulated MIPS(EL) machine] based upon some Debian Linux host<br />
* [http://en.wikibooks.org/wiki/QEMU/Windows_XP Windows XP on QEMU-x86] based upon some Linux host (brief but good hints on the guest set up)<br />
* [http://en.wikibooks.org/wiki/QEMU/FreeDOS FreeDos on QEMU-x86] based upon some Linux host (concentrates on host details)<br />
<br />
=== For developers ===<br />
[[:Category:Developer documentation|All developer documentation pages]]<br />
* [[Documentation/Debugging|Debug QEMU]]<br />
* [[Documentation/GettingStartedDevelopers|Get started as a QEMU developer]]<br />
<br />
== Technical Documentation ==<br />
* The [http://git.qemu-project.org/?p=qemu.git;a=tree;f=docs;hb=master docs/] directory in the QEMU tree contains more user and developer documentation.<br />
* [[Documentation/HardwareManuals|Hardware Manuals]]<br />
* [[Documentation/ISAManuals|Instruction Set Manuals (Assembly Language)]]<br />
* [[Documentation/Platforms/PC|PC Platform]]<br />
<br />
== Blogs ==<br />
* [http://planet.virt-tools.org/index.html Virt Tools Planet]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Links&diff=6521Links2017-01-22T12:42:13Z<p>Stefan Weil: Update URL (use HTTPS)</p>
<hr />
<div>=== Development ===<br />
*[http://savannah.gnu.org/projects/qemu Savannah project page]<br />
*[http://patchwork.ozlabs.org/project/qemu-devel/list/ QEMU patches] from the mailing list<br />
*IRC channel: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
<br />
=== Developers ===<br />
A few blogs from developers are syndicated at [http://planet.virt-tools.org/index.html Virt Tools Planet]. For enrolling a blog into the planet, email Amit Shah or Dan Berrange to add the feeds.<br />
<br />
=== Unofficial QEMU binaries ===<br />
* [http://www.omledom.com/ Precompiled Windows versions] (1.4.0), provided by Prashant Satish<br />
* [http://lassauge.free.fr/qemu/ Precompiled Windows versions] (≥ 0.13.0), provided by Eric Lassauge<br />
* [http://homepage3.nifty.com/takeda-toshiya/ Precompiled Windows versions] (≥ 0.9.1), provided by TAKEDA Toshiya<br />
* [https://qemu.weilnetz.de/ Precompiled Windows versions] (32 and 64 bit), provided by [[User: Stefan Weil|Stefan Weil]] <br />
* [http://www.h7.dion.ne.jp/~qemu-win/ Older precompiled Windows versions] (≤ 0.9.0), provided by Kazu<br />
* [http://atrpms.net/name/kqemu/ RPMs for Fedora and RHEL]<br />
* [http://www.slackware.com/~alien/slackbuilds/qemu/ Slackware packages]<br />
<br />
=== Alternate QEMU repositories ===<br />
*[http://svn.openmoko.org/trunk/src/host/qemu-neo1973/ Openmoko (Neo1973) target]<br />
*[http://repo.or.cz/w/qemu/malc.git Malc's GIT repository] including audio improvements, an x86 interpreter (useful for MSDOS demos heavily using self modifying code), full A/V capture<br />
*[http://github.com/patricksjackson/qemu/tree/android_qdev Android emulation] - see also http://gsoc11-qemu-android.blogspot.de/<br />
*[http://repo.or.cz/w/qemu/ar7.git/ AR7 routers, TCG interpreter] (maintained by [[User:Stefan_Weil|Stefan Weil]])<br />
*[http://gitorious.org/qemu-m68k Motorola 680x0] (not coldfire &mdash; maintained by Laurent Vivier)<br />
*[http://homepage.ntlworld.com/wholehog/stuart/qemu/z80.html Z80 target] (works, but needs flags optimisation)<br />
*[http://hppaqemu.sourceforge.net/ PA-RISC target] — early stages (needs linux-user rework for stack growing up)<br />
*[http://gitorious.org/mamona Mamona project]<br />
*[http://meego.gitorious.org/qemu-maemo/qemu MeeGo QEMU]<br />
*[http://repo.or.cz/w/kqemu.git kqemu archive] includes patches for the former acceleration module<br />
*[http://git.linaro.org/gitweb?p=qemu/qemu-linaro.git;a=summary qemu-linaro] - mostly tracks upstream; includes OMAP3 support<br />
*[http://github.com/vapier/qemu Blackfin target] (maintained by Mike Frysinger)<br />
*[http://idletime.s601.xrea.com/enu/qemu/ idletime's pnacl port] Portable Native Client (PNaCl) port runs in Chrome web browser<br />
<br />
==== Historical ports ====<br />
*[http://svn.kju-app.org/trunk/qemu/ Q repository] (Mac OS X port of v0.9.1)<br />
*[http://www.opensolaris.org/os/project/qemu/ OpenSolaris project] (OpenSolaris port of ~v0.9.1)<br />
<br />
=== GUI Front Ends ===<br />
{|class="wikitable sortable"<br />
! align="left" | Project Name<br />
! align="left" | Latest Release<br />
|-<br />
| [http://witsbits.com/ Witsbits] is a combination of [http://witsbits.com/product.php a web service and a boot loader], enabling bare-metal servers to host virtual machines with QEMU quickly.<br />
| 2012-10-16<br />
|-<br />
| [http://sourceforge.net/projects/aqemu/ AQEMU] GUI for QEMU and KVM (Linux), [http://qemu-buch.de/d/Managementtools/_AQEMU docs (German)], [http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows#Qemu-Manager_f.C3.BCr_Windows more docs (German)]<br />
| 2011-07-27 <br />
|-<br />
| [http://www.davereyn.co.uk/ QEMU Manager] on Windows by Dave Reynolds.<br />
| 2010-04 <br />
|-<br />
| [http://www.kju-app.org/ Q is a Mac OS X port] of QEMU 0.9.1 with a nice GUI<br />
| 2008-02-16<br />
|-<br />
| [http://qtemu.org/ QtEmu], a graphical user interface for QEMU written in Qt4 for Linux and Windows<br />
| 2007-11-12<br />
|-<br />
| [http://qemudo.sourceforge.net/ qemudo], QEMU Web Interface<br />
| 2007-02-25 <br />
|}<br />
<br />
=== Other management tools/systems ===<br />
*[http://libvirt.org libvirt] provides an API for managing QEMU/KVM (and other hypervisors) exposed in C, Perl, Python, OCaml, Ruby, and Java, with bridges to AMQP/QMF and DMTF CIM.<br />
*[http://virt-manager.org virt-install, virt-clone, virt-convert] a set of command line tools for provisioning new VMs from install media, existing VMs and appliances, respectively. See also 'virsh' command line shell with libvirt.<br />
*[http://virt-manager.org virt-manager], Virtual Machine Manager. A graphical desktop management app using [http://libvirt.org/ libvirt]. Can manage a single local host, or securely multiple remote hosts. Support QEMU, KVM, Xen and more<br />
* [http://code.google.com/p/ganeti/ Ganeti], a cluster virtual server management software tool built on top of existing virtualization technologies such as Xen or KVM and other Open Source software.<br />
* [https://github.com/shevek/qemu-java qemu-java], a full Java API to QEmu's QApi, commandline image manipulation. This is a good foundation API for building integration testing systems, richer QEmu-based applications, and so forth.<br />
<br />
=== BIOSes and firmware used by QEMU ===<br />
*The PC BIOS from the [http://bochs.sourceforge.net/ Bochs] IA-32 Emulator Project<br />
*The [http://www.nongnu.org/vgabios LGPL VGA BIOS project]<br />
*The [http://openbios.info/Welcome_to_OpenBIOS OpenBIOS] project, an open source Open Firmware implementation<br />
*The [http://perso.magic.fr/l_indien/OpenHackWare/index.htm OpenHackWare] Open Firmware implementation<br />
*[http://www.etherboot.org/ Etherboot images] from [http://rom-o-matic.net/ ROM-o-matic]<br />
*The EFI BIOS comes from the [http://www.tianocore.org/ TianoCore Project]. The QEMU port is available [http://xenbits.xensource.com/ext/efi-vfirmware.hg here]<br />
*[http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF OVMF] provides UEFI support for IA32 (x86) and X64 (x86-64) guests.<br />
<br />
=== Projects using the QEMU code ===<br />
*The [http://www.xen.org Xen] virtual machine monitor<br />
*[http://www.linux-kvm.org KVM], Kernel-based Virtual Machine for Linux<br />
*[http://www.virtualbox.org/ VirtualBox], an open source x86 virtualizer.<br />
*[http://www.serialice.com/ SerialICE], a system software debugger<br />
*[http://www.marss86.org/index.php/Home MARSSx86], a cycle accurate accurate x86 simulator that uses QEMU<br />
<br />
=== External Documentation ===<br />
*Book "''qemu-kvm & libvirt''", 4. Edition 2010, [http://qemu-buch.de/english/order.php ISBN 978-3-8370-0876-0], http://qemu-buch.de<br />
*[http://qemu-buch.de/cgi-bin/moin.cgi/ #qemu the (unofficial) wiki of QEMU]<br />
*Wiki about the [http://www.linux-mips.org/wiki/Qemu QEMU MIPS target]<br />
*IBM Linux Blueprint: [http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaai/kvminstall/liaaikvminstallstart.htm Quick Start Guide for installing and running KVM]<br />
*IBM Linux Blueprint: [http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=/liaai/kvmadv/kvmadvstart.htm The Developer's Approach to Installing and Managing KVMs]<br />
<br />
=== Other emulators ===<br />
*The [http://bochs.sourceforge.net/ Bochs] IA-32 Emulator Project<br />
*[http://www.ptlsim.org/ PTLsim], a cycle accurate x86 microprocessor simulator<br />
*The [http://ftp.dreamtime.org/pub/linux/Linux-Alpha/em86/v0.2/docs/em86.html EM86 x86 emulator] on Alpha-Linux<br />
*The [http://www.complang.tuwien.ac.at/schani/bintrans/ bintrans] Dynamic Binary Translator<br />
*[http://www.boblycat.org/~malc/minde/ MINDE], an emulator for some old x86 demos<br />
*[http://www.skyeye.org SkyEye], an ARM simulator<br />
*[http://softgun.sourceforge.net/ Softgun], an ARM simulator<br />
*[http://simh.trailing-edge.com/ SIMH], The Computer History Simulation Project<br />
*[http://gxemul.sourceforge.net/ GXemul], emulator for multiple systems including m88k<br />
*[http://aranym.org/ ARAnyM], emulator for Atari ST/TT/Falcon family<br />
*[http://www.hercules-390.org/ Hercules], S/370, S/390 and z/Arch emulator<br />
*The [http://pearpc.sourceforge.net/ PearPC] PowerPC Architecture Emulator (development stalled)<br />
*[http://people.csail.mit.edu/fredette/tme/ TME], The (Sun) Machine Emulator<br />
<br />
=== Related links ===<br />
*[http://free.oszoo.org/ Free Operating System Zoo]: many disk images with free OSes (very old)<br />
*[http://files.nodalink.com/qemu-files/zaurus-test-0.1.tar.gz Zaurus boot images]: Zaurus pda boot images for QEMU<br />
*[http://www.greensocs.com/projects/QEMUSystemC/ QEMU-SystemC], a hardware co-simulator<br />
*[https://wiki.linaro.org/WorkingGroups/ToolChain/QEMU Linaro QEMU page]: ARM TODOs and links<br />
*[http://www.plex86.org/ PLEX86], x86- Virtual Machine (VM) Program<br />
*[http://www.valgrind.org/ Valgrind], an open-source memory debugger for x86-GNU/Linux<br />
*[http://edgarigl.github.com/tlmu/ TLMu]: TLMu - A SystemC TLM-2.0 integration of QEMU</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.8&diff=6446ChangeLog/2.82016-12-10T14:16:14Z<p>Stefan Weil: /* Known issues */ no SDL 2 for Windows</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The number of allow PCI host bridges for pSeries machine was reduced from 256 to 31 (more can be configured by setting up MMIO windows manually).<br />
* Removed support for tftp:// in the block layer, since this has been broken forever for files bigger than 256KB.<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
* 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).<br />
=== ARM ===<br />
* Improvements to the Aspeed board.<br />
* Support for HLT semihosting traps in AArch32 mode (both ARM and Thumb).<br />
* The ACPI tables for the "virt" machine type support ITS.<br />
* The Cadence GEM device now supports multiple priority queues through the num-priority-queues property.<br />
* The STM32F2xx board (Netduino 2) now includes ADC and SPI devices.<br />
==== KVM ====<br />
=== MIPS ===<br />
* Support for 24KEc CPUs.<br />
=== PowerPC ===<br />
* Support for POWER9 CPUs.<br />
* Improvements for the new "powernv" platform.<br />
==== pSeries ====<br />
* PCI host bridges can be associated to NUMA nodes.<br />
* Support for more than 1 TiB of guest memory.<br />
* Support for more than 64 GiB of MMIO window in a PCI host bridge.<br />
* Support for the "-prom-env" parameter<br />
=== s390 ===<br />
* Support for CPU models.<br />
* Support for virtio-ccw revision 2.<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
=== TileGX ===<br />
=== Tricore ===<br />
=== x86 ===<br />
* Support for several new CPUID features related to AVX-512 instruction set extensions.<br />
* The emulated IOAPIC (used by TCG and, with KVM, if the "-machine kernel_irqchip" option has the value "off" or "split") now defaults to version 0x20, which supports directed end-of-interrupt messages.<br />
* Support for Extended Interrupt Mode (EIM) in the intel_iommu device. EIM requires KVM (Linux v4.7 or newer, for x2APIC support) and "-machine kernel-irqchip=split"; it is enabled automatically if interrupt remapping is enabled ("-machine kernel-irqchip=split -device intel_iommu,intremap=on").<br />
* Support for up to 288 CPUs with the Q35 machine types. 256 or more CPUs are only supported if IOMMU and EIM are enabled.<br />
==== Xen ====<br />
* Support for unplugging SCSI disk.<br />
* Support for SUSE xenlinux-compatible device unplug.<br />
=== Device emulation and assignment ===<br />
* QEMU now includes a generic loader pseudo-device that lets you load multiple images or values into memory at startup. This device is documented in {{src|path=docs/generic-loader.txt}}.<br />
==== ACPI ====<br />
* Support for hotplugging of NVDIMM devices (_FIT)<br />
==== Block devices ====<br />
==== Network devices ====<br />
* Support for fault tolerance based on coarse-grained lock stepping (COLO).<br />
==== SCSI ====<br />
==== PCI/PCIe ====<br />
* The sample EDU device now supports MSI.<br />
* [http://git.qemu.org/?p=qemu.git;a=blob;f=docs/pcie.txt;h=9fb20aaed9f41c302419206e1201d151c35e5a1c;hb=HEAD PCI Express Guidelines documentation] has been added for advice on topology and PCI vs PCIe.<br />
==== USB ====<br />
==== VFIO ====<br />
==== virtio ====<br />
* New device vhost-vsock.<br />
* Initial support for graceful handling of guest errors (i.e. QEMU should not exit on guest errors).<br />
* Support for new virtio-crypto device.<br />
<br />
==== Xen ====<br />
* Support for grant copy.<br />
=== Character devices ===<br />
=== Crypto subsystem ===<br />
* Support for more hash algorithms for PBKDF.<br />
* Support for CTR mode.<br />
=== GUI ===<br />
* SPICE can use pure OpenGL rendering if "gl=on" is specified.<br />
=== Monitor ===<br />
=== Migration ===<br />
* Support for fault tolerance based on coarse-grained lock stepping (COLO).<br />
=== Network ===<br />
=== Block devices and tools ===<br />
* More QMP commands support node-name (block-stream, block-commit, blockdev-backup, blockdev-mirror, blockdev-snapshot-delete-internal-sync, blockdev-snapshot-internal-sync, change-backing-file, drive-backup, drive-mirror, nbd-server-add).<br />
* The BLOCK_IO_ERROR event now includes the node name.<br />
* More QMP commands accept device model names (block_set_io_throttle, blockdev-change-medium, eject, x-blockdev-remove-medium, x-blockdev-insert-medium, blockdev-open-tray, blockdev-close-tray)<br />
* The DEVICE_TRAY_MOVED event now includes the device id.<br />
* Throttling now applies to the guest device only, and not to block jobs or the NBD server.<br />
* drive-backup and blockdev-backup support writing out backups in compressed format.<br />
* The LUKS format now can configure the PBKDF iteration count.<br />
* block-stream supports streaming from a backing file to another backing file.<br />
* Support for replication, for coarse-grained lock stepping (COLO) fault tolerance.<br />
* New "dd" subcomamand of qemu-img.<br />
* The DMG driver can be compiled to a separate driver, so as to make QEMU's dependency on libbz2 optional.<br />
* Support for iSER in QEMU's iSCSI initiator through a iser:// URI.<br />
* The NBD client and server support the NBD_CMD_WRITE_ZEROES extension.<br />
* Raw images support "offset" and "size" options to access only a part of the file or device.<br />
<br />
=== Tracing ===<br />
* New tracing backend "syslog".<br />
* Support for multiple "-d trace:PATTERN" command-line arguments.<br />
=== CLI options ===<br />
<br />
== User-mode emulation ==<br />
=== Removed target support ===<br />
* The unicore32-linux-user target implemented a different system call ABI from mainline Linux for this architecture. Support for it has been dropped.<br />
=== New functionality ===<br />
* Added support for more syscalls including preadv, pwritev, syslog.<br />
* Major scalability improvements for multi-threaded programs (ARM, SPARC, x86).<br />
* QEMU can now understand and generate fence and cmpxchg operations.<br />
<br />
== TCG ==<br />
* New TCG primitives have been added for safely modelling architectural synchronisation instructions (e.g. atomics, LL/SC, LOCK prefixes). arm, aarch64, alpha and x86 targets now use these primitives for multi-threaded linux-user programs. TCG target maintainers are encouraged to port their front-ends to use the new facilities.<br />
* The TCG backends now emit appropriate barrier instructions for frontend barriers when running multi-threaded programs. However, emulating a strongly-ordered architecture (e.g., x86) on a weakly-ordered one (e.g., ARM or POWER) will not work yet.<br />
* tb_flush() is finally thread-safe meaning multi-threaded programs are less likely to crash when the translation buffer is reset<br />
* lock contention in the main cpu run-loop has been reduced improving performance for multi-threaded code<br />
* a number of races were identified and fixed<br />
<br />
A lot of the TCG work merged in this cycle where prerequisites for supporting multi-threaded system emulation (MTTCG). While full MTTCG support is expected to be merged in the next development cycle, multi-threaded linux-user programs will already benefit from this work. <br />
<br />
== Build Information ==<br />
=== Documentation ===<br />
* The qemu-tech manual has been merged with qemu-doc.<br />
=== Build dependencies ===<br />
* QEMU does not depend anymore on libuuid.<br />
=== Docker Build Targets ===<br />
<br />
* A new "travis" target has been added to help debugging Travis CI failures<br />
* The docker targets can now be run against a specified docker tag, so:<br />
<br />
make docker-run TEST="test-quick" IMAGE="debian:arm64" EXECUTABLE=./aarch64-linux-user/qemu-aarch64<br />
<br />
Allows you to run the normal docker build test against a binfmt_misc powered image you have built yourself.<br />
<br />
== Known issues ==<br />
* postcopy migration can't be used with KVM PR on POWER (KVM HV and TCG work well). This is a kernel issue (USERFAULTFD).<br />
* QEMU for Windows won't work when it was compiled with SDL 2.0 support (terminates with "Fatal Error: Out of memory - aborting").</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=5723Hosts/W322016-08-25T11:49:08Z<p>Stefan Weil: /* Native builds with Cygwin */</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* mingw64-i686-curl<br />
* mingw64-i686-gtk3<br />
* mingw64-i686-libssh2<br />
* mingw64-i686-libtasn1<br />
* mingw64-i686-nettle<br />
* mingw64-i686-ncurses<br />
* mingw64-i686-gnutls<br />
<br />
==== Optional packages ====<br />
* mingw64-i686-SDL2<br />
* mingw64-i686-libgcrypt<br />
* mingw64-i686-libusb1.0<br />
* mingw64-i686-usbredir<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=5722Hosts/W322016-08-25T10:16:36Z<p>Stefan Weil: /* Native builds with Cygwin */</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
# Don't build in the QEMU source directory. Using a subdirectory is better.<br />
# Here is an example of a debug build.<br />
SRC_PATH=$PWD<br />
BUILD_DIR=$PWD/bin/debug/i686-w64-mingw32<br />
mkdir -p $BUILD_DIR<br />
cd $BUILD_DIR<br />
$SRC_PATH/configure' '--enable-debug' '--cross-prefix=i686-w64-mingw32-'<br />
make<br />
<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* Tbd.<br />
<br />
==== Optional packages ====<br />
* Tbd.<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=5721Hosts/W322016-08-25T09:46:46Z<p>Stefan Weil: /* Required packages */</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-gcc-g++<br />
* mingw64-i686-glib2.0<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
<br />
==== Recommended packages ====<br />
* Tbd.<br />
<br />
==== Optional packages ====<br />
* Tbd.<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=5720Hosts/W322016-08-25T09:39:27Z<p>Stefan Weil: /* Native builds with Cygwin */</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
==== Docker based cross builds ====<br />
<br />
As of June 2016, the master tree supports "docker based compiling", which can be used for convenient windows cross build.<br />
<br />
Make sure your docker command works ("docker ps" or "sudo docker ps" reports no error), then cd into the root of QEMU source tree and run<br />
<br />
make docker-test-mingw@fedora V=1 DEBUG=1 J=4<br />
<br />
, it will download and initialize the needed docker image for you, and drop you into a shell in the started container. Run<br />
<br />
cd $QEMU_SRC<br />
<br />
then<br />
<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
or<br />
<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
for 64bit/32bit builds respectively.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported. Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
For 32 bit builds, these packages should be installed:<br />
<br />
==== Required packages ====<br />
* mingw64-i686-pixman<br />
* mingw64-i686-pkg-config<br />
* mingw64-i686-gcc-g++<br />
<br />
==== Recommended packages ====<br />
* Tbd.<br />
<br />
==== Optional packages ====<br />
* Tbd.<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5675ChangeLog/2.72016-08-05T15:48:20Z<p>Stefan Weil: /* linux-user Docker targets */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
* mac99 machine can now boot MacOS >= 9.1<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* Fix for sun4m Solaris 9 "Segmentation fault" regression (see bug #1588328)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* CPU hot-remove support based on generic device_add/device_del interface<br />
** support arbitrary CPU adding/removal<br />
** Limitation: 1st (boot) CPU isn't removable<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
* new ACPI CPU hotplug MMIO interface since 2.7 machine types for PC/Q35<br />
** more than 255 CPUs support<br />
** CPU hot-remove support<br />
** Guest side CPU hotplug status notification via _OST events<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
* virtio-gpu multi-monitor fixes<br />
* virtio-gpu 2d live migration support<br />
<br />
=== Character devices ===<br />
* QEMU for Windows: Fixed handling of files used for character devices – they are now truncated by default like on Linux.<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
* new 'info hotpluggable-cpus' and corresponding 'query-hotpluggable-cpus' QMP commands<br>to list present/possible CPUs with properties necessary to add a CPU instance using device_add for a given '-smp ...' layout<br />
** supported by x86 and SPAPR softmmu targets<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
=== CLI options ===<br />
* '-cpu cpu-model,feat1=foo,...' acts as a set of '-global cpu-model-type.feat1=foo' options, which affects initial CPUs as well as all CPUs created with help of -device/device_add/cpu-add for a given cpu-model<br />
** doesn't apply to SPARC target which uses legacy -cpu semantics as its features haven't been converted to properties.<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== linux-user Docker targets ===<br />
<br />
* New debian-bootstrap docker target supporting linux-user emulation. For example build a Debian armhf docker:<br />
<br />
make docker-image-debian-bootstrap V=1 J=9 DEB_ARCH=armhf DEB_TYPE=stable EXECUTABLE=./arm-linux-user/qemu-arm<br />
<br />
This docker image can then be used for cross build testing with the normal docker test stanzas:<br />
<br />
make docker-test-quick@debian-bootstrap J=9 V=1<br />
<br />
You can update the installed QEMU using the docker.py helper script:<br />
<br />
./tests/docker/docker.py update qemu:debian-bootstrap ./arm-linux-user/qemu-arm<br />
<br />
'''This needs binfmt support enabled on your host set as appropriate for /usr/bin/qemu-$ARCH'''<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build Information ==<br />
<br />
=== Build dependencies ===<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
=== Docker Build Targets ===<br />
<br />
The build system now supports a number of Docker build targets which allow the source tree to be built and tested on a number of different Linux distributions regardless of your host. These targets can even use the qemu linux-user binaries to allow "foreign" distributions to be run where cross-compiling would be more of a pain. For more information type:<br />
<br />
make docker<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.<br />
* ATA / IDE emulation: [http://patchwork.ozlabs.org/patch/655164/ Wrong DMA register transitions], will be fixed in 2.8.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5674ChangeLog/2.72016-08-05T15:46:22Z<p>Stefan Weil: /* Known issues */ IDE emulation</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
* mac99 machine can now boot MacOS >= 9.1<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* Fix for sun4m Solaris 9 "Segmentation fault" regression (see bug #1588328)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* CPU hot-remove support based on generic device_add/device_del interface<br />
** support arbitrary CPU adding/removal<br />
** Limitation: 1st (boot) CPU isn't removable<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
* new ACPI CPU hotplug MMIO interface since 2.7 machine types for PC/Q35<br />
** more than 255 CPUs support<br />
** CPU hot-remove support<br />
** Guest side CPU hotplug status notification via _OST events<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
* virtio-gpu multi-monitor fixes<br />
* virtio-gpu 2d live migration support<br />
<br />
=== Character devices ===<br />
* QEMU for Windows: Fixed handling of files used for character devices – they are now truncated by default like on Linux.<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
* new 'info hotpluggable-cpus' and corresponding 'query-hotpluggable-cpus' QMP commands<br>to list present/possible CPUs with properties necessary to add a CPU instance using device_add for a given '-smp ...' layout<br />
** supported by x86 and SPAPR softmmu targets<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
=== CLI options ===<br />
* '-cpu cpu-model,feat1=foo,...' acts as a set of '-global cpu-model-type.feat1=foo' options, which affects initial CPUs as well as all CPUs created with help of -device/device_add/cpu-add for a given cpu-model<br />
** doesn't apply to SPARC target which uses legacy -cpu semantics as its features haven't been converted to properties.<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== linux-user Docker targets ===<br />
<br />
* New debian-bootstrap docker target supporting linux-user emulation. For example build an Debian armhf docker:<br />
<br />
make docker-image-debian-bootstrap V=1 J=9 DEB_ARCH=armhf DEB_TYPE=stable EXECUTABLE=./arm-linux-user/qemu-arm<br />
<br />
This docker image can then be used for cross build testing with the normal docker test stanzas:<br />
<br />
make docker-test-quick@debian-bootstrap J=9 V=1<br />
<br />
You can update the installed QEMU using the docker.py helper script:<br />
<br />
./tests/docker/docker.py update qemu:debian-bootstrap ./arm-linux-user/qemu-arm<br />
<br />
'''This needs binfmt support enabled on your host set as appropriate for /usr/bin/qemu-$ARCH'''<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build Information ==<br />
<br />
=== Build dependencies ===<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
=== Docker Build Targets ===<br />
<br />
The build system now supports a number of Docker build targets which allow the source tree to be built and tested on a number of different Linux distributions regardless of your host. These targets can even use the qemu linux-user binaries to allow "foreign" distributions to be run where cross-compiling would be more of a pain. For more information type:<br />
<br />
make docker<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.<br />
* ATA / IDE emulation: [http://patchwork.ozlabs.org/patch/655164/ Wrong DMA register transitions], will be fixed in 2.8.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5673ChangeLog/2.72016-08-05T15:43:00Z<p>Stefan Weil: /* Character devices */ tempus</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
* mac99 machine can now boot MacOS >= 9.1<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* Fix for sun4m Solaris 9 "Segmentation fault" regression (see bug #1588328)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* CPU hot-remove support based on generic device_add/device_del interface<br />
** support arbitrary CPU adding/removal<br />
** Limitation: 1st (boot) CPU isn't removable<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
* new ACPI CPU hotplug MMIO interface since 2.7 machine types for PC/Q35<br />
** more than 255 CPUs support<br />
** CPU hot-remove support<br />
** Guest side CPU hotplug status notification via _OST events<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
* virtio-gpu multi-monitor fixes<br />
* virtio-gpu 2d live migration support<br />
<br />
=== Character devices ===<br />
* QEMU for Windows: Fixed handling of files used for character devices – they are now truncated by default like on Linux.<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
* new 'info hotpluggable-cpus' and corresponding 'query-hotpluggable-cpus' QMP commands<br>to list present/possible CPUs with properties necessary to add a CPU instance using device_add for a given '-smp ...' layout<br />
** supported by x86 and SPAPR softmmu targets<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
=== CLI options ===<br />
* '-cpu cpu-model,feat1=foo,...' acts as a set of '-global cpu-model-type.feat1=foo' options, which affects initial CPUs as well as all CPUs created with help of -device/device_add/cpu-add for a given cpu-model<br />
** doesn't apply to SPARC target which uses legacy -cpu semantics as its features haven't been converted to properties.<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== linux-user Docker targets ===<br />
<br />
* New debian-bootstrap docker target supporting linux-user emulation. For example build an Debian armhf docker:<br />
<br />
make docker-image-debian-bootstrap V=1 J=9 DEB_ARCH=armhf DEB_TYPE=stable EXECUTABLE=./arm-linux-user/qemu-arm<br />
<br />
This docker image can then be used for cross build testing with the normal docker test stanzas:<br />
<br />
make docker-test-quick@debian-bootstrap J=9 V=1<br />
<br />
You can update the installed QEMU using the docker.py helper script:<br />
<br />
./tests/docker/docker.py update qemu:debian-bootstrap ./arm-linux-user/qemu-arm<br />
<br />
'''This needs binfmt support enabled on your host set as appropriate for /usr/bin/qemu-$ARCH'''<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build Information ==<br />
<br />
=== Build dependencies ===<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
=== Docker Build Targets ===<br />
<br />
The build system now supports a number of Docker build targets which allow the source tree to be built and tested on a number of different Linux distributions regardless of your host. These targets can even use the qemu linux-user binaries to allow "foreign" distributions to be run where cross-compiling would be more of a pain. For more information type:<br />
<br />
make docker<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5672ChangeLog/2.72016-08-05T15:42:21Z<p>Stefan Weil: /* Character devices */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
* mac99 machine can now boot MacOS >= 9.1<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* Fix for sun4m Solaris 9 "Segmentation fault" regression (see bug #1588328)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* CPU hot-remove support based on generic device_add/device_del interface<br />
** support arbitrary CPU adding/removal<br />
** Limitation: 1st (boot) CPU isn't removable<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
* new ACPI CPU hotplug MMIO interface since 2.7 machine types for PC/Q35<br />
** more than 255 CPUs support<br />
** CPU hot-remove support<br />
** Guest side CPU hotplug status notification via _OST events<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
* virtio-gpu multi-monitor fixes<br />
* virtio-gpu 2d live migration support<br />
<br />
=== Character devices ===<br />
* QEMU for Windows: Fix handling of files used for character devices – they are now truncated by default like on Linux.<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
* new 'info hotpluggable-cpus' and corresponding 'query-hotpluggable-cpus' QMP commands<br>to list present/possible CPUs with properties necessary to add a CPU instance using device_add for a given '-smp ...' layout<br />
** supported by x86 and SPAPR softmmu targets<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
=== CLI options ===<br />
* '-cpu cpu-model,feat1=foo,...' acts as a set of '-global cpu-model-type.feat1=foo' options, which affects initial CPUs as well as all CPUs created with help of -device/device_add/cpu-add for a given cpu-model<br />
** doesn't apply to SPARC target which uses legacy -cpu semantics as its features haven't been converted to properties.<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== linux-user Docker targets ===<br />
<br />
* New debian-bootstrap docker target supporting linux-user emulation. For example build an Debian armhf docker:<br />
<br />
make docker-image-debian-bootstrap V=1 J=9 DEB_ARCH=armhf DEB_TYPE=stable EXECUTABLE=./arm-linux-user/qemu-arm<br />
<br />
This docker image can then be used for cross build testing with the normal docker test stanzas:<br />
<br />
make docker-test-quick@debian-bootstrap J=9 V=1<br />
<br />
You can update the installed QEMU using the docker.py helper script:<br />
<br />
./tests/docker/docker.py update qemu:debian-bootstrap ./arm-linux-user/qemu-arm<br />
<br />
'''This needs binfmt support enabled on your host set as appropriate for /usr/bin/qemu-$ARCH'''<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build Information ==<br />
<br />
=== Build dependencies ===<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
=== Docker Build Targets ===<br />
<br />
The build system now supports a number of Docker build targets which allow the source tree to be built and tested on a number of different Linux distributions regardless of your host. These targets can even use the qemu linux-user binaries to allow "foreign" distributions to be run where cross-compiling would be more of a pain. For more information type:<br />
<br />
make docker<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5671ChangeLog/2.72016-08-05T15:40:51Z<p>Stefan Weil: Undo revision 5670 by Stefan Weil (Talk)</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
* mac99 machine can now boot MacOS >= 9.1<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* Fix for sun4m Solaris 9 "Segmentation fault" regression (see bug #1588328)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* CPU hot-remove support based on generic device_add/device_del interface<br />
** support arbitrary CPU adding/removal<br />
** Limitation: 1st (boot) CPU isn't removable<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
* new ACPI CPU hotplug MMIO interface since 2.7 machine types for PC/Q35<br />
** more than 255 CPUs support<br />
** CPU hot-remove support<br />
** Guest side CPU hotplug status notification via _OST events<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
* virtio-gpu multi-monitor fixes<br />
* virtio-gpu 2d live migration support<br />
<br />
=== Character devices ===<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
* new 'info hotpluggable-cpus' and corresponding 'query-hotpluggable-cpus' QMP commands<br>to list present/possible CPUs with properties necessary to add a CPU instance using device_add for a given '-smp ...' layout<br />
** supported by x86 and SPAPR softmmu targets<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
=== CLI options ===<br />
* '-cpu cpu-model,feat1=foo,...' acts as a set of '-global cpu-model-type.feat1=foo' options, which affects initial CPUs as well as all CPUs created with help of -device/device_add/cpu-add for a given cpu-model<br />
** doesn't apply to SPARC target which uses legacy -cpu semantics as its features haven't been converted to properties.<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== linux-user Docker targets ===<br />
<br />
* New debian-bootstrap docker target supporting linux-user emulation. For example build an Debian armhf docker:<br />
<br />
make docker-image-debian-bootstrap V=1 J=9 DEB_ARCH=armhf DEB_TYPE=stable EXECUTABLE=./arm-linux-user/qemu-arm<br />
<br />
This docker image can then be used for cross build testing with the normal docker test stanzas:<br />
<br />
make docker-test-quick@debian-bootstrap J=9 V=1<br />
<br />
You can update the installed QEMU using the docker.py helper script:<br />
<br />
./tests/docker/docker.py update qemu:debian-bootstrap ./arm-linux-user/qemu-arm<br />
<br />
'''This needs binfmt support enabled on your host set as appropriate for /usr/bin/qemu-$ARCH'''<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build Information ==<br />
<br />
=== Build dependencies ===<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
=== Docker Build Targets ===<br />
<br />
The build system now supports a number of Docker build targets which allow the source tree to be built and tested on a number of different Linux distributions regardless of your host. These targets can even use the qemu linux-user binaries to allow "foreign" distributions to be run where cross-compiling would be more of a pain. For more information type:<br />
<br />
make docker<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5670ChangeLog/2.72016-08-05T15:39:37Z<p>Stefan Weil: ATA / IDE fix</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
* mac99 machine can now boot MacOS >= 9.1<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* Fix for sun4m Solaris 9 "Segmentation fault" regression (see bug #1588328)<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
* CPU hot-remove support based on generic device_add/device_del interface<br />
** support arbitrary CPU adding/removal<br />
** Limitation: 1st (boot) CPU isn't removable<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
* new ACPI CPU hotplug MMIO interface since 2.7 machine types for PC/Q35<br />
** more than 255 CPUs support<br />
** CPU hot-remove support<br />
** Guest side CPU hotplug status notification via _OST events<br />
<br />
==== ATA / IDE ====<br />
* Fixed DMA register transitions.<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
* virtio-gpu multi-monitor fixes<br />
* virtio-gpu 2d live migration support<br />
<br />
=== Character devices ===<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
* new 'info hotpluggable-cpus' and corresponding 'query-hotpluggable-cpus' QMP commands<br>to list present/possible CPUs with properties necessary to add a CPU instance using device_add for a given '-smp ...' layout<br />
** supported by x86 and SPAPR softmmu targets<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
=== CLI options ===<br />
* '-cpu cpu-model,feat1=foo,...' acts as a set of '-global cpu-model-type.feat1=foo' options, which affects initial CPUs as well as all CPUs created with help of -device/device_add/cpu-add for a given cpu-model<br />
** doesn't apply to SPARC target which uses legacy -cpu semantics as its features haven't been converted to properties.<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== linux-user Docker targets ===<br />
<br />
* New debian-bootstrap docker target supporting linux-user emulation. For example build an Debian armhf docker:<br />
<br />
make docker-image-debian-bootstrap V=1 J=9 DEB_ARCH=armhf DEB_TYPE=stable EXECUTABLE=./arm-linux-user/qemu-arm<br />
<br />
This docker image can then be used for cross build testing with the normal docker test stanzas:<br />
<br />
make docker-test-quick@debian-bootstrap J=9 V=1<br />
<br />
You can update the installed QEMU using the docker.py helper script:<br />
<br />
./tests/docker/docker.py update qemu:debian-bootstrap ./arm-linux-user/qemu-arm<br />
<br />
'''This needs binfmt support enabled on your host set as appropriate for /usr/bin/qemu-$ARCH'''<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build Information ==<br />
<br />
=== Build dependencies ===<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
=== Docker Build Targets ===<br />
<br />
The build system now supports a number of Docker build targets which allow the source tree to be built and tested on a number of different Linux distributions regardless of your host. These targets can even use the qemu linux-user binaries to allow "foreign" distributions to be run where cross-compiling would be more of a pain. For more information type:<br />
<br />
make docker<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/2.7&diff=5645Planning/2.72016-07-26T18:36:26Z<p>Stefan Weil: /* Still unfixed in master */ wxx: Truncate files used for character devices</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2015-05-12<br />
| Beginning of development phase<br />
|-<br />
| 2016-06-28<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| 2016-07-19<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag -rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| 2016-07-26<br />
| Tag v2.7.0-rc1<br />
|-<br />
| 2016-08-02<br />
| Tag v2.7.0-rc2<br />
|-<br />
| 2016-08-09<br />
| Tag v2.7.0-rc3<br />
|-<br />
| 2016-08-16<br />
| Tag v2.7.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
Also see [[Planning/2.7/Testing]].<br />
<br />
=== Still unfixed in master ===<br />
[http://patchwork.ozlabs.org/patch/652848/ wxx: Truncate files used for character devices]<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.7]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.6&diff=5639ChangeLog/2.62016-07-19T09:09:47Z<p>Stefan Weil: /* Known issues */ Raspberry Pi emulation incomplete</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* The aio=native option to "-drive" now requires the cache=none option, instead of silently disabling itself for other cache modes. The newly invalid combination had been warning since QEMU 2.3.<br />
* Specifying block device parameter aio=native is now an error on POSIX systems if qemu is compiled without libaio support. The newly invalid combination had been warning since QEMU 2.3.<br />
* The experimental x-drive option for the sdhci-pci device has been removed. Instead of passing a drive directly to the SD controller device you now must create an SD card object (which will automatically be plugged into the SD controller), so "-device sdhci-pci,x-drive=mydrive -drive id=mydrive,[...]" becomes "-device sdhci-pci -device sd-card,drive=mydrive -drive id=mydrive,[...]".<br />
* The s390-virtio machine has been removed.<br />
* Machine types pc-q35-1.4, pc-q35-1.5, pc-q35-1.6, pc-q35-1.7, pc-q35-2.0, pc-q35-2.1, pc-q35-2.2 and pc-q35-2.3 have been removed.<br />
* The "virt" machine type's flash device has changed when TrustZone is active ("-machine virt,secure=on"). The first flash device is only available in secure memory, while the second is available in non-secure memory too.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* The original qcow2 image encryption is fatally flawed, and support for it will be disabled entirely from the system emulators. It'll remain available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement if raw files are acceptable, while a future release will integrate luks into qcow2 natively.<br />
* 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.<br />
* 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.<br />
<br />
=== ARM ===<br />
* Support for a separate EL3 address space<br />
* System mode supports BE8 and BE32. Note that qemu-system-arm can emulate both big-endian and little-endian guests (unlike user-mode emulation which has separate qemu-arm and qemu-armeb binaries).<br />
* Support for the SETEND instruction, used most notably on Raspbian through the arm-mem library (previously known as libcofi).<br />
* Faster boot thanks to DMA support in fw_cfg<br />
* The "virt" machine type supports a virtual power button and the "system_powerdown" monitor command<br />
* The "virt" machine type supports configuring network cards with -nic in addition to -netdev<br />
* The RAM limit for the "virt" machine type is now 255GB<br />
* The "xlnz-zynqmp" machine type now includes SPI controllers<br />
* The "xlnx-ep108" machine type now supports SPI flash<br />
* New partial Raspberry Pi 2 emulation with "raspi2" machine type. For now, it can boot older releases of Windows and Raspbian, but lacks a number of devices including USB.<br />
* New palmetto-bmc machine type using the new, partial ASPEED AST2400 SoC implementation<br />
<br />
==== KVM ====<br />
* Support for guest debugging (software and hardware breakpoints, single step) on AArch64<br />
<br />
=== MIPS ===<br />
* Support for FPU and MSA in KVM guests<br />
* Support for R6 Virtual Processors<br />
* Initial support for Cluster Power Controller and Global Configuration Registers allowing the guest to control the start of Virtual Processors<br />
* Support for Inter-Thread Communication Unit<br />
* Support for MAAR registers in P5600 CPU<br />
=== PowerPC ===<br />
* Improved support for migration of g3beige and mac99 machines<br />
* Fix serial ports for g3beige and mac99 machines (OpenBIOS)<br />
* The gdb stub supports the VSX instruction set extensions<br />
==== pSeries ====<br />
* pSeries machine types starting at pseries-2.6 use XHCI as the USB host controller instead of OHCI<br />
* Support for more hypercalls (H_SET_SPRG0, H_SET_DABR, H_SET_XDABR and H_PAGE_INIT)<br />
* Support for EEH on assigned PCI devices can use the normal spapr-pci-host-bridge instead of the special spapr-pci-vfio-host-bridge.<br />
<br />
=== s390 ===<br />
* Fixes and improvements in s390x PCI support<br />
* Support for hotplug of s390x cpus via cpu-add<br />
* Support for booting from virtio-scsi devices in the s390-ccw bios<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
* sun4m: Fix for ldstub instruction resolves several 32-bit Solaris bugs (MUTEX_HELD hang, libC error, Java WebStart segfault)<br />
* sun4u: FreeBSD 10.3+ can now run under qemu-system-sparc64 in -nographic mode<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for context management, illegal opcode and opd traps<br />
* Support for FPU instructions<br />
<br />
=== x86 ===<br />
==== TCG ====<br />
* Support for the XSAVE/XSAVEOPT, MPX, FSGSBASE and PKE features<br />
==== KVM ====<br />
* Support for "split irqchip". In this mode, QEMU emulates the IOAPIC, PIC (i8259) and PIT (i8254) devices while leaving the local APIC emulation to the kernel. This mode reduces the attack surface of KVM.<br />
* Support for the new PKU feature found in some Skylake processors<br />
* Support for migrating the TSC rate<br />
==== Xen ====<br />
==== Q35 ====<br />
* Support resume (S3)<br />
* Support for legacy Windows guests (XP/2003)<br />
=== Device emulation and assignment ===<br />
* New IPMI emulation subsystem. QEMU can now emulate an internal BMC or attach to an external BMC simulator such as OpenIPMI's lanserv. IPMI however is not yet exposed in SMBIOS and ACPI tables (do we want to document it?)<br />
* ''FIXME: what's the state of nvdimm?''<br />
==== ACPI ====<br />
* The floppy disk controller's characteristics are now exposed in the ACPI tables, which makes it possible to use floppies on Windows together with UEFI firmware.<br />
==== Block devices ====<br />
* The floppy disk controller support changes in the disk geometry, for example changing from a 1.44 MB disk or an empty disk to a 2.88 MB disk<br />
* Improved compatibility of the SD device model with various operating systems and firmwares<br />
* The NVMe device supports the "bootindex" property.<br />
* The SDHCI device supports reset.<br />
==== ivshmem ====<br />
* No longer available on hosts lacking eventfd(2), because inter-vm interrupts don't work there<br />
* New devices ivshmem-plain and ivshmem-doorbell, fully backwards compatible for guests, notable differences to ivshmem:<br />
** PCI revision is 1 instead of 0<br />
** ivshmem role=master becomes master=on, role=peer becomes master=off<br />
** ivshmem x-memdev=ID becomes ivshmem-plain memdev=ID<br />
** ivshmem shm=NAME,size=SZ becomes ivshmem-plain memdev=ID, with -object memory-backend-file,id=ID,mem-path=/dev/mem/NAME,size=SZ,share<br />
** ivshmem chardev=ID becomes ivshmem-doorbell,chardev=ID<br />
** Property ioeventfd defaults to on instead of off<br />
** ivshmem-plain never has MSI-X capability, and ivshmem-doorbell always has MSI-X capability<br />
* Device ivshmem is deprecated, and its experimental property x-memdev is gone<br />
* Interrupting a peer that reuses an unplugged peer's ID works again (broken in v1.2.0)<br />
* Unplug no longer destroys the character device, for consistency with other devices<br />
* The funny "no shared memory, yet" state is no longer guest-visible, and can no longer fail or mess up migration<br />
** Guests may require PCI revision 1 to make sure they're not exposed to the funny state<br />
* docs/specs/ivshmem-spec.txt rewritten for completeness and accuracy.<br />
==== SCSI ====<br />
* Support for the LSI SAS1068 HBA (also known as "MPT Fusion"). Note that some operating systems will not recognize disks attached to this adapter, unless the disks are assigned a world-wide name (WWN).<br />
==== PCI/PCIe ====<br />
* PCIe Multi-root support (using the new pxb-pcie root-compex)<br />
==== USB ====<br />
* MTP: initial support for events<br />
==== VFIO ====<br />
* Support for AMD XGBE platform passthrough<br />
* New sysfsdev property provides a more general way to specify the device to attach to.<br />
* Provided PCI option ROMs are fixed to include the same vendor and device id as the device exposed to the guest. This facilitates changing the ids of the devices.<br />
==== virtio ====<br />
* Performance improvements via optimized vring accesses<br />
* The balloon driver statistics now include the amount of available memory (corresponding to "Available" in /proc/meminfo for Linux guests).<br />
<br />
=== Character devices ===<br />
* The socket character device backend can now enable TLS over TCP connections, acting either as a TLS server:<br />
<br />
$QEMU -object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=server \<br />
-chardev socket,id=s0,host=127.0.0.1,port=9000,tls-creds=tls0,server \<br />
-device isa-serial,chardev=s0 \<br />
...other args...<br />
<br />
or a TLS client:<br />
<br />
$QEMU -object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=client \<br />
-chardev socket,id=s0,host=127.0.0.1,port=9000,tls-creds=tls0 \<br />
-device isa-serial,chardev=s0 \<br />
...other args...<br />
<br />
If operating in server mode, the same set of TLS credentials can be used for both character devices and the VNC server<br />
<br />
* All character devices can have their output logged to a plain file<br />
<br />
$QEMU -chardev stdio,id=mon0,logfile=monitor.log \<br />
-mon chardev=mon0 \<br />
...other args...<br />
<br />
will result in logging of all output on the HMP monitor. The '''logappend''' parameter controls whether the file is truncated at startup, defaulting to append.<br />
<br />
=== GUI ===<br />
* SDL2 and SPICE now support OpenGL and virgl. For SPICE, Unix sockets are the only usable transport when OpenGL is enabled.<br />
* The "-vnc" and "-display vnc" options support ipv4=off and ipv6=off. Previously, only "ipv4" and "ipv6" were available.<br />
* Support getting input events directly from linux evdev devices, using "-object input-linux,id=$name,evdev=/dev/input/event$nr"<br />
* Support for ncurses on Windows.<br />
<br />
=== Monitor ===<br />
* Support for a new "detach" option to "dump-guest-memory". The option dumps memory in the background. Progress can be queried using the new commands "info dump" (human monitor) and "query-dump" (QMP), as well as through the QMP event DUMP_COMPLETED.<br />
* Support for a new command "input-send-event" replacing the previous experimental command "x-input-send-event".<br />
* The human monitor command "drive_add -n" allows creating block devices that do not have a BlockBackend (similar to QMP blockdev-add).<br />
=== Migration ===<br />
* Postcopy is not experimental anymore; the x-postcopy-ram capability was renamed to postcopy-ram.<br />
=== Network ===<br />
* SLIRP now supports IPv6 for ICMP, UDP, TCP and TFTP.<br />
* mirror filter which can mirror traffic from netdev to socket chardev, vice versa.<br />
* redirector filter which can redirect traffic from netdev to socket chardev, vice versa.<br />
<br />
=== Secret passing system ===<br />
<br />
There is a new standard mechanism for securely passing secret credentials to QEMU, which will be used in combination with other subsystems. For example, network block device passwords, block device decryption passphrases, or TLS private key passwords can all use the same mechanism.<br />
<br />
* Passing credentials inline '''(insecure, only for developer testing)'''<br />
<br />
$QEMU -object secret,id=sec0,data=letmein<br />
<br />
* Passing credentials via a plain file<br />
<br />
$QEMU -object secret,id=sec0,file=mypassword.txt<br />
<br />
* Passing credentials via a base64 encoded file<br />
<br />
$QEMU -object secret,id=sec0,file=mypassword.txt,format=base64<br />
<br />
* Passing credentials inline, encrypted with a master key '''(recommended for management apps)'''<br />
<br />
$QEMU -object secret,id=master0,file=mykey.b64,format=base64 \<br />
-object secret,id=sec0,data=[base64 ciphertext],\<br />
keyid=master0,iv=[base64 IV],format=base64<br />
<br />
=== TLS credential handling ===<br />
<br />
It is now possible to use encrypted TLS private keys with credentials for TLS servers/clients in QEMU. The password for unlocking the private key is provided by a '''secret''' object whose id is specified via the ''passwordid' property<br />
<br />
$QEMU -object secret,id=tlskey0,file=mypassword.txt \<br />
-object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=server,passwordid=tlskey0 \<br />
...other args...<br />
<br />
=== Block devices ===<br />
* Block device throttling now support specifying a burst length as well. While previously the burst could only be specified as a total number of IOPS (e.g. 10000 IOPS), more complex specifications such as "10000 IOPS for 10 seconds" are now possible. Note that, because of the implementation of the algorithm, a guest that is allowed "10000 IOPS for 10 seconds" will also be allowed to perform for example 5000 IOPS for 20 seconds.<br />
* The curl block device driver now supports HTTP authentication and HTTP proxy authentication via the new properties 'username', 'password-secret', 'proxy-username' and 'proxy-password-secret'.<br />
<br />
$QEMU -object secret,id=sec0,file=password.txt \<br />
-object secret,id=sec1,file=proxy-password.txt \ <br />
-drive driver=http,host=localhost,port=443,username=fred,password-secret=sec0,proxy-username=bob,proxy-password-secret=sec1 \<br />
...other args...<br />
<br />
* The RBD block device driver can now use the secret object type to securely receive the authentication password without exposing it in the command line args<br />
<br />
$QEMU -object secret,id=sec0,file=password.b64,format=base64 \<br />
-drive driver=rbd,filename=rbd:pool/image:id=myname:auth_supported=cephx,password-secret=sec0 \<br />
...other args...<br />
<br />
* The iSCSI block device driver can now use the secret object type to securely receive the authentication password without exposing it in the command line args<br />
<br />
$QEMU -object secret,id=sec0,file=password.txt \<br />
-iscsi user=fred,password-secret=sec0 \<br />
-drive file=iscsi://192.168.122.1:3260/iqn.2013-12.com.example%3Aiscsi-chap-netpool/1<br />
<br />
NB this syntax requires that all iSCSI backed drives use the same password<br />
<br />
* The qemu-io tool gained support for new '--object' and '--image-opts' arguments. The --object argument allows 'secret' and 'tls-creds-x509' objects to be defined for use in association with a block device backend. The '--image-opts' argument instructs qemu-io to parse the image string as a set of image options, instead of a plain filename. For example, to connect qemu-io to an NBD server using TLS<br />
<br />
qemu-io -c "read 0 512" \<br />
--object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=client \<br />
--image-opts driver=nbd,host=localhost,port=10809,tls-creds=tls0<br />
<br />
* The qemu-nbd tool gained support for new '--object' and '--image-opts' arguments. The --object argument allows 'secret' and 'tls-creds-x509' objects to be defined for use in association with a block device backend or the NBD server. The '--image-opts' argument instructs qemu-io to parse the image string as a set of image options, instead of a plain filename. For example, to connect qemu-nbd to an HTTP server with authentication and export it over NBD using TLS<br />
<br />
qemu-nbd --readonly \<br />
--object secret,id=sec0,file=passwd.txt \<br />
--object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=server \<br />
--image-opts driver=http,url=http://some.random.host/some/image,username=fred,password-secret=sec0<br />
<br />
* The qemu-img tool gained support for new '--object' and '--image-opts' arguments. The --object argument allows 'secret' and 'tls-creds-x509' objects to be defined for use in association with a block device backend or the NBD server. The '--image-opts' argument instructs qemu-io to parse the image string as a set of image options, instead of a plain filename. For example, to a remote HTTP server with authentication<br />
<br />
qemu-img info --object secret,id=sec0,file=passwd.txt \<br />
--image-opts driver=http,url=http://some.random.host/some/image,username=fred,password-secret=sec0<br />
<br />
* Support for deleting snapshots on Sheepdog devices.<br />
* The NBD client and server now support use of TLS. When enabled, the server will mandate that the client also enable TLS and drop any client which attempts to continue in plain text. To run a qemu-nbd server with TLS:<br />
<br />
qemu-nbd --object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=server \<br />
--tls-creds tls0 \<br />
/path/to/disk/image<br />
<br />
To connect to a server that requires TLS with qemu-img:<br />
<br />
qemu-img info --object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=client \<br />
--image-opts driver=nbd,host=localhost,port=10809,tls-creds=tls0<br />
<br />
To start a VM pointing to the NBD server<br />
<br />
$QEMU -object tls-creds-x509,id=tls0,dir=$HOME/.pki/qemutls,endpoint=client \<br />
-drive driver=nbd,host=localhost,port=10809,tls-creds=tls0 \<br />
...other args...<br />
<br />
* The NBD server gained support for specifying an export name. When the client negotiates use of the new style NBD protocol the default export name is "". The --exportname argument allows this to be customized:<br />
<br />
qemu-nbd --exportname myvol /path/to/myvol.qcow2<br />
<br />
* QEMU gained support for volumes formatted with the LUKSv1 data format. To format a new LUKS volume<br />
<br />
qemu-img create -f luks \<br />
--object secret,id=sec0,file=passphrase.txt \<br />
-o key-secret=sec0 \<br />
demo.luks 10G<br />
<br />
To boot a guest from a LUKS volume:<br />
<br />
$QEMU -object secret,id=sec0,file=passphrase.txt \<br />
-drive driver=luks,key-secret=sec0,file=demo.luks \<br />
...other args...<br />
<br />
The LUKS implementation is intended to be compatible with that used by cryptsetup/dm-crypt, so it should be possible to use disk images interchangeably between them. The only caveat is that some less common cipher/hash algorithms are not yet supported by QEMU. It is also not yet possible to manage key-slots with qemu-img.<br />
<br />
=== TCG ===<br />
* Record/replay support extended to cover character devices.<br />
=== Tracing ===<br />
* The "stderr" tracing backend was replaced by the "log" tracing backend, which is now the default. This backend prints tracing messages to the destination specified with the "-D" option.<br />
* In addition to the existing "-trace file=...", tracepoints can be enabled using "-trace [enable=]...". The new option also supports globbing, as in "-trace bdrv_aio_*".<br />
* In addition to the existing "-trace file=...", tracepoints can be enabling using "-d trace:...". This option also supports globbing, as in "-d trace:bdrv_aio_*".<br />
* When using "-daemonize", the "-D" option also provides the file to which QEMU's stderr output will be redirected.<br />
* TCG supports a new "-dfilter" option to limit exec, out_asm, op and op_opt logging to a range of guest physical addresses. ARM also applies the filter to in_asm logging; this will be extended to other targets in future releases (''FIXME: probably should do it now instead...'')<br />
* A "%d" substring in the log file name is replaced with QEMU's pid.<br />
<br />
== User-mode emulation ==<br />
* The default CPU for ppc64 and ppc64le is now POWER8<br />
== Build dependencies ==<br />
* OpenGL now has a dependency on libdrm and mesa-libgbm (in addition to X11). This dependency might be dropped once OpenGL will work on OS X or Windows. For now, libdrm and mesa-libgbm should be available for all current X11 users.<br />
* QEMU 2.6 does not support anymore Mac OS X versions up to 10.5. For this reason, compiling QEMU on OS X only support Intel processors as of QEMU 2.6.<br />
* QEMU does not support Xen 4.1 and older any more.<br />
* Builds for Windows now require [http://mingw-w64.org/doku.php Mingw-w64] and can build both 32 and 64 bit executables. Cross builds are possible with Cygwin or Linux. MinGW is no longer supported.<br />
<br />
== Known issues ==<br />
<br />
* Recent versions of GTK 3 will produce compilation warnings about deprecated functions in ui/gtk.c. This should not be a problem in release tarballs (where warnings do not result in compilation failures). For building from a git tree they can be worked around by passing the --disable-werror option to configure. We plan to fix the issue for the 2.7 release.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.7&diff=5638ChangeLog/2.72016-07-19T09:08:24Z<p>Stefan Weil: /* Known issues */ Raspberry Pi emulation incomplete</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* SPI flash devices "160s33b", "320s33b", "640s33b", "at25df041a", "at25df321a", "at25df641", "at25fs010", "at25fs040", "at26df081a", "at26df161a", "at26df321", "at26f004", "at45db081d", "en25f32", "en25p32", "en25p64", "en25q32b", "en25q64", "gd25q32", "gd25q64", "m25p05", "m25p10", "m25p128", "m25p16", "m25p20", "m25p32", "m25p40", "m25p64", "m25p80", "m25pe16", "m25pe20", "m25pe80", "m25px32", "m25px32-s0", "m25px32-s1", "m25px64", "m45pe10", "m45pe16", "m45pe80", "mx25l12805d", "mx25l12855e", "mx25l1606e", "mx25l2005a", "mx25l25635e", "mx25l25655e", "mx25l3205d", "mx25l4005a", "mx25l6405d", "mx25l8005", "n25q032", "n25q032a11", "n25q032a13", "n25q064", "n25q064a11", "n25q064a13", "n25q128", "n25q128a11", "n25q128a13", "n25q256a11", "n25q256a13", "s25fl016k", "s25fl064k", "s25fl129p0", "s25fl129p1", "s25fl256s0", "s25fl256s1", "s25fl512s", "s25sl004a", "s25sl008a", "s25sl016a", "s25sl032a", "s25sl032p", "s25sl064a", "s25sl064p", "s25sl12800", "s25sl12801", "s70fl01gs", "sst25vf016b", "sst25vf032b", "sst25vf040b", "sst25vf080b", "sst25wf010", "sst25wf020", "sst25wf040", "sst25wf512", "w25q256", "w25q32", "w25q32dw", "w25q64", "w25q80", "w25q80bl", "w25x10", "w25x16", "w25x20", "w25x32", "w25x40", "w25x64", "w25x80" connect to a backend explicitly named by a "drive" property instead of an implicit -drive if=mtd. This only affect devices created explicitly with -device; "-drive if=mtd" still works for SPI flash devices created by boards, so this should affect almost no one.<br />
* Support for the original qcow2 image encryption has been disabled entirely from the system emulators. While QEMU 2.3 attempted to keep it available in system emulators, a bug in the code has actually broken it since 2.4, and no one complained. Supported for the format remains available only in command line tools qemu-img, qemu-io, qemu-nbd to facilitate data liberation. It is recommended to use 'qemu-img convert' to convert qcow2 encrypted images to uncrypted ones. The new LUKS encryption driver can provide a secure replacement, and a future release may integrate luks into qcow2 natively.<br />
* Autoconverge is not considered experimental anymore; autoconverge-related commands do not have the "x-" prefix anymore.<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* Devices "allwinner-a10", "pc87312", "ssi-sd" will be configured with explicit properties instead of implicitly. This is unlikely to affect users.<br />
* 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.<br />
<br />
=== ARM ===<br />
* The "virt" machine type has support for NUMA.<br />
* We now implement an emulated GICv3 interrupt controller, which is supported by the "virt" board and can be enabled with "-machine gic-version=3". Note that many guest OSes do not correctly support a GICv3 without security extensions; if your guest is Linux it must include commit 7c9b973061 "irqchip/gic-v3: Configure all interrupts as non-secure Group-1" or a backport of that patch to one of the stable branches. UEFI and FreeBSD are also known to need similar bug fixes.With a GICv3 the "virt" board now supports TCG (emulated CPU) configurations with more than 8 vCPUs.<br />
* New Xilinx Zynq ZCU102 board (-M xlnx-zcu102).<br />
* Xilinx Zynq boards have experimental support for ARM Security Extensions.<br />
* Xilinx Zynq MP supports DisplayPort (graphics and audio) and DDC (used for EDID info).<br />
* i.MX6?<br />
<br />
==== KVM ====<br />
* Xilinx Zynq boards support KVM on AArch64 hosts.<br />
<br />
=== MIPS ===<br />
* Support for 10-bit ASIDs<br />
* The MIPS64R6-generic CPU model was renamed to I6400.<br />
* Initial GIC support<br />
* Support for IEE 754-2008<br />
<br />
=== PowerPC ===<br />
* Many TCG fixes.<br />
<br />
==== pSeries ====<br />
* Significant performance improvements for the spapr-llan device.<br />
* Support for CPU hotplug.<br />
* Performance improvements for VFIO through dynamic DMA windows.<br />
<br />
=== s390 ===<br />
* Support for runtime instrumentation<br />
* The IPL firmware can boot from devices in subchannel sets > 0<br />
* Major refactoring and improvements of the s390x-specific PCI code<br />
** Optionally, zPCI specific 'uid' and 'fid' attributes may be provided<br />
** Guest-acknowledged hotunplug (rather than 'surprise removal' only)<br />
* bootindex support for IPL from SCSI devices<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
=== TileGX ===<br />
=== Tricore ===<br />
<br />
=== x86 ===<br />
==== KVM ====<br />
* Support for LMCE (local MCE) virtualization, which will require Linux 4.8. LMCE can be enabled through "-cpu ''model'',lmce" on all CPUs as long as the kernel supports it.<br />
<br />
=== Device emulation and assignment ===<br />
<br />
==== ACPI ====<br />
* NVDIMM devices are now described in the ACPI tables and support labels.<br />
<br />
==== Block devices ====<br />
* Removed dataplane blockers? (Fam)<br />
* New -device properties replacing -drive properties?<br />
* virtio-blk now supports multiqueue through a "num-queues" device property.<br />
<br />
==== ivshmem ====<br />
<br />
==== Network devices ====<br />
* New device e1000e for Intel 82574 NIC.<br />
* QEMU now includes iPXE ROMs for vmxnet3 devices.<br />
<br />
==== SCSI ====<br />
* scsi-block now passes sense data correctly to the guest, so that it can support for example persistent reservations.<br />
* Support for passthrough of SCSI scanner.<br />
<br />
==== PCI/PCIe ====<br />
* On Q35 machines, IOMMU are now enabled with "-device iommu" instead of "-machine iommu=on".<br />
<br />
==== USB ====<br />
* Support for Xen paravirtualized USB<br />
* usb-bot and usb-uas now support hotplug.<br />
<br />
==== VFIO ====<br />
* Support for device assignment of Intel integrated graphics devices.<br />
* The SR-IOV capability is now hidden to guests when passing through a physical function.<br />
<br />
==== virtio ====<br />
* Initial reconnect support for vhost-user.<br />
* Support for busy polling on vhost-net devices ("-netdev tap,...,poll-us=''n''").<br />
<br />
=== Character devices ===<br />
<br />
=== TLS support ===<br />
* Support for overriding the TLS property, for example "-object tls-creds-x509,...,priority=NORMAL:-VERS-SSL3.0" disables SSL 3.0. This can be used both to use a non-standard weaker set of prioririties, or to enforce a stronger default for QEMU. The default priority can also be specified through "--tls-priority=''VALUE''" at configure time.<br />
<br />
=== GUI ===<br />
* A new option "-machine graphics=on|off" lets you disable graphics in the VM like "-nographic" (e.g. OpenBIOS will use the serial port for boot messages) but without an implicit "-display none".<br />
<br />
=== Monitor ===<br />
<br />
=== Migration ===<br />
* Autoconverge is not considered experimental anymore. Autoconverge-related commands do not have the "x-" prefix.<br />
* TODO: TLS support<br />
<br />
=== Network ===<br />
* User-mode networking supports DHCPv6, RDNSS, DNS6 and link-local DNS addresses.<br />
* Socket networking in TCP mode can now run over IPv6. UDP and multicast modes do not support IPv6 yet.<br />
<br />
=== Block devices and tools ===<br />
* New "bench" command in qemu-img .<br />
* The "write" command in qemu-io grew "-f" and "-z -u" options.<br />
* TODO: Block job ids?<br />
<br />
=== TCG ===<br />
* Speed improvements around 20%.<br />
* Fixes for self-modifying code.<br />
<br />
=== Tracing ===<br />
* TODO: dfilter<br />
* TODO: tracing for qemu-io, qemu-img and qemu-nbd<br />
<br />
== User-mode emulation ==<br />
* The long standing issue of linux-user failing to emulate signals and threads properly has been fixed. QEMU now emulates system call restarting<br />
* fixes to fcntl, fadvise, msgrcv and other syscalls <br />
* added rtnetlink(7) support<br />
<br />
=== Removed host support ===<br />
* QEMU no longer supports building the linux-user targets on HPPA or m68k host systems<br />
<br />
=== Deprecated target support ===<br />
* The unicore32-linux-user target is unmaintained and implements a different system call ABI from mainline Linux for this architecture. We plan to drop support for it in QEMU 2.8.<br />
<br />
== Build dependencies ==<br />
* The GTK+ user interface now supports VTE 2.91.<br />
* The SDL user interface is now built if SDL2 is the only available version.<br />
<br />
== Known issues ==<br />
* Statically linked system emulators crash due to ifunc.<br />
* Missing device emulations for Raspberry Pi: GPIO, MMCI0, RNG (maybe more). Therefore current Raspbian kernels won't boot.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/2.6&diff=5581Planning/2.62016-05-09T18:00:47Z<p>Stefan Weil: Move target-mips bug to unfixed issues</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2015-12-17<br />
| Beginning of development phase<br />
|-<br />
| 2016-03-01<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| <strike>2016-03-29</strike> 2016-03-30<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag -rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| 2016-04-05<br />
| Tag v2.6.0-rc1<br />
|-<br />
| <strike>2016-04-12</strike> 2016-04-14<br />
| Tag v2.6.0-rc2<br />
|-<br />
| <strike>2016-04-19</strike> 2016-04-21<br />
| Tag v2.6.0-rc3<br />
|-<br />
| <strike>2016-04-27</strike> 2016-05-02<br />
| Tag v2.6.0-rc4<br />
|-<br />
| 2016-05-09<br />
| Tag v2.6.0-rc5 (this rc was delayed to wait for CVE fixes which couldn't go out until the end of an embargo period)<br />
|-<br />
| <strike>2016-04-26</strike> <strike>2016-05-03</strike> 2016-05-11<br />
| Tag v2.6.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
Also see [[Planning/2.6/Testing]].<br />
<br />
=== Still unfixed in master ===<br />
<br />
Nothing, hurrah!<br />
<br />
=== Fixed in rc1 ===<br />
<br />
* Compile failures if libnfs is enabled<br />
* net/netmap.c broken on FreeBSD [https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06932.html]<br />
* don't use 8-byte atomic access on 32-bit platforms (fixes freebsd, ppc32, etc)<br />
* ensure chardev socket backends are in non-blocking mode [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00075.html]<br />
* cannot connect resolve client hostnames on FreeBSD [https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06930.html] (broken since 2.4.0 by commit 3de3d698d942d1116152417f882c897b26b44e41)<br />
<br />
=== Fixed in rc2 ===<br />
<br />
* add i82801b11 missing migration data<br />
* tests/bios-tables-test: fix assert (make check will fail for newer iasl without it)<br />
* reentrancy problems for dataplane/aio (fixed in pull 8227e2d16705b8c94df93f465d4e1659c28c69ce)<br />
* compilation failure when --enable-tcg-interpreter is used (Stefan Weil has patch posted)<br />
<br />
=== Fixed in rc3 ===<br />
<br />
* Networking is broken on Windows hosts<br />
* pflash block/io.c bdrv_co_do_pwritev during migrate (typically EFI setup)<br />
* NBD features added in 2.6 don't quite follow protocol [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg01299.html] [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg02344.html]<br />
* buffer overrun in cadence_uart<br />
* cuda: fix off-by-one error in SET_TIME command [https://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg02682.html]<br />
* Update language files in po/. As there were changes in ui/gtk.c, the line numbers need an update.<br />
* gluster data corruption after io errors<br />
* fix pv-grub booting with xenfb [http://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg02741.html]<br />
* wrong r0 on kernel boot on raspi2/xilinx-zynq/highbank/midway<br />
* TCG performance 15% regression due to assert()<br />
<br />
=== Fixed in rc4 ===<br />
<br />
* nbd: Don't mishandle unaligned client requests<br />
* performance regression since 2.4 on AArch64 due to not using transparent huge pages<br />
* While committing snapshot qemu crashes with SIGABRT [https://bugs.launchpad.net/qemu/+bug/1570134] (wants 'block: Fix assertion failure at mirror exit' series)<br />
<br />
=== Fixed in rc5 ===<br />
<br />
* vga security fixes (CVE-2016-3710, CVE-2016-3712)<br />
<br />
=== Not planned to be fixed for 2.6 ===<br />
<br />
* compilation failure on 3.20 gtk (fedora 24) - deprecated functions (not a failure for release tarballs, workaround for building from git tree is to use --disable-werror; we will fix this in 2.7)<br />
* iscsi: cannot associate -drive driver=iscsi with -iscsi args to get authentication credentials when iSCSI IQN contains a ':' (which essentially all of them do). Needed to fix CVE-2015-5160 in libvirt [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg03387.html https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg03387.html]<br />
* target-mips: there is an old bug which was detected and fixed too late, see http://patchwork.ozlabs.org/patch/619962/. This bug also triggers a build failure with recent gcc.<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.6]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/2.6&diff=5580Planning/2.62016-05-09T17:57:03Z<p>Stefan Weil: /* Still unfixed in master */ old target-mips bug / new build error</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2015-12-17<br />
| Beginning of development phase<br />
|-<br />
| 2016-03-01<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| <strike>2016-03-29</strike> 2016-03-30<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag -rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| 2016-04-05<br />
| Tag v2.6.0-rc1<br />
|-<br />
| <strike>2016-04-12</strike> 2016-04-14<br />
| Tag v2.6.0-rc2<br />
|-<br />
| <strike>2016-04-19</strike> 2016-04-21<br />
| Tag v2.6.0-rc3<br />
|-<br />
| <strike>2016-04-27</strike> 2016-05-02<br />
| Tag v2.6.0-rc4<br />
|-<br />
| 2016-05-09<br />
| Tag v2.6.0-rc5 (this rc was delayed to wait for CVE fixes which couldn't go out until the end of an embargo period)<br />
|-<br />
| <strike>2016-04-26</strike> <strike>2016-05-03</strike> 2016-05-11<br />
| Tag v2.6.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
Also see [[Planning/2.6/Testing]].<br />
<br />
=== Still unfixed in master ===<br />
<br />
Nothing, hurrah! Or wait – an old bug in target-mips wants to get fixed: http://patchwork.ozlabs.org/patch/619962/. It triggers a build failure with recent gcc.<br />
<br />
=== Fixed in rc1 ===<br />
<br />
* Compile failures if libnfs is enabled<br />
* net/netmap.c broken on FreeBSD [https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06932.html]<br />
* don't use 8-byte atomic access on 32-bit platforms (fixes freebsd, ppc32, etc)<br />
* ensure chardev socket backends are in non-blocking mode [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00075.html]<br />
* cannot connect resolve client hostnames on FreeBSD [https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06930.html] (broken since 2.4.0 by commit 3de3d698d942d1116152417f882c897b26b44e41)<br />
<br />
=== Fixed in rc2 ===<br />
<br />
* add i82801b11 missing migration data<br />
* tests/bios-tables-test: fix assert (make check will fail for newer iasl without it)<br />
* reentrancy problems for dataplane/aio (fixed in pull 8227e2d16705b8c94df93f465d4e1659c28c69ce)<br />
* compilation failure when --enable-tcg-interpreter is used (Stefan Weil has patch posted)<br />
<br />
=== Fixed in rc3 ===<br />
<br />
* Networking is broken on Windows hosts<br />
* pflash block/io.c bdrv_co_do_pwritev during migrate (typically EFI setup)<br />
* NBD features added in 2.6 don't quite follow protocol [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg01299.html] [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg02344.html]<br />
* buffer overrun in cadence_uart<br />
* cuda: fix off-by-one error in SET_TIME command [https://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg02682.html]<br />
* Update language files in po/. As there were changes in ui/gtk.c, the line numbers need an update.<br />
* gluster data corruption after io errors<br />
* fix pv-grub booting with xenfb [http://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg02741.html]<br />
* wrong r0 on kernel boot on raspi2/xilinx-zynq/highbank/midway<br />
* TCG performance 15% regression due to assert()<br />
<br />
=== Fixed in rc4 ===<br />
<br />
* nbd: Don't mishandle unaligned client requests<br />
* performance regression since 2.4 on AArch64 due to not using transparent huge pages<br />
* While committing snapshot qemu crashes with SIGABRT [https://bugs.launchpad.net/qemu/+bug/1570134] (wants 'block: Fix assertion failure at mirror exit' series)<br />
<br />
=== Fixed in rc5 ===<br />
<br />
* vga security fixes (CVE-2016-3710, CVE-2016-3712)<br />
<br />
=== Not planned to be fixed for 2.6 ===<br />
<br />
* compilation failure on 3.20 gtk (fedora 24) - deprecated functions (not a failure for release tarballs, workaround for building from git tree is to use --disable-werror; we will fix this in 2.7)<br />
* iscsi: cannot associate -drive driver=iscsi with -iscsi args to get authentication credentials when iSCSI IQN contains a ':' (which essentially all of them do). Needed to fix CVE-2015-5160 in libvirt [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg03387.html https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg03387.html]<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.6]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/2.6&diff=5498Planning/2.62016-04-18T12:36:39Z<p>Stefan Weil: /* Still unfixed in master */ Update language files</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2015-12-17<br />
| Beginning of development phase<br />
|-<br />
| 2016-03-01<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| <strike>2016-03-29</strike> 2016-03-30<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag -rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| 2016-04-05<br />
| Tag v2.6.0-rc1<br />
|-<br />
| 2016-04-12<br />
| Tag v2.6.0-rc2<br />
|-<br />
| 2016-04-19<br />
| Tag v2.6.0-rc3<br />
|-<br />
| 2016-04-26<br />
| Tag v2.6.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
Also see [[Planning/2.6/Testing]].<br />
<br />
=== Still unfixed in master ===<br />
<br />
* Postcopy broken on 4.5 or newer kernels if THP enabled (kernel bug?)<br />
* buffer overrun in cadence_uart<br />
* cuda: fix off-by-one error in SET_TIME command [https://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg02682.html]<br />
* Update language files in po/. As there were changes in ui/gtk.c, the line numbers need an update.<br />
<br />
=== Fixed in rc1 ===<br />
<br />
* Compile failures if libnfs is enabled<br />
* net/netmap.c broken on FreeBSD [https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06932.html]<br />
* don't use 8-byte atomic access on 32-bit platforms (fixes freebsd, ppc32, etc)<br />
* ensure chardev socket backends are in non-blocking mode [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00075.html]<br />
* cannot connect resolve client hostnames on FreeBSD [https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg06930.html] (broken since 2.4.0 by commit 3de3d698d942d1116152417f882c897b26b44e41)<br />
<br />
=== Fixed in rc2 ===<br />
<br />
* add i82801b11 missing migration data<br />
* tests/bios-tables-test: fix assert (make check will fail for newer iasl without it)<br />
* reentrancy problems for dataplane/aio (fixed in pull 8227e2d16705b8c94df93f465d4e1659c28c69ce)<br />
* compilation failure when --enable-tcg-interpreter is used (Stefan Weil has patch posted)<br />
<br />
=== Will be fixed in rc3 ===<br />
<br />
* Networking is broken on Windows hosts<br />
* pflash block/io.c bdrv_co_do_pwritev during migrate (typically EFI setup)<br />
* NBD features added in 2.6 don't quite follow protocol [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg01299.html] [https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg02344.html]<br />
<br />
=== Not planned to be fixed for 2.6 ===<br />
<br />
* compilation failure on 3.20 gtk (fedora 24) - deprecated functions (not a failure for release tarballs, workaround for building from git tree is to use --disable-werror; we will fix this in 2.7)<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.6]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.6&diff=5421ChangeLog/2.62016-03-30T20:55:17Z<p>Stefan Weil: /* Build dependencies */ Add note on Cygwin</p>
<hr />
<div>* nvdimm?<br />
<br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* The aio=native option to "-drive" now requires the cache=none option, instead of silently disabling itself for other cache modes. The newly invalid combination had been warning since QEMU 2.3.<br />
* Specifying block device parameter aio=native is now an error on POSIX systems if qemu is compiled without libaio support. The newly invalid combination had been warning since QEMU 2.3.<br />
* The experimental x-drive option for the sdhci-pci device has been removed. Instead of passing a drive directly to the SD controller device you now must create an SD card object (which will automatically be plugged into the SD controller), so "-device sdhci-pci,x-drive=mydrive -drive id=mydrive,[...]" becomes "-device sdhci-pci -device sd-card,drive=mydrive -drive id=mydrive,[...]".<br />
* The s390-virtio machine has been removed.<br />
* Machine types pc-q35-1.4, pc-q35-1.5, pc-q35-1.6, pc-q35-1.7, pc-q35-2.0, pc-q35-2.1, pc-q35-2.2 and pc-q35-2.3 have been removed.<br />
* The "virt" machine type's flash device has changed when TrustZone is active ("-machine virt,secure=on"). The first flash device is only available in secure memory, while the second is available in non-secure memory too.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* 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.<br />
* 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.<br />
<br />
=== Alpha ===<br />
=== ARM ===<br />
* Support for a separate EL3 address sapce<br />
* System mode supports BE8 and BE32. Note that qemu-system-arm can emulate both big-endian and little-endian guests (unlike user-mode emulation which has separate qemu-arm and qemu-armeb binaries).<br />
* Support for the SETEND instruction, used most notably on Raspbian through the arm-mem library (previously known as libcofi).<br />
* Faster boot thanks to DMA support in fw_cfg<br />
* The "virt" machine type supports a virtual power button and the "system_powerdown" monitor command<br />
* The "virt" machine type supports configuring network cards with -nic in addition to -netdev<br />
* The RAM limit for the "virt" machine type is now 255GB<br />
* The "xlnz-zynqmp" machine type now includes SPI controllers<br />
* The "xlnx-ep108" machine type now supports SPI flash<br />
* New partial Raspberry Pi 1 and 2 emulation with "raspi" and "raspi2" machine types. For now the "raspi2" machine type can boot Windows. (''FIXME: confirm'')<br />
<br />
==== KVM ====<br />
* Support for guest debugging (software and hardware breakpoints, single step) on AArch64<br />
<br />
=== MIPS ===<br />
* Support for FPU and MSA in KVM guests<br />
* Support for R6 Virtual Processors<br />
* Initial support for Cluster Power Controller and Global Configuration Registers allowing the guest to control the start of Virtual Processors<br />
* Support for Inter-Thread Communication Unit<br />
* Support for MAAR registers in P5600 CPU<br />
=== PowerPC ===<br />
* Improved support for migration of g3beige and mac99 machines<br />
* The gdb stub supports the VSX instruction set extensions<br />
==== pSeries ====<br />
* pSeries machine types starting at pseries-2.6 use XHCI as the USB host controller instead of OHCI<br />
* Support for more hypercalls (H_SET_SPRG0, H_SET_DABR, H_SET_XDABR and H_PAGE_INIT)<br />
* Support for EEH on assigned PCI devices can use the normal spapr-pci-host-bridge instead of the special spapr-pci-vfio-host-bridge.<br />
<br />
=== s390 ===<br />
* Fixes and improvements in s390x PCI support<br />
* Support for hotplug of s390x cpus via cpu-add<br />
* Support for booting from virtio-scsi devices in the s390-ccw bios<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for context management, illegal opcode and opd traps<br />
=== x86 ===<br />
==== TCG ====<br />
* Support for the XSAVE/XSAVEOPT, MPX, FSGSBASE and PKE features<br />
==== KVM ====<br />
* Support for "split irqchip". In this mode, QEMU emulates the IOAPIC, PIC (i8259) and PIT (i8254) devices while leaving the local APIC emulation to the kernel. This mode reduces the attack surface of KVM.<br />
* Support for the new PKU feature found in some Skylake processors<br />
* Support for migrating the TSC rate<br />
==== Xen ====<br />
<br />
=== Device emulation and assignment ===<br />
* New IPMI emulation subsystem. QEMU can now emulate an internal BMC or attach to an external BMC simulator such as OpenIPMI's lanserv. IPMI however is not yet exposed in SMBIOS and ACPI tables (do we want to document it?)<br />
* ''FIXME: what's the state of nvdimm?''<br />
==== ACPI ====<br />
* The floppy disk controller's characteristics are now exposed in the ACPI tables, which makes it possible to use floppies on Windows together with UEFI firmware.<br />
==== Audio ====<br />
==== Block devices ====<br />
* The floppy disk controller support changes in the disk geometry, for example changing from a 1.44 MB disk or an empty disk to a 2.88 MB disk<br />
* Improved compatibility of the SD device model with various operating systems and firmwares<br />
* The NVMe device supports the "bootindex" property.<br />
* The SDHCI device supports reset.<br />
==== Character devices ====<br />
==== IDE ====<br />
==== ivshmem ====<br />
* ''FIXME: missing''<br />
==== Mouse/keyboard ====<br />
==== Network ====<br />
==== SCSI ====<br />
* Support for the LSI SAS1068 HBA (also known as "MPT Fusion"). Note that some operating systems will not recognize disks attached to this adapter, unless the disks are assigned a world-wide name (WWN).<br />
==== Shared memory device ====<br />
==== PCI/PCIe ====<br />
==== TPM ====<br />
==== USB ====<br />
* MTP: initial support for events<br />
==== VFIO ====<br />
* Support for AMD XGBE platform passthrough<br />
* New sysfsdev property provides a more general way to specify the device to attach to.<br />
* Provided PCI option ROMs are fixed to include the same vendor and device id as the device exposed to the guest. This facilitates changing the ids of the devices.<br />
==== virtio ====<br />
* Performance improvements via optimized vring accesses<br />
* The balloon driver statistics now include the amount of available memory (corresponding to "Available" in /proc/meminfo for Linux guests).<br />
==== VGA ====<br />
<br />
=== Character devices ===<br />
* ''FIXME: Support for TLS encryption in the TCP backend''<br />
* ''FIXME: -chardev logfile''<br />
<br />
=== GUI ===<br />
* SDL2 and SPICE now support OpenGL and virgl. For SPICE, Unix sockets are the only usable transport when OpenGL is enabled.<br />
* The "-vnc" and "-display vnc" options support ipv4=off and ipv6=off. Previously, only "ipv4" and "ipv6" were available.<br />
* ''FIXME: document -input-linux when QOM-based syntax lands.''<br />
* Support for ncurses on Windows.<br />
<br />
=== Monitor ===<br />
* Support for a new "detach" option to "dump-guest-memory". The option dumps memory in the background. Progress can be queried using the new commands "info dump" (human monitor) and "query-dump" (QMP), as well as through the QMP event DUMP_COMPLETED.<br />
* Support for a new command "input-send-event" replacing the previous experimental command "x-input-send-event".<br />
* The human monitor command "drive_add -n" allows creating block devices that do not have a BlockBackend (similar to QMP blockdev-add).<br />
=== Migration ===<br />
* Postcopy is not experimental anymore; the x-postcopy-ram capability was renamed to postcopy-ram.<br />
=== Network ===<br />
* SLIRP now supports IPv6 for ICMP, UDP, TCP and TFTP.<br />
* ''FIXME: filters?''<br />
=== Block devices ===<br />
* The NBD client and server now supports TLS [...]<br />
* Block device throttling now support specifying a burst length as well. While previously the burst could only be specified as a total number of IOPS (e.g. 10000 IOPS), more complex specifications such as "10000 IOPS for 10 seconds" are now possible. Note that, because of the implementation of the algorithm, a guest that is allowed "10000 IOPS for 10 seconds" will also be allowed to perform for example 5000 IOPS for 20 seconds.<br />
* ''FIXME: qemu-io --object [...]''<br />
* ''FIXME: qemu-img --object [...]''<br />
* Support for deleting snapshots on Sheepdog devices.<br />
<br />
=== New secret passing system ===<br />
* ''FIXME: document these...''<br />
$QEMU -object secret,id=sec0,data=letmein<br />
$QEMU -object secret,id=sec0,file=mypasswd.txt<br />
$QEMU -object secret,id=sec0,file=mypasswd.txt,format=base64<br />
+ encrypted case<br />
=== TCG ===<br />
* Record/replay support extended to cover character devices.<br />
=== Tracing ===<br />
* The "stderr" tracing backend was replaced by the "log" tracing backend, which is now the default. This backend prints tracing messages to the destination specified with the "-D" option.<br />
* In addition to the existing "-trace file=...", tracepoints can be enabled using "-trace [enable=]...". The new option also supports globbing, as in "-trace bdrv_aio_*".<br />
* In addition to the existing "-trace file=...", tracepoints can be enabling using "-d trace:...". This option also supports globbing, as in "-d trace:bdrv_aio_*".<br />
* When using "-daemonize", the "-D" option also provides the file to which QEMU's stderr output will be redirected.<br />
* TCG supports a new "-dfilter" option to limit exec, out_asm, op and op_opt logging to a range of guest addresses (''FIXME: physical or virtual?''). ARM also applies the filter to in_asm logging; this will be extended to other targets in future releases (''FIXME: probably should do it now instead...'')<br />
* A "%d" substring in the log file name is replaced with QEMU's pid.<br />
== Audio ==<br />
<br />
== Guest agent ==<br />
<br />
== User-mode emulation ==<br />
* The default CPU for ppc64 and ppc64le is now POWER8<br />
== Build dependencies ==<br />
* OpenGL now has a dependency on libdrm and mesa-libgbm (in addition to X11). This dependency might be dropped once OpenGL will work on OS X or Windows. For now, libdrm and mesa-libgbm should be available for all current X11 users.<br />
* QEMU 2.6 does not support anymore Mac OS X versions up to 10.5. For this reason, compiling QEMU on OS X only support Intel processors as of QEMU 2.6.<br />
* QEMU does not support Xen 4.1 and older anymore.<br />
* Builds for Windows now require [http://mingw-w64.org/doku.php Mingw-w64] and can build both 32 and 64 bit executables. Cross builds are possible with Cygwin or Linux. MinGW is no longer supported.<br />
<br />
== Known issues ==</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=5387Hosts/W322016-03-16T20:05:52Z<p>Stefan Weil: Update, small fixes</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [http://mingw-w64.org/doku.php Mingw-w64]<br />
based development environment with tools (make, compiler, linker, ...)<br />
and some additional libraries.<br />
Building with the older [[#Links|MinGW]] does not work!<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
=== Native builds with Mingw-w64 ===<br />
<br />
Get and install Mingw-w64. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
=== Native builds with Cygwin ===<br />
<br />
Builds with the normal Cygwin compiler are not supported.<br />
<br />
Nevertheless, cygwin can be used as a build environment because it also contains all necessary Mingw-w64 packages.<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on Mingw-w64, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Website (old, no longer supported by QEMU)<br />
:http://www.mingw.org/<br />
<br />
;Mingw-w64 Website (supports both 32 and 64 bit builds)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW (old, no longer needed)<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW (old, no longer needed)<br />
:http://www.libsdl.org/download-1.2.php</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.6&diff=5386ChangeLog/2.62016-03-16T19:52:41Z<p>Stefan Weil: /* ARM */ more info on rpi emulation</p>
<hr />
<div>(updated as of e76d1798faa6d29f54c0930a034b67f3ecdb947d)<br />
<br />
* secrets (supported by tls-creds):<br />
$QEMU -object secret,id=sec0,data=letmein<br />
$QEMU -object secret,id=sec0,file=mypasswd.txt<br />
$QEMU -object secret,id=sec0,file=mypasswd.txt,format=base64<br />
+ encrypted case<br />
* nvdimm?<br />
<br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* The aio=native option to "-drive" now requires the cache=none option, instead of silently disabling itself for other cache modes. The newly invalid combination had been warning since QEMU 2.3.<br />
* Specifying block device parameter aio=native is now an error on POSIX systems if qemu is compiled without libaio support. The newly invalid combination had been warning since QEMU 2.3.<br />
* The experimental x-drive option for the sdhci-pci device has been removed. Instead of passing a drive directly to the SD controller device you now must create an SD card object (which will automatically be plugged into the SD controller), so "-device sdhci-pci,x-drive=mydrive -drive id=mydrive,[...]" becomes "-device sdhci-pci -device sd-card,drive=mydrive -drive id=mydrive,[...]".<br />
* The s390-virtio machine has been removed.<br />
* Machine types pc-q35-1.4, pc-q35-1.5, pc-q35-1.6, pc-q35-1.7, pc-q35-2.0, pc-q35-2.1, pc-q35-2.2 and pc-q35-2.3 have been removed.<br />
* The "virt" machine type's flash device has changed when TrustZone is active ("-machine virt,secure=on"). The first flash device is only available in secure memory, while the second is available in non-secure memory too.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* 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.<br />
* 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.<br />
<br />
=== Alpha ===<br />
=== ARM ===<br />
* Support for a separate EL3 address sapce<br />
* System mode supports BE8 and BE32. Note that qemu-system-arm can emulate both big-endian and little-endian guests (unlike user-mode emulation which has separate qemu-arm and qemu-armeb binaries).<br />
* Support for the SETEND instruction, used most notably on Raspbian through the arm-mem library (previously known as libcofi).<br />
* Faster boot thanks to DMA support in fw_cfg<br />
* The "virt" machine type supports a virtual power button and the "system_powerdown" monitor command<br />
* The "virt" machine type supports configuring network cards with -nic in addition to -netdev<br />
* The RAM limit for the "virt" machine type is now 255GB<br />
* The "xlnz-zynqmp" machine type now includes SPI controllers<br />
* The "xlnx-ep108" machine type now supports SPI flash<br />
* New Raspberry Pi 1 and 2 emulation with "raspi" and "raspi2" machine types<br />
<br />
==== KVM ====<br />
* Support for guest debugging (software and hardware breakpoints, single step) on AArch64<br />
<br />
=== MIPS ===<br />
* Support for FPU and MSA in KVM guests<br />
* Support for R6 virtual processors<br />
=== PowerPC ===<br />
* Improved support for migration of g3beige and mac99 machines<br />
* The gdb stub supports the VSX instruction set extensions<br />
==== pSeries ====<br />
* pSeries machine types starting at pseries-2.6 use XHCI as the USB host controller instead of OHCI<br />
* Support for more hypercalls (H_SET_SPRG0, H_SET_DABR, H_SET_XDABR and H_PAGE_INIT)<br />
<br />
=== s390 ===<br />
* Fixes and improvements in s390x PCI support<br />
* Support for hotplug of s390x cpus via cpu-add<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for context management, illegal opcode and opd traps<br />
=== x86 ===<br />
==== TCG ====<br />
* Support for the XSAVE/XSAVEOPT, MPX and FSGSBASE features<br />
==== KVM ====<br />
* Support for "split irqchip". In this mode, QEMU emulates the IOAPIC, PIC (i8259) and PIT (i8254) devices while leaving the local APIC emulation to the kernel. This mode reduces the attack surface of KVM.<br />
* Support for the new PKU feature found in some Skylake processors<br />
* Support for migrating the TSC rate<br />
==== Xen ====<br />
<br />
=== Device emulation and assignment ===<br />
* New IPMI emulation subsystem. QEMU can now emulate an internal BMC or attach to an external BMC simulator such as OpenIPMI's lanserv.<br />
<br />
==== ACPI ====<br />
* The floppy disk controller's characteristics are now exposed in the ACPI tables, which makes it possible to use floppies on Windows together with UEFI firmware.<br />
==== Audio ====<br />
==== Block devices ====<br />
* The floppy disk controller support changes in the disk geometry, for example changing from a 1.44 MB disk or an empty disk to a 2.88 MB disk<br />
* Improved compatibility of the SD device model with various operating systems and firmwares<br />
* The NVMe device supports the "bootindex" property.<br />
* The SDHCI device supports reset.<br />
==== Character devices ====<br />
==== IDE ====<br />
==== Mouse/keyboard ====<br />
==== Network ====<br />
==== SCSI ====<br />
* Support for the LSI SAS1068 HBA (also known as "MPT Fusion"). Note that some operating systems will not recognize disks attached to this adapter, unless the disks are assigned a world-wide name (WWN).<br />
==== Shared memory device ====<br />
==== PCI/PCIe ====<br />
==== TPM ====<br />
==== USB ====<br />
* MTP: initial support for events<br />
==== VFIO ====<br />
* Support for AMD XGBE platform passthrough<br />
* New sysfsdev property provides a more general way to specify the device to attach to.<br />
* Provided PCI option ROMs are fixed to include the same vendor and device id as the device exposed to the guest. This facilitates changing the ids of the devices.<br />
==== virtio ====<br />
* Performance improvements via optimized vring accesses<br />
* The balloon driver statistics now include the amount of available memory (corresponding to "Available" in /proc/meminfo for Linux guests).<br />
==== VGA ====<br />
<br />
=== Character devices ===<br />
* Support for TLS encryption in the TCP backend [...]<br />
* -chardev logfile [...]<br />
<br />
=== GUI ===<br />
* SDL2 and SPICE now support OpenGL and virgl.<br />
* The "-vnc" and "-display vnc" options support ipv4=off and ipv6=off. Previously, only "ipv4" and "ipv6" were available.<br />
* FIXME: document -input-linux when QOM-based syntax lands.<br />
<br />
=== Monitor ===<br />
* Support for a new "detach" option to "dump-guest-memory". The option dumps memory in the background. Progress can be queried using the new commands "info dump" (human monitor) and "query-dump" (QMP), as well as through the QMP event DUMP_COMPLETED.<br />
* Support for a new command "input-send-event" replacing the previous experimental command "x-input-send-event".<br />
* The human monitor command "drive_add -n" allows creating block devices that do not have a BlockBackend (similar to QMP blockdev-add).<br />
=== Migration ===<br />
* Postcopy is not experimental anymore; the x-postcopy-ram capability was renamed to postcopy-ram.<br />
=== Network ===<br />
* SLIRP now supports IPv6 for ICMP, UDP, TCP and TFTP.<br />
=== Block devices ===<br />
* The NBD client and server now supports TLS [...]<br />
* Block device throttling now support specifying a burst length as well. While previously the burst could only be specified as a total number of IOPS (e.g. 10000 IOPS), more complex specifications such as "10000 IOPS for 10 seconds" are now possible. Note that, because of the implementation of the algorithm, a guest that is allowed "10000 IOPS for 10 seconds" will also be allowed to perform for example 5000 IOPS for 20 seconds.<br />
* qemu-io --object [...]<br />
* qemu-img --object [...]<br />
* Support for deleting snapshots on Sheepdog devices.<br />
<br />
=== Command-line options ===<br />
=== TCG ===<br />
* Record/replay support extended to cover character devices.<br />
=== Tracing ===<br />
* The "stderr" tracing backend was replaced by the "log" tracing backend, which is now the default. This backend prints tracing messages to the destination specified with the "-D" option.<br />
* In addition to the existing "-trace file=...", tracepoints can be enabled using "-trace [enable=]...". The new option also supports globbing, as in "-trace bdrv_aio_*".<br />
* In addition to the existing "-trace file=...", tracepoints can be enabling using "-d trace:...". This option also supports globbing, as in "-d trace:bdrv_aio_*".<br />
* When using "-daemonize", the "-D" option also provides the file to which QEMU's stderr output will be redirected.<br />
<br />
== Audio ==<br />
<br />
== Guest agent ==<br />
<br />
== User-mode emulation ==<br />
* The default CPU for ppc64 and ppc64le is now POWER8<br />
== Build dependencies ==<br />
* OpenGL now has a dependency on libdrm and mesa-libgbm (in addition to X11). This dependency might be dropped once OpenGL will work on OS X or Windows. For now, libdrm and mesa-libgbm should be available for all current X11 users.<br />
* QEMU 2.6 does not support anymore Mac OS X versions up to 10.5. For this reason, compiling QEMU on OS X only support Intel processors as of QEMU 2.6.<br />
* QEMU does not support Xen 4.1 and older anymore.<br />
* Builds for Windows now require [http://mingw-w64.org/doku.php Mingw-w64] and can build both 32 and 64 bit executables. MinGW is no longer supported.<br />
<br />
== Known issues ==</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.6&diff=5385ChangeLog/2.62016-03-16T19:50:59Z<p>Stefan Weil: /* Build dependencies */ MinGW now unsupported</p>
<hr />
<div>(updated as of e76d1798faa6d29f54c0930a034b67f3ecdb947d)<br />
<br />
* secrets (supported by tls-creds):<br />
$QEMU -object secret,id=sec0,data=letmein<br />
$QEMU -object secret,id=sec0,file=mypasswd.txt<br />
$QEMU -object secret,id=sec0,file=mypasswd.txt,format=base64<br />
+ encrypted case<br />
* nvdimm?<br />
<br />
== System emulation ==<br />
<br />
=== Incompatible changes ===<br />
* The aio=native option to "-drive" now requires the cache=none option, instead of silently disabling itself for other cache modes. The newly invalid combination had been warning since QEMU 2.3.<br />
* Specifying block device parameter aio=native is now an error on POSIX systems if qemu is compiled without libaio support. The newly invalid combination had been warning since QEMU 2.3.<br />
* The experimental x-drive option for the sdhci-pci device has been removed. Instead of passing a drive directly to the SD controller device you now must create an SD card object (which will automatically be plugged into the SD controller), so "-device sdhci-pci,x-drive=mydrive -drive id=mydrive,[...]" becomes "-device sdhci-pci -device sd-card,drive=mydrive -drive id=mydrive,[...]".<br />
* The s390-virtio machine has been removed.<br />
* Machine types pc-q35-1.4, pc-q35-1.5, pc-q35-1.6, pc-q35-1.7, pc-q35-2.0, pc-q35-2.1, pc-q35-2.2 and pc-q35-2.3 have been removed.<br />
* The "virt" machine type's flash device has changed when TrustZone is active ("-machine virt,secure=on"). The first flash device is only available in secure memory, while the second is available in non-secure memory too.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* 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.<br />
* 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.<br />
<br />
=== Alpha ===<br />
=== ARM ===<br />
* Support for a separate EL3 address sapce<br />
* System mode supports BE8 and BE32. Note that qemu-system-arm can emulate both big-endian and little-endian guests (unlike user-mode emulation which has separate qemu-arm and qemu-armeb binaries).<br />
* Support for the SETEND instruction, used most notably on Raspbian through the arm-mem library (previously known as libcofi).<br />
* Faster boot thanks to DMA support in fw_cfg<br />
* The "virt" machine type supports a virtual power button and the "system_powerdown" monitor command<br />
* The "virt" machine type supports configuring network cards with -nic in addition to -netdev<br />
* The RAM limit for the "virt" machine type is now 255GB<br />
* The "xlnz-zynqmp" machine type now includes SPI controllers<br />
* The "xlnx-ep108" machine type now supports SPI flash<br />
* New "raspi2" machine type<br />
<br />
==== KVM ====<br />
* Support for guest debugging (software and hardware breakpoints, single step) on AArch64<br />
<br />
=== MIPS ===<br />
* Support for FPU and MSA in KVM guests<br />
* Support for R6 virtual processors<br />
=== PowerPC ===<br />
* Improved support for migration of g3beige and mac99 machines<br />
* The gdb stub supports the VSX instruction set extensions<br />
==== pSeries ====<br />
* pSeries machine types starting at pseries-2.6 use XHCI as the USB host controller instead of OHCI<br />
* Support for more hypercalls (H_SET_SPRG0, H_SET_DABR, H_SET_XDABR and H_PAGE_INIT)<br />
<br />
=== s390 ===<br />
* Fixes and improvements in s390x PCI support<br />
* Support for hotplug of s390x cpus via cpu-add<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
=== TileGX ===<br />
=== Tricore ===<br />
* Support for context management, illegal opcode and opd traps<br />
=== x86 ===<br />
==== TCG ====<br />
* Support for the XSAVE/XSAVEOPT, MPX and FSGSBASE features<br />
==== KVM ====<br />
* Support for "split irqchip". In this mode, QEMU emulates the IOAPIC, PIC (i8259) and PIT (i8254) devices while leaving the local APIC emulation to the kernel. This mode reduces the attack surface of KVM.<br />
* Support for the new PKU feature found in some Skylake processors<br />
* Support for migrating the TSC rate<br />
==== Xen ====<br />
<br />
=== Device emulation and assignment ===<br />
* New IPMI emulation subsystem. QEMU can now emulate an internal BMC or attach to an external BMC simulator such as OpenIPMI's lanserv.<br />
<br />
==== ACPI ====<br />
* The floppy disk controller's characteristics are now exposed in the ACPI tables, which makes it possible to use floppies on Windows together with UEFI firmware.<br />
==== Audio ====<br />
==== Block devices ====<br />
* The floppy disk controller support changes in the disk geometry, for example changing from a 1.44 MB disk or an empty disk to a 2.88 MB disk<br />
* Improved compatibility of the SD device model with various operating systems and firmwares<br />
* The NVMe device supports the "bootindex" property.<br />
* The SDHCI device supports reset.<br />
==== Character devices ====<br />
==== IDE ====<br />
==== Mouse/keyboard ====<br />
==== Network ====<br />
==== SCSI ====<br />
* Support for the LSI SAS1068 HBA (also known as "MPT Fusion"). Note that some operating systems will not recognize disks attached to this adapter, unless the disks are assigned a world-wide name (WWN).<br />
==== Shared memory device ====<br />
==== PCI/PCIe ====<br />
==== TPM ====<br />
==== USB ====<br />
* MTP: initial support for events<br />
==== VFIO ====<br />
* Support for AMD XGBE platform passthrough<br />
* New sysfsdev property provides a more general way to specify the device to attach to.<br />
* Provided PCI option ROMs are fixed to include the same vendor and device id as the device exposed to the guest. This facilitates changing the ids of the devices.<br />
==== virtio ====<br />
* Performance improvements via optimized vring accesses<br />
* The balloon driver statistics now include the amount of available memory (corresponding to "Available" in /proc/meminfo for Linux guests).<br />
==== VGA ====<br />
<br />
=== Character devices ===<br />
* Support for TLS encryption in the TCP backend [...]<br />
* -chardev logfile [...]<br />
<br />
=== GUI ===<br />
* SDL2 and SPICE now support OpenGL and virgl.<br />
* The "-vnc" and "-display vnc" options support ipv4=off and ipv6=off. Previously, only "ipv4" and "ipv6" were available.<br />
* FIXME: document -input-linux when QOM-based syntax lands.<br />
<br />
=== Monitor ===<br />
* Support for a new "detach" option to "dump-guest-memory". The option dumps memory in the background. Progress can be queried using the new commands "info dump" (human monitor) and "query-dump" (QMP), as well as through the QMP event DUMP_COMPLETED.<br />
* Support for a new command "input-send-event" replacing the previous experimental command "x-input-send-event".<br />
* The human monitor command "drive_add -n" allows creating block devices that do not have a BlockBackend (similar to QMP blockdev-add).<br />
=== Migration ===<br />
* Postcopy is not experimental anymore; the x-postcopy-ram capability was renamed to postcopy-ram.<br />
=== Network ===<br />
* SLIRP now supports IPv6 for ICMP, UDP, TCP and TFTP.<br />
=== Block devices ===<br />
* The NBD client and server now supports TLS [...]<br />
* Block device throttling now support specifying a burst length as well. While previously the burst could only be specified as a total number of IOPS (e.g. 10000 IOPS), more complex specifications such as "10000 IOPS for 10 seconds" are now possible. Note that, because of the implementation of the algorithm, a guest that is allowed "10000 IOPS for 10 seconds" will also be allowed to perform for example 5000 IOPS for 20 seconds.<br />
* qemu-io --object [...]<br />
* qemu-img --object [...]<br />
* Support for deleting snapshots on Sheepdog devices.<br />
<br />
=== Command-line options ===<br />
=== TCG ===<br />
* Record/replay support extended to cover character devices.<br />
=== Tracing ===<br />
* The "stderr" tracing backend was replaced by the "log" tracing backend, which is now the default. This backend prints tracing messages to the destination specified with the "-D" option.<br />
* In addition to the existing "-trace file=...", tracepoints can be enabled using "-trace [enable=]...". The new option also supports globbing, as in "-trace bdrv_aio_*".<br />
* In addition to the existing "-trace file=...", tracepoints can be enabling using "-d trace:...". This option also supports globbing, as in "-d trace:bdrv_aio_*".<br />
* When using "-daemonize", the "-D" option also provides the file to which QEMU's stderr output will be redirected.<br />
<br />
== Audio ==<br />
<br />
== Guest agent ==<br />
<br />
== User-mode emulation ==<br />
* The default CPU for ppc64 and ppc64le is now POWER8<br />
== Build dependencies ==<br />
* OpenGL now has a dependency on libdrm and mesa-libgbm (in addition to X11). This dependency might be dropped once OpenGL will work on OS X or Windows. For now, libdrm and mesa-libgbm should be available for all current X11 users.<br />
* QEMU 2.6 does not support anymore Mac OS X versions up to 10.5. For this reason, compiling QEMU on OS X only support Intel processors as of QEMU 2.6.<br />
* QEMU does not support Xen 4.1 and older anymore.<br />
* Builds for Windows now require [http://mingw-w64.org/doku.php Mingw-w64] and can build both 32 and 64 bit executables. MinGW is no longer supported.<br />
<br />
== Known issues ==</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.5&diff=5261ChangeLog/2.52015-12-14T20:29:40Z<p>Stefan Weil: /* Known issues */ Add hint to bug #1525682</p>
<hr />
<div>== System emulation ==<br />
* guard pages are now inserted after guest RAM, to guard against guest-triggered buffer overflow attacks<br />
=== Incompatible changes ===<br />
* The mips32r5-generic CPU was renamed to P5600<br />
* Host floppy device pass-through (block driver “host_floppy”) has been removed; it is still possible to use them just like any other device file, however, a medium change will no longer be passed through to the guest<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.<br />
* Block device parameter aio=native has no effect if qemu is compiled without libaio support. It will be made an error.<br />
* 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.<br />
* 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.<br />
* The s390-virtio machine has been deprecated for 2.5; it will be removed in 2.6. s390x users should switch to the (default) s390-ccw-virtio machine.<br />
* Changes to device "sdhci-pci" will make migration between old and new versions impossible.<br />
<br />
=== Alpha ===<br />
=== ARM ===<br />
* The "virt" machine type supports passing SMBIOS to the firmware.<br />
* Semihosting support on AArch64<br />
* New i.MX31 SoC.<br />
* The ZynqMP and Allwinner A10 platforms support AHCI.<br />
* Support for VGICv3 in KVM<br />
* Support for GICv3 in the ACPI tables.<br />
* The "virt" machine now has a second PCIe MMIO region of 512GB in size in high memory. Note that older 32-bit ARM Linux kernels built without CONFIG_LPAE have a bug where the presence of this region in high memory causes them to refuse to use the PCIe controller at all. In this case you can either reconfigure your kernel with CONFIG_LPAE=y, or pass QEMU the "-machine highmem=off" option to disable the use of high memory for PCIe. The kernel bug is expected to be fixed in Linux kernel release 4.4.<br />
=== MIPS ===<br />
* The mips32r5-generic CPU was renamed to P5600<br />
* Improvements to MIPS R6 emulation<br />
<br />
=== PowerPC ===<br />
==== pSeries ====<br />
* Support for memory hotplug<br />
* The shipped version of SLOF includes GPT support.<br />
* Using VFIO doesn't need spapr-pci-vfio-host-bridge anymore.<br />
* virtio-vga now supported on sPAPR guests.<br />
* [[Features/HRandomHypercall | H_RANDOM hypercall]] device for providing good random data to the guests.<br />
==== Mac99 ====<br />
* Improve ability to boot MacOS 9 (based upon GSoC project "Implement support for Mac OS 9 in QEMU " by Cormac O'Brien)<br />
<br />
=== s390 ===<br />
* Storage keys are migrated.<br />
* New "info skeys" command in HMP to dump the storage key for a given address.<br />
* Support for virtio 1 in the virtio-ccw devices.<br />
** A maximum virtio-ccw revision can be specified via the "max_revision" property: max_revision=0 may be used to enforce usage of legacy virtio mode.<br />
* Support for boot from El Torito iso images on virtio-blk has been added.<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* sun4u: Fix EBus device enumeration under FreeBSD SPARC64 (OpenBIOS)<br />
<br />
=== TileGX ===<br />
* New target.<br />
=== x86 ===<br />
* The emulated IOMMU (VT-d) supports devices behind a bridge<br />
* QEMU will warn when using a "-cpu" model that includes unsupported features. These features are disabled automatically, just like in previous versions of QEMU<br />
* /machine/icc-bridge was removed from the QOM tree. Software relying on icc-bridge to find CPU objects should use the "qom_path" field of "query-cpus" QMP command<br />
<br />
==== CPU models and features ====<br />
* Haswell and Broadwell CPU models now include ABM<br />
* Cache information passthrough (which was enabled by default on "-cpu host") is now disabled by default<br />
* ABM, POPCNT, and SSE4a are not enabled in the default CPU models (qemu64, qemu32) anymore, as many hosts don't support it<br />
* RDTSCP was removed from AMD CPU models, as current KVM versions can't expose RDTSCP to guests in AMD hosts<br />
* New Intel memory instructions (clflushopt/clwb/pcommit) are now supported<br />
* TCG now supports Debug Extensions (CR4.DE)<br />
<br />
==== KVM ====<br />
* Support for Hyper-V-compatible reporting of crashes.<br />
<br />
==== Xen ====<br />
* Support for passthrough of Intel integrated GPUs.<br />
<br />
=== Device emulation and assignment ===<br />
* fw_cfg supports a DMA interface on ARM and x86. This interface makes -kernel/-initrd much faster if supported by the firmware. SeaBIOS supports the DMA interface starting with release 1.9.0 (commit 06316c9d). The UEFI guest fw for ARM VMs (known as ArmVirtQemu or AAVMF) supports the DMA interface starting with git commit 953bcbcc / SVN r18545.<br />
==== ACPI ====<br />
==== Audio ====<br />
==== Block devices ====<br />
==== Character devices ====<br />
==== IDE ====<br />
* AHCI ATAPI PIO transfers greater than one sector are fixed. This helps on OVMF, which utilizes such transfers.<br />
* Zero byte count limits will no longer hang ATAPI drives.<br />
* ATAPI PIO reads, when the byte count limit is set to the ATAPI block size, are now asynchronous. This should help to prevent hangs due to missing CDROM media mounted via NFS.<br />
<br />
==== Mouse/keyboard ====<br />
==== Network ====<br />
==== SCSI ====<br />
* scsi-generic devices now can be used together with a "readonly=on" backend.<br />
==== Shared memory device ====<br />
* A sample implementation of the ivshmem client and ivhsmem server is included with QEMU.<br />
* ivshmem supports a new "x-memdev" property that uses a memory object for the backend. This makes it possible to use ivshmem with a hugetlbfs backend. This property is experimental and may be removed in future release in favour of an alternative ivshmem device.<br />
* Use kvm irqfd for msi notifications<br />
* Protocol change, native long -> LE int64_t<br />
<br />
==== PCI/PCIe ====<br />
* hotplug support added for multifunction devices. To use, add all functions except function 0 first. Adding function 0 exposes the device to the guest. Request removal on function 0. On guest acknowledge, all functions are ejected together.<br />
<br />
==== TPM ====<br />
==== VFIO ====<br />
==== virtio ====<br />
* virtio-gpu now supports 3D mode<br />
* vhost-user now supports live migration. client changes are required to enable this. When used with an old client without migration support, vhost-user will now block migration (instead of failing silently)<br />
* vhost-user now supports multi-queue. Use queues=# to enable this. client changes are required to enable this mode. When used with an old client without multi-queue support, device will automatically fall back on using a single pair of queues.<br />
* vhost-user protocol now includes protocol feature negotiation, including multiple new messages. When used with old clients, all new messages are automatically disabled. <br />
* vhost-user no longer sents the RESET_OWNER message on device stop. The only QEMU version that sent it was 2.4, the message is now officially deprecated.<br />
* migration now works when virtio 1 is enabled for virtio-pci<br />
* For virtio-pci, virtio 1 performance on kvm on Intel CPUs has been improved (on kernel 4.4 and up).<br />
* a new flag modern-pio-notify can be used to enable PIO for notifications in virtio 1 mode, to improve performance for host kernels older than 4.4, and processors without EPT support.<br />
* virtio devices can now be placed on the pci express bus<br />
* vhost is no longer disabled when guest does not use MSI-X. The vhostforce flag is no longer required.<br />
* in virtio 1 mode, scsi passthrough is now disabled for virtio blk<br />
* Please note that for virtio-pci, the modern (virtio 1) interface is still disabled by default. To enable, set the flag disable-modern=off.<br />
<br />
==== VGA ====<br />
<br />
=== Character devices ===<br />
=== GUI ===<br />
* New syntax for enabling TLS in the VNC server:<br />
** Equivalent to <tt>-vnc hostname:0,tls</tt>: <tt>-object tls-creds-anon,id=tls0,endpoint=server -vnc hostname:0,tls-creds=tls0</tt><br />
** Equivalent to <tt>-vnc hostname:0,tls,x509=/path/to/certs</tt>: <tt>-object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=no -vnc hostname:0,tls-creds=tls0</tt><br />
** Equivalent to <tt>-vnc hostname:0,tls,x509verify=/path/to/certs</tt>: <tt>-object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=yes -vnc hostname:0,tls-creds=tls0</tt><br />
* The Cocoa GUI does not have show an 'open image file' dialog box anymore even if QEMU is started without arguments<br />
* Thu curses GUI supports 256 colors and line graphics.<br />
<br />
=== Monitor ===<br />
* New "info iothreads" command.<br />
* New "query-qmp-schema" command allows the caller to [[Features/QMP/Introspection | introspect the QMP schema]] used by QEMU.<br />
<br />
=== Migration ===<br />
* [[Features/PostCopyLiveMigration | Postcopy migration]] for migration of large/busy guests<br />
* A more flexible [[Features/AutoconvergeLiveMigration | auto-converge mechanism]] (for busy guests)<br />
<br />
=== Network ===<br />
* Support for multiqueue in vhost-user.<br />
* Support for network filters. Currently, the only filter objects are "filter-buffer", which batches packets every N microseconds, and "filter-dump", which can be used to log the network traffic in a file. Filters are attached to a netdev device using e.g. "-object filter-buffer,id=filter,netdev=net0,queue=rx,interval=1000" (which creates a 1ms filter-buffer).<br />
=== Block devices in system emulation ===<br />
=== Command-line options ===<br />
=== TCG ===<br />
* Improved system emulation performance for targets with software TLBs (e.g. SPARC).<br />
* Initial support for [[Features/record-replay | record/replay]].<br />
<br />
== Block devices and tools ==<br />
* The HMP “change” command (QMP's “blockdev-change-medium”) now allows you to change the read-only mode of the device (e.g. when inserting a read-only floppy disk image into a previously R/W drive)<br />
* Fine-grained control over a block device's tray with the new QMP commands “blockdev-open-tray”, “blockdev-close-tray”, “x-blockdev-insert-medium”, and “x-blockdev-remove-medium” (the latter two are experimental for now)<br />
* New “reopen” command in qemu-io<br />
* block-dirty-bitmap-add and block-dirty-bitmap-clear transaction actions have been added to now fully support (transient) incremental bitmap usage and management.<br />
* QMP transactions now support a "completion-mode" parameter which controls the completion behavior of jobs launched by transactions, which will allow them to fail together. See the [https://github.com/qemu/qemu/blob/master/docs/bitmaps.md bitmaps.md] documentation for how this affects incremental backups.<br />
* Block I/O accounting can now report average queue depth, min/avg/max latency, and failed/invalid request counts<br />
* qcow2 learnt a new option ''cache-clean-interval'', which allows to free unused cache entries after some time.<br />
* An experimental QMP command ''x-blockdev-del'' was added as a completement for the (also still experimental) ''blockdev-add'' command.<br />
* A new QMP command ''blockdev-snapshot'' that allows creating a snapshot using as overlay an image previously opened with ''blockdev-add''. This allows opening the overlay image with arbitrary run-time options, solving one of the limitations of ''blockdev-snapshot-sync''.<br />
* It is now possible to open an image without its backing file by specifying the empty string as a backing file reference when opening the image. This is useful for creating snapshots, since images opened with ''blockdev-add'' are not supposed to have a backing file before the ''blockdev-snapshot'' operation.<br />
* Host CD-ROM support now works on Mac OS X hosts<br />
* Host floppy support has been removed (it was deprecated in QEMU 2.3)<br />
* The temporary "x-data-plane=on/off" option for virtio-blk device is removed now, all users are requested to use the canonical "-object iothread,id=<id> -device virtio-blk,iothread=<id>,..." syntax.<br />
<br />
== Audio ==<br />
<br />
== Guest agent ==<br />
* Add an optional qemu-ga.conf system configuration<br />
* Support for dumping the configuration current file with --dump-conf<br />
* Win32 support for guest-set-user-password<br />
* New command guest-exec<br />
<br />
== User-mode emulation ==<br />
* The configure option --disable-guest-base has been removed.<br />
== Build dependencies ==<br />
* libcacard has been moved to a standalone project, hosted at git://anongit.freedesktop.org/spice/libcacard. The libcacard library from QEMU 2.4 can also be used to build QEMU 2.5.<br />
* virtio-gpu 3D support requires virglrenderer.<br />
== Known issues ==<br />
* SDL audio only works with SDL 1.x.<br />
* 64-bit QEMU might crash on Windows (problems with stack unwinding, depends on build environment, [http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb possible fix])<br />
* QEMU's configure script fails with pdksh from OpenBSD (see [https://bugs.launchpad.net/qemu/+bug/1525682 bug #1525682]. Using another shell with configure should work.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.5&diff=5232ChangeLog/2.52015-12-08T09:40:50Z<p>Stefan Weil: /* Known issues */</p>
<hr />
<div>== System emulation ==<br />
* guard pages are now inserted after guest RAM, to guard against guest-triggered buffer overflow attacks<br />
=== Incompatible changes ===<br />
* The mips32r5-generic CPU was renamed to P5600<br />
* Host floppy device pass-through (block driver “host_floppy”) has been removed; it is still possible to use them just like any other device file, however, a medium change will no longer be passed through to the guest<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.<br />
* Block device parameter aio=native has no effect if qemu is compiled without libaio support. It will be made an error.<br />
* 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.<br />
* 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.<br />
* The s390-virtio machine has been deprecated for 2.5; it will be removed in 2.6. s390x users should switch to the (default) s390-ccw-virtio machine.<br />
* Changes to device "sdhci-pci" will make migration between old and new versions impossible.<br />
<br />
=== Alpha ===<br />
=== ARM ===<br />
* The "virt" machine type supports passing SMBIOS to the firmware.<br />
* Semihosting support on AArch64<br />
* New i.MX31 SoC.<br />
* The ZynqMP and Allwinner A10 platforms support AHCI.<br />
* Support for VGICv3 in KVM<br />
* Support for GICv3 in the ACPI tables.<br />
* The "virt" machine now has a second PCIe MMIO region of 512GB in size in high memory. Note that older 32-bit ARM Linux kernels built without CONFIG_LPAE have a bug where the presence of this region in high memory causes them to refuse to use the PCIe controller at all. In this case you can either reconfigure your kernel with CONFIG_LPAE=y, or pass QEMU the "-machine highmem=off" option to disable the use of high memory for PCIe. The kernel bug is expected to be fixed in Linux kernel release 4.4.<br />
=== MIPS ===<br />
* The mips32r5-generic CPU was renamed to P5600<br />
* Improvements to MIPS R6 emulation<br />
<br />
=== PowerPC ===<br />
==== pSeries ====<br />
* Support for memory hotplug<br />
* The shipped version of SLOF includes GPT support.<br />
* Using VFIO doesn't need spapr-pci-vfio-host-bridge anymore.<br />
* virtio-vga now supported on sPAPR guests.<br />
* [[Features/HRandomHypercall | H_RANDOM hypercall]] device for providing good random data to the guests.<br />
==== Mac99 ====<br />
* Improve ability to boot MacOS 9 (based upon GSoC project "Implement support for Mac OS 9 in QEMU " by Cormac O'Brien)<br />
<br />
=== s390 ===<br />
* Storage keys are migrated.<br />
* New "info skeys" command in HMP to dump the storage key for a given address.<br />
* Support for virtio 1 in the virtio-ccw devices.<br />
** A maximum virtio-ccw revision can be specified via the "max_revision" property: max_revision=0 may be used to enforce usage of legacy virtio mode.<br />
* Support for boot from El Torito iso images on virtio-blk has been added.<br />
<br />
=== SH ===<br />
=== SPARC ===<br />
<br />
* sun4u: Fix EBus device enumeration under FreeBSD SPARC64 (OpenBIOS)<br />
<br />
=== TileGX ===<br />
* New target.<br />
=== x86 ===<br />
* The emulated IOMMU (VT-d) supports devices behind a bridge<br />
* QEMU will warn when using a "-cpu" model that includes unsupported features. These features are disabled automatically, just like in previous versions of QEMU<br />
* /machine/icc-bridge was removed from the QOM tree. Software relying on icc-bridge to find CPU objects should use the "qom_path" field of "query-cpus" QMP command<br />
<br />
==== CPU models and features ====<br />
* Haswell and Broadwell CPU models now include ABM<br />
* Cache information passthrough (which was enabled by default on "-cpu host") is now disabled by default<br />
* ABM, POPCNT, and SSE4a are not enabled in the default CPU models (qemu64, qemu32) anymore, as many hosts don't support it<br />
* RDTSCP was removed from AMD CPU models, as current KVM versions can't expose RDTSCP to guests in AMD hosts<br />
* New Intel memory instructions (clflushopt/clwb/pcommit) are now supported<br />
* TCG now supports Debug Extensions (CR4.DE)<br />
<br />
==== KVM ====<br />
* Support for Hyper-V-compatible reporting of crashes.<br />
<br />
==== Xen ====<br />
* Support for passthrough of Intel integrated GPUs.<br />
<br />
=== Device emulation and assignment ===<br />
* fw_cfg supports a DMA interface on ARM and x86. This interface makes -kernel/-initrd much faster if supported by the firmware.<br />
** SeaBIOS supports the DMA interface starting with release 1.9.0 (commit 06316c9d).<br />
** edk2 / OVMF (= UEFI guest fw built for x86 VMs) does not support the DMA interface. (OVMF is not trying to be part of the competition with containers, and the non-DMA interface is fast enough for all other use cases. With OVMF, the gains from the DMA interface are insignificant, both in absolute terms and relative to how long OVMF boots anyway.)<br />
** edk2 / ArmVirtQemu (= UEFI guest fw for ARM VMs) supports the DMA interface starting with git commit 953bcbcc / SVN r18545. (Unlike in x86 guests, the DMA interface makes a significant difference -- e.g., for libguestfs startup and "virt-install --location" --, because MMIO traps are very costly on aarch64 KVM.)<br />
==== ACPI ====<br />
==== Audio ====<br />
==== Block devices ====<br />
==== Character devices ====<br />
==== IDE ====<br />
* AHCI ATAPI PIO transfers greater than one sector are fixed. This helps on OVMF, which utilizes such transfers.<br />
* CVE-2015-6855: Non-ATAPI commands to ATAPI devices are now rejected, preventing a divide-by-zero crash.<br />
* Zero byte count limits will no longer hang ATAPI drives.<br />
* ATAPI PIO reads, when the byte count limit is set to the ATAPI block size, are now asynchronous. This should help to prevent hangs due to missing CDROM media mounted via NFS.<br />
<br />
==== Mouse/keyboard ====<br />
==== Network ====<br />
==== SCSI ====<br />
* scsi-generic devices now can be used together with a "readonly=on" backend.<br />
==== Shared memory device ====<br />
* A sample implementation of the ivshmem client and ivhsmem server is included with QEMU.<br />
* ivshmem supports a new "x-memdev" property that uses a memory object for the backend. This makes it possible to use ivshmem with a hugetlbfs backend. This property is experimental and may be removed in future release in favour of an alternative ivshmem device.<br />
* Use kvm irqfd for msi notifications<br />
* Protocol change, native long -> LE int64_t<br />
<br />
==== PCI/PCIe ====<br />
* hotplug support added for multifunction devices. To use, add all functions except function 0 first. Adding function 0 exposes the device to the guest. Request removal on function 0. On guest acknowledge, all functions are ejected together.<br />
<br />
==== TPM ====<br />
==== VFIO ====<br />
==== virtio ====<br />
* virtio-gpu now supports 3D mode<br />
* vhost-user now supports live migration. client changes are required to enable this. When used with an old client without migration support, vhost-user will now block migration (instead of failing silently)<br />
* vhost-user now supports multi-queue. Use queues=# to enable this. client changes are required to enable this mode. When used with an old client without multi-queue support, device will automatically fall back on using a single pair of queues.<br />
* vhost-user protocol now includes protocol feature negotiation, including multiple new messages. When used with old clients, all new messages are automatically disabled. <br />
* vhost-user no longer sents the RESET_OWNER message on device stop. The only QEMU version that sent it was 2.4, the message is now officially deprecated.<br />
* migration now works when virtio 1 is enabled for virtio-pci<br />
* For virtio-pci, virtio 1 performance on kvm on Intel CPUs has been improved (on kernel 4.4 and up).<br />
* a new flag modern-pio-notify can be used to enable PIO for notifications in virtio 1 mode, to improve performance for host kernels older than 4.4, and processors without EPT support.<br />
* virtio devices can now be placed on the pci express bus<br />
* vhost is no longer disabled when guest does not use MSI-X. The vhostforce flag is no longer required.<br />
* in virtio 1 mode, scsi passthrough is now disabled for virtio blk<br />
* Please note that for virtio-pci, the modern (virtio 1) interface is still disabled by default. To enable, set the flag disable-modern=off.<br />
<br />
==== VGA ====<br />
<br />
=== Character devices ===<br />
=== GUI ===<br />
* New syntax for enabling TLS in the VNC server:<br />
** Equivalent to <tt>-vnc hostname:0,tls</tt>: <tt>-object tls-creds-anon,id=tls0,endpoint=server -vnc hostname:0,tls-creds=tls0</tt><br />
** Equivalent to <tt>-vnc hostname:0,tls,x509=/path/to/certs</tt>: <tt>-object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=no -vnc hostname:0,tls-creds=tls0</tt><br />
** Equivalent to <tt>-vnc hostname:0,tls,x509verify=/path/to/certs</tt>: <tt>-object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=yes -vnc hostname:0,tls-creds=tls0</tt><br />
* The Cocoa GUI does not have show an 'open image file' dialog box anymore even if QEMU is started without arguments<br />
* Thu curses GUI supports 256 colors and line graphics.<br />
<br />
=== Monitor ===<br />
* New "info iothreads" command.<br />
* New "query-qmp-schema" command allows the caller to [[Features/QMP/Introspection | introspect the QMP schema]] used by QEMU.<br />
<br />
=== Migration ===<br />
* [[Features/PostCopyLiveMigration | Postcopy migration]] for migration of large/busy guests<br />
* A more flexible [[Features/AutoconvergeLiveMigration | auto-converge mechanism]] (for busy guests)<br />
<br />
=== Network ===<br />
* Support for multiqueue in vhost-user.<br />
* Support for network filters. Currently, the only filter objects are "filter-buffer", which batches packets every N microseconds, and "filter-dump", which can be used to log the network traffic in a file. Filters are attached to a netdev device using e.g. "-object filter-buffer,id=filter,netdev=net0,queue=rx,interval=1000" (which creates a 1ms filter-buffer).<br />
=== Block devices in system emulation ===<br />
=== Command-line options ===<br />
=== TCG ===<br />
* Improved system emulation performance for targets with software TLBs (e.g. SPARC).<br />
* Initial support for [[Features/record-replay | record/replay]].<br />
<br />
== Block devices and tools ==<br />
* The HMP “change” command (QMP's “blockdev-change-medium”) now allows you to change the read-only mode of the device (e.g. when inserting a read-only floppy disk image into a previously R/W drive)<br />
* Fine-grained control over a block device's tray with the new QMP commands “blockdev-open-tray”, “blockdev-close-tray”, “blockdev-insert-medium”, and “blockdev-remove-medium”<br />
* New “reopen” command in qemu-io<br />
* block-dirty-bitmap-add and block-dirty-bitmap-clear transaction actions have been added to now fully support (transient) incremental bitmap usage and management.<br />
* QMP transactions now support a "completion-mode" parameter which controls the completion behavior of jobs launched by transactions, which will allow them to fail together. See the [https://github.com/qemu/qemu/blob/master/docs/bitmaps.md bitmaps.md] documentation for how this affects incremental backups.<br />
* Block I/O accounting can now report average queue depth, min/avg/max latency, and failed/invalid request counts<br />
* qcow2 learnt a new option ''cache-clean-interval'', which allows to free unused cache entries after some time.<br />
* An experimental QMP command ''x-blockdev-del'' was added as a completement for the (also still experimental) ''blockdev-add'' command.<br />
* A new QMP command ''blockdev-snapshot'' that allows creating a snapshot using as overlay an image previously opened with ''blockdev-add''. This allows opening the overlay image with arbitrary run-time options, solving one of the limitations of ''blockdev-snapshot-sync''.<br />
* It is now possible to open an image without its backing file by specifying the empty string as a backing file reference when opening the image. This is useful for creating snapshots, since images opened with ''blockdev-add'' are not supposed to have a backing file before the ''blockdev-snapshot'' operation.<br />
* Host CD-ROM support now works on Mac OS X hosts<br />
* Host floppy support has been removed (it was deprecated in QEMU 2.3)<br />
* The temporary "x-data-plane=on/off" option for virtio-blk device is removed now, all users are requested to use the canonical "-object iothread,id=<id> -device virtio-blk,iothread=<id>,..." syntax.<br />
<br />
== Audio ==<br />
<br />
== Guest agent ==<br />
* Add an optional qemu-ga.conf system configuration<br />
* Support for dumping the configuration current file with --dump-conf<br />
* Win32 support for guest-set-user-password<br />
* New command guest-exec<br />
<br />
== User-mode emulation ==<br />
* The configure option --disable-guest-base has been removed.<br />
== Build dependencies ==<br />
* libcacard has been moved to a standalone project, hosted at git://anongit.freedesktop.org/spice/libcacard. The libcacard library from QEMU 2.4 can also be used to build QEMU 2.5.<br />
* virtio-gpu 3D support requires virglrenderer.<br />
== Known issues ==<br />
* SDL audio only works with SDL 1.x.<br />
* 64-bit QEMU might crash on Windows (problems with stack unwinding, depends on build environment, [http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb possible fix])</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Planning/2.5&diff=5231Planning/2.52015-12-08T09:37:36Z<p>Stefan Weil: /* Still unfixed */ Update translation files for release</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2015-08-11<br />
| Beginning of development phase<br />
|-<br />
| 2015-10-15<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| <strike>2015-11-12</strike> 2015-11-13<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag -rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| <strike>2015-11-19</strike> 2015-11-20<br />
| Tag v2.5.0-rc1<br />
|-<br />
| 2015-11-26<br />
| Tag v2.5.0-rc2<br />
|-<br />
| <strike>2015-12-03</strike> 2015-12-07<br />
| Tag v2.5.0-rc3<br />
|-<br />
| 2015-12-10<br />
| Tag v2.5.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Please list all patch series or bugs which need to be fixed for the release here. That way I can be sure I don't miss any when I'm rolling release candidates.<br />
<br />
=== Still unfixed ===<br />
* Update translation files with `make -C po update` and commit the result.<br />
<br />
=== Fixed in rc3 ===<br />
<br />
* OSX cocoa UI: don't pass clicks to guest if window is in background<br />
* a few S390 patches (targeting rc3)<br />
* a a race condition in a vhost-user test that makes it fail in some setups, notably the Travis CI https://lists.gnu.org/archive/html/qemu-devel/2015-11/msg06162.html<br />
<br />
=== Fixed in rc0 ===<br />
<br />
* netmap.c compile failures<br />
* [https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg05556.html Mac OS 9 compatibility improvements (upstream rework)]<br />
* fix Highbank model by adding board setup blob<br />
* [https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg01383.html migration: fix analyze-migration.py script] <br />
* revert of VHOST_RESET_DEVICE change<br />
* bugs in ARM gdbstub singlestep and breakpoint handling<br />
* configure barfs if there's no c++ compiler (fortify-source test is assuming $cxx is defined)<br />
* Zynq ADC controller<br />
* migration doesn't work on OSX (migrate_init zeroes out the mutex)<br />
* migration/ram.c 32-bit compile fixes<br />
<br />
Also see [[Planning/2.5/Testing]].<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.5]] for full details.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Features/KVM&diff=4990Features/KVM2015-09-13T11:16:24Z<p>Stefan Weil: /* QEMU 1.2 (planned) */ QEMU 1.2 was finished a long time ago</p>
<hr />
<div>'''KVM''' (Kernel Virtual Machine) is a Linux kernel module that allows a user space program to utilize the hardware virtualization features of various processors. Today, it supports recent Intel and AMD processors (x86 and x86_64), PPC 440, PPC 970, S/390, ARM (Cortex A15, AArch64), and MIPS32 processors.<br />
<br />
QEMU can make use of KVM when running a target architecture that is the same as the host architecture. For instance, when running ''qemu-system-x86'' on an x86 compatible processor, you can take advantage of the KVM acceleration - giving you benefit for your host and your guest system.<br />
<br />
== qemu-kvm fork for x86 ('''deprecated''', use upstream QEMU now) ==<br />
The KVM project is maintaining a fork of QEMU called qemu-kvm. Currently (close to the 1.1 release) it still provides the best performance and certain additional features for using KVM with QEMU on x86. Any other architecture is already fully supported by QEMU itself. The goal is to merge all remaining feature differences into QEMU upstream, provide a migration path from qemu-kvm and suspend the development of this fork. The status of this work is:<br />
<br />
=== QEMU 1.1 ===<br />
* support for in-kernel irqchips, not enabled by default, use <tt>-machine accel=kvm,kernel_irqchip=on</tt> to activate it<br />
* no support of MSI with in-kernel irqchip (will be disabled for all device when the in-kernel irqchip is enabled)<br />
* no PCI device assignment<br />
<br />
=== QEMU 1.2 ===<br />
* full support for MSI with in-kernel irqchip, including fast MSI injection for vhost-net<br />
* PCI device assignment using KVM kernel interfaces (VFIO-based assignment will follow)<br />
* resolve differences in VGA BIOS and resolution<br />
<br />
=== QEMU 1.3 ===<br />
* as of the 1.3 release all qemu-kvm features have been merged into upstream QEMU<br />
<br />
=== Broken features in qemu-kvm ===<br />
* CPU hot-plugging, used to work via monitor command <tt>cpu_set</tt>, will be added to upstream via hot-plugging of CPUs as a devices (monitor commands <tt>device_add/del</tt>)<br />
<br />
=== Remaining differences ===<br />
* historic command line switches<br />
** <tt>-no-kvm</tt> (use <tt>-machine accel=...</tt>)<br />
** <tt>-no-kvm-irqchip</tt> (use <tt>-machine kernel_irqchip=...</tt>)<br />
** <tt>-no-kvm-pit</tt> (ignored by recent qemu-kvm, switch off irchip completely)<br />
** <tt>-no-kvm-pit-reinjection</tt> (use <tt>-global kvm-pit.lost_tick_policy=discard</tt>)<br />
** <tt>-tdf</tt> (ignored by recent qemu-kvm, drift compensation for userspace timer devices will be re-introduced generically)<br />
** <tt>-drive ...,boot=on</tt> (BIOS can boot from IDE, AHCI and virtio natively, use proprietary option ROM to boot from LSI SCSI controller)<br />
* testdev (helper device to test QEMU/KVM internals)<br />
<br />
== Links ==<br />
* [http://www.linux-kvm.org KVM Wiki]<br />
* Avi Kivity's [http://git.kernel.org/?p=virt/kvm/qemu-kvm.git QEMU KVM repository]</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Contribute&diff=4958Contribute2015-08-27T05:39:51Z<p>Stefan Weil: Removed Anthony Liguori (no longer in project)</p>
<hr />
<div>== Project Infrastructure ==<br />
* Source repository: [http://git.qemu.org Mainline qemu.git] and [http://repo.or.cz/w/qemu.git developer repositories]<br />
* Mailing list: [[MailingLists|mailing list]]<br />
* IRC: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
* Bug tracker: [[Contribute/ReportABug|launchpad]]<br />
* Continuous integration: [[ContinuousIntegration|buildbot]]<br />
* Wiki: [[Main_Page|this website]]<br />
* Phone call: Scheduled for Tuesdays on as-needed basis for agenda topics raised on mailing list. Contact [mailto:quintela@redhat.com Juan Quintela] for dial-in details. To find the time in your location, use:<br />
date -d 'TZ="America/New_York" Tuesday 10:00 am'<br />
<br />
== Key Information ==<br />
* [[Documentation/GettingStartedDevelopers|Getting started for developers]]<br />
* [[Contribute/SubmitAPatch|How to submit a patch]]<br />
* [[Contribute/TrivialPatches|How to submit a trivial patch]]<br />
* [[Contribute/ReportABug|How to report a bug]]<br />
<br />
== Students ==<br />
<br />
QEMU participated in Google's Summer of Code 2011 program.<br />
<br />
Some reports on the processed topics (partially or fully) from 2010 can be found here:<br />
* [[Google Summer of Code 2010/QMP|QMP]] - about syncing QEMU monitor and QEMU Machine Protocol (QMP) features<br />
* [[Google Summer of Code 2010/VNC|VNC]] - about improvements in speed and features of QEMU supported VNC protocols<br />
<br />
For more information on GSoC-2011 and especially lots more of probably still open topics for improvement please see [[Google_Summer_of_Code_2011|this page]].<br />
<br />
== Planning ==<br />
* [[Planning/2.4| 2.4]]<br />
* [[Planning/2.3| 2.3]]<br />
* [[Planning/2.2| 2.2]]<br />
* [[Planning/2.1| 2.1]]<br />
* [[Planning/2.0| 2.0]]<br />
* [[Planning/1.7| 1.7]]<br />
* [[Planning/1.6| 1.6]]<br />
* [[Planning/1.5| 1.5]]<br />
* [[Planning/1.4| 1.4]]<br />
* [[Planning/1.3| 1.3]]<br />
* [[Planning/1.2| 1.2]]<br />
* [[Planning/1.1| 1.1]]<br />
* [[Planning/1.0| 1.0]]<br />
* [[Planning/0.15| 0.15]]<br />
* [[Planning/0.15-example| 0.15 example]]<br />
* [[Planning/0.14/Testing| 0.14 testing]]<br />
* [[Planning/0.14| 0.14]]<br />
<br />
== Features ==<br />
* [[Features|Features]]<br />
* [[Features/0.13| 0.13]]<br />
* [[Features/0.13/HelperNetworking| 0.13/HelperNetworking]]<br />
* [[Features/0.13|Proposed 0.13 Features]]<br />
* [[Features/AHCI|AHCI]]<br />
* [[Features/Block/Merge|Block/Merge]]<br />
* [[Features/CPUModels| CPUModels]]<br />
* [[Features/Cow2| Cow2]]<br />
* [[Features/DriveRefactoring| DriveRefactoring]]<br />
* [[Features/DiskIOLimits| DiskIOLimits]]<br />
* [[Features/FVD| FVD]]<br />
* [[Features/FVD/Compare| FVD/Compare]]<br />
* [[Features/FVD/Design| FVD/Design]]<br />
* [[Features/FVD/Engineering| FVD/Engineering]]<br />
* [[Features/FVD/Experiment| FVD/Experiment]]<br />
* [[Features/FVD/Specification| FVD/Specification]]<br />
* [[Features/FVD/WhyFVD| FVD/WhyFVD]]<br />
* [[Features/FaultTolerance| FaultTolerance]]<br />
* [[Features/HelperNetworking| HelperNetworking]]<br />
* [[Features/NetDeviceFailover| NetDeviceFailover]]<br />
* [[Features/PCIMemoryAPI| PCIMemoryAPI]]<br />
* [[Features/PostCopyLiveMigration| PostCopy LiveMigration]]<br />
* [[Features/PVCrashDetection| PVCrashDetection]]<br />
* [[Features/Q35| Q35]]<br />
* [[Features/QDevCleanup| QDevCleanup]]<br />
* [[Features/QED| QED]]<br />
* [[Features/QED/OnlineDefrag| QED/OnlineDefrag]]<br />
* [[Features/QED/OutstandingWork| QED/OutstandingWork]]<br />
* [[Features/QED/ParallelSubmission| QED/ParallelSubmission]]<br />
* [[Features/QED/ScanAvoidance| QED/ScanAvoidance]]<br />
* [[Features/QED/Specification| QED/Specification]]<br />
* [[Features/QED/Streaming| QED/Streaming]]<br />
* [[Features/QED/Trim| QED/Trim]]<br />
* [[Features/QMP2| QMP2]]<br />
* [[Features/QMP_0.14| QMP_0.14]]<br />
* [[Features/QOM| QOM]]<br />
* [[Features/QOM/CPU| QOM/CPU]]<br />
* [[Features/Qcow2DataIntegrity| Qcow2DataIntegrity]]<br />
* [[Features/RamAPI| RamAPI]]<br />
* [[Features/ResetAPI| ResetAPI]]<br />
* [[Features/Sheepdog| Sheepdog]]<br />
* [[Features/Sheepdog/Corosync_Config| Sheepdog/Corosync]]<br />
* [[Features/Sheepdog/Getting_Started| Sheepdog/Getting]]<br />
* [[Features/Smartcard| Smartcard]]<br />
* [[Features/Smartcard/Specification| Smartcard/Specification]]<br />
* [[Features/Snapshots| Snapshots]]<br />
* [[Features/Snapshots2| Snapshots2]]<br />
* [[Features/SnapshottingImprovements| SnapshottingImprovements]]<br />
* [[Features/TCI| TCG Interpreter ]]<br />
* [[Features/Tracing| Tracing]]<br />
* [[Features/Tracing/Roadmap| Tracing/Roadmap]]<br />
* [[Features/Tracing/UseCases| Tracing/UseCases]]<br />
* [[Features/Usability |Usability]]<br />
* [[Features/VirtioBlkBoot| VirtioBlkBoot]]<br />
* [[Features/VirtioIoeventfd| VirtioIoeventfd]]<br />
<br />
=== Work in progress ===<br />
* [[Features/40p| 40p]]<br />
* [[Features/BeBox| BeBox]]<br />
* [[Features/CPUHotplug|CPUHotplug]]<br />
* [[Features/GtkDisplayState| GtkDisplayState]]<br />
* [[Features/PRePCleanup|PReP cleanup]]<br />
* [[Features/Q35|Q35]]<br />
* [[Features/RL78| RL78]]<br />
* [[Features/Tegra2|Tegra2]]<br />
* [[Features/RDMALiveMigration|RDMA Live Migration]]<br />
* [[Features/MicroCheckpointing|Micro Checkpointing]]<br />
* [[Features/Block/Rebase|Block Rebase]]<br />
* [[Features/tcg-multithread|TCG MultiThread]]<br />
<br />
=== Downstream ===<br />
* 6502 (on [https://github.com/AVEx-6502/qemu-6502 GitHub])<br />
* AT91SAM9263 (on [https://github.com/Dushistov/qemu_at91sam9263 Github])<br />
* Beagleboard (at Linaro)<br />
* Blackfin<br />
* Goldfish (at [https://android.googlesource.com/platform/external/qemu Android])<br />
* Ranchu (Android rebase, see [https://groups.google.com/forum/#!forum/android-emulator-dev Google Group])<br />
* [[Features/HPPA| HPPA]]<br />
* Meta (on [https://github.com/img-meta/qemu GitHub])<br />
* Taskit Portux920T (on [https://github.com/daro-tuberlin/Qemu-taskit-920T GitHub])<br />
* [[Features/Z80| Z80]]<br />
<br />
== GIT repo ==<br />
* [http://git.qemu.org/ QEMU.org GIT repo]<br />
* [http://repo.or.cz/w/qemu.git repo.or.cz]<br />
* [http://git.kernel.org/?p=linux/kernel/git/mst/qemu.git;a=summary Qemu patches by Michael S. Tsirkin. Warning: constantly rebased. pci subsystem]<br />
* [http://repo.or.cz/w/qemu/kevin.git kwolf Random patches. block device]<br />
<br />
== Developers and Maintainers ==<br />
<br />
* [[User:Agraf |Alexander Graf ]] (maintainer for PPC, S390)<br />
* [[User:Wmat |Bill Traynor ]]<br />
* [[User:Blueswirl |Blueswirl ]] (committer, maintainer for SPARC, bsd-user)<br />
* [[User:edgar |Edgar E. Iglesias ]] (committer, maintainer for CRIS, Microblaze)<br />
* [[User:Kraxel |Gerd Hoffmann ]] (maintainer for audio, SPICE, USB)<br />
* [[User:Joro |Joro ]]<br />
* [[User:LuizCapitulino |Luiz Capitulino ]] (maintainer for QMP/QAPI)<br />
* [[User:Mariusmm |Màrius Montón ]]<br />
* [[User:MichaelTsirkin |Michael Tsirkin ]] (maintainer for PCI, vhost)<br />
* [[User:Miguel |Miguel Di Ciurcio Filho ]]<br />
* [[User:NataliaPortillo |Natalia Portillo ]]<br />
* [[User:Paolo_Bonzini |Paolo Bonzini ]] (maintainer for NBD, SCSI)<br />
* [[User:Pbrook |Paul Brook ]] (committer, maintainer for ARM, m68k)<br />
* [[User:Stefan_Weil |Stefan Weil ]] (maintainer for [[Features/TCI|TCI]], [[Hosts/W32|w32, w64]])<br />
* [[User:Stefanha |Stefan Hajnoczi ]] (maintainer for tracing)<br />
* [[User:wuzhy |Zhi Yong Wu ]] ([[Features/DiskIOLimits|Block I/O throttling]], [[Features/VirtioSCSI|virtio-scsi&tcm_vhost]])<br />
<br />
See file [http://repo.or.cz/w/qemu.git/blob_plain/HEAD:/MAINTAINERS MAINTAINERS] in the QEMU source distribution for the latest list<br />
of QEMU maintainers.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=Contribute/SubmitAPullRequest&diff=4957Contribute/SubmitAPullRequest2015-08-26T19:21:17Z<p>Stefan Weil: Attending a key signing party in 2013 is no longer possible</p>
<hr />
<div>'''NB: this page is a draft work in progress and may not yet reflect consensus on the rules for pull requests.'''<br />
<br />
QEMU welcomes contributions of code, but we generally expect these to be<br />
sent as simple patch emails to the mailing list (see our<br />
page on [[Contribute/SubmitAPatch|submitting a patch]] for more details).<br />
Generally only existing submaintainers of a tree will need to<br />
submit pull requests, although occasionally for a large patch<br />
series we might ask a submitter to send a pull request. This<br />
page documents our recommendations on pull requests for those people.<br />
<br />
<br />
'''Resend the patches with the pull request''' as emails which are<br />
threaded as follow-ups to the pull request itself. The simplest<br />
way to do this is to use <code>git format-patch --cover-letter</code><br />
to create the emails, and then edit the cover letter to include<br />
the pull request details that <code>git request-pull</code> outputs.<br />
<br />
'''Use PULL as the subject line tag''' in both the cover letter<br />
and the retransmitted patch mails (for example, by using<br />
<code>--subject-prefix=PULL</code> in your <code>git format-patch</code><br />
command). This helps people to filter in or out the resulting emails<br />
(especially useful if they are only CC'd on one email out of the set).<br />
<br />
'''Each patch must have your own Signed-off-by: line''' as well as<br />
that of the original author if the patch was not written by you.<br />
This is because with a pull request you're now indicating that the<br />
patch has passed via you rather than directly from the original author.<br />
<br />
'''Don't forget to add Reviewed-by: and Acked-by: lines'''. When other<br />
people have reviewed the patches you're putting in the pull request, make<br />
sure you've copied their signoffs across. (If you use <br />
[https://github.com/aliguori/patches Anthony's patches tool] to add<br />
patches from email directly to your git repo it will include the tags<br />
automatically; if you're updating patches manually or in some other<br />
way you'll need to edit the commit messages by hand.)<br />
<br />
'''Don't send pull requests for code that hasn't passed review'''.<br />
A pull request says these patches are ready to go into QEMU now,<br />
so they must have passed the standard code review processes.<br />
In particular if you've corrected issues in one round of code review,<br />
you need to send your fixed patch series as normal to the list;<br />
you can't put it in a pull request until it's gone through.<br />
(Extremely trivial fixes may be OK to just fix in passing, but<br />
if in doubt err on the side of not.)<br />
<br />
'''Test before sending'''. This is an obvious thing to say, but<br />
make sure everything builds (including that it compiles at each<br />
step of the patch series) and that "make check" passes before<br />
sending out the pull request. As a submaintainer you're one of QEMU's<br />
lines of defense against bad code, so double check the details.<br />
<br />
'''All pull requests must be signed'''.<br />
Starting in December of 2013, only signed pull requests will be accepted.<br />
If your key is not already signed by members of the QEMU community,<br />
you should make arrangements to attend a [[KeySigningParty]] (for example at KVM Forum) or make alternative arrangements to have your key signed by an attendee.<br />
Key signing requires meeting another community member *in person* so please make appropriate arrangements.</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.4&diff=4940ChangeLog/2.42015-08-10T11:44:39Z<p>Stefan Weil: /* Known issues */ add link to discussion</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* 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''.<br />
* The ARM 'virt' board default interface type has changed from IDE to virtio. This means that some incorrect command lines that we previously silently accepted will now fail with an error message like "qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)". As the error message suggests, you should add "if=none" to the -drive option to fix this.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.<br />
* Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.<br />
* 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.<br />
* 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.<br />
* The configure option --disable-guest-base is unneeded and will be removed in a future release.<br />
<br />
=== Alpha ===<br />
* Major fixes to the implementation of floating point exceptions.<br />
=== ARM ===<br />
* New board model xlnx-ep108<br />
* Support for ACPI v5.1 tables in the "-M virt" board.<br />
* Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.<br />
* Emulation of the stream ID for MSI writes, for use in GICv3.<br />
* The "virt" board default drive type is now virtio; this means that drives created with if=virtio or with no if= specification will be created as drives plugged into a virtio-blk-pci device. Short form options like -hda will also create this kind of drive. (Note that at time of writing Linux only supports the virt board's PCI controller for 32-bit ARM kernels; support has not yet made it into the 64-bit kernels. So 64-bit guests will need to continue using long command lines and virtio-mmio for now.) Unfortunately this means that some old command lines will need to change -- see the "incompatible changes" section above for details.<br />
==== KVM ====<br />
<br />
=== MIPS ===<br />
* More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU controller.<br />
* Support for microMIPS32 R6 emulation (enabled in new "-cpu mips32r6-generic")<br />
* Support for unaligned R6 and MSA memory accesses in TCG<br />
* Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical Addressing) emulation<br />
* Support for MIPS UHI semihosting<br />
<br />
=== PowerPC ===<br />
* The default RAM size for the pseries machine is 512 MB.<br />
* Support of PCI device hotplug on SPAPR (pSeries).<br />
<br />
=== s390 ===<br />
* Channel I/O is now available when running with TCG. Thus, the default machine for qemu-system-s390x is now s390-ccw.<br />
* Several other fixes for TCG (emulation) mode.<br />
* Extended name and UUID in STSI 3.2.2 information block<br />
* Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode<br />
* Various cleanups in the s390-virtio and virtio-ccw transports<br />
* Support for diag288 watchdog (KVM only).<br />
* Support for vector registers<br />
* Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)<br />
** Revision 1 (and therefore virtio 1.0) is not yet enabled, however.<br />
* The s390-ccw-virtio machine is now versioned; the first versioned machine is s390-ccw-virtio-2.4<br />
** The s390-ccw alias has been removed<br />
<br />
=== SH ===<br />
* Optimizations to code generated by TCG.<br />
=== SPARC ===<br />
* Fix SunOS 4.1.4 boot on sun4m with OpenBIOS<br />
<br />
=== x86 ===<br />
* Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.<br />
* q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk controller. It will be created if you use "-drive if=floppy", "-fda" or "-fdb" to add a floppy disk drive, or it can be created if necessary with "-device isa-fdc".<br />
* q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is disabled when the virtual machine boot, so as to let existing firmware run with new QEMU. This may change in the future, but the change would be restricted to new machine types.<br />
<br />
==== KVM ====<br />
* Support for MMIO operations outside the "big QEMU lock". For now, this only applies to the ACPI PM timer, which can alone improve performance substantially for very large Windows guests as long as they do not span multiple NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel changes are required.<br />
* Support for system management mode (requires Linux 4.1).<br />
* When running under KVM, CPUID information includes the ARAT ("Always running APIC timer") bit<br />
==== Xen ====<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* Support for memory hot-unplug.<br />
* 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" <br />
==== Audio ====<br />
==== Block devices ====<br />
* Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.<br />
* 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".<br />
* I/O throttling now supports "groups" so multiple disks can use share a budget (use -drive groups=<name>)<br />
* Performance of the parallels image format block driver has been improved<br />
==== Character devices ====<br />
* Improved support for flow control in virtio-serial.<br />
==== IDE ====<br />
* Fix macio CDROM detection for PPC<br />
* Fix macio data corruption bug under Darwin/OS X PPC<br />
* AHCI support rerror=stop and werror=stop.<br />
<br />
==== Mouse/keyboard ====<br />
* Support for virtio-keyboard, virtio-mouse, virtio-tablet.<br />
==== Network ====<br />
* Support for the "rocker" L2 switch device.<br />
==== SCSI ====<br />
* scsi-generic now supports migration.<br />
==== PCI/PCIe ====<br />
* 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.<br />
==== TPM ====<br />
* Support for TPM 2<br />
==== VFIO ====<br />
* Support for resetting AMD Bonaire and Hawaii GPUs<br />
* Platform device passthrough support for Calxeda xgmac devices<br />
<br />
==== virtio ====<br />
* Support for up to 1024 queues.<br />
* Support for ioeventfd in virtio-mmio.<br />
* FIXME: virtio 1<br />
* New virtio-gpu device (only supports accelerated 2D for now)<br />
* New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices (and corresponding virtio-*-pci devices for use on a PCI bus).<br />
* Support for cross-endian vhost (i.e. little-endian host and big-endian guest, or vice versa).<br />
* vhost can now be enabled even if MSI-X is not<br />
* virtio-balloon can tell the guest that it should deflate the balloon on OOM conditions.<br />
==== VGA ====<br />
* Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.<br />
=== Character devices ===<br />
* Improved support for flow control in spice-char.<br />
=== GUI ===<br />
* Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.<br />
* Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.<br />
* The two extra keys in Brazilian 107-key keyboards are now usable.<br />
=== Monitor ===<br />
* qmp: New MIGRATION event to communicate change in the migration state<br />
=== Migration ===<br />
* 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").<br />
=== Network ===<br />
* Support for multi-queue vhost-user backends.<br />
=== Block devices in system emulation ===<br />
* The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.<br />
* FIXME: Throttle groups<br />
* Block device mirroring supports concurrent unmap (aka discard or trim) operations on the source device and can create a thin-provisioned image in this case.<br />
* Block device mirroring can use discard or "write zero" operations to speed up copying of large zero regions.<br />
* FIXME: incremental backup?<br />
<br />
=== Command-line options ===<br />
* 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.<br />
* New option -fw_cfg to pass arbitrary binary data to the guest.<br />
=== TCG ===<br />
* 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.<br />
== Block devices and tools ==<br />
* The "null" block device now has a new "latency-ns" option to delay the answer from the block device.<br />
* 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.<br />
* Parallels format driver now supports image creation and write to the image. Performance is significantly improved.<br />
* qcow2 performance improvements.<br />
* qemu-io supports encrypted qcow2 images (which are deprecated).<br />
<br />
== Audio ==<br />
* Obsolete audio backends have been removed: esd (superseded by pulseaudio), winwave (superseded by dsound), fmod (not compatible with the GPL)<br />
<br />
== Guest agent ==<br />
* Support for building a .msi file with the Windows version of the guest agent ("make msi"). This requires msitools.<br />
* qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too<br />
== User-mode emulation ==<br />
* The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.<br />
== Build dependencies ==<br />
* 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.)<br />
* QEMU can now optionally be linked against tcmalloc.<br />
* QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.<br />
* QEMU now compiles with ICC.<br />
* libepoxy is required to compile QEMU with OpenGL support.<br />
* Building on Mac OS X versions earlier than 10.5 is no longer supported.<br />
* Sound on Windows now requires DirectSound (the old 'winwave' default audio backend has been dropped).<br />
== Known issues ==<br />
* SDL audio only works with SDL 1.x.<br />
* RCU thread registration is broken.<br />
* Problems with QEMU for Windows and builds from newer versions of MinGW-w64, see [http://lists.nongnu.org/archive/html/qemu-devel/2015-08/msg00533.html this thread] on qemu-devel (this is not a regression, other versions are also affected)<br />
** Crash of 64-bit QEMU ([http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb Fix])<br />
** Broken networking ([http://repo.or.cz/w/qemu/ar7.git/commit/b3f21d56ad3f36562d396685de8ff4981af6b805 Fix])<br />
* BIOS regression (SeaBIOS) since 2.3.0, see [http://lists.nongnu.org/archive/html/qemu-devel/2015-07/msg05037.html this thread] on qemu-devel<br />
* Incomplete translations for GTK user interface</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.4&diff=4939ChangeLog/2.42015-08-10T11:35:45Z<p>Stefan Weil: /* Known issues */ GTK ui translations</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* 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''.<br />
* The ARM 'virt' board default interface type has changed from IDE to virtio. This means that some incorrect command lines that we previously silently accepted will now fail with an error message like "qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)". As the error message suggests, you should add "if=none" to the -drive option to fix this.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.<br />
* Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.<br />
* 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.<br />
* 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.<br />
* The configure option --disable-guest-base is unneeded and will be removed in a future release.<br />
<br />
=== Alpha ===<br />
* Major fixes to the implementation of floating point exceptions.<br />
=== ARM ===<br />
* New board model xlnx-ep108<br />
* Support for ACPI v5.1 tables in the "-M virt" board.<br />
* Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.<br />
* Emulation of the stream ID for MSI writes, for use in GICv3.<br />
* The "virt" board default drive type is now virtio; this means that drives created with if=virtio or with no if= specification will be created as drives plugged into a virtio-blk-pci device. Short form options like -hda will also create this kind of drive. (Note that at time of writing Linux only supports the virt board's PCI controller for 32-bit ARM kernels; support has not yet made it into the 64-bit kernels. So 64-bit guests will need to continue using long command lines and virtio-mmio for now.) Unfortunately this means that some old command lines will need to change -- see the "incompatible changes" section above for details.<br />
==== KVM ====<br />
<br />
=== MIPS ===<br />
* More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU controller.<br />
* Support for microMIPS32 R6 emulation (enabled in new "-cpu mips32r6-generic")<br />
* Support for unaligned R6 and MSA memory accesses in TCG<br />
* Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical Addressing) emulation<br />
* Support for MIPS UHI semihosting<br />
<br />
=== PowerPC ===<br />
* The default RAM size for the pseries machine is 512 MB.<br />
* Support of PCI device hotplug on SPAPR (pSeries).<br />
<br />
=== s390 ===<br />
* Channel I/O is now available when running with TCG. Thus, the default machine for qemu-system-s390x is now s390-ccw.<br />
* Several other fixes for TCG (emulation) mode.<br />
* Extended name and UUID in STSI 3.2.2 information block<br />
* Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode<br />
* Various cleanups in the s390-virtio and virtio-ccw transports<br />
* Support for diag288 watchdog (KVM only).<br />
* Support for vector registers<br />
* Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)<br />
** Revision 1 (and therefore virtio 1.0) is not yet enabled, however.<br />
* The s390-ccw-virtio machine is now versioned; the first versioned machine is s390-ccw-virtio-2.4<br />
** The s390-ccw alias has been removed<br />
<br />
=== SH ===<br />
* Optimizations to code generated by TCG.<br />
=== SPARC ===<br />
* Fix SunOS 4.1.4 boot on sun4m with OpenBIOS<br />
<br />
=== x86 ===<br />
* Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.<br />
* q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk controller. It will be created if you use "-drive if=floppy", "-fda" or "-fdb" to add a floppy disk drive, or it can be created if necessary with "-device isa-fdc".<br />
* q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is disabled when the virtual machine boot, so as to let existing firmware run with new QEMU. This may change in the future, but the change would be restricted to new machine types.<br />
<br />
==== KVM ====<br />
* Support for MMIO operations outside the "big QEMU lock". For now, this only applies to the ACPI PM timer, which can alone improve performance substantially for very large Windows guests as long as they do not span multiple NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel changes are required.<br />
* Support for system management mode (requires Linux 4.1).<br />
* When running under KVM, CPUID information includes the ARAT ("Always running APIC timer") bit<br />
==== Xen ====<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* Support for memory hot-unplug.<br />
* 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" <br />
==== Audio ====<br />
==== Block devices ====<br />
* Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.<br />
* 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".<br />
* I/O throttling now supports "groups" so multiple disks can use share a budget (use -drive groups=<name>)<br />
* Performance of the parallels image format block driver has been improved<br />
==== Character devices ====<br />
* Improved support for flow control in virtio-serial.<br />
==== IDE ====<br />
* Fix macio CDROM detection for PPC<br />
* Fix macio data corruption bug under Darwin/OS X PPC<br />
* AHCI support rerror=stop and werror=stop.<br />
<br />
==== Mouse/keyboard ====<br />
* Support for virtio-keyboard, virtio-mouse, virtio-tablet.<br />
==== Network ====<br />
* Support for the "rocker" L2 switch device.<br />
==== SCSI ====<br />
* scsi-generic now supports migration.<br />
==== PCI/PCIe ====<br />
* 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.<br />
==== TPM ====<br />
* Support for TPM 2<br />
==== VFIO ====<br />
* Support for resetting AMD Bonaire and Hawaii GPUs<br />
* Platform device passthrough support for Calxeda xgmac devices<br />
<br />
==== virtio ====<br />
* Support for up to 1024 queues.<br />
* Support for ioeventfd in virtio-mmio.<br />
* FIXME: virtio 1<br />
* New virtio-gpu device (only supports accelerated 2D for now)<br />
* New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices (and corresponding virtio-*-pci devices for use on a PCI bus).<br />
* Support for cross-endian vhost (i.e. little-endian host and big-endian guest, or vice versa).<br />
* vhost can now be enabled even if MSI-X is not<br />
* virtio-balloon can tell the guest that it should deflate the balloon on OOM conditions.<br />
==== VGA ====<br />
* Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.<br />
=== Character devices ===<br />
* Improved support for flow control in spice-char.<br />
=== GUI ===<br />
* Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.<br />
* Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.<br />
* The two extra keys in Brazilian 107-key keyboards are now usable.<br />
=== Monitor ===<br />
* qmp: New MIGRATION event to communicate change in the migration state<br />
=== Migration ===<br />
* 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").<br />
=== Network ===<br />
* Support for multi-queue vhost-user backends.<br />
=== Block devices in system emulation ===<br />
* The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.<br />
* FIXME: Throttle groups<br />
* Block device mirroring supports concurrent unmap (aka discard or trim) operations on the source device and can create a thin-provisioned image in this case.<br />
* Block device mirroring can use discard or "write zero" operations to speed up copying of large zero regions.<br />
* FIXME: incremental backup?<br />
<br />
=== Command-line options ===<br />
* 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.<br />
* New option -fw_cfg to pass arbitrary binary data to the guest.<br />
=== TCG ===<br />
* 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.<br />
== Block devices and tools ==<br />
* The "null" block device now has a new "latency-ns" option to delay the answer from the block device.<br />
* 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.<br />
* Parallels format driver now supports image creation and write to the image. Performance is significantly improved.<br />
* qcow2 performance improvements.<br />
* qemu-io supports encrypted qcow2 images (which are deprecated).<br />
<br />
== Audio ==<br />
* Obsolete audio backends have been removed: esd (superseded by pulseaudio), winwave (superseded by dsound), fmod (not compatible with the GPL)<br />
<br />
== Guest agent ==<br />
* Support for building a .msi file with the Windows version of the guest agent ("make msi"). This requires msitools.<br />
* qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too<br />
== User-mode emulation ==<br />
* The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.<br />
== Build dependencies ==<br />
* 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.)<br />
* QEMU can now optionally be linked against tcmalloc.<br />
* QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.<br />
* QEMU now compiles with ICC.<br />
* libepoxy is required to compile QEMU with OpenGL support.<br />
* Building on Mac OS X versions earlier than 10.5 is no longer supported.<br />
* Sound on Windows now requires DirectSound (the old 'winwave' default audio backend has been dropped).<br />
== Known issues ==<br />
* SDL audio only works with SDL 1.x.<br />
* RCU thread registration is broken.<br />
* Problems with QEMU for Windows and builds from newer versions of MinGW-w64 (this is not a regression, other versions are also affected)<br />
** Crash of 64-bit QEMU ([http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb Fix])<br />
** Broken networking ([http://repo.or.cz/w/qemu/ar7.git/commit/b3f21d56ad3f36562d396685de8ff4981af6b805 Fix])<br />
* BIOS regression (SeaBIOS) since 2.3.0, see [http://lists.nongnu.org/archive/html/qemu-devel/2015-07/msg05037.html this thread] on qemu-devel<br />
* Incomplete translations for GTK user interface</div>Stefan Weilhttps://wiki.qemu.org/index.php?title=ChangeLog/2.4&diff=4938ChangeLog/2.42015-08-10T11:33:41Z<p>Stefan Weil: /* Known issues */ add BIOS regression</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* 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''.<br />
* The ARM 'virt' board default interface type has changed from IDE to virtio. This means that some incorrect command lines that we previously silently accepted will now fail with an error message like "qemu-system-arm: -drive file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)". As the error message suggests, you should add "if=none" to the -drive option to fix this.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:-readconfig will standardize on the name for the command line option.<br />
* 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.<br />
* 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.<br />
* Host floppy device pass-through (block driver "host_floppy") is deprecated, and will be dropped in a future release.<br />
* Block device parameter aio=native has no effect without cache.direct=on. It will be made an error.<br />
* 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.<br />
* 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.<br />
* The configure option --disable-guest-base is unneeded and will be removed in a future release.<br />
<br />
=== Alpha ===<br />
* Major fixes to the implementation of floating point exceptions.<br />
=== ARM ===<br />
* New board model xlnx-ep108<br />
* Support for ACPI v5.1 tables in the "-M virt" board.<br />
* Support for instantiation sysbus devices from the command line (using "-device") in the "-M virt" board.<br />
* Emulation of the stream ID for MSI writes, for use in GICv3.<br />
* The "virt" board default drive type is now virtio; this means that drives created with if=virtio or with no if= specification will be created as drives plugged into a virtio-blk-pci device. Short form options like -hda will also create this kind of drive. (Note that at time of writing Linux only supports the virt board's PCI controller for 32-bit ARM kernels; support has not yet made it into the 64-bit kernels. So 64-bit guests will need to continue using long command lines and virtio-mmio for now.) Unfortunately this means that some old command lines will need to change -- see the "incompatible changes" section above for details.<br />
==== KVM ====<br />
<br />
=== MIPS ===<br />
* More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU controller.<br />
* Support for microMIPS32 R6 emulation (enabled in new "-cpu mips32r6-generic")<br />
* Support for unaligned R6 and MSA memory accesses in TCG<br />
* Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical Addressing) emulation<br />
* Support for MIPS UHI semihosting<br />
<br />
=== PowerPC ===<br />
* The default RAM size for the pseries machine is 512 MB.<br />
* Support of PCI device hotplug on SPAPR (pSeries).<br />
<br />
=== s390 ===<br />
* Channel I/O is now available when running with TCG. Thus, the default machine for qemu-system-s390x is now s390-ccw.<br />
* Several other fixes for TCG (emulation) mode.<br />
* Extended name and UUID in STSI 3.2.2 information block<br />
* Support for reading/writing guest memory while holding the IPTE lock under KVM, including access register mode<br />
* Various cleanups in the s390-virtio and virtio-ccw transports<br />
* Support for diag288 watchdog (KVM only).<br />
* Support for vector registers<br />
* Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)<br />
** Revision 1 (and therefore virtio 1.0) is not yet enabled, however.<br />
* The s390-ccw-virtio machine is now versioned; the first versioned machine is s390-ccw-virtio-2.4<br />
** The s390-ccw alias has been removed<br />
<br />
=== SH ===<br />
* Optimizations to code generated by TCG.<br />
=== SPARC ===<br />
* Fix SunOS 4.1.4 boot on sun4m with OpenBIOS<br />
<br />
=== x86 ===<br />
* Improvements to system management mode emulation, including support for high SMRAM and TSEG on machines using the Q35 chipset.<br />
* q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk controller. It will be created if you use "-drive if=floppy", "-fda" or "-fdb" to add a floppy disk drive, or it can be created if necessary with "-device isa-fdc".<br />
* q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is disabled when the virtual machine boot, so as to let existing firmware run with new QEMU. This may change in the future, but the change would be restricted to new machine types.<br />
<br />
==== KVM ====<br />
* Support for MMIO operations outside the "big QEMU lock". For now, this only applies to the ACPI PM timer, which can alone improve performance substantially for very large Windows guests as long as they do not span multiple NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel changes are required.<br />
* Support for system management mode (requires Linux 4.1).<br />
* When running under KVM, CPUID information includes the ARAT ("Always running APIC timer") bit<br />
==== Xen ====<br />
=== Device emulation and assignment ===<br />
==== ACPI ====<br />
* Support for memory hot-unplug.<br />
* 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" <br />
==== Audio ====<br />
==== Block devices ====<br />
* Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.<br />
* 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".<br />
* I/O throttling now supports "groups" so multiple disks can use share a budget (use -drive groups=<name>)<br />
* Performance of the parallels image format block driver has been improved<br />
==== Character devices ====<br />
* Improved support for flow control in virtio-serial.<br />
==== IDE ====<br />
* Fix macio CDROM detection for PPC<br />
* Fix macio data corruption bug under Darwin/OS X PPC<br />
* AHCI support rerror=stop and werror=stop.<br />
<br />
==== Mouse/keyboard ====<br />
* Support for virtio-keyboard, virtio-mouse, virtio-tablet.<br />
==== Network ====<br />
* Support for the "rocker" L2 switch device.<br />
==== SCSI ====<br />
* scsi-generic now supports migration.<br />
==== PCI/PCIe ====<br />
* 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.<br />
==== TPM ====<br />
* Support for TPM 2<br />
==== VFIO ====<br />
* Support for resetting AMD Bonaire and Hawaii GPUs<br />
* Platform device passthrough support for Calxeda xgmac devices<br />
<br />
==== virtio ====<br />
* Support for up to 1024 queues.<br />
* Support for ioeventfd in virtio-mmio.<br />
* FIXME: virtio 1<br />
* New virtio-gpu device (only supports accelerated 2D for now)<br />
* New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices (and corresponding virtio-*-pci devices for use on a PCI bus).<br />
* Support for cross-endian vhost (i.e. little-endian host and big-endian guest, or vice versa).<br />
* vhost can now be enabled even if MSI-X is not<br />
* virtio-balloon can tell the guest that it should deflate the balloon on OOM conditions.<br />
==== VGA ====<br />
* Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.<br />
=== Character devices ===<br />
* Improved support for flow control in spice-char.<br />
=== GUI ===<br />
* Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This is preparatory work for 3D acceleration.<br />
* Improvements to the Cocoa front-end, fixing full-screen mode and adding a list of consoles to the View menu.<br />
* The two extra keys in Brazilian 107-key keyboards are now usable.<br />
=== Monitor ===<br />
* qmp: New MIGRATION event to communicate change in the migration state<br />
=== Migration ===<br />
* 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").<br />
=== Network ===<br />
* Support for multi-queue vhost-user backends.<br />
=== Block devices in system emulation ===<br />
* The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.<br />
* FIXME: Throttle groups<br />
* Block device mirroring supports concurrent unmap (aka discard or trim) operations on the source device and can create a thin-provisioned image in this case.<br />
* Block device mirroring can use discard or "write zero" operations to speed up copying of large zero regions.<br />
* FIXME: incremental backup?<br />
<br />
=== Command-line options ===<br />
* 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.<br />
* New option -fw_cfg to pass arbitrary binary data to the guest.<br />
=== TCG ===<br />
* 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.<br />
== Block devices and tools ==<br />
* The "null" block device now has a new "latency-ns" option to delay the answer from the block device.<br />
* 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.<br />
* Parallels format driver now supports image creation and write to the image. Performance is significantly improved.<br />
* qcow2 performance improvements.<br />
* qemu-io supports encrypted qcow2 images (which are deprecated).<br />
<br />
== Audio ==<br />
* Obsolete audio backends have been removed: esd (superseded by pulseaudio), winwave (superseded by dsound), fmod (not compatible with the GPL)<br />
<br />
== Guest agent ==<br />
* Support for building a .msi file with the Windows version of the guest agent ("make msi"). This requires msitools.<br />
* qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too<br />
== User-mode emulation ==<br />
* The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.<br />
== Build dependencies ==<br />
* 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.)<br />
* QEMU can now optionally be linked against tcmalloc.<br />
* QEMU now compiles using clang 3.5 without warnings, which includes disabling GCC features not supported by clang.<br />
* QEMU now compiles with ICC.<br />
* libepoxy is required to compile QEMU with OpenGL support.<br />
* Building on Mac OS X versions earlier than 10.5 is no longer supported.<br />
* Sound on Windows now requires DirectSound (the old 'winwave' default audio backend has been dropped).<br />
== Known issues ==<br />
* SDL audio only works with SDL 1.x.<br />
* RCU thread registration is broken.<br />
* Problems with QEMU for Windows and builds from newer versions of MinGW-w64 (this is not a regression, other versions are also affected)<br />
** Crash of 64-bit QEMU ([http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb Fix])<br />
** Broken networking ([http://repo.or.cz/w/qemu/ar7.git/commit/b3f21d56ad3f36562d396685de8ff4981af6b805 Fix])<br />
* BIOS regression (SeaBIOS) since 2.3.0, see [http://lists.nongnu.org/archive/html/qemu-devel/2015-07/msg05037.html this thread] on qemu-devel</div>Stefan Weil